以下、適宜図面を参照しながら、実施形態を詳細に説明する。但し、必要以上に詳細な説明は省略する場合がある。例えば、既によく知られた事項の詳細説明や実質的に同一の構成に対する重複説明を省略する場合がある。これは、以下の説明が不必要に冗長になることを避け、当業者の理解を容易にするためである。尚、添付図面及び以下の説明は、当業者が本開示を十分に理解するために提供されるものであり、これらにより特許請求の範囲に記載の主題を限定することは意図されていない。
例えば、実施形態でいう「部」又は「装置」とは単にハードウェアによって実現される物理的構成に限らず、その構成が有する機能をプログラムなどのソフトウェアにより実現されるものも含む。また、1つの構成が有する機能が2つ以上の物理的構成により実現されても、又は2つ以上の構成の機能が例えば1つの物理的構成によって実現されていても構わない。
(第1の実施形態)
(ソフトウェア生成支援装置の構成)
図1は、第1の実施形態におけるソフトウェア生成支援装置100のハードウェア構成例を示す図である。ソフトウェア生成支援装置100は、プロセッサ110、通信デバイス120、メモリ130、操作デバイス140、及び表示デバイス150を備える。ソフトウェア生成支援装置100は、例えば、PC(Personal Computer)、サーバ装置、タブレット端末、又は携帯端末等であってよい。
プロセッサ110は、MPU(Micro processing Unit)、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、等を含んでよい。プロセッサ110は、メモリ130に保持されたプログラムを実行することで、ソフトウェア生成支援装置100の各種機能(例えばソフトウェアの生成の支援に係る機能)を実現する。プロセッサ110は、ソフトウェア生成支援装置100の各部を統括的に制御し、各種処理を行う。
通信デバイス120は、各種データ、情報を通信する。通信デバイス120による通信方式は、無線通信又は有線通信の方式でよく、例えば、WAN(Wide Area Network)、LAN(Local Area Network)、赤外線通信、携帯電話用のセルラー通信(例えば5G、LTE(Long Term Evolution))、電力線通信、等の通信方式を含んでよい。
メモリ130は、例えばRAM(Random Access Memory)やROM(Read Only Memory)を含む。メモリ130は、一次記憶装置(例えばRAMやROM)を含む。メモリ130は、二次記憶装置(例えばHDD(Hard Disk Drive)やSSD(Solid State Drive))や三次記憶装置(例えば光ディスク、SDカード)を含んでよい。メモリ130は、その他の記憶装置を含んでよい。メモリ130は、各種データ、情報、プログラム等を記憶する。
操作デバイス140は、各種ボタン、キー、スイッチ、キーボード、タッチパッド、タッチパネル、マイクロホン、又はその他の操作デバイスを含んでよい。操作デバイス140は、各種データや情報の入力を受け付ける。
表示デバイス150は、液晶表示デバイス、有機ELデバイス、又はその他の表示デバイスを含んでよい。表示デバイス170は、各種データや情報を表示する。
次に、本実施形態のソフトウェアの生成の支援の概要について説明する。
プロセッサ110は、ソフトウェアの生成の支援に関する処理を行う。プロセッサ110は、ソフトウェアを構成する複数のソフトウェア部品(ソフトウェアモジュール、単に「モジュール」とも称する)を生成し、複数のソフトウェア部品(モジュール)を連結(連携)させて1つのソフトウェアを生成する。
つまり複数のモジュールのそれぞれは、生成対象のソフトウェアの連結状態の一部を示すものであり、ソフトウェアの生成過程の一部を示すものである。モジュールは、例えば、ソフトウェアに関する各種データや各種処理そのものであったり、各種データの入力元又は出力先であったり、各種処理の入力元又は出力先であったりしてよい。複数のモジュールは、例えば、ソフトウェアが実行する少なくとも1つの処理を示す処理モジュールと、この処理に用いられる少なくとも1つのデータを示すデータモジュールと、データの供給源であるデバイスを示すデバイスモジュールと、を含んでよい。
図2は、ソフトウェア生成支援画面の一例を示す図である。
プロセッサ110は、複数のモジュールに対応するモジュールアイコンMAを、ソフトウェアの生成順序に従ってラインLNで接続して、画面G1に表示させる。この画面G1は、ソフトウェアの生成を支援するソフトウェア生成支援画面である。
画面G1には、ソフトウェアを生成するためのモジュールに対応するモジュールアイコンMAが配置される。各モジュールアイコンMAは、ソフトウェアに係る処理の順番に応じて順番に配列される。例えば、所定の処理に用いられるデータや所定の処理の前に実施される処理のモジュールに対応するモジュールアイコンMAは、所定の処理のモジュールに対応するモジュールアイコンMAの入力側に配置される。例えば、所定の処理により得られるデータや所定の処理の後に実施される処理のモジュールに対応するモジュールアイコンMAは、所定の処理のモジュールに対応するモジュールアイコンMAの出力側に配置される。
画面G1に表示された2つのモジュールアイコンMA(例えば隣り合うモジュールアイコンMA)は、ラインLNによって接続される。つまり、ラインLNによって、ラインの両端部に接続された2つのモジュールアイコンMAに対応するモジュールの入出力関係が規定される。なお、ラインLNの接続によってソフトウェアの連結状態(生成過程)において前段側に配置されたモジュールアイコンMAに対応するモジュールを、前段モジュールとも称する。ラインLNの接続によってソフトウェアの連結状態(生成過程)において後段側に配置されたモジュールアイコンMAに対応するモジュールを、後段モジュールとも称する。なお、画面領域MA2は、出力の処理を行うモジュールによる処理結果を、プレビュー画像として表示している。
図3は、モジュールアイコンMAの構成例を示す図である。モジュールアイコンMAは、属性部11と、入力部12と、出力部13と、を含む。なお、ソフトウェアの連結状態における最前段のモジュール(例えばデバイスモジュール)は、入力部12が不在でもよい。また、ソフトウェアの連結状態における最後段のモジュール(例えば表示モジュール、目的モジュール)には、出力部13が不在でもよい。
属性部11は、この属性部11を有するモジュールアイコンMAに対応するモジュールの属性に関する情報を表示する。ここでのモジュールの属性とは、モジュールが行う処理の内容やモジュールが扱うデータの内容を含んでよい。属性部11は、例えば、データに関する情報を表示する場合、データの内容を示す文字、図形、記号、又は形状等によって表示してもよいし、データが格納されたファイルを表示してもよいし、データを一覧表示するテーブルを表示してもよいし、その他のデータに関する情報を表示してもよい。属性部11は、処理に関する情報を表示する場合、処理を行う関数やプログラムやアプリケーションの情報を表示してもよいし、処理を示すイメージ図やイラストを表示してもよいし、その他の処理に関する情報を表示してもよい。
入力部12は、他のモジュールアイコンMAとの間でラインLNを介して接続される。入力部12は、例えば、この他のモジュールアイコンMAに対応する他のモジュールから、モジュールアイコンMAに対応するモジュールへ、データを入力する仮想的な入力端子である。モジュールアイコンMAに対応するモジュールは、入力部12に接続された他のモジュールアイコンMAに対応する他のモジュールから出力されるデータを、入力データとして入力したり、他のモジュールアイコンMAに対応する他のモジュールに対応する処理である前処理の処理結果を、入力データとして入力したりする。また、モジュールアイコンMAに対応するモジュールは、このモジュールの機能やデータを供給する供給源の情報を、入力データとして入力してよい。入力データは、例えば、モジュールが実行するアルゴリズムの引数や処理の一部として用いられてよい。
出力部13は、他のモジュールアイコンMAとの間でラインLNを介して接続される。出力部13は、例えば、モジュールアイコンMAに対応するモジュールから、他のモジュールアイコンMAに対応する他のモジュールへ、データを出力する仮想的な出力端子である。モジュールアイコンMAに対応するモジュールは、出力部13に接続された他のモジュールアイコンMAに対応する他のモジュールが使用するデータを、出力データとして出力したり、他のモジュールアイコンMAに対応する他のモジュールに対応する処理である後処理に用いるデータを、出力データとして出力したりする。また、モジュールアイコンMAに対応するモジュールは、このモジュールが示す供給源の情報を、出力データとして出力してよい。出力データは、例えば、他のモジュールが実行するアルゴリズムの引数や処理の一部として用いられてよい。
モジュールアイコンMAは、例えば矩形の形状を有する。属性部11は、例えば、モジュールアイコンMAの中心部に位置する。入力部12は、例えば、矩形の形状の一端側(例えば図3のモジュールアイコンMAの左半分の周端)に沿って属性部11の一部(例えば半分程)を囲むように、逆コの字形状(又はコの字形状)に形成されてよい。出力部13は、例えば、矩形の形状の他端側(例えば図3のモジュールアイコンMAの右半分の周端)に沿って属性部11の一部(例えば半分程)を囲むように、コの字形状(又は逆コの字形状)に形成されてよい。
これにより、ソフトウェア生成支援装置100は、モジュールアイコンMAの入力部12及び出力部13が、半分ずつ全体で属性部11を包囲するように形成されるので、一般的な端子よりも入力部12及び出力部13となる面積が大きく、どの方向からでも入力部12及び出力部13にラインLNを接続し易くできる。
具体的には、モジュールアイコンMA(アイコンの一例)の形状は、X方向(第1方向の一例)に沿う一対の辺と、X方向に垂直なY方向(第2方向の一例)に沿う一対の辺と、で構成される矩形形状を有してよい。モジュールアイコンMAの入力部12は、X方向に沿う一対の辺のそれぞれにおける一端側(例えば図3の左側)と、Y方向に沿う一対の辺のうち一端側に接続された辺と、を含んでよい。モジュールアイコンMAの出力部13は、X方向に沿う一対の辺のそれぞれにおける他端側(例えば図3の右側)と、Y方向に沿う一対の辺のうち他端側に接続された辺と、を含んでよい。
これにより、矩形のモジュールアイコンMAの周端部に沿ってコの字形状及び逆コの字形状で入力部12及び出力部13が形成される。よって、ソフトウェア生成支援装置100は、どの方向(例えば図3では入力側である左側又は上下方向、出力側である右側又は上下方向)からでも入力部12及び出力部13にラインLNを接続し易くできる。
また、モジュールアイコンMAの入力部12と出力部13とは、図3に示すように、異なる表示態様で示されてよい。これにより、ユーザは、画面G1を一見して、複数のモジュールアイコンMAの接続関係(例えばソフトウェアの生成過程における上流、下流)を確認できる。つまり、ユーザは、操作デバイス140を介してラインLNをモジュールアイコンMAの入力部12又は出力部13に接続しようとする際に、モジュールアイコンMAの入力部12であるか出力部13であるかを判別し易くなる。よって、ユーザは、容易にモジュールアイコンMAにラインLNを接続でき、かつ接続誤りを低減できる。
次に、ソフトウェアのカテゴリ及びモジュールについて詳細に説明する。
複数のモジュールのそれぞれは、ソフトウェアを生成するためのカテゴリ別に分類される。カテゴリは、ソフトウェアの連結状態(生成過程)を複数に分類したものである。複数のモジュールのそれぞれは、いずれかのカテゴリに属しており、所定のソフトウェアの連結状態の一部を具体的に示すものである。
図2に示した画面G1には、メニューボタンB1が配置される。プロセッサ110は、操作デバイス140を介してメニューボタンB1を押下すると、メニューとしてカテゴリの一覧を表示する。
図4は、カテゴリ一覧情報I1の一例を示す図である。カテゴリは、例えば、デバイスカテゴリ、データソースカテゴリ、データカテゴリ、データフィルタカテゴリ、処理カテゴリ、表示フォーマットカテゴリ、表示カテゴリ、又は目的カテゴリを含む。カテゴリは、その他のカテゴリ(例えば後述するAIカテゴリ)を含んでもよい。どのようなカテゴリが存在するかを示す情報は、カテゴリ一覧情報I1に含まれてメモリ130に保持されていてよい。
各カテゴリには、1つ以上のモジュールが属する。プロセッサ110は、操作デバイス140を介して、カテゴリ情報からモジュールを選択してよい。各カテゴリにどのようなモジュールが存在するかを示す情報は、モジュール一覧情報I2に含まれてメモリ130に保持されていてよい。モジュール一覧情報I2は、カテゴリ毎に設けられてもよい。図5は、モジュール一覧情報I2の一例を示す図である。
デバイスカテゴリは、ソフトウェアの処理に用いるデータを取得するためのハードウェア等のカテゴリである。デバイスカテゴリに属するモジュールを、デバイスモジュールとも称する。デバイスモジュールは、データを提供するPC(Personal Computer)、スマートフォン、又はセンサ等のデバイスを含む。
データソースカテゴリは、ソフトウェアの処理に用いるデータを取得するためのソフトウェア又は各種機能等のカテゴリである。データソースカテゴリに属するモジュールを、データソースモジュールとも称する。データソースモジュールは、デバイスとデータとを連結するモジュールである。例えば、デバイスモジュールがノートPCであり、データソースモジュールがカメラであり得る。
データソースには、様々なデータソースが考えられる。例えば、デバイスに付随するデータソースがある。例えば、ノートPCのデバイスにおけるカメラ機能、レーザスキャナ機能、位置取得機能、マイク機能(音声情報取得機能)がある。また、上記以外であっても、外部サーバ等からデータを取得可能な各機能がある。例えば、メール機能、SNS機能、WEB関連機能、等がある。
データカテゴリは、デバイス又はデータソースからのデータを示すカテゴリである。データカテゴリに属するモジュールを、データモジュールとも称する。データモジュールは、デバイスモジュール又はデータソースモジュール(データ収集モジュールとも称する)からの各種データを入力する。なお、デバイスモジュール又はデータソースモジュールのいずれか一方が設けられる場合には、デバイスモジュール又はデータソースモジュールのいずれか他方が設けられなくてもよい。
例えば、データモジュールは、メール、紙・PDFデータの形式の様々なデータを取得したり、アプリケーション、各種システム、又は各種クラウド等から様々なデータを取得したりする。
データフィルタカテゴリは、取得されたデータを処理するためにデータのフォーマットを変更したりデータを調整したりするカテゴリである。データフィルタカテゴリに属するモジュールを、データフィルタモジュールとも称する。
データフィルタモジュールは、収集されたデータを、処理モジュールに対応したフォーマットに変換したりフィルタリングしたり、メモリ130等に保存したりする。データフィルタモジュールは、保存された複数のデータを統合して処理モジュールに出力可能である。データフィルタモジュールは、収集又は統合等されたデータを、メモリ130等に保存してもよいし、通信デバイス120を介してクラウド上に蓄積してよい。データフィルタモジュールは、フィルタリングやフォーマット変換により、例えばフォーマットを合わせることができ、それぞれのモジュールで授受されたデータや情報を取り扱い可能となる。
処理カテゴリは、ソフトウェアの処理を実行するカテゴリである。処理カテゴリに属するモジュールを、処理モジュールとも称する。
表示フォーマットカテゴリは、処理により得られたデータを表示するために、データのフォーマットを変更したりフィルタリングしたりデータを加工したりするカテゴリである。表示フォーマットカテゴリに属するモジュールを、表示フォーマットモジュールとも称する。表示フォーマットカテゴリは、フィルタリングやフォーマット変換により、例えばフォーマットを合わせることができ、それぞれのモジュールで授受されたデータや情報を取り扱い可能となる。
表示カテゴリは、処理により得られたデータの表示フォーマットの調整後のデータを表示するカテゴリである。表示カテゴリに属するモジュールを、表示モジュールとも称する。表示モジュールは、表示の形式(例えば3D(3次元)表示、2D(2次元)表示、又はグラフ表示)、どのデバイスに表示させるか、等を指定可能である。表示では、例えば、3次元位置情報を含む3Dデータ、点群データ、地図、分析エンジン、等に基づいて、2次元情報又は3次元情報が可視化されてよい。
目的カテゴリは、ソフトウェアの処理が行われる目的を示すカテゴリであり、つまりソフトウェアを実行する情報処理装置を動作させる目的を示すカテゴリである。目的カテゴリに属するモジュールを、目的モジュールとも称する。
目的カテゴリにおける目的とは、例えば、経営課題の解決や収益構造の最適化から単純な統計処理に至るまで幅広い目的を表す。目的には、ビジネスで重要な指標となる、一定期間(例えば毎月又は毎日)の売上推移、顧客のリピート率、ホームページの閲覧頻度、ホームページの発注率、又は顧客属性等が含まれてよい。
プロセッサ110は、目的モジュールの目的を実現するための各カテゴリにおける各モジュールを自動で選定又はリスト表示させる機能を有する。例えば、プロセッサ110は、目的モジュールを決定し、目的モジュールに合うデータに係るデータモジュールを決定し、決定された目的モジュールに対応するモジュールアイコンMAと、データモジュールに対応するモジュールアイコンMAとを、画面G1上に配置して表示させる。この場合、プロセッサ110は、決定されたデータに基づいて決定された目的を実現するために、代表的な一連の各カテゴリのモジュールに対応するモジュールアイコンMAを画面G1に表示させ、一連のモジュールにおける処理順で(生成過程で)隣接する2つのモジュールアイコンMA間のそれぞれをラインLNで接続して、画面G1に表示させてよい。この場合、プロセッサ110は、2つのモジュールアイコンMAが接続可能であるか否かを、つまり、2つのモジュールを接続可能であるか否かは、例えばメモリ130に保持された後述する接続可否情報(図6参照)に基づいて判別してよい。
つまり、ソフトウェア生成支援装置100は、データカテゴリから表示カテゴリに至るまでの一連のモジュールを目的モジュールの目的と関連付けでき、目的に関連づけられた一連のモジュールに対応するモジュールアイコンMAを、画面G1に表示させることができる。
プロセッサ110は、例えば操作デバイス140を介して、示された一連のモジュールをソフトウェア部品とすることを決定することで、各モジュールが実現するデータの取得、処理、表示、及びその他の必要な処理を実行するソフトウェアを生成する。このソフトウェアは、決定された目的を達成することができるソフトウェアである。ソフトウェア生成支援装置100又はその他の情報処理装置は、生成されたソフトウェアを実行することで、目的モジュールの目的を達成できる。
次に、ソフトウェア生成支援装置100によるソフトウェアの生成の支援の特徴について例示する。
プロセッサ110は、操作デバイス140を介して画面G1を操作し、例えばメニュー、カテゴリ、モジュールの順に選択することで、特定のカテゴリの特定のモジュールを選択してよい。具体的には、プロセッサ110は、操作デバイス140を介して画面G1上のメニューボタンB1をクリックすると、複数のカテゴリ(例えばカテゴリ一覧リスト)を表示させる。プロセッサ110は、操作デバイス140を介して複数のカテゴリから1つのカテゴリを選択すると、選択されたカテゴリに属する複数のモジュール(例えばモジュール一覧リスト)を表示させる。プロセッサ110は、操作デバイス140を介して複数のモジュールから1つのモジュールを選択することで、特定のカテゴリの特定のモジュールを選択可能であり、特定のモジュールに対応するモジュールアイコンMAを画面G1に表示可能である。
また、プロセッサ110は、メニューから選択されたカテゴリに属するモジュールが複数存在する場合、具体的なモジュールに対応するモジュールアイコンMAではなく、選択されたカテゴリに対応するカテゴリアイコンCA(不図示)を、画面G1に表示させてよい。カテゴリアイコンCAは、カテゴリにおけるいずれかのモジュールが配置されることを示すアイコンであり、具体的なモジュールアイコンMAが未定であることを示す。選択されたカテゴリに属するモジュールが複数存在するか否かは、モジュール一覧情報I2を基に判別されてよい。プロセッサ110は、画面G1上で操作デバイス140を介してカテゴリアイコンCAが指示されたことを検出すると、表示デバイス150を介して選択カテゴリに属するモジュールの一覧のリストを表示する。カテゴリアイコンCAが指示されたことには、例えば、カーソルが置かれたこと又はカテゴリアイコンCAがクリックされたことが含まれてよい。プロセッサ110は、選択カテゴリのモジュールの一覧のリストの中から、操作デバイス140を介して所望のモジュールを選択して決定し、決定されたモジュールに対応するモジュールアイコンMAを画面G1に表示させてよい。
また、プロセッサ110は、選択カテゴリに属するモジュールが1つであり、選択カテゴリに属するモジュールを選択の余地無く一義的に決定可能である場合、選択カテゴリのモジュールを決定し、決定されたモジュールに対応するモジュールアイコンMAを、画面G1に表示させる。
また、プロセッサ110は、表示されたモジュールアイコンMAの入力部12又は出力部13が指示されたこと(例えばモジュールアイコンMAにカーソルが置かれること、クリックされたこと)を検出すると、このモジュールアイコンMAに接続可能な前段又は後段のモジュールアイコンMAに対応する前段モジュール又は後段モジュールの候補を、例えば選択リストの形式(例えばモジュール一覧リスト)で表示させてよい。
また、プロセッサ110は、メモリ130に保持された接続可否情報に基づいて、所定の2つのモジュール(生成過程で隣り合う2つの工程に対応するモジュール)に対応する2つのモジュールアイコンMAの間を接続可能であるか否かと判定する。ここでの接続可能か否かとは、例えば、あるモジュールアイコンMAの入力部12に対してラインLNを介してその前段のモジュールアイコンMAの出力部13が接続可能であるか否かを示してよい。また、ここでの接続可能か否かとは、あるモジュールアイコンMAの出力部13に対してラインLNを介してその後段のモジュールアイコンMAの入力部12が接続可能であるか否かを示してよい。接続可能であるか否かは、接続可否情報に基づいて、つまり各モジュールアイコンMAに対応する各モジュールのデータや処理の入出力関係が加味されて、判定されてよい。この所定の2つのモジュールアイコンMAが接続可能である場合、接続するラインLNを画面G1に表示させる。ラインLNによる接続は、ラインLNで接続された2つのモジュールアイコンMAに対応する2つのモジュールが、接続された入出力順序を加味して動作可能であることを示している。なお、2つのモジュールアイコンMAが接続可能である場合、2つのモジュールアイコンMAに対応する2つのモジュールの処理やデータを連結(連携)可能である。
また、プロセッサ110は、画面G1に表示されたモジュールアイコンMAの入力部12又は出力部13にラインLNが接続されていない状態で、この入力部12又は出力部13をクリックすると、クリックされた入力部12又は出力部13に新たなラインLNの一端を接続して画面G1に表示させてよい。プロセッサ110は、操作デバイス140を介して、このラインLNの他端を例えばカーソルを用いて移動可能であり、このラインLNの他端を他のモジュールアイコンMAと接続させてよい。この場合、メモリ130に保持された接続可否情報に基づいて、つまりラインLNの一端及び他端に接続された2つのモジュールアイコンMAに対応する2つのモジュールの入出力関係を加味して、ラインLNの両端に接続された2つのモジュールアイコンMA間で接続可能である場合に限り、クリックされたモジュールアイコンMAと他のモジュールアイコンMAとが接続可能であってよい。
また、プロセッサ110は、操作デバイス140を介して、接続されている2つのモジュールアイコンMA間のラインLNをクリックすると、クリック位置に近い方のラインLNの端部(一端又は他端)が、入力部12又は出力部13に接続中のモジュールアイコンMAから離され、接続が解除されてよい。この場合、接続が解除されたラインLNの端部は、接続可能な他のモジュールアイコンMAと接続可能となる。
なお、プロセッサ110は、メモリ130に保持された接続可否情報に基づいて、ラインLNを介した任意の2つのモジュールアイコンMA同士が接続不可であると判定したとする。2つのモジュールアイコンMA同士が接続不可であるとは、第1のモジュールの入力部12にラインLNを介して第2のモジュールアイコンMAの出力部13を接続不可であり、且つ、第1のモジュールアイコンMAの入力部12にラインLNを介して第2のモジュールアイコンMAの出力部13を接続不可であることを示す。この場合、プロセッサ110は、ラインLNを介したこの2つのモジュール同士を接続することを禁止する。つまり、ラインLNの一端と他端とを接続不可な2つのモジュールアイコンMA同士が接続されようとした場合でも、接続されないようになっている。
代わりに、プロセッサ110は、接続不可な2つのモジュールアイコンMA間をラインLNで接続しようとした場合、接続不可であるモジュールアイコンMAに対応するモジュールが属するカテゴリのカテゴリアイコンCAを画面G1に表示させてもよいし、又はこのカテゴリに属する他のモジュールに対応する他のモジュールアイコンMAを表示させてもよい。プロセッサ110は、表示された他のモジュールアイコンMAの入力部12又は出力部13に、上記のラインLNの端部と接続してよい。なお、カテゴリアイコンCAが表示された場合の動作は、上述と同様であり、操作デバイス140を介してカテゴリアイコンCAが指示されると、モジュール一覧リストが表示され、モジュール一覧リストの中から1つの他のモジュールが選択されてよい。また、プロセッサ110は、代替して連結可能なモジュールが同じカテゴリ内に複数存在する場合、接続可否情報に基づいて、入出力関係を加味して連結可能なモジュールの一覧のリストを表示させ、操作デバイス140を介して1つのモジュールを選択してよい。プロセッサ110は、選択されたモジュールに対応するモジュールアイコンMAを、接続不可であったラインLNの端部と接続してよい。
次に、連結可能なモジュールの検出例について説明する。
図6は、接続可否情報I3の一例を示す図である。接続可否情報I3は、メモリ130に保持されている。図6では、デバイスカテゴリに属する各デバイスモジュールと、データソースカテゴリに属する各データソースモジュールと、データカテゴリに属する各データモジュールと、を示している。そして、異なるカテゴリのモジュールに対応するモジュールアイコンMA間で接続可能であるか、つまり、各モジュールに入力又は出力されるデータ又は処理が連結可能であるか否かを、矢印付きの直線で示している。なお、矢印はデータ又は処理の流れを示しており、矢印の根本側から出力されたデータや処理が、矢印の先端側のモジュールに入力可能であることを示している。
これにより、ソフトウェアの生成過程において接続可能な各モジュールが順番にデータの入出力や処理を繰り返すことで、ソフトウェアを生成可能となる。つまり、複数のカテゴリ間で連結可能なモジュールは、予め定められている。接続可否情報I3によって、各カテゴリの各モジュールはそれぞれ、どのカテゴリのどのモジュールと連結できるかという情報を含んでいる。2つのモジュール間での接続可否は、例えば、入出力するためのフォーマットが互いに適合しているか否かが加味されてもよい。なお、同じカテゴリの2つのモジュール(例えば処理モジュール)が、ソフトウェアの生成過程において前後関係(入出力関係)にあり、連結されてもよい。
図6では、デバイスモジュールとして、例えば、スマートフォン(単にスマホとも記載する)、ノートPC、パソコン、サーバ、カメラ(店頭)、レーザスキャナ、センサ(例えばスマートフォンが備える各種センサ)、リモコン、又は音声認識装置等が含まれている。カメラ(店頭)は、店頭に設置されたカメラを示す。データソースモジュールには、カメラ機能、レーザスキャナ機能、位置取得機能、マイク機能、音声テキスト機能、方角取得機能、傾斜角度取得機能、メール機能、SNS(Social Networking Service)機能、WEB情報取得機能、WEB閲覧履歴取得機能、購入履歴取得機能、通信履歴取得機能、又は連絡先取得機能、等が含まれている。つまり、データモジュールとデータソースモジュールとの入出力関係では、デバイスが有する機能がデータソースとなっている。また、データモジュールには、画像、映像、3D点群、緯度経度、水深、標高、速度、加速度、メール、住所、又は電話番号等が含まれる。
例えば、デバイスモジュールとしてのノートPCは、データソースモジュールとしてのカメラ機能、マイク機能、音声テキスト機能、方角取得機能、傾斜角度取得機能、メール機能、SNS機能、WEB情報取得機能、WEB閲覧履歴取得機能、又は購入履歴取得機能と矢印付きの直線で接続されており、入出力関係を加味して両モジュールを連結可能であることを示している。また、デバイスモジュールとしてのレーザスキャナは、データモジュールとしての3D点群と連結可能である。また、データソースモジュールとしてのカメラ機能は、データモジュールとしての画像及び映像と連結可能である。また、データソースモジュールとしてのレーザスキャナ機能は、データモジュールとしての3D点群と連結可能である。また、デバイスモジュールとしてのノートPCは、データモジュールとしてのメール、住所、及び電話番号と連結可能である。このように、デバイスとしての各種装置が直接的にデータを取得可能である場合には、データソースモジュールの介在を省略可能である。
つまり、プロセッサ110は、接続可否情報I3に基づいて、複数のモジュール間での連結の可否や、複数のモジュール間で連結するためにどのモジュールを介在させればよいか、等を判定可能である。例えば、プロセッサ110は、デバイスモジュールとしてノートPCを選択し、データモジュールとして画像を選択した場合、接続可否情報I3において、ノートPCのモジュールと画像のモジュールとの間にあるデータソースモジュールとしてカメラ機能を選択して介在させれば、ノートPCと画像とをカメラ機能を介して連結可能であると判定可能である。
なお、図6において矢印付き直線で示した2つのモジュール間での接続許否は、一例であり、他の接続許否の関係であってよい。接続可否情報I3は、様々なカテゴリの様々な2つのモジュール間での接続許否の情報を含んでよい。
次に、各カテゴリのモジュールの選択例について説明する。
図7は、商店街の通行人の数を計測する場合のモジュールの選択例を示す図である。図7では、処理カテゴリよりも後段のカテゴリの図示が省略されている。ここでは、目的モジュールが、商店街の通行人の数を計測することであってもよいし、商店街の通行人の数の計測結果を用いる任意の処理(例えば店舗の売上予測)であってもよい。
図7では、プロセッサ110が、接続可否情報I3に基づいて、各カテゴリにおける1つのモジュールを選択すること、隣り合う2つのカテゴリの2つのモジュールが連結されることを示している。このことは、画面G1上では、隣り合う2つのカテゴリの2つのモジュールに対応するモジュールアイコンMAが、ラインLNで接続されることを相当する。また、図7では、各カテゴリで選択されたモジュールに対応して、このモジュールに接続可能な後段(出力側)のモジュールがモジュール一覧リストで表示され、1つのモジュールが選択されることを示している。
例えば、メニューからデバイスカテゴリが選択され、デバイスモジュールとしてカメラ(店頭)が選択され、データモジュールとして映像が選択され、データフィルタとして画像認識が選択され、処理カテゴリとして歩行者の数の計測が選択される。この場合、デバイスモジュールとしてカメラ(店頭)が選択されているので、その後段のデータモジュールのモジュール一覧リストとして、映像及び写真(画像の一例)が画面G1に表示されることを示している。また、データモジュールとして映像が選択されているので、その後段のデータフィルタモジュールのモジュール一覧リストとして、画像認識、画像抽出、画像処理、及び画像変更が画面G1に表示されることを示している。また、データフィルタモジュールとして画像認識が選択されているので、その後段の処理モジュールのモジュール一覧リストとして、歩行者の数の計測(単に歩行者とも記載)、自転車の数の計測(単に自転車とも記載)、車の数の計測(単に車とも記載)、動物の数の計測(単に動物とも記載)、植物の数の計測(単に植物とも記載)、及び建物の数の計測(単に建物とも記載)が画面G1に表示されることを示している。
なお、デバイスモジュールとしてカメラ(店頭)のモジュールが選択されていることで、商店街の通行人の数を計数に用いる画像(例えば映像(動画)又は写真(静止画))をカメラにより取得可能であるので、データソースモジュールは不要であり選択されていない。
よって、プロセッサ110は、選択された一連のモジュールを連結することで、商店街の店舗の店頭に設置されたカメラによって映像を撮像し、この映像に対して画像認識し、歩行者の数を認識するソフトウェアを構築する。プロセッサ110等の情報処理装置が、このソフトウェアを実行することで、商店街の通行人の数を計数できる。
図8は、商店街の日時、天候、気温、又は行事等のデータを収集する場合のモジュールの選択例を示す図である。図8では、処理カテゴリよりも後段のカテゴリの図示が省略されている。ここでは、目的モジュールが、各種データを保存することであってもよいし、各種データを用いる任意の処理(例えば店舗の売上予測)であってもよい。
図8では、プロセッサ110が、接続可否情報I3に基づいて、各カテゴリにおける1つのモジュールを選択すること、隣り合う2つのカテゴリの2つのモジュールがラインLNで接続されることを示している。このことは、画面G1上では、隣り合う2つのカテゴリの2つのモジュールに対応するモジュールアイコンMAが、ラインLNで接続されることを相当する。また、図8では、各カテゴリで選択されたモジュールに対応して、このモジュールに接続可能な後段(出力側)のモジュールがモジュール一覧リストで表示され、1つ以上のモジュールが選択されることを示している。
例えば、メニューからデータソースカテゴリが選択され(不図示)、データソースモジュールとしてWEB情報取得機能が選択され、データモジュールとして、複数のモジュール(年月日、時刻、曜日、祝日、特定(○市)の場所の天候、特定の場所の気温、特定の場所の湿度、特定の場所の行事(○市の近隣の行事)、特定の場所のニュース(○市の近隣のニュース)、全国的な行事、及び全国的なニュース)が選択され、処理モジュールとして、保存が選択される。この場合、データソースモジュールとしてWEB情報取得機能が選択されているので、その後段のデータモジュールのモジュール一覧リストとして、年月日、時刻、曜日、祝日、特定(○市)の場所の天候、特定の場所の気温、特定の場所の湿度、特定の場所の行事(○市の近隣の行事)、特定の場所のニュース(○市の近隣のニュース)、全国的な行事、及び全国的なニュースが画面G1に表示されることを示している。また、データモジュールとして上記の各種データが選択されているので、その後段のデータフィルタモジュールのモジュール一覧リストとして、保存及び送信が画面G1に表示されることを示している。
よって、プロセッサ110は、選択された一連のモジュールを連結することで、WEB情報取得機能によってWEB情報に含まれる各データを取得して保存するソフトウェアを構築する。プロセッサ110等の情報処理装置が、このソフトウェアを実行することで、商店街の日時(年月日、時刻、等)、天候、気温、又は行事等に関するデータを収集できる。なお、商店街の場所の情報は、例えば、商店街を歩く歩行者が所持するスマートフォンの位置取得機能によって取得されてよい。
図9は、ソフトウェア生成支援装置100によるデータ収集及び保存を行うソフトウェア生成時の画面表示例を示す図である。図9では、処理カテゴリよりも後段のカテゴリの図示が省略されている。ここでは、目的モジュールが、各種データを保存することであってもよいし、各種データを用いる任意の処理(例えば店舗の売上予測)であってもよい。図9では、選択された各モジュールに対応するモジュールアイコンMAが画面G1に表示されている。
図9では、3つの系統のデータを収集して保存するソフトウェアを生成することを例示する。3つの系統のデータとは、商店街の通行人の数(歩行者数)の計測のデータ、商店街に関するデータ(例えば天候、気温、行事、ニュース、日時、及び場所等のデータ)、並びに、商店街にある店舗の売上に関するデータ(例えば、購入された商品の商品名、商品の値段、購入者の性別、購入者の年齢、購入日時、及び購入場所)を含む。歩行者数の計測に関するモジュールについては、図7で示した内容と同様であるので、説明を省略又は簡略化する。商店街に関するデータの収集に関するモジュールについては、図8で示した内容と同様であるので、説明を省略又は簡略化する。なお、歩行者数の一部は、所定の店舗に入店又は所定の店舗から出店する人も含まれ得る。また、入店又は出店する人の一部は、店舗で商品を購入し得る。そのため、例えば歩行者数の計測結果に基づいて店舗の売上情報が算出可能である。
歩行者数の計測に関するモジュールは、デバイスモジュールとしてのカメラ(店頭)のモジュールM11と、データモジュールとしての映像、日時、及び場所のモジュールM12と、処理モジュールとしての歩行者数計測のモジュールM13と、を含む。モジュールM11~M13に対応するモジュールアイコンMA11~MA13が画面G1に表示されている。そして、各モジュールアイコンMA11~MA13の間には、入出力関係を加味してラインLNが接続されている。なお、データモジュールの日時は任意であるが、日時が現在時刻である場合、データモジュールは、映像としてリアルタイム映像を取得することになる。なお、モジュールM12に示すように、カテゴリに属する各モジュールを複数まとめて、1つのモジュールとして画面G1上に表示させてもよい。
なお、この場合、図7と同様に、プロセッサ110は、映像から歩行者を認識するために、データモジュールと処理モジュールとの間に、データフィルタモジュールとしての画像認識のモジュールに対応するモジュールを追加してもよい。この場合、プロセッサ110は、画面G1に画像認識のモジュールに対応するモジュールアイコンMAを表示させてもよい。
商店街に関するデータの収集に関するモジュールは、デバイスソースモジュールとしてのWEB情報取得機能のモジュールM14と、データモジュールとしての天候、気温、行事、ニュース、日時、及び場所のモジュールM15と、を含む。これらのモジュールM14,M15に対応するモジュールアイコンMAが画面G1に表示されている。そして、各モジュールアイコンMA14,MA15の間には、入出力関係を加味してラインLNが接続されている。
店舗の売上に関するデータの収集に関するモジュールは、デバイスモジュールとしてのPOS(Point of sale)(店頭)のモジュールM16と、データモジュールとしての購入された商品の商品名、商品の値段、購入者の性別、購入者の年齢、購入日時、及び購入場所のモジュールM17と、を含む。POS(店頭)とは、店舗の店頭に設置されたPOS端末を示す。これらのモジュールM16,M17に対応するモジュールアイコンMA16,MA17が画面G1に表示されている。そして、各モジュールアイコンMAの間には、入出力関係を加味してラインLNが接続されている。
さらに、モジュールアイコンMA13,MA15,MA17のそれぞれと、処理モジュールとしてのデータ保存のモジュールM18に対応するモジュールアイコンMA18とが、各ラインLNを介して接続されている。そのため、モジュールM4は、歩行者数のデータと、商店街に関するデータと、店舗の売上に関するデータとを、メモリ130等に保存する機能を有する。
よって、プロセッサ110は、ラインLNで接続された一連のモジュールアイコンMAに対応する一連のモジュールによって、以下の3系統のデータを保存するソフトウェア部品を構築できる。1つの系統のデータは、商店街の店舗の店頭に設置されたカメラによって所定の日時及び場所での映像が撮像され、映像に基づいて歩行者の数が計測され、計測された歩行者数のデータである。他の1つの系統のデータは、WEB情報取得機能によってWEB情報から取得された、商店街の日時、天候、気温、行事、ニュース、日時、及び場所等の各データである。他の1つの系統のデータは、店頭に設置されたPOS端末から収集された、購入された商品の商品名、商品の値段、購入者の性別、購入者の年齢、購入日時、及び購入場所の各データである。
このように、プロセッサ110は、接続可否情報I3に基づいて、各モジュールの配置関係及びラインLNの接続関係に基づいて、3つの系統のデータ収集及び保存を行うソフトウェアを生成する。例えば、プロセッサ110は、WEB情報から商店街及び店舗の付近の日付、天候、時刻等の付帯情報を取得できる。また、別のデータとして、店舗情報(例えばPOS情報)なども保存できる。そして、データ保存では、例えば、得られた情歩行者数、付帯情報、店舗情報、などを事時刻情報(日時情報など)で関連付けながら保存できる。なお、ここで保存されたデータは、実空間での様々な処理を行うために用いることもできるし、後述するような学習器の学習データとして用いることもできる。
なお、図9では、Start/StopボタンB2が表示されている。プロセッサ110は、操作デバイス140を介してStart/StopボタンB2を選択することで、一連のモジュールに係る処理(例えばデータ保存に係る一連の処理)、つまり生成されたソフトウェアを実行する。プロセッサ110は、操作デバイス140を介してStart/StopボタンB2を再度選択することで、実行中のソフトウェアの実行を終了してよい。
図10は、ソフトウェア生成支援装置100によるAIによる学習と未来予測を行う場合の画面表示例を示す図である。図10では、目的モジュールが、本日の売上予測であることを例示する。目的モジュールに対応するモジュールアイコンMA70が、ラインLNを介してモジュールアイコンMA55の出力側に接続されて表示されてよい。
カテゴリには、前述したデータカテゴリ等とともに、AIカテゴリが含まれてよい。なお、AIカテゴリは、複数のカテゴリを包括的に含んでよい。例えば、AIカテゴリに、データカテゴリ、データフィルタカテゴリ、処理カテゴリ、表示カテゴリ、等が含まれてよい。この場合、AIカテゴリのデータモジュールをAIデータモジュール、AIカテゴリのデータフィルタモジュールをAIデータフィルタモジュール、AIカテゴリの処理モジュールをAI処理モジュール、AIカテゴリの表示モジュールをAI処理モジュールとも称する。
図10では、画面G1上に、AIの学習に関するモジュールであるAIモジュールM5(M51,M52,M53,…)に対応するモジュールアイコンMA5(MA51,MA52,…)が1つ以上配置されており、実世界での処理に関するモジュールM6(M61,M62,…)に対応するモジュールアイコンMA6(MA61,MA62,…)が1つ以上配置されている。プロセッサ110は、各AIモジュールM5によって、AIに関する所定の機能(例えば店舗の売上予測機能)を実現するソフトウェア部品を生成する。プロセッサ110は、実世界での処理に関する各モジュールM6によって、実世界での所定の機能(例えば商店街の歩行者数計測機能)を実現するソフトウェア部品を生成する。
なお、実世界での商店街の歩行者数計測機能を実現するモジュールM6(モジュールアイコンMA61~MA63に対応する各モジュール)は、図9に示した各モジュールアイコンMA11~MA13に対応するモジュールと同じであるので、説明を省略する。図10の歩行者数計測機能は、店舗の店頭に設置されたカメラにより撮像されたリアルタイム映像を用いて、リアルタイムの歩行者数の計測を計測する。
図10では、AIモジュールM51~M55に対応するモジュールアイコンMA51~MA55が画面G1に表示されている。AIモジュールM51は、予測に必要な任意のデータ(例えば商品の購入日時や購入場所を含むデータ)であるAIデータモジュールである。AIモジュールM52は、取得された購入日時や購入場所等のデータを連結する(関連付ける)AIデータフィルタモジュールである。AIモジュールM53は、学習器を生成するAI処理モジュールである。この学習器は、AIデータフィルタを介して得られたデータに基づいて売上予測する。AIモジュールM54は、生成された学習器を用いて、リアルタイム映像に基づく商店街の歩行者数計測結果に基づいて、所定の店舗(購入場所の一例)におけるその日(本日)(購入日時の一例)の売上予測(例えば売上高)を算出するAI処理モジュールである。AIモジュールM55は、本日の売上予測の算出結果をグラフ形式で、所定の表示デバイス(例えば表示デバイス150)に表示させるAI表示モジュールである。
図10では、プロセッサ110が、接続可否情報I3に基づいて、モジュールアイコンMAのうち、ソフトウェアの生成過程を加味して隣り合う2つのモジュールアイコンMAがラインLNで接続されている。プロセッサ110は、ラインで接続された各モジュール(AIモジュールM5含む)のデータや処理を連結して、ソフトウェアを生成する。
AIモジュールM51~M53が順にラインLNで接続されることで、プロセッサ110は、過去のデータ等の売上予測に必要な任意のデータに基づいて店舗の売上を予測するための学習器を生成するソフトウェア部品を構築する。なお、ここではデータの供給源であるデバイスモジュール又はデータソースモジュールに対応するモジュールアイコンの図示が省略されているが、例えばこのデータの供給源はメモリ130である。
AIモジュールM54は、AIの学習に関する各AIモジュールMによって得られた処理結果と、実世界での処理に関する各モジュールMRによって得られた処理結果と、に基づいて、目的モジュールにより規定された本日の売上予測を実現する処理を行うAI処理モジュールである。AIモジュールM54は、学習器により推論を行うモジュールに相当する。AIモジュールM55は、学習器による推論結果を表示するAI表示モジュールである。
したがって、プロセッサ110は、ソフトウェアとして、例えば、データ(例えば過去実績のデータ)に基づく売り上げ予測の算出が学習された学習器を用いて、カメラ(店頭)により撮像されたリアルタイムの映像に基づいて計測された実世界での商店街の歩行者数を基に、本日の売上を予測し、予測された情報を所定の表示デバイスにグラフ等により表示させるソフトウェアを生成する。
学習器は、所定の場所(例えば所定の店舗)及び所定の日時(例えば本日)での売り上げ予測を行う。学習器は、売上予測に必要なデータ(例えば購入場所、購入日時)に基づいて所定の場所(例えば所定の店舗)及び所定の日時(例えば本日)での売り上げ予測を行うための学習が予め実施された学習済みモデルである。
学習器は、売上予測を行うための任意の条件(例えば、対象店舗がある商店街の所定時間帯における歩行者数、同じ所定時間帯の対象店舗や商店街に関する付帯情報(例えば天候、気象、行事、ニュース、日時、又は場所)、又は同じ所定時間帯における対象店舗のPOSデータ(例えば購入された商品名、値段、性別)等を、学習の入力データとする。ここでの入力データは、例えば、メモリ130に保存された様々なデータであってよい。学習器は、任意の入力データ(任意の条件)に対応して出力データを生成する。また、学習器は、この任意の条件下での対象店舗の所定時間帯での過去の売上実績を正解データとする。この入力データと入力データに対応する正解データは、過去の実績としてメモリ130に多数保持されていてよい。
プロセッサ110は、入力データと正解データとを基に、学習器に機械学習させる。この場合、プロセッサ110は、入力データに対応する出力データが入力データに対応する正解データに近づくように、学習器が有するパラメータを調整することで、学習器を学習させる。プロセッサ110は、ニューラルネットワークを用いたディープラーニングによって学習器を生成してよい。ニューラルネットワークは、例えばDNN(Deep Neural Network)であってよい。この結果、プロセッサ110は、学習器を用いることで、任意の条件に対応する売上予測を高精度に実施できるようになる。
このように、プロセッサ110は、AIの機能を有し学習と推論を実行するソフトウェアを生成できる。なお、上記は一例であり、学習器が何を学習するか、学習器が何を推論するかは任意である。プロセッサ110は、入力データ及び教師データの型を基に、学習器の学習内容及び学習器による推論内容を決定する。ソフトウェア生成支援装置100は、このようなAI機能により、例えば、デジタルツインのデータ収集、3D表示と人工知能とを簡易に連携でき、未来予測可能なソフトウェアを容易に構築できる。
次に、モジュール補間について説明する。
ユーザにより操作デバイス140を介して決定された1つ以上のモジュールに基づくプログラムの実施のみでは、目的モジュールの目的を達成できない場合、プロセッサ110は、不足しているモジュールを補間するよう支援したり、自動的にモジュールを補間したりしてよい。モジュール補間の際には、入力側又は出力側に接続可能なモジュールの一覧を表示し、操作デバイス140を介して選択可能としてもよい。この場合、ソフトウェア生成支援装置100は、ユーザ所望のモジュールを選択する支援ができる。また、モジュール補間の際には、2つのモジュール間を接続可能となるような一連のモジュールを補間してもよい。この場合、ユーザは一覧からモジュールを選択する手間を省いて、モジュール補間を実施できる。
例えば、プロセッサ110は、操作デバイス140を介して、ソフトウェアの生成過程において、あるカテゴリの前後のカテゴリのモジュールを選択することで、あるカテゴリに係るカテゴリアイコンCA又はモジュールアイコンMAを画面G1に表示させてよい。例えば、プロセッサ110は、任意のデバイスモジュールと任意のデータモジュールとを選択した場合、データソースのカテゴリアイコンを画面G1に表示させてよい。または、この場合、プロセッサ110は、接続可否情報I3に基づいて、入力部12にデバイスモジュールのモジュールアイコンMAの出力部13を接続可能であり、出力部13にデータモジュールのモジュールアイコンMAの入力部12を接続可能であるデータソースモジュールのモジュールアイコンMAを画面G1に表示させてよい。同様に、プロセッサ110は、データモジュールと処理モジュールとを選択することで、データフィルタのカテゴリアイコンCA又は接続可否情報I3に基づくモジュールアイコンMAを画面G1に表示させてよい。
また、ユーザにより操作デバイス140を介して決定されたモジュールが1つであった場合、プロセッサ110は、ソフトウェアの生成過程においてこのモジュールよりも前段側又は後段側に連結可能なモジュールを1段ずつ順に連結してよい。例えば、プロセッサ110は、モジュールの入力側及び出力側に連結可能なモジュールを順に決定し、連結が決定されたモジュールに対応するモジュールアイコンMAを画面G1に順に表示させてよい。
次に、ソフトウェア生成支援装置100の動作例について説明する。ここでの動作例により、図9や図10のようなラインLNに接続された一連のモジュールアイコンMAが画面G1に表示される。
図11は、ソフトウェア生成支援装置100による動作例を示すフローチャートである。
まず、プロセッサ110は、操作デバイス140を介して、メニューからユーザ所望のカテゴリのモジュールを決定し、決定されたモジュールに対応するモジュールアイコンMAを表示させる(モジュールの決定処理)(S1)。ステップS1の段階では、メニューから決定されたモジュールアイコンMA(例えば図9のモジュールアイコンMA11~MA18)が画面G1に配置されるのみであり、ラインLNが表示されない状態となる。なお、プロセッサ110は、複数のモジュールアイコンMAを画面G1に表示させる場合、例えば、ソフトウェアの生成過程において隣接するモジュールを、画面G1上で隣接して配置させる。この場合、ユーザは、ソフトウェアの生成過程を直感的に理解し易くなる。
プロセッサ110は、接続可否情報I3に基づいて、ラインLNを介して、例えば表示された複数のモジュールアイコンMA間をラインLNで接続し、複数のモジュールアイコンの間を接続し、モジュールアイコンMAとともにラインLNを画面G1に表示させる(モジュール間の接続処理)(S2)。
モジュール間の接続処理では、まず、例えば、プロセッサ110は、メニューからモジュールアイコンMAの間をラインLNで接続するための操作(ライン接続操作)を選択し、各モジュールアイコンMAの入力部12及び出力部13に、ラインLNの一端部及び他端部を順番に接続する。なお、モジュール間の接続処理では、ラインLNの接続が不可であったり、モジュールを他のモジュールに変更したり、モジュール追加(補間)したりすることもある。また、プロセッサ110は、接続可否情報I3に基づいて、ステップS1で決定されたモジュール同士で連結可能なモジュールが存在する場合には、ライン接続操作の代わりに、自動的にラインLNを表示させて、入出力関係を加味して、連結可能な2つのモジュールに対応するモジュールアイコンMAをラインLNで接続してもよい。
なお、プロセッサ110は、操作デバイス140を介して、画面G1に表示されたモジュールアイコンMA等のアイコン及び前記ラインLNの位置を移動可能である。また、プロセッサ110は、操作デバイス140を介して、画面G1におけるラインLNの形状を変形可能である。このような移動や変形により、各モジュールアイコンMAの各端子と各ラインLNとが接続し易くなる。
プロセッサ110は、各モジュールの入出力の接続関係と、各モジュールの属性と、に基づいて、ソフトウェアを生成する(S3)。つまり、プロセッサ110は、接続可否情報I3に基づいてラインLNで接続された各モジュールアイコンMAの入力部12及び出力部13の接続関係と、各モジュールのデータや処理の内容と、に基づいて、ソフトウェアを生成する。
図12は、ソフトウェア生成支援装置100によるモジュールの決定処理時の動作例を示すフローチャートである。
まず、プロセッサ110は、操作デバイス140を介して、メニューボタンB1を押下など行うことで、カテゴリ一覧情報I1に基づいて、カテゴリの一覧を画面G1に表示させ(S11)、一覧表示された1つ以上のカテゴリの中から任意のカテゴリを選択する(S12)。プロセッサ110は、モジュール一覧情報I2に基づいて、選択されたカテゴリに属するモジュールの一覧を画面G1に表示させ(S13)、一覧表示された1つ以上のモジュールの中から任意のモジュールを選択して決定し(S14)、決定されたモジュールに対応するモジュールアイコンMAを画面G1に表示させる(S15)。プロセッサ110は、所望のカテゴリの所望のモジュールの選択が終了したか否かを判定する(S16)。この場合、プロセッサ110は、例えば操作デバイス140を介してこの選択が終了したか否かを指示してよい。所望のカテゴリの所望のモジュールの選択が終了していない場合、ステップS11に進む。一方、所望のカテゴリの所望のモジュールの選択が終了した場合、図12の処理を終了する。
図13は、ソフトウェア生成支援装置100によるモジュール間の接続処理時の動作例を示すフローチャートである。
まず、プロセッサ110は、メモリ130に保持された接続可否情報I3に基づいて、画面G1に表示された所定のモジュールアイコンMAの端子(入力部12又は出力部13)に、ラインLNの未接続の端部を接続可能であるか否かを判定する(S21)。ここでの所定のモジュールアイコンMAは、操作デバイス140を介して指定されてもよい。
この場合、プロセッサ110は、接続対象のラインLNのいずれの端部もモジュールアイコンMAに接続されていない場合、1つ目に接続されるモジュールアイコンMAについては、接続可能であると判定されてよい。例えば、ラインLNの入力側に接続されるモジュールアイコンMA又は出力側に接続されるモジュールアイコンMAが決定されておらず、モジュール間でのフォーマットの不一致等を加味する必要がないためである。
一方、接続対象のラインLNの一方の端部が既に他のモジュールアイコンMAに接続されている場合、他のモジュールアイコンMAに対応するモジュールのデータや処理に応じて、接続可否が定まる。各モジュールアイコンMAに対して他のモジュールアイコンMAが接続可能であるか否かは、接続可否情報I3としてメモリ130に保持されている。
なお、プロセッサ110は、接続対象のラインLNの一方の端部が既に他のモジュールアイコンMAの入力部12に接続されている場合、接続対象のラインLNの他方の端部を、このモジュールアイコンMAの出力部13に接続可能であるか否かを判定する。プロセッサ110は、接続対象のラインLNの一方の端部が既に他のモジュールアイコンMAの出力部13に接続されている場合、接続対象のラインLNの他方の端部を、このモジュールアイコンMAの入力部12に接続可能であるか否かを判定する。
ステップS21において、所定のモジュールアイコンMAの端子にラインLNの未接続の端部を接続可能である場合(ステップS21のYes)、プロセッサ110は、所定のモジュールアイコンMAの端子にラインLNの未接続の端部を接続して、画面G1に表示させる(S22)。
ステップS21において、所定のモジュールアイコンMAの端子にラインLNの未接続の端部を接続不可である場合(ステップS21のNo)、プロセッサ110は、所定のモジュールアイコンMAの端子にラインLNの未接続の端部を接続しないで、画面G1の表示を継続する(S23)。所定のモジュールアイコンMAの端子にラインLNの未接続の端部を接続しないとは、モジュールアイコンMAの端子とラインLNの未接続の端部とが離間した状態であってよい。または、ステップS21において、所定のモジュールアイコンMAの端子にラインLNの未接続の端部を接続不可である場合(ステップS21のNo)、プロセッサ110は、所定のモジュールアイコンMAの端子とラインLNの未接続の端部とが接続不可であることを示す情報(例えばマーカ)を、画面G1に表示させてもよい(S23)。ここでのマーカは、×印であっても所定の着色であってもよいし、その他の文字、図形、記号、形状、又は模様等で示されてもよい。このマーカは、接続不可のラインLNの未接続の端部に重畳して(図19A参照)、または所定のモジュールアイコンMAの端子(ラインLNが接続されようとしていた端部)に重畳して(図19B参照)、表示されてよい。
ステップS22又はステップS23の処理後、プロセッサ110は、画面G1に表示された全てのモジュールアイコンMAへのラインLNの接続確認が完了したか否かを判定する(S24)。
ラインLNの接続確認が完了していないモジュールアイコンMAが存在する場合(S24のNo)、プロセッサ110は、ラインLNの接続対象となる所定のモジュールアイコンMAを、ラインLNの接続確認が完了していないモジュールアイコンMAのうちのいずれかのモジュールアイコンMA(次のモジュールアイコンMA)に変更する(S25)。そして、ステップS21の処理に進む。ここでの次のモジュールアイコンMAは、操作デバイス140を介して指定されてもよい。
一方、全てのモジュールアイコンMAへのラインLNの接続確認が完了した場合(S24のYes)、プロセッサ110は、図13の処理を終了する。
よって、プロセッサ110は、全てのモジュールアイコンMAへのラインLNの接続確認が完了するまで、ステップS21~S24の処理を繰り返す。
図14は、ソフトウェア生成支援装置100によるモジュール間の接続処理時の他の動作例を示すフローチャートである。
図13のステップS21の処理がNoである場合、つまり、所定のモジュールアイコンMAの端子にラインLNの未接続の端部を接続不可である場合、プロセッサ110は、この端子に、接続不可であったモジュールアイコンMAに対応するモジュールが属するカテゴリと同じカテゴリにおいて、ラインLNの未接続の端部を接続可能なモジュールの一覧を、画面G1に表示させる(S31)。
プロセッサ110は、操作デバイス140を介して、表示されたモジュールの一覧から、任意のモジュールを選択し、ラインLNの未接続の端部を接続する対象のモジュールを決定する(S32)。
プロセッサ110は、ステップS21において接続不可であったモジュールアイコンの位置に、決定されたモジュールに対応するモジュールアイコンMAを、このモジュールアイコンMAの端子にラインLNの未接続の端部を接続して、表示させる(S33)。
S33の処理の後、図13のステップS24に進む。
なお、S31~S33では、モジュールアイコンMAの端子には、入力部12及び出力部13が含まれ、プロセッサ110は、この端子毎に、S31~S33の処理を実施してよい。例えば、プロセッサ110は、この端子毎に、接続可能なモジュールの一覧を表示させ、任意のモジュールを決定し、モジュールに対応するモジュールアイコンMAを表示させてよい。
なお、プロセッサ110は、モジュール一覧リストを表示する際には、表示される複数のモジュールのそれぞれの選択の優先度又は選択された場合の有益度等を画面G1にあわせて表示させてもよい。これにより、ユーザが優先度や効果を加味してモジュールを容易に選択できる。
これにより、ソフトウェア生成支援装置100は、例えば操作デバイス140を介してモジュールアイコンMAの入力部12(端子の一例)を指示するだけで、このモジュールによる処理等に必要な前処理やデータ取得を実行するモジュールを容易に決定できる。さらに、前処理やデータ取得に必要な更なる前処理やデータ取得を事項するモジュールも連続的に決定できる。つまり、前段モジュールの決定を連続的に実施できる。よって、例えば、所定のモジュールの選択を行い、操作デバイス140を介して他のモジュールを補間して配置できる。また、例えば選択される1つのモジュールが目的モジュールである場合、ソフトウェア生成支援装置100は、目的モジュールの目的を達成するための処理やデータ取得を行うためのモジュール(ソフトウェア部品)を容易に導出できる。なお、入力部12側の効果を例示したが、出力側の効果も同様であり、ソフトウェア生成支援装置100は、選択された所定のモジュールの後段モジュールの決定を連続的に実施できる。
図15は、ソフトウェア生成支援装置100によるモジュール間の接続処理時の他の動作例を示すフローチャートである。
図13のステップS21の処理がNoである場合、つまり、所定のモジュールアイコンMAの端子にラインLNの未接続の端部を接続不可である場合、プロセッサ110は、この端子に、ラインLNの未接続の端部を接続可能なモジュールの選択優先度(接続優先度)の情報を取得する(S41)。この選択優先度の情報はメモリ130に保持され、メモリ130から取得されてよい。選択優先度の情報は、接続可否情報I3の中に含まれてもよい。
プロセッサ110は、取得された選択優先度に基づいて、ラインLNの未接続の端部を接続する対象のモジュールを決定する(S42)。例えば、選択優先度が最上位のモジュールが、接続対象のモジュールとして決定される。
プロセッサ110は、ステップS21において接続不可であったモジュールアイコンMAの位置に、決定されたモジュールに対応するモジュールアイコンMAを、このモジュールアイコンMAの端子にラインLNの未接続の端部を接続して、表示させる(S43)。
S43の処理の後、図13のステップS24に進む。
なお、S41~S43では、モジュールアイコンMAの端子には、入力部12及び出力部13が含まれ、プロセッサ110は、この端子毎に、S41~S43の処理を実施してよい。例えば、プロセッサ110は、この端子毎に、接続可能なモジュールの選択優先度の情報をメモリ130から取得し、選択優先度に基づいてモジュールを決定し、モジュールに対応するモジュールアイコンMAを表示させてよい。
図16は、ソフトウェア生成支援装置100による接続済みのモジュールの変更処理の一例を示すフローチャートである。図15の処理は、図11の処理の終了後に実施される。図16の処理開始時には、各モジュールアイコンMAや接続済みのラインLNが画面G1に表示されている。
まず、プロセッサ110は、ラインLNが接続済みのモジュールアイコンMAが指示されたことを検出したか否かを判定する(S51)。例えば、プロセッサ110は、画面G1上でカーソルがモジュールアイコンMA上(例えば属性部11上)に配置されたことを検出した場合に、モジュールアイコンMAが選択されたことを検出してよい。
プロセッサ110は、選択されたモジュールアイコンMAの代わりに、このモジュールアイコンMAに対応するモジュールが属するカテゴリと同じカテゴリにおいて、同じラインLNの端部を接続可能なモジュールの一覧を、画面G1に表示させる(S52)。この場合、プロセッサ110は、接続可否情報I3に基づいて、選択されたモジュールアイコンMAに対応するモジュールの前段モジュール及び後段モジュールとの入出力関係を加味して、接続可能なモジュールの一覧を表示させてよい。
プロセッサ110は、操作デバイス140を介して、表示されたモジュールの一覧から任意のモジュールを選択して決定する(S53)。
プロセッサ110は、ステップS51で選択されたモジュールアイコンMAの位置に、決定されたモジュールに対応するモジュールアイコンMAを、このモジュールアイコンMAの端子に対応してラインLNの端部を接続して、画面G1に表示させる(S54)。新たなモジュールアイコンMAの端子に接続されるラインLNの端部は、S51でモジュールアイコンMAに接続されていたラインLNの端部である。
図17は、ソフトウェア生成支援装置100によるモジュール間の接続処理時の他の動作例を示すフローチャートである。図17では、複数のモジュールアイコンMAに基づいて他のモジュールアイコンMAを補間し、ラインLNを介してモジュールアイコンMAの間を接続し、モジュール間を連結することを想定する。なお、図17の処理は、図13に示したステップS21~S25の処理と並行して実施される。
まず、ステップS1におけるモジュールの決定処理の終了後、プロセッサ110は、接続可否情報I3に基づいて、決定された複数のモジュールのうち、任意の2つのモジュールの間に配置されるべき1つ以上の不在のモジュールが存在するか否かを判定する(S71)。つまり、プロセッサ110は、1つ以上のモジュールを介在させれば、入出力関係を加味して任意の2つのモジュールを連結可能であるか否かを判定する。プロセッサ110は、接続可否情報I3に基づいて、この2つのモジュールの間に介在させる1つ以上のモジュール(補間モジュール)を決定する(S72)。
例えば、図7に示すように、選択された2つのモジュールが、デバイスモジュールとしてのカメラ(店頭)のモジュールと処理モジュールとしての歩行者計数のモジュールとである場合、プロセッサ110は、接続可否情報I3に基づいて、補間モジュールとして、データモジュールとしての映像のモジュールと、データフィルタモジュールとしての画像認識のモジュールと、を決定してよい。例えば、図10に示すように、選択された2つのモジュールが、デバイスカテゴリのカメラ(店頭)のモジュールM61とAI処理モジュールとしての本日の売上予測のAIモジュールM54とである場合、プロセッサ110は、接続可否情報I3に基づいて、補間モジュールとして、データモジュールとしての映像(リアルタイム)のモジュールM62と、処理モジュールとしての歩行者数計測のモジュールM63と、を決定してよい。
プロセッサ110は、選択された任意の2つのモジュールと、決定された1つ以上の補間モジュールと、の入出力関係に基づいて、選択された任意の2つのモジュールに対応するモジュールアイコンMAの端子(入力部12と出力部13)と1つ以上の補間モジュールに対応するモジュールアイコンMAの端子(入力部12と出力部13)とを、ラインLNで接続して、画面G1に表示させる(S73)。
これにより、ソフトウェア生成支援装置100は、例えば操作デバイス140を介して複数のモジュールを選択するだけで、選択された任意の2つのモジュールの間で必要な処理やデータ取得を実行する補間モジュールを自動的に決定できる。よって、この2つのモジュールの間にどのような処理やデータが必要であるかを理解していないユーザであっても、この2つのモジュールを含むソフトウェアを簡単に生成できる。
図18は、モジュール決定処理時の他の動作例を示すフローチャートである。図18では、AIモジュールM5を配置することを想定する。
ステップS11の処理後、プロセッサ110は、操作デバイス140を介して、一覧表示された1つ以上のカテゴリの中からAIカテゴリを選択したか否かを判定する(S81)。AIカテゴリが選択された場合、プロセッサ110は、学習データを収集するAIモジュール(例えば図10で説明したAIモジュールM51)と、学習データに基づいて学習器を生成するAIモジュール(例えば図10で説明したAIモジュールM53)と、学習器を用いて推論するAIモジュール(例えば図10で説明したAIモジュールM54)と、学習器による推論結果を表示するAIモジュール(例えば図10で説明したAIモジュールM55)と、を決定する(S82)。プロセッサ110は、これらのAIモジュールM5に対応するモジュールアイコンMA5(MA51,MA53,MA54,MA55)を画面G1に表示させる(S83)。
これにより、ソフトウェア生成支援装置100は、例えば、AIを用いるための学習器を生成するモジュール、リアルタイムに得られるデータを基に学習器を用いて推論して未来予測を行うモジュール、未来予測の結果を可視化するモジュール、を容易に導出して、AIに関する処理を含むソフトウェアを容易に生成できる。
本実施形態では、図11~図18を用いて複数のフローチャートを例示した。なお、プロセッサ110は、これらのフローチャートに関する処理を、任意に組み合わせて実施してもよい。つまり、ソフトウェア生成支援装置100は、図11~図18に示した処理に対応する複数の機能をいずれも有していてよい。
例えば、図13の処理と図17の処理とが組み合わせて実施されてもよい。例えば、プロセッサ110は、図13のS21のNo且つ図17のS71のNoの場合に、S23の処理を行ってもよい。つまり、プロセッサ110は、ラインLNの両端部に接続される2つのモジュールの間の接続が不可である場合、接続可否情報I3に基づいて、この2つのモジュールとの間を介在可能な他のモジュールが存在するか否かを判定してよい。プロセッサ110は、補完モジュールが存在しない場合に、ラインLNへの接続対象のモジュールアイコンMAの端子にラインLNの未接続の端部を接続しないで画面G1の表示を継続したり、又は、このモジュールアイコンMAの端子とラインLNの未接続の端部とが接続不可であることを示す情報(例えばマーカ)を、画面G1に表示させたりしてもよい。また、例えば、プロセッサ110は、図13のS21のNo且つ図17のS71のYesの場合に、S72及びS73の処理を行ってもよい。つまり、プロセッサ110は、上記の2つのモジュールの間の接続が不可であり、補完モジュールが存在する場合、2つのモジュールの間に補間モジュールを介在させ、2つのモジュールと補間モジュールとに対応するモジュールアイコンMAをラインで接続して画面G1に表示させてもよい。
このような本実施形態のソフトウェア生成支援装置100によれば、生成対象のソフトウェアが、何のデータを取得すればよいのか、取得したデータをどのようなフォーマットで保存すれば次の処理にスムーズに実施できるか、どのような処理行えばよいのか、等を容易に把握できる。各データや処理に対応するモジュールに対応するモジュールアイコンMAが画面G1に表示されるからである。また、選択可能なデータや処理をモジュールとして選択することで、詳細な処理まで理解しなくても、目的の結果を得られるソフトウェアを構築できる。例えば、3次元表示を行うための処理は複雑で理解し難いが、3次元表示に必要な処理がモジュールとして提示され、この提示に従ってモジュールを選択することで、3次元表示を実施するソフトウェアを容易に構築できる。また、AIに関するモジュールもAI以外と同様に扱えることで、ソフトウェア生成支援装置100は、デジタルツインとAIの連携を簡易に実現できる。
また、データを保有する主体が様々な場合がある。例えば、3D建築データの場合には、建築の3Dデータの場合には建築の会社、地図の場合には地図の会社、分析の場合には分析の会社など、様々な場所に分かれている場合がある。このような場合でも、ソフトウェア生成支援装置100によれば、各データのモジュールを視覚的に繋ぎ合わせることで、各データを連携して処理を実施するソフトウェアを容易に提供できる。
また、ソフトウェア生成支援装置100は、各カテゴリに属するモジュールがラインLNを介して順次接続されることで、一連のモジュールを形成できる。プロセッサ110は、各ラインLNで接続された一連のモジュールを入出力関係を加味して順次処理することで、所定の目的を達成するソフトウェアを構築できる。
また、例えば、データモジュールが3Dデータであり、処理モジュールが地図データと3Dデータとの関連付けである場合、プロセッサ110は、地図上の座標のデータに合わせて、緯度経度高度をあわせて,3次元的に位置をあわせ使用可能なソフトウェアを提供できる。さらに、目的モジュールが災害ハザードマップの作成である場合には、上記の地図データと位置あわせされた3Dデータに基づいて被害状況を予測し、予測結果をグラフィックスで再現するソフトウェアを提供できる。
なお、1つのモジュールに入力されるデータが2種類以上あってもよい。この場合、モジュールアイコンMAの入力部12には、2つ以上の他のモジュールアイコンMAの出力部13が接続されてよい。例えば、1つのモジュールアイコンMAの入力部12が、3DデータのデータモジュールのモジュールアイコンMAの出力部13と、地図データのデータモジュールのモジュールアイコンMAの出力部13と、に接続されてもよい。同様に、1つのモジュールから出力されるデータが2種類以上あってもよい。
なお、本実施形態では、ソフトウェア生成支援装置100が備える操作デバイス140及び表示デバイス150は、ソフトウェア生成支援装置100と別体に構成されてもよい。
以上のように、本実施形態のソフトウェア生成支援装置100(情報処理装置の一例)は、プロセッサ110と、表示デバイス150と、操作デバイス140と、を備える。表示デバイス150は、ソフトウェアの連結状態の一部を示す複数のモジュールに対応する複数のモジュールアイコンMA(アイコンの一例)を、ソフトウェアの連結状態を示すラインLNで接続して、画面G1に表示する。複数のモジュールアイコンMAは、ソフトウェアが実行する少なくとも1つの処理を示す処理モジュールと、処理に用いられる少なくとも1つのデータを示すデータモジュールと、データの供給源であるデバイスを示すデバイスモジュールと、を含む。モジュールアイコンMAは、モジュールアイコンMAに対応するモジュールの属性を示す情報を表示する属性部11と、モジュールが連結状態において1つ前段のモジュールからデータ又は処理結果を入力する入力部12と、モジュールが連結状態において1つ後段のモジュールへデータ又は処理結果を出力する出力部13と、を有する。各モジュールアイコンMAの入力部12は、ラインLNを介して他のモジュールアイコンMAの少なくとも1つの出力部13と接続可能である。各モジュールアイコンMAの前記出力部は、前記ラインを介して他のモジュールアイコンMAの少なくとも1つの入力部12と接続可能である。画面G1におけるモジュールアイコンMA及びラインLNの位置は、移動可能である。画面G1におけるラインLNの形状は、変形可能である。プロセッサ110は、操作デバイス140を介して、第1のモジュールに対応する第1のモジュールアイコンMAの入力部12又は出力部13にラインLNを接続するよう指示し、複数のモジュールのそれぞれの間での入出力関係を加味した接続可否を示す接続可否情報I3を取得する。プロセッサ110は、接続可否情報に基づいて、ラインLNを介して、第2のモジュールに対応する第2のモジュールアイコンMAの出力部13又は入力部12に、第1のモジュールアイコンMAの指示された入力部12又は出力部13を接続するモジュール間接続が可能であるか否かを判定する。プロセッサ110は、モジュール間接続が可能である場合、第1のモジュールアイコンMAの入力部12又は出力部13にラインLNを接続する。モジュール間接続が不可である場合、前記接続可否情報に基づいて、前記第1のモジュールと前記第2のモジュールとの間を介在可能な1つ以上の補間モジュールが存在するか否かを判定する。プロセッサ110は、補完モジュールが存在しない場合、第1のモジュールアイコンMAの入力部12又は出力部13にラインLNを接続しないで第1のモジュールアイコンMA及びラインLNを表示し、又は、第1のモジュールアイコンMAの入力部12又は出力部13とラインLNとを接続不可であることを示すマーカを表示する。プロセッサ110は、各モジュールアイコンMAがラインLNで接続された状態に従って、各モジュールアイコンMAに対応する各モジュールを連携させて、ソフトウェアを生成する。
これにより、ソフトウェア生成支援装置100は、接続可否情報に基づいて、第1のアイコンに対応するモジュールと、ラインを介して接続された第2のアイコンに対応する他のモジュールとが、ソフトウェアの連結状態(生成順序、入出力関係)を加味して接続可能であるか否かを判定できる。ソフトウェア生成支援装置100は、ラインが接続された状態に従って各モジュールがデータや情報の入力や出力を実施でき、各モジュール間でのデータや処理を連携させて、ソフトウェアを生成できる。また、モジュール間接続が不可である場合には、他のモジュール(第3のモジュール)でモジュール間を補間できるか否かを判別し、モジュール間の補間もできない場合にはマーカ等を確認することで、モジュール間接続できず、且つモジュール間の補間もできないことを容易に確認できる。よって、ソフトウェア生成支援装置100は、ソフトウェア生成のための利便性の高いUIを提供できる。したがって、一般的なユーザであっても様々なデータや情報を組合せて様々な機能を実現するソフトウェアを容易に構築できる。
また、プロセッサ110は、モジュール間接続が不可である場合、且つ、第3のモジュールが存在する場合、接続可否情報に基づいて、第1のモジュールアイコンMAと第2のモジュールアイコンMAと第3のモジュールに対応する第3のモジュールアイコンMAとを、ラインLNで接続して画面G1に表示させてもよい。
これにより、ソフトウェア生成支援装置100は、ソフトウェア生成における上流工程の1つのモジュールとこのモジュールより下流工程の1つのモジュールとを決定するだけで、その間の工程のモジュールを補間して、各モジュールに対応する各モジュールアイコンMAを表示できる。この場合、ソフトウェア生成支援装置100は、モジュール補間のために特別なユーザ操作を必要とせずに、2つのモジュールの入出力関係を加味して自動的に第3のモジュールを追加配置できる。
また、接続可否情報は、各モジュールに複数の他のモジュールのいずれかを接続する場合の接続優先度の情報、を含んでよい。プロセッサ110は、モジュール間接続が不可であり、第1のモジュールアイコンMAの入力部12又は出力部13に接続可能な第4のモジュールが複数存在する場合、接続優先度の情報に基づいて、第4のモジュールを決定してよい。プロセッサ110は、接続可否情報に基づいて、第1のモジュールアイコンMAと第4のモジュールに対応する第4のモジュールアイコンMAとを、ラインLNで接続して画面G1に表示させてよい。
これにより、ソフトウェア生成支援装置100は、第4のモジュールの候補が複数ある場合には、優先度の高い第4のモジュールに対応する第4のモジュールアイコンMAを表示できる。よって、ソフトウェア生成支援装置100は、各モジュールの詳細を十分に理解していないユーザであっても、各モジュールの入力や出力を理解することを支援でき、不足しているモジュールに対応するモジュールアイコンMAを容易に配置できる。
また、プロセッサ110は、操作デバイス140を介して、ラインLNで接続された第1のモジュールアイコンMAの属性部11が指示された場合、接続可否情報に基づいて、ラインLNに接続可能なモジュールの一覧のリストを、画面G1に表示させてよい。プロセッサ110は、操作デバイス140を介してこのリストから第5のモジュールを選択することで、第1のモジュールを第5のモジュールに変更し、第5のモジュールに対応する第5のモジュールアイコンMAを画面G1に表示させてよい。
これにより、ソフトウェア生成支援装置100は、手動で又は自動で決定されて一度配置された第1のモジュールアイコンMAを、同じ位置でラインLNに接続可能な第5のモジュールの候補をリスト表示して手動で変更できる。例えば、ソフトウェア生成支援装置100は、3次元表示するモジュールを画面G1に表示していた場合に、代替モジュールとして二次元表示するモジュールに変更でき、一度配置されたモジュールをユーザの意図に沿って変更できる。
また、プロセッサ110は、操作デバイス140を介して第1のモジュールアイコンMAにおけるラインLNに接続されていない入力部12又は出力部13が指示された場合、指示された入力部12又は出力部13に接続可能なモジュールの一覧のリストを、画面G1に表示させてよい。プロセッサ110は、操作デバイス140を介してこのリストから第2のモジュールを選択することで、第1のモジュールアイコンMAにおける指示された入力部12又は出力部13と、第2のモジュールに対応する第2のモジュールアイコンMAの出力部13又は入力部12とを、ラインLNを介して接続して、画面G1に表示させてよい。
これにより、ソフトウェア生成支援装置100は、ラインLNが接続されていない第1のモジュールアイコンMAの端子(入力部12又は出力部13)を指示することで、例えば第1のモジュールアイコンMAの端子にカーソル等を重ねることで、モジュールの一覧のリストから第2のモジュールを容易に選択できる。
また、モジュールは、複数のカテゴリ別に設けられてよい。プロセッサ110は、カテゴリを選択するためのカテゴリ一覧情報I1(メニュー情報の一例)を画面G1に表示させてよい。プロセッサ110は、操作デバイス140を介してカテゴリ一覧情報I1からカテゴリを選択してよい。プロセッサ110は、選択されたカテゴリに属する1つ以上のモジュールの一覧のリストを画面G1に表示させてよい。プロセッサ110は、操作デバイス140を介してこのリストから第1のモジュールを選択することで、第1のモジュールアイコンMAを画面G1に表示させてよい。
これにより、ソフトウェア生成支援装置100は、例えば、カテゴリ(例えばデータから目的に至るまでのもの)毎に管理されたモジュールのうちの1つを選択して配置できる。
また、カテゴリは、ソフトウェアを実行する情報処理装置(例えばソフトウェア生成支援装置100又はその他の情報処理装置)を動作させる目的を示す目的カテゴリを含んでよい。プロセッサ110は、目的カテゴリに属する第6のモジュールに対応する第6のモジュールアイコンMAを、画面G1に表示させてよい。
これにより、ソフトウェア生成支援装置100は、目的モジュールに対応する第6のモジュールアイコンMAを画面G1上に配置することで、ソフトウェアによる処理によって実現したい目的を明確に指定できる。よって、例えば目的モジュールを起点として、各モジュールに接続可能なモジュール一覧リストI2を表示し、順次選択することで、目的を達成するための処理やデータを取得するためのモジュールを順次配置できる。
また、カテゴリは、学習器の生成又は学習器による処理を規定するAIカテゴリを含んでよい。AIカテゴリは、学習器が学習するための学習データを収集する学習データ収集モジュールと、学習器による推論の結果を示す推論データを表示する推論データ表示モジュールと、を含んでよい。プロセッサ110は、カテゴリ一覧情報I1からAIカテゴリを選択した場合、学習データ収集モジュールに対応するモジュールアイコンMA5と、推論データ表示モジュールに対応するモジュールアイコンMA5とを、画面G1に表示させてよい。
これにより、ソフトウェア生成支援装置100は、AI関連のモジュールをAI関連以外のモジュールと同様に画面G1上に配置でき、ソフトウェアを生成するための部品として使用できる。ソフトウェア生成支援装置100は、AI関連のモジュールとして、学習器の生成に係るモジュールだけでなく、学習器を使った実空間での処理による推論の結果を提示するモジュールについても一括して管理できる。ソフトウェア生成支援装置100は、例えば、リアルタイムの実空間の情報を取得し、学習器を用いてリアルタイム情報に基づいて処理(推論)を実行して、その結果を可視化できる。つまり、ソフトウェア生成支援装置100は、接続可否情報に基づいて、表示されたAI関連のモジュールをAI関連以外のモジュールを含めてラインで接続することで、例えば、AIに必要な学習を実施して、この学習結果を更に、リアルタイムのデータと結び付けて、現状や未来を予測できる。
以上、図面を参照しながら各種の実施形態について説明したが、本開示はかかる例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本開示の技術的範囲に属するものと了解される。