IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ トヨタ自動車株式会社の特許一覧

<>
  • 特開-情報処理装置、及び、方法 図1
  • 特開-情報処理装置、及び、方法 図2
  • 特開-情報処理装置、及び、方法 図3
  • 特開-情報処理装置、及び、方法 図4
  • 特開-情報処理装置、及び、方法 図5
  • 特開-情報処理装置、及び、方法 図6
  • 特開-情報処理装置、及び、方法 図7
  • 特開-情報処理装置、及び、方法 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025009360
(43)【公開日】2025-01-20
(54)【発明の名称】情報処理装置、及び、方法
(51)【国際特許分類】
   G06F 8/34 20180101AFI20250110BHJP
【FI】
G06F8/34
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2023112313
(22)【出願日】2023-07-07
(71)【出願人】
【識別番号】000003207
【氏名又は名称】トヨタ自動車株式会社
(74)【代理人】
【識別番号】110002860
【氏名又は名称】弁理士法人秀和特許事務所
(72)【発明者】
【氏名】松尾 勇気
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376BB02
5B376BC43
5B376FA19
(57)【要約】
【課題】プログラムの構造の見通しを良くする。
【解決手段】情報処理装置は、複数の処理を含み、当該複数の処理の一部は並行して実行可能である第1の処理について、当該複数の処理を複数のノードに対応付け、当該複数の処理の間の情報又は処理の流れを複数のノード間を接続するエッジに対応付けたツリー構造を示す情報を取得し、記憶部に格納する。複数のノードのそれぞれが、独立して、第1のエッジで接続された他のノードからメッセージが入力された場合に、当該複数の処理のうちの対応付けられた処理を実行し、第2のエッジで接続された他のノードへメッセージを出力することによって、第1の処理が実行される。
【選択図】図1
【特許請求の範囲】
【請求項1】
複数の処理を含み、前記複数の処理の一部は並行して実行可能である第1の処理について、前記複数の処理を複数のノードに対応付け、前記複数の処理の間の情報又は処理の流れを前記複数のノード間を接続するエッジに対応付けたツリー構造を示す情報を取得し、記憶部に格納する制御部を備え、
前記複数のノードのそれぞれが、独立して、第1のエッジで接続された他のノードからメッセージが入力された場合に、前記複数の処理のうちの対応付けられた処理を実行し、第2のエッジで接続された他のノードへメッセージを出力することによって、前記第1の処理が実行される、
情報処理装置。
【請求項2】
前記制御部は、前記第1の処理に対応する前記ツリー構造を示す情報に基づいて、前記第1の処理に対応するツリーを形成し、出力する、
請求項1に記載の情報処理装置。
【請求項3】
前記制御部は、
前記第1の処理に対する変更として、前記第1の処理に対応する前記ツリーに対する変更のユーザ操作を受け付け、
前記ユーザ操作に基づいて、前記第1の処理に対応する前記ツリーに対する変更を、前記第1の処理に対応する前記ツリー構造を示す情報に反映させることで、前記第1の処理に対する前記変更を前記第1の処理に反映させる、
請求項2に記載の情報処理装置。
【請求項4】
前記制御部は、前記第1の処理に対応する前記ツリー構造を示す情報として、前記複数のノードのそれぞれについて、前記第1のエッジで接続される他のノードと、前記対応付けられた処理の内容と、前記第2のエッジで接続される他のノードと、に関する情報を前記記憶部に格納する、
請求項1に記載の情報処理装置。
【請求項5】
コンピュータが、
複数の処理を含み、前記複数の処理の一部は並行して実行可能である第1の処理について、前記複数の処理を複数のノードに対応付け、前記複数の処理の間の情報又は処理の流れを前記複数のノード間を接続するエッジに対応付けたツリー構造を示す情報を取得し、記憶部に格納し、
前記複数のノードのそれぞれが、独立して、第1のエッジで接続された他のノードからメッセージが入力された場合に、前記複数の処理のうちの対応付けられた処理を実行し、第2のエッジで接続された他のノードへメッセージを出力することによって、前記第1の処理が実行される、
方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、プログラムの管理に関する。
【背景技術】
【0002】
機能単位によって分割した複数のプログラム部品を組み合わせてアプリケーションプログラムを構成作成することを支援するアプリケーションプログラムの構成作成支援方法が開示されている(例えば、特許文献1)。アプリケーション実現の履歴が有向グラフによって表示され、グラフ内のノードの一つが選択されると、選択されたノードの実現時の選択プログラム履歴が履歴サブ画面に表示される。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平09-258975号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示は、プログラムの構造の見通しを良くすることが可能な情報処理装置、及び、方法を提供することを課題とする。
【課題を解決するための手段】
【0005】
本開示の態様の一つは、
複数の処理を含み、前記複数の処理の一部は並行して実行可能である第1の処理について、前記複数の処理を複数のノードに対応付け、前記複数の処理の間の情報又は処理の流れを前記複数のノード間を接続するエッジに対応付けたツリー構造を示す情報を取得し、記憶部に格納する制御部を備え、
前記複数のノードのそれぞれが、独立して、第1のエッジで接続された他のノードからメッセージが入力された場合に、前記複数の処理のうちの対応付けられた処理を実行し、第2のエッジで接続された他のノードへメッセージを出力することによって、前記第1の処理が実行される、
情報処理装置である。
【0006】
本開示の他の態様の一つは、
コンピュータが、
複数の処理を含み、前記複数の処理の一部は並行して実行可能である第1の処理について、前記複数の処理を複数のノードに対応付け、前記複数の処理の間の情報又は処理の流れを前記複数のノード間を接続するエッジに対応付けたツリー構造を示す情報を取得し、記憶部に格納し、
前記複数のノードのそれぞれが、独立して、第1のエッジで接続された他のノードからメッセージが入力された場合に、前記複数の処理のうちの対応付けられた処理を実行し、第2のエッジで接続された他のノードへメッセージを出力することによって、前記第1の処理が実行される、
方法である。
【発明の効果】
【0007】
本開示によれば、プログラムの構造の見通しを良くすることができる。
【図面の簡単な説明】
【0008】
図1図1は、表示用ユーザ情報の生成処理のツリー構造の一例を示す図である。
図2図2は、情報処理装置のハードウェア構成の一例を示す図である。
図3図3は、情報処理装置の機能構成の一例を示す図である。
図4図4は、ノード情報の一例である。
図5図5は、エッジ情報の一例である。
図6図6は、ノードの処理のフローチャートの一例である。
図7図7は、ツリー対象処理のツリーの表示処理のフローチャートの一例である。
図8図8は、ツリー対象処理のツリーに対する変更処理のフローチャートの一例である。
【発明を実施するための形態】
【0009】
例えば、アプリケーションプログラム内の画面には複数の項目が表示されることが多い。画面に表示される複数の項目は、例えば、APIからフェッチされたデータなど、1又は複数の情報源から、新たに生成されたり加工されたりしてから、表示されることが多い。例えば、当該アプリケーションプログラムの、作成者とは異なる者による更新等によって、画面に表示される項目の情報の派生及び加工が無秩序に実施されると、プログラムが複雑化する可能性が高い。
【0010】
本開示では上記問題に鑑み、一部の処理が並行して実施可能である第1の処理に含まれる複数の処理のそれぞれを分散コンピューティングの1つのノードとみなし、さらに、当該複数の処理をツリー構造のノード、及び、当該複数の処理間の情報又は処理の流れをツリー構造のノード間を接続するエッジに対応させて、第1の処理をツリー構造で管理する。これによって、第1の処理をツリー構造で表すことが可能となり、第1の処理の構造を見通し良くすることができる。
【0011】
より具体的には、本開示の態様の一つは、制御部を備える情報処理装置である。当該制御部は、複数の処理を含み、当該複数の処理の一部は並行して実行可能である第1の処理について、当該複数の処理を複数のノードに対応付け、当該複数の処理の間の情報又は処理の流れを当該複数のノード間を接続するエッジに対応付けたツリー構造を示す情報を取得し、記憶部に格納する。複数のノードのそれぞれは、独立して、第1のエッジで接続された他のノードからメッセージが入力された場合に、第1の処理に含まれる複数の処理のうちの対応付けられた処理を実行し、第2のエッジで接続された他のノードへメッセージを出力する。これによって、第1の処理が実行される。
【0012】
情報処理装置は、例えば、サーバなどの専用のコンピュータ、及び、PC(Personal Computer)、スマートフォン、及び、タブレット端末等のユーザ端末等の汎用のコンピュ
ータである。制御部は、例えば、CPU(Central Processing Unit)及びGPU(Graphics Processing Unit)等のプロセッサ、及び、FPGA(Field Programmable Gate Array)等の回路であってもよい。記憶部は、例えば、EPROM(Erasable Programmable ROM)、ハードディスクドライブ(Hard Disk Drive)、又は、SSD(Solid State Drive)等の補助記憶装置であってもよい。また、記憶部は、情報処理装置に備えられていて
もよいし、外部の装置に備えられていてもよい。
【0013】
第1の処理は、例えば、表示画面に含まれる情報の取得及び加工等の処理、及び、機械学習モデルへ入力される複数の情報を入力に適した形式に加工する処理等の複数の情報を取得して加工する処理である。このような第1の処理は、所定のメッセージの入力に対して所定の処理を実行し、実行結果を示すメッセージを出力する処理のような所定のフォーマットで表される複数の処理に細分化することができる。さらに、上述の様な第1の処理の細分化された処理の一部は、実行順は問われない、並行して実行可能な処理である。所
定のフォーマットで表され、その一部は並行して実行可能な細分化された複数の処理を、例えば、分散コンピューティングのモデルの一つであるアクターモデルのアクターに対応付けることで、第1の処理にアクターモデルの考え方を適用することができる。
【0014】
また、細分化された処理が、所定のメッセージの入力に対して所定の処理を実行し、実行結果を示すメッセージを出力する処理のような所定のフォーマットで表されることによって、細分化された処理間の情報又は処理の流れが明確になる。これによって、細分化された処理をノード、細分化された処理間の情報又は処理の流れをエッジに対応付けることができ、第1の処理をツリー構造で管理することができる。
【0015】
第1の処理をツリー構造で管理することによって、ユーザには、第1の処理を、細分化された処理をノード、細分化された処理間の情報又は処理の流れをエッジとするツリーで提供することができる。これによって、ユーザは、細分化された処理間の関係や第1の処理における情報又は処理の流れなどを視覚で直感的に理解することができ、第1の処理の見通しを良くすることができる。
【0016】
本開示の態様の一つにおいて、制御部は、第1の処理に対する変更として、第1の処理に対応するツリーに対する変更のユーザ操作を受け付け、当該ユーザ操作に基づいて、第1の処理に対応するツリーに対する変更を、第1の処理に対応するツリー構造を示す情報に反映させることで、第1の処理に対する変更を第1の処理に反映させてもよい。ツリーに対する変更には、例えば、ノード及びエッジの追加又は削除、ノードの変更、及び、エッジの接続ノードの変更等がある。本開示の態様の一つでは、ノードは第1の処理の細分化された処理、エッジは細分化された処理間の情報又は処理の流れに対応しているので、ツリーに対する変更は、当該変更に関連する処理への変更に留めることができる。すなわち、第1の処理に対応するツリーに対する変更の、第1の処理に対応するツリー構造を示す情報への反映を局所的にすることができる。
【0017】
本開示は、他の態様の一つとして、上記情報処理装置が実行する処理をコンピュータが実行する方法として特定することができる。当該方法は、コンピュータが、複数の処理を含み、複数の処理の一部は並行して実行可能である第1の処理について、複数の処理を複数のノードに対応付け、複数の処理の間の情報又は処理の流れを複数のノード間を接続するエッジに対応付けたツリー構造を示す情報を取得し、記憶部に格納することを含む。当該複数のノードのそれぞれが、独立して、第1のエッジで接続された他のノードからメッセージが入力された場合に、複数の処理のうちの対応付けられた処理を実行し、第2のエッジで接続された他のノードへメッセージを出力することによって、第1の処理が実行される。本開示は、他の態様の一つとして、上記方法をコンピュータに実行させるためのプログラム、及び、当該プログラムを記録した非一時的でコンピュータ読み取り可能な記録媒体として特定することができる。
【0018】
以下、図面に基づいて、本開示の実施の形態を説明する。以下の実施形態の構成は例示であり、本開示は実施形態の構成に限定されない。
【0019】
<第1実施形態>
図1は、表示用ユーザ情報の生成処理のツリー構造の一例を示す図である。表示用ユーザ情報の生成処理は、例えば、所定のアプリケーションプログラムのメニューのうちの一つの“ユーザ情報の確認”メニューが選択された場合に表示されるユーザ情報の表示画面に含まれる情報を生成する処理である。
【0020】
表示用ユーザ情報の生成処理は、例えば、以下の処理に細分化することができる。
(1)“ユーザ情報の確認”のメニューを選択するユーザ操作の入力を受ける。
(2)APIサーバからユーザ情報を取得する。ユーザ情報には、例えば、ユーザ画像、姓、名、住所(都道府県)、住所(市区町村)、住所(番地)等が含まれる。
(3-1)APIサーバから取得されたユーザ情報からユーザ画像の項目を取り出す。
(3-2)APIサーバから取得されたユーザ情報から姓の項目を取り出す。
(3-3)APIサーバから取得されたユーザ情報から名の項目を取り出す。
(3-4)APIサーバから取得されたユーザ情報から住所(都道府県)の項目を取り出す。
(3-5)APIサーバから取得されたユーザ情報から住所(市区町村)の項目を取り出す。
(3-6)APIサーバから取得されたユーザ情報から住所(番地)の項目を取り出す。(4)姓と名の項目から名前表示用の文字列を作成する。
(5)都道府県、市区町村、及び、番地の項目から住所表示用の文字列を作成する。
【0021】
上記処理のうち、(1)→(2)の処理、(3-2)及び(3-3)→(4)の処理、及び、(3-4)から(3-6)→(5)の処理は、この順番で実行されるが、それ以外の処理は、どのような順番で実行されても同じ処理結果が得られる。すなわち、(3-1)から(3-6)の処理、(4)と(5)の処理とは、それぞれ、並列的に実行可能である。
【0022】
第1実施形態では、分散コンピューティングの一つであるアクターモデルの考えを取り入れ、細分化された処理をアクターモデルのアクターに対応付ける。アクターモデルのアクターは、受信メッセージに指定された処理を実行し、実行する処理を指定したメッセージを次のアクターに送信する、という処理を行う。アクターの処理には遂次性は前提とされておらず、並列的に実行可能である。
【0023】
細分化された処理をアクターモデルのアクターに対応付け、データの流れのある処理間を接続すると、図1に示されるような、細分化された処理をノードとし、細分化された処理間の情報又は処理の流れをエッジとしたツリー構造によって、ユーザ情報の表示画面の生成処理を表すことができる。
【0024】
図1のように所定の処理をツリー構造で表すことによって、当該処理の構造が視覚的及び直感的に見通しやすくなる。これによって、当該処理のプログラムの構造が複雑化することを抑制することができる。
【0025】
また、ツリーで表されたプログラムの更新の際にも、プログラム全体を大きく変更することなく、例えば、ツリー上でノードとエッジとを追加、削除、又は、変更することで対応することができる。例えば、図1に示される例において、表示用ユーザ情報の生成処理の開始トリガとなるイベントとしてユーザ情報の更新を追加したい場合には、ユーザは、ユーザインタフェースに表示された図1のようなツリーに対して、当該ツリーに対して該当の処理を定義したノードとデータの流れを定義するエッジとを追加すればよい。これだけの操作で表示用ユーザ情報の生成処理のトリガとなるイベントとしてユーザ情報の更新を追加することができる。なお、ツリー構造でプログラムの構造を管理する対象となる処理は、表示用ユーザ情報の生成処理に限定されない。例えば、機械学習モデルへの入力として、複数の情報を取得して、当該モデルへの入力のために加工するような、並列的に実行可能な処理を一部として含む処理であれば、ツリー構造でプログラムの構造を管理する対象となり得る。表示用ユーザ情報の生成処理は、「第1の処理」の一例である。また、上記(1)-(5)の処理のそれぞれは、「第1の処理」に含まれる「複数の処理」の一例である。
【0026】
図2は、情報処理装置のハードウェア構成の一例を示す図である。情報処理装置1は、
例えば、図1において説明された表示用ユーザ情報の生成処理などの所定の処理をツリー構造で管理する装置である。情報処理装置1は、パーソナルコンピュータ(PC)、ワークステーション(WS)、又はサーバマシン、スマートフォン、タブレット端末などの情報処理装置(コンピュータ)を用いて構成可能である。情報処理装置1は、1又は2以上のコンピュータの集合体(クラウド)であってもよい。
【0027】
情報処理装置1は、ハードウェア構成として、プロセッサ101、メモリ102、補助記憶装置103、通信部104、入力装置105、及び、出力装置106を備える。メモリ102および補助記憶装置103は、コンピュータで読み取り可能な記録媒体である。
【0028】
補助記憶装置103は、各種プログラムや、各プログラムの実行に際してプロセッサ101が使用するデータを格納している。補助記憶装置103は、例えば、EPROM、ハードディスクドライブ、又は、SSDである。補助記憶装置103に保持されるプログラムには、例えば、オペレーティングシステム(OS)、アプリケーションプログラム、及び、プログラムの管理プログラム等がある。
【0029】
メモリ102は、プロセッサ101に、補助記憶装置103に格納されているプログラムをロードする記憶領域および作業領域を提供したり、バッファとして用いられたりする記憶装置である。メモリ102は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)のような半導体メモリを含む。
【0030】
プロセッサ101は、補助記憶装置103に保持されたプログラムをメモリ102にロードして実行することによって、各種処理を実行する。プロセッサ101は、例えば、CPU、GPU、又は、DSP(Digital Signal Processor)等である。プロセッサ101は、1つに限られず、複数備えられてもよい。プロセッサ101は、「制御部」の一例である。
【0031】
通信部104は、例えば、NIC(Network Interface Card)、又は、光回線インタフェース等である。なお、通信部104は、例えば、無線LAN等の無線ネットワークに接続する無線通信回路であってもよい。
【0032】
入力装置105は、例えば、キーボード、マウス、及び、タッチパッド等である。入力装置105は、マイクロフォン等の音声入力装置であってもよい。出力装置106は、例えば、ディスプレイ等である。出力装置106は、スピーカ等の音声出力装置であってもよい。なお、情報処理装置1のハードウェア構成は、図2に示されるものに限定されない。情報処理装置1は、該当の処理を実行する専用のFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit)等の電気回路を備える装置であってもよい。
【0033】
図3は、情報処理装置1の機能構成の一例を示す図である。情報処理装置1は、機能構成として、制御部11、ツリー構造情報DB 12、アプリケーションプログラム13、及び、ノード群14を備える。制御部11は、プログラムの管理プログラムをプロセッサ101が実行することによってその機能が実行される機能構成要素である。制御部11は、後述のツリー構造情報DB 12に保持される情報を管理する。以下、ツリー構造情報DB 12にツリー構造情報が保持される処理を、ツリー対象処理、と称する。
【0034】
例えば、制御部11は、ツリー対象処理のプログラムのツリーの表示リクエストのユーザ操作を受け付けると、ツリー構造情報DB 12に保持される情報に従って、該当のツリーを生成し、ディスプレイに表示する。ツリーは、例えば、当該ツリー構造に基づいて生成されたツリー図を含む画像として表示される。例えば、制御部11は、表示されたツ
リーに対する、ノード及びエッジの追加、削除、及び、ノード又はエッジの変更のユーザ操作を受け付け、その変更をツリー構造情報DB 12に反映させる。また、制御部11は、ツリー構造情報DB 12にノードの情報が、追加、削除、または変更された場合には、それぞれ、該当するノードを生成、削除、または、更新する。
【0035】
ツリー構造情報DB 12は、ツリー対象処理についてツリー構造情報を保持する。ツリー構造情報には、各ノードを定義するノード情報と、各エッジを定義するエッジ情報と、が含まれる。ツリー構造情報DB 12に保持される情報の詳細については後述される。
【0036】
アプリケーションプログラム13は、補助記憶装置103に保持されるアプリケーションプログラムである。アプリケーションプログラム13は、例えば、プログラムの処理の一部に、ツリー対象処理を含み、当該ツリー対象処理が実行される際には、該当のツリー対象処理のノード群14を起動して、当該ツリー対象処理を実行する。
【0037】
ノード群14は、ツリー対象処理ごとの、細分化した処理をツリー構造のノードに対応させた場合のノードの集まりである。ツリー対象処理がアプリケーションプログラム13によって呼び出されると、当該ツリー対象処理に含まれる全ノードが起動し、各ノードがそれぞれの処理を実行する。すなわち、ノードは、プロセス、とも言える。この場合に、ノード群14は、ツリー対象処理ごとのプロセスの集まりとも言える。また、ノードは、ツリー対象処理の細分化された処理を実行する仮想的なノードとも言える。なお、図3に示される情報処理装置1の機能構成は一例であって、情報処理装置1の機能構成は図3に示される例に限定されない。
【0038】
図4は、ノード情報の一例である。ノード情報は、ツリー構造情報に含まれ、ツリー構造情報DB 12に保持される。ノード情報は、対象のツリー対象処理のツリーに含まれるノードを定義する情報である。図4に示される例において、1つのレコードは1つのノード情報に対応し、1つのノード情報は、1つのノードに対応する。図4に示される例では、ノード情報には、ノードID、メッセージ受信元、アクション、及び、メッセージ送信先のフィールドが含まれる。
【0039】
ノードIDのフィールドには、ノードの識別情報が格納されている。ノードの識別情報は、図4では、ツリー構造におけるレイヤの識別情報とノードの識別情報とで構成されている。なお、ノードの識別情報の構成はこれに限定されず、例えば、レイヤに関係なく、ランダムに割り当てられてもよい。ノードの識別情報は、制御部11によって割り当てられる。ただしこれに限定されず、ユーザがノードの識別情報を指定することも可能である。
【0040】
メッセージ受信元のフィールドには、アクションを実行する条件となるメッセージの受信元となるノードの識別情報が格納される。ツリーのルート、すなわち、ツリー対象処理の開始点となるノードは、アプリケーションプログラム13から呼び出されるので、当該ノードに対応するメッセージ受信元のフィールドには「アプリケーション」が格納されている。
【0041】
アクションのフィールドには、該当のノードが実行する処理の内容が格納される。メッセージ送信先のフィールドには、処理完了を通知するメッセージの送信先となるノードの識別情報が格納される。ツリーの末端のノードは、当該ツリー対象処理を呼び出したアプリケーションプログラム13へ処理結果を出力するので、当該ノードに対応するメッセージ送信先のフィールドには「呼出元アプリケーション」が格納されている。
【0042】
メッセージ受信元、アクション、及び、メッセージ送信元のフィールドの値は、ユーザによって指定される。また、メッセージ送信元及びメッセージ送信先のフィールドの値は、図1に示されるようなツリーが表示されるプログラムの編集画面において設定される、該当のノードに接続している1又は複数のエッジの接続先を解析して取得される。アクションのフィールドの値(処理の内容)は、当該プログラムの編集画面においてユーザによって入力される。
【0043】
ノード情報は、例えば、図1に示されるようなツリーが表示されるプログラムの編集画面において、ユーザ操作によって、ノードとエッジが追加又は削除された場合に、制御部11によって、ツリー構造情報DB 12から追加又は削除される。また、ノードのアクションの処理内容の変更、又は、エッジの接続先の変更等が行われた場合には、制御部11によって、ツリー構造情報DB 12における該当のノードのノード情報の内容に反映される。
【0044】
図4では、図1に示される表示ユーザ情報の生成処理のツリーに対応するノード情報が示されている。ノード#1Aに対応するノード情報は、ノード#1Aは、アプリケーションプログラム13から呼び出されると、ノード#2Aにメッセージを送信することを示す。なお、ノード#1Aは、表示用ユーザ情報の生成処理のツリーのルートとなるノードであるので、アクションは特に行わない。図4では便宜上、ノード#1Aのアクションのフィールドには、ノード#1Aが呼び出されるイベントの内容が表示されている。
【0045】
ノード#2Aに対応するノード情報は、ノード#2Aは、ノード#1Aからメッセージを受信すると、APIサーバをコールしてユーザ情報データを取得し、ノード#3A、3B、3C、3D、3E、及び、3Fへメッセージを送信することを示す。ノード#3Aに対応するノード情報は、ノード#3Aは、ノード#2Aからメッセージを受信すると、ユーザ情報データからユーザ画像を取得し、アプリケーションプログラム13へメッセージを出力することを示す。ノード#3Bに対応するノード情報は、ノード#3Bは、ノード#2Aからメッセージを受信すると、ユーザ情報データから姓を取得し、ノード#4Aへメッセージを出力することを示す。ノード#3Cに対応するノード情報は、ノード#3Cは、ノード#2Aからメッセージを受信すると、ユーザ情報データから名を取得し、ノード#4Aへメッセージを出力することを示す。ノード#4Aに対応するノード情報は、ノード#4Aは、ノード#3B及び3Cからメッセージを受信すると、姓を示す文字列の次に名を示す文字列を配置して表示用の姓名文字列を取得し、アプリケーションプログラム13へメッセージを出力することを示す。
【0046】
なお、第1実施形態では、各ノードは処理(アクション)の完了を示すメッセージを送受信し、情報の受け渡しは、情報受け渡し用のメモリ等を用いて行われる。ただし、これ限定されず、メッセージの代わりに、処理の結果として得られた情報をノード間で受け渡すようにしてもよい。
【0047】
図5は、エッジ情報の一例である。エッジ情報は、ツリー構造情報に含まれ、ツリー構造情報DB 12に保持される。エッジ情報は、対象のツリー対象処理のツリーに含まれるエッジを定義する情報である。図5に示される例において、1つのレコードは1つのエッジ情報に対応し、1つのエッジ情報は、1本のエッジに対応する。図5に示される例では、エッジ情報には、エッジID、接続元ノードID、及び、接続先ノードIDのフィールドが含まれる。
【0048】
エッジIDのフィールドには、エッジの識別情報が格納されている。エッジの識別情報は、制御部11によって割り当てられる。ただしこれに限定されず、ユーザがエッジの識別情報を指定することも可能である。
【0049】
第1実施形態では、エッジは、1方向の矢印で示される。したがって、接続元ノードID及び接続先ノードIDのフィールドには、それぞれ、エッジの接続元のノードの識別情報及びエッジの接続先のノードの識別情報が格納される。接続元ノードID及び接続先ノードIDのフィールドの値は、図1に示されるようなツリーが表示されるプログラムの編集画面において設定される、該当のエッジに接続しているノードから取得される。
【0050】
エッジ情報は、例えば、図1に示されるようなツリーが表示されるプログラムの編集画面において、ユーザ操作によって、ノードとエッジが追加又は削除された場合に、制御部11によって、ツリー構造情報DB 12から追加又は削除される。また、エッジの接続先の変更等が行われた場合には、制御部11によって、ツリー構造情報DB 12における該当のエッジのエッジ情報の内容に反映される。なお、ノード情報及びエッジ情報に含まれる情報は、図4及び図5に示される例に限定されない。
【0051】
図6は、ノードの処理のフローチャートの一例である。各ノードは、対応するツリー対象処理がアプリケーションプログラム13から呼び出されると起動される。ノードは機能構成要素の一つであり、実行主体はプロセッサ101であるが、便宜上、ノードを主体として説明する。また、図6に示される処理の実行主体であるノードを、対象ノード、と称する。
【0052】
OP101では、対象ノードは、ツリー構造情報DB 12における対象ノードのノード情報において指定された他のノードから、処理完了を示すメッセージを受信したか否かを判定する。ツリー構造情報DB 12における対象ノードのノード情報において指定されたすべてのノードからメッセージを受信するまでの間(OP101:NO)、対象ノードは待機状態となる。ツリー構造情報DB 12における対象ノードのノード情報において指定されたすべてのノードからメッセージを受信した場合には(OP101:YES)、処理がOP102に進む。
【0053】
OP102では、対象ノードは、ツリー構造情報DB 12における対象ノードのノード情報において指定されたアクションを実行する。OP103では、対象ノードは、ツリー構造情報DB 12における対象ノードのノード情報において指定された他のノードへ、処理完了を示すメッセージを送信する。その後、図6に示される処理が終了する。
【0054】
例えば、表示用ユーザ情報の生成処理がアプリケーションプログラム13から呼び出されると、図4に示されるノード情報において定義されたノード#1Aからノード#4Bが起動する。それぞれのノードは、独立して、対応するノード情報に従って図6に示される処理を実行する。その結果、例えば、ユーザ情報データから対象の情報を取得するノード#3A、3B、3C、3D、3E、及び、3Fは、並行して処理を実行することになる。
【0055】
図7は、ツリー対象処理のツリーの表示処理のフローチャートの一例である。図7に示される処理は、例えば、所定の周期で繰り返し実行される。図7に示される処理の実行主体はプロセッサ101であるが、便宜上、機能構成要素を主体として説明する。図7以降のフローチャートについても同様である。
【0056】
OP201では、制御部11は、ツリー対象処理のツリーの表示リクエストが入力されたか否かを判定する。ツリーの表示リクエストは、ユーザ操作によって入力される。ツリー表示リクエストは、例えば、ツリー対象処理のツリーの表示メニューが選択された場合、及び、ツリー対象処理のプログラムの閲覧又は編集のメニューが選択された場合等に入力される。
【0057】
ツリー対象処理のツリーの表示リクエストが入力された場合には(OP201:YES)、処理がOP202へ進む。ツリー対象処理のツリーの表示リクエストが入力されていない場合には(OP201:NO)、図7に示される処理が終了する。
【0058】
OP202では、制御部11は、ツリー構造情報DB 12に保持される該当するツリー対象処理のツリー構造情報に基づいて、ツリーを作成する。OP203では、制御部11は、情報処理装置1のディスプレイに作成したツリーを出力して表示する。その後、図7に示される処理が終了する。
【0059】
図8は、ツリー対象処理のツリーに対する変更処理のフローチャートの一例である。図8に示される処理は、例えば、ツリー対象処理のプログラムの編集画面が表示されている間繰り返し実行される。
【0060】
OP301では、制御部11は、表示中のツリー対象処理のツリーに対する変更のユーザ操作が入力されたか否かを判定する。表示中のツリー対象処理のツリーに対する変更のユーザ操作が入力された場合には(OP301:YES)、処理がOP302へ進む。表示中のツリー対象処理のツリーに対する変更のユーザ操作が入力されていない場合には(OP301:NO)、図8に示される処理が終了する。
【0061】
OP302では、制御部11は、入力されたツリーに対する変更は、ノードとエッジの追加又はエッジの追加であるか否かを判定する。入力されたツリーに対する変更が、ノードとエッジの追加又はエッジの追加である場合には(OP302:YES)、処理がOP303へ進む。入力されたツリーに対する変更が、ノードとエッジの追加又はエッジの追加でない場合には(OP302:NO)、処理がOP305へ進む。
【0062】
OP303では、制御部11は、ツリー構造情報DB 12に、ツリーに対して追加されたノードのノード情報とエッジのエッジ情報、又は、ツリーに対して追加されたエッジのエッジ情報を登録する。OP304では、制御部11は、ツリーに対してノードが追加された場合には、当該ノード情報に基づいてノードを生成し、ノード群14に追加する。その後、図8に示される処理が終了する。
【0063】
OP305では、制御部11は、入力されたツリーに対する変更は、ノードとエッジの削除又はエッジの削除であるか否かを判定する。入力されたツリーに対する変更が、ノードとエッジの削除又はエッジの削除である場合には(OP305:YES)、処理がOP306へ進む。入力されたツリーに対する変更が、ノードとエッジの削除又はエッジの削除でない場合には(OP305:NO)、処理がOP308へ進む。
【0064】
OP306では、制御部11は、ツリーから削除されたノードのノード情報とエッジのエッジ情報、又は、ツリーから削除されたエッジのエッジ情報をツリー構造情報DB 12から削除する。OP307では、制御部11は、ツリーからノードが削除された場合には、当該ノードをノード群14から削除する。その後、図8に示される処理が終了する。
【0065】
OP308では、制御部11は、入力されたツリーに対する変更は、ノード又は/及びエッジの変更であるか否かを判定する。入力されたツリーに対する変更が、ノード又は/及びエッジの変更である場合には(OP308:YES)、処理がOP309へ進む。入力されたツリーに対する変更が、ノード又は/及びエッジの変更でない場合には(OP308:NO)、図8に示される処理が終了する。
【0066】
OP309では、制御部11は、ツリーにおいて変更されたノードのノード情報又は/及びエッジのエッジ情報を、ツリーにおける変更を反映させて変更する。OP310では
、制御部11は、ツリーにおいてノードの変更があった場合には、更新されたノード情報に基づいてノード群14における該当のノードを更新する。その後、図8に示される処理が終了する。
【0067】
例えば、図1に示される表示用ユーザ情報の生成処理のツリーにおいて、ノード#1Bとノード#1Bからノード#2Aへ向かうエッジが追加された場合には(OP302:YES)、追加されたノード#1Bのノード情報と追加されたエッジのエッジ情報とがツリー構造情報DB 12に追加され(OP303)、ノード#1Bに対応するノードが生成されてノード群14に追加される(OP304)。追加されるノード#1Bのノード情報は、例えば、アプリケーションプログラム13からユーザ情報の更新があった場合に呼び出され(メッセージの受信元のフィールド「アプリケーション」)、ノード#2Aへメッセージを送信する(メッセージ送信先のフィールド「2A」)ことを示す。追加されるエッジのエッジ情報は、接続元ノードをノード#1Bとし、接続先ノードをノード#2Aとする。以降、例えば、アプリケーションプログラム13の実行中にユーザ情報が更新されると、表示用ユーザ情報の生成処理に対応するノード群14が実行されるようになる。このように、第1実施形態では、ツリー対象処理に変更がある場合には、当該変更に係るノード及びエッジについて変更を反映させれば良く、それ以外のノード及びエッジは変更しなくてよいので、プログラムの更新の影響を局所的に抑えることができる。
【0068】
<第1実施形態の作用効果>
第1実施形態では、並行して実行可能な処理を含むツリー対象処理に分散コンピューティングの考えを取り入れ、さらにツリー構造での管理の考えを取り入れて、細分化された処理をノード、細分化された処理間のデータ又は処理の流れをエッジに対応させる。これによって、ツリー対象処理のプログラムの構造を見通し良くすることができる。また、ツリー対象処理のプログラムに変更を加える場合には、当該変更に関するノード及びエッジに関して変更を行えばよく、変更を局所的にすることができる。
【0069】
また、ノードに対応する細分化された処理はそれぞれ独立して実行されるので、ツリー対象処理の一部の、並行して実行可能な処理が並行して実施されるようになる。これによって、ツリー対象処理の実行に係る時間を短縮することができる。
【0070】
<その他の実施形態>
上記の実施形態はあくまでも一例であって、本開示はその要旨を逸脱しない範囲内で適宜変更して実施しうる。
【0071】
第1実施形態では、ツリー対象処理をツリー構造で管理する制御部11及びツリー構造情報DB 12と、ツリー対象処理を用いるアプリケーションプログラム13とツリー対象処理のノード群14と、が同じ情報処理装置に含まれる例が説明された。ただし、これに限定されず、制御部11及びツリー構造情報DB 12と、アプリケーションプログラム13及びノード群14とは、異なる装置に含まれてもよい。例えば、制御部11及びツリー構造情報DB 12とはサーバとして動作する装置に含まれ、アプリケーションプログラム13及びノード群14はユーザ端末に含まれてもよい。また、制御部11と、ツリー構造情報DB 12と、は、それぞれ、異なる装置に含まれてもよい。
【0072】
本開示において説明した処理や手段は、技術的な矛盾が生じない限りにおいて、自由に組み合わせて実施することができる。
【0073】
また、1つの装置が行うものとして説明した処理が、複数の装置によって分担して実行されてもよい。あるいは、異なる装置が行うものとして説明した処理が、1つの装置によって実行されても構わない。コンピュータシステムにおいて、各機能をどのようなハード
ウェア構成(サーバ構成)によって実現するかは柔軟に変更可能である。
【0074】
本開示は、上記の実施形態で説明した機能を実装したコンピュータプログラムをコンピュータに供給し、当該コンピュータが有する1つ以上のプロセッサがプログラムを読み出して実行することによっても実現可能である。このようなコンピュータプログラムは、コンピュータのシステムバスに接続可能な非一時的なコンピュータ可読記憶媒体によってコンピュータに提供されてもよいし、ネットワークを介してコンピュータに提供されてもよい。非一時的なコンピュータ可読記憶媒体は、例えば、磁気ディスク(フロッピー(登録商標)ディスク、ハードディスクドライブ(HDD)等)、光ディスク(CD-ROM、DVDディスク、ブルーレイディスク等)など任意のタイプのディスク、読み込み専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気カード、フラッシュメモリ、光学式カード、電子的命令を格納するために適した任意のタイプの媒体を含む。
【符号の説明】
【0075】
1・・情報処理装置
11・・制御部
12・・ツリー構造情報DB
13・・アプリケーションプログラム
14・・ノード群
101・・プロセッサ
102・・メモリ
103・・補助記憶装置
104・・通信部
105・・入力装置
106・・出力装置
図1
図2
図3
図4
図5
図6
図7
図8