≪第1の実施の形態≫
以下、本発明を実施するための最良の形態(以下、実施の形態という)を第1の実施の形態ないし第4の実施の形態に分けて説明する。まず、図1および図2を用いて各実施の形態のフォルダ割当プログラム実行制御装置(プログラム実行制御装置)の概要を説明する。図1および図2は、各実施の形態のプログラム実行制御装置の動作概要を説明した図である。なお、以下の説明において、フォルダの下位とは、そのフォルダの直下を意味するものとする。つまり、そのフォルダの1つ下の階層のことを意味するものとする。また、フォルダの上位とは、そのフォルダの1つ上の階層のことを意味するものとする。
ここでは、画像の特徴量を抽出する簡単な処理である「プログラム例1」について説明する。図1に示すように、「プログラム例1」フォルダの下位には「映像形式統一 mpeg2」フォルダがあり、その下位には「映像カット内代表図画像抽出」フォルダがある。そして、この「映像カット内代表図画像抽出」フォルダの下位には「画像内顔検出」フォルダおよび「景観中文字認識」フォルダがある。
プログラム実行制御装置は、このようなフォルダの階層構造をファイル管理部(詳細は後記)により管理している。つまり、プログラム実行制御装置は、どのフォルダの下位にどのフォルダがあるかや、それぞれのフォルダの名称(フォルダ名)は何か等を、フォルダ情報(詳細は後記)として管理している。また、プログラム実行制御装置は、プログラムの名称と、その名称のフォルダに割り当てられる処理(具体的には、その処理を実行するためのプログラムの格納場所)とを示した名称管理データベース(DB)132を備える。
階層構造を持つフォルダ群のうち、最上位のフォルダ(例えば、図1の「プログラム例1」フォルダ)に、データが入力されると、プログラム実行制御装置は、このデータが入力されたフォルダの名称と、名称管理DB132とを参照して以下のような処理を行う。
すなわち、まず、「プログラム例1」フォルダに割り当てられた処理(「/folderprog/through」)に従いスルーし、入力されたデータに、その下位にある「映像形式統一 mpeg2」フォルダに割り当てられた処理(「/local/bin/convert」に格納されるプログラム)を実行する。次に、プログラム実行制御装置は、この処理の実行結果(処理結果データ)を、「映像カット内代表図画像抽出」フォルダに受け渡す。そして、この「映像カット内代表図画像抽出」フォルダに割り当てられた処理(「/local/bin/cut」に格納されるプログラム)を実行する。そして、ここでの処理結果データを、「画像内顔検出」フォルダと、「景観中文字認識」フォルダとに受け渡す。次に、「画像内顔検出」フォルダに割り当てられた処理(「/local/bin/face-detect」に格納されるプログラム)と、「景観中文字認識」フォルダに割り当てられた処理(「/local/bin/letter-detect」に格納されるプログラム)とを実行する。そして、プログラム実行制御装置は、「画像内顔検出」フォルダに割り当てられた処理の処理結果データを、「画像内顔検出」フォルダに格納し、「景観中文字認識」フォルダに割り当てられた処理の処理結果データを、「景観中文字認識」フォルダに格納する。
つまり、これらのフォルダの最上位のフォルダにデータが入力されると、プログラム実行制御装置は、このデータに対しフォルダの階層構造にしたがい、各フォルダに連なる下位フォルダそれぞれに割り当てられた処理を次々に実行する。そして、プログラム実行制御装置は、その最終的な処理結果データをその最下位のフォルダに格納する。
なお、ユーザが、このプログラム実行制御装置により実行される「プログラム例1」を組み立てるときは、例えば、図2に示すようになる。ここでは、既に「プログラム例1」の下位に「映像形式統一 mpeg2」フォルダが作成されているものとして説明する。また、以下の説明において、フォルダは、プログラム実行制御装置により作成される場合を例に説明するが、外部の装置で作成されたフォルダであってもよい。
プログラム実施制御装置は、図2の表示画面101に示すように、ユーザからの指示入力に基づき作成されたフォルダを、その名称とともに表示させる。そして、現在着目しているフォルダ(例えば、「映像形式統一 mpeg2」フォルダ)の下位のフォルダの作成指示を、符号104に示す画面で受け付ける。
なお、このときのフォルダの作成は、新規フォルダの作成指示と、その新規フォルダに割り当てるプログラムの名称の入力により行われる。このようにすることで、ユーザは、通常のフォルダ作成と同じ感覚でプログラムの組み立てを行うことができる。また、このフォルダの作成は、プログラム実行制御装置が、プログラム選択画面103を表示させ、この中から、ユーザに選択されたフォルダ名を元に作成するようにしてもよい。
例えば、プログラム実行制御装置が、このプログラム選択画面103から選択されたフォルダがフォルダ作成領域104にコピーされたことを検知すると、当該名称のフォルダを作成するようにしてもよい。
以上のようして、「映像形式統一 mpeg2」フォルダの下位に「映像カット内代表図画像抽出」フォルダが作成されると、表示画面102に示すようになる。つまり、「映像形式統一 mpeg2」フォルダの下位に「映像カット内代表図画像抽出」フォルダが追加され、「映像形式統一 mpeg2」→「映像カット内代表図画像抽出」という処理が組み上がる。すなわち、「プログラム例1」へのデータ入力時、下位の「映像形式統一 mpeg2」フォルダに割り当てられた処理が実行された後、その処理結果データを用いて「映像カット内代表図画像抽出」フォルダに割り当てられた処理が実行される、という一連の処理が組みあがる。
<構成>
次に、本実施の形態のプログラム実行制御装置の構成を説明する。図3は、本実施の形態のプログラム実行制御装置の構成を示したブロック図である。
このプログラム実行制御装置10は、入出力部11と、処理部12と、記憶部13とを備えるコンピュータにより実現される。この入出力部11は、各種データの入出力を司る。処理部12は、記憶部13の名称管理DB132を参照して、フォルダに入力されたデータに対し、このフォルダに割り当てられた処理を実行し、その処理結果データを下位フォルダに受け渡す。記憶部13は、処理部12がフォルダに割り当てられた処理を実行するために参照する名称管理DB132等を格納する。なお、プログラム実行制御装置10Aについては、第3の実施の形態で述べる。
この入出力部11は、入出力インタフェースや通信インタフェースから構成される。また、処理部12は、このプログラム実行制御装置10が備えるCPU(Central Processing Unit)によるプログラム実行処理や、専用回路等により実現される。さらに、記憶部13は、RAM(Random Access Memory)、ROM(Read Only Memory)、HDD(Hard Disk Drive)、フラッシュメモリ等の記憶媒体から構成される。なお、プログラム実行制御装置10をプログラム実行処理により実現する場合、記憶部13には、このプログラム実行制御装置10の機能を実現するためのプログラム(図示省略)が格納される。また、このプログラム実行制御装置10には、キーボードやマウス等の入力装置や、液晶モニタ等の出力装置が接続されていてもよい。
<入出力部>
入出力部11は、ファイル管理部121へのフォルダ作成指示等、各種データの入力を受け付けたり、表示画面のデータを出力したりする。
<処理部>
処理部12は、前記したとおり、フォルダに入力されたデータに対し、このフォルダに割り当てられた処理を実行し、その実行結果を下位フォルダに受け渡す。このような処理部12は、表示処理部120と、ファイル管理部121と、データ受付部122と、結果通知部123と、下位フォルダデータ投入部124と、結果受信部125と、フォルダ割当処理管理部126と、処理実行部127と、処理結果管理部128と、全体制御部129とを含んで構成される。
表示処理部120は、ファイル管理部121により管理されるフォルダ情報131(詳細は後記)を、表示画面として外部の表示装置等へ表示させる。例えば、フォルダ情報131に示されるフォルダの階層関係およびフォルダの名称を、Windows(登録商標)のエクスプローラ(登録商標)のようなツリー構造で表示する。
ファイル管理部121は、フォルダ情報131を参照して、フォルダの名称およびフォルダの階層関係を判断する。そして、その判断結果を全体制御部129経由でフォルダ割当処理管理部126等へ出力する。また、入出力部11経由でフォルダ作成指示の入力を受け付けたとき、この指示に基づきフォルダを作成し、名称を付与し、この作成したフォルダと他のフォルダとの階層関係およびフォルダの名称をフォルダ情報131(詳細は後記)に記録するようにしてもよい。なお、このファイル管理部121の機能は、公知のファイル管理技術を用いて実現してよい。
データ受付部122は、フォルダ情報131に示される各フォルダに入力されるデータを受け付ける。なお、ここで入力されるデータは、単一のファイルでもよいし複数のファイル(データ)でもよい。また、これらのファイルを格納したフォルダでもよいし、空の状態のフォルダでもよい。さらに、このフォルダも複数であってもよい。なお、このように複数のデータやフォルダが入力されたとき、全体制御部129は、このデータやフォルダの持つタイムスタンプを参照して、時系列に処理を実行するよう制御してもよい。また、全体制御部129は、これらのデータやフォルダに対し並列に処理を実行するよう制御してもよい。
結果通知部123は、各フォルダに割り当てられた処理の実行結果を通知(出力)する。例えば、結果通知部123は、当該フォルダに割り当てられた処理に失敗したことを通知する。
下位フォルダデータ投入部124は、このフォルダに割り当てられた処理の実行結果である処理結果データを、このフォルダの下位フォルダに入力(投入)する。当該フォルダの下位フォルダがどのフォルダかは、ファイル管理部121からの回答結果を元に判断する。これにより、フォルダの下位に連なる各フォルダに、当該フォルダに割り当てられた処理の処理結果データが入力されることになる。なお、データの投入先となる下位フォルダが複数あるとき、この下位フォルダそれぞれにデータを投入する。例えば、図1に示すように「映像のカット内代表画面抽出」フォルダの下位に、「画像内顔検出」フォルダおよび「景観中文字認識」フォルダがある場合、下位フォルダデータ投入部124は、この「映像のカット内代表画面抽出」フォルダにおける処理結果データを「画像内顔検出」フォルダおよび「景観中文字認識」フォルダへ投入する。
結果受信部125は、当該フォルダに割り当てられた処理の実行結果(例えば、このフォルダに割り当てられた処理が失敗したこと)を受信する。これにより、ユーザは当該フォルダに割り当てられた処理が実行できているか否かをすぐに確認できる。
フォルダ割当処理管理部126は、名称管理DB132と、データが入力されたフォルダのフォルダ名とを参照して、このフォルダに入力されたデータに対し実行する処理(lプログラム)を選択する。また、フォルダ割当処理管理部126は、このフォルダ名がパラメータを含むものである場合、まずその中から、処理名(プログラム名)を示す部分をピックアップする。そして、フォルダ割当処理管理部126は、この処理名のキーとして名称管理DB132から処理内容を選択する。
例えば、フォルダ名が図1に示す「映像形式統一 mpeg2」であった場合、フォルダ割当処理管理部126は、「mpeg2」をパラメータとみなし、「映像形式統一」の部分をキーとして名称管理DB132からこの名称に対応する処理内容を選択する。なお、フォルダ名がパラメータを含むか否かは、フォルダ名の中に空白があるか否かや、フォルダ名に「( )」でくくられた部分があるか否か等により判別する。フォルダ名がパラメータを含む場合、フォルダ割当処理管理部126は、名称管理DB132に定義されているものと同じ名称を持つ部分を処理名(プログラム名)、それ以外の部分をパラメータと判断する。そして、フォルダ割当処理管理部126は、選択した処理(より具体的には、その処理を実行するためのプログラムの格納領域)と、その処理に用いるパラメータとを処理実行部127に出力する。
処理実行部127は、フォルダ割当処理管理部126により選択された処理を、当該フォルダに入力されたデータに対し実行する。なお、フォルダ名にパラメータが含まれていたとき、処理実行部127は、そのパラメータを用いてこのフォルダの名称に割り当てられた処理の実行を行う。例えば、フォルダ名が「映像形式統一 mpeg2」であるとき、フォルダ割当処理管理部126から出力された「/local/bin/convert」という情報を元に、プログラム記憶部133から「映像形式統一」のプログラムを読み出し、「mpeg2」というパラメータを用いて処理を実行する。つまり、処理実行部127は、「mpeg2への映像形式統一」という処理を行う。
このようにフォルダ割当処理管理部126は、フォルダ名がパラメータを含むものについて、処理の名称を示す部分とパラメータ部分とを判別し、処理を選択する。また、処理実行部127において、フォルダ名に含まれるパラメータを適用して処理を実行するので、プログラムの組み立てを行うユーザは、このパラメータをフォルダ名の入力時にあわせて設定できるので、大変便利である。
なお、下位フォルダデータ投入部124により複数のフォルダにデータが投入された場合、処理実行部127は、そのそれぞれのフォルダに割り当てられた処理を、並列して実行してもよいし、所定の順番で実行するようにしてもよい。つまり、ユーザは、同じ処理結果データを用いて複数の処理を並列して(または所定の順番で)実行させたい場合、それぞれの処理が割り当てられたフォルダを同じ階層に作成すればよい。
処理結果管理部128は、各フォルダに割り当てられた処理の実行結果(処理に成功したか、失敗したか)や、この処理結果データの出力先や格納先をファイル管理部121に通知する。
全体制御部129は、表示処理部120、ファイル管理部121、データ受付部122、結果通知部123、下位フォルダデータ投入部124、結果受信部125、フォルダ割当処理管理部126、処理実行部127および処理結果管理部128の制御を行う。例えば、処理実行部127において、当該フォルダに割り当てられたプログラムの実行に失敗したとき、全体制御部129は、当該フォルダにおける当該データの受け取りを拒否し、ファイル管理部121に、当該データを当該フォルダの上位フォルダに格納させる。
<記憶部>
記憶部13は、フォルダ情報131と、名称管理DB132と、プログラム記憶部133とを備える。
このフォルダ情報131は、フォルダ名、このフォルダの階層関係、各フォルダに格納されるデータ等を示した情報である。このフォルダ情報131は、ファイル管理部121により更新され、読み出される。
名称管理DB132は、プログラムの名称ごとに、この名称のプログラムの格納領域を示した情報を示した情報である(図1参照)。この名称管理DB132は、フォルダ割当処理管理部126が当該フォルダに割り当てられている処理(プログラム)を選択するときに参照される。例えば、フォルダ割当処理管理部126は、図1に示す「映像カメラワーク情報抽出」フォルダに割り当てられた処理を実行するプログラムとしてプログラム記憶部133の「/local/bin/camwork」というディレクトリに格納されているプログラムを選択する。そして、処理実行部127は、この選択された「/local/bin/camwork」というディレクトリに格納されるプログラムを実行する。なお、この名称管理DB132の情報は、入出力部11経由で入力や書き換えが可能である。また、この名称管理DB132において、プログラムの格納領域を示した情報を保持することとしたが、プログラム本体を保持するようにしてもよい。
なお、このような名称管理DB132を用いることで、プログラム実行制御装置10は、各フォルダに割り当てられた処理のパス名が長くても、その処理を実行できる。つまり、プログラム実行制御装置10は、フォルダ名に、直接、そのフォルダに割り当てる処理のパス名を記載して処理の割り当てをするようにしてもよいが、公知のファイル管理システムによりファイル管理部121を実現する場合、このファイル管理部121はフォルダ名の長さを制限する仕様こともある。そのような場合、フォルダには比較的短い名称(プログラム名やプログラムの識別情報)を割り当てておき、プログラム実行制御装置10は、そのフォルダ名と名称管理DB132とを参照して、そのフォルダに割り当てられた処理のパス名を読み出すようにする。このようにすることで、プログラム実行制御装置10は、当該フォルダに対する処理が長いパス名で示されるものについても、その処理も実行できる。なお、名称管理DB132Aについては、第3の実施の形態の項で述べる。
プログラム記憶部133は、処理実行部127により実行される各種プログラムを格納する。
このような構成によりプログラム実行制御装置10は、入力されたデータまたは処理結果データに対し、当該データが入力されたフォルダの下位に連なるフォルダそれぞれに割り当てられたプログラムを、このフォルダが連なる順に実行させることができる。
<動作手順>
次に、プログラム実行制御装置10の動作手順を説明する。図4および図5は、図3のプログラム実行制御装置の動作手順を示したフローチャートである。
ここでは、様々な階層のフォルダのうち、上位フォルダ側からみた視点を中心に説明する。まず、図3のデータ受付部122においてフォルダへのデータ入力を受け付ける(S101)。このS101のサブルーチンについては、第3の実施の形態において図11を参照して後記する。
次に、フォルダ割当処理管理部126は、このデータが入力されたフォルダ名から実行すべき処理を選択する(S102)。つまり、フォルダ割当処理管理部126は、名称管理DB132を参照して、このデータが入力されたフォルダのフォルダ名をキーとして、このフォルダに割り当てられた処理を選択する。
ここで、フォルダ割当処理管理部126が、このフォルダに割り当てられた処理を選択できたとき(S103のYes)、つまり、名称管理DB132において、当該名称に対応する処理があったとき、処理実行部127は、入力データに対して、このフォルダに割り当てられた処理を実行し(S104)、処理結果データを作成する。
一方、フォルダ割当処理管理部126が、このデータが入力されたフォルダに割り当てられた処理を選択できなかったとき(S103のNo)、つまり、名称管理DB132において、当該名称に対応する処理がなかったとき、全体制御部129は、S101で受け付けた入力データを、そのまま当該フォルダに格納する(S107)。つまり、通常のフォルダと同様にデータを格納する。そして、処理を終了する。
S104の後、結果通知部123は、S104の処理結果(つまり、フォルダに割り当てられた処理に成功した旨)を通知する(S105)。この処理結果の通知先は、このデータの入力元であるフォルダ(上位フォルダ)または外部プロセス等である。
次に、全体制御部129は、当該フォルダの下位フォルダがあるか否かを判断する(S106)。このときの判断は、全体制御部129が、ファイル管理部121に当該フォルダの下位フォルダがあるか否かを問い合わせることにより行われる。問い合わせを受けたファイル管理部121は、フォルダ情報131を参照して、その判断結果を全体制御部129へ返す。
ここで、当該フォルダの下位フォルダがあると判断されたとき(S106のYes)、全体制御部129は、下位フォルダデータ投入部124に、S104における処理結果データを投入させ、下位フォルダへの処理を実行する(S108)。そして、当該フォルダの下位フォルダへの処理を終了すると、本処理を終了する。なお、S108の下位フォルダへの処理の詳細は、図5を用いて後記する。
一方、当該フォルダの下位フォルダがないと判断されたとき(S106のNo)、全体制御部129は、ファイル管理部121に、S104で作成された処理結果データを当該フォルダに格納させる(S109)。そして、処理を終了する。つまり、全体制御部129は、一連の処理の流れの末端にあるフォルダにおいて、処理結果データを保持するようにする。
次に、図5を用いて、図4のS108の下位フォルダへの処理を詳細に説明する。
まず、図4のS106において当該フォルダの下位フォルダがあることを確認できたとき(S106のYes)、下位フォルダデータ投入部124は、S104で作成した処理結果データを、この下位フォルダへ入力する(図5のS201)。
そして、この下位フォルダについて、プログラム実行制御装置10は、前記したS101〜S109と同様の処理を実行する(S202)。つまり、プログラム実行制御装置10は、当該フォルダの下位フォルダ、そのさらに下位フォルダ、というように、各フォルダにおける処理結果データを下位フォルダに受け渡していく。そして、結果通知部123は、この処理結果を結果受信部125へ通知する。
結果受信部125は、下位フォルダにおける処理結果を受け取り(S203)、この受け取った処理結果が成功を示すものであるとき(S204のYes)、処理を終了する。一方、受け取った処理結果が失敗を示すものであるとき(S204のNo)、処理結果管理部128は、ファイル管理部121に、下位フォルダへ入力しようとした処理結果データを当該フォルダに格納するよう指示する(S205)。つまり、下位フォルダにおいて処理に失敗したデータを、このデータの入力元である当該フォルダへ戻すようにする。また、この処理結果管理部128は、ファイル管理部121に、この処理結果(処理に失敗した旨を示す情報)を含む情報も当該フォルダに格納させる(S206)。そして、処理を終了する。
なお、各フォルダに格納された処理結果(処理に失敗した旨を示す情報)や戻ってきた処理結果データ等を表示処理部120により表示させることで、ユーザは組み立てたプログラムのそれぞれの実行結果を確認することができる。つまり、ユーザは、組み立てた一連の処理のデバッグを行うとき、どの部分の処理に問題があったのかを確認しやすくなる。さらに、ユーザは、このようなデバッグにおいて画面の切り替えを行う必要もなくなる。また、このような機能を用いることで、ユーザは、確認したい処理付きフォルダにデータをドロップ(入力)してみて、期待する処理結果データがそのフォルダの中に生成されているか否かをすぐに確認できる。このようにすることで、例えば、ユーザがプログラムの組み立て時その処理付きフォルダを用いるか否か選択に迷ったときにも、判断しやすくなり、大変便利である。
また、前記したとおり、ファイル管理部121は、データとプログラム(処理付きフォルダ)とを同じフォルダという形で統一的に管理するので、ユーザがあとで、作成したプログラムの検索等も行いたい場合も、検索しやすくなる。
<第1の実施の形態の例>
次に、再び図2を参照しつつ、図1を用いて、プログラム実行制御装置10の処理手順をさらに詳細に説明する。
例えば、図1に示す「プログラム例1」フォルダに、「News20070601.wmv」というデータが入力されると、プログラム実行制御装置10は、名称管理DB132の「プログラム例1」に対応する「/folderprog/through」を参照して、この「News20070601.wmv」に対して、処理を行わず、入力されたものと同じ処理結果データを得る。
次に、下位フォルダデータ投入部124は、この「プログラム例1」フォルダの処理結果データ(「News20070601.wmv」)をさらに下位の「映像形式統一 mpeg2」フォルダに入力する。フォルダ割当処理管理部126は、名称管理DB132を参照してこの「映像形式統一」フォルダの処理割当存在(「/local/bin/convert」)を確認する。そして、処理実行部127は、この「/local/bin/convert」から読み出したプログラムにより、「News20070601.wmv」のフォーマットを「mpeg2」に変換した処理結果データを作成する。
そして、下位フォルダデータ投入部124は、この処理結果データをさらに下位の「映像のカット内代表画像抽出」フォルダに入力する。フォルダ割当処理管理部126は、名称管理DB132を参照して、この「映像カット内代表画像抽出」フォルダの、処理割当存在(「/local/bin/cut」)を確認する。そして、処理実行部127は、この「/local/bin/cut」から読み出したプログラムにより、カット内代表画像として、News20070601.-001jpeg、News20070601.-002jpegおよびNews20070601.-003jpegの3つの画像ファイルを処理結果データとして作成する。下位フォルダデータ投入部124は、この処理結果データをさらに下位の「画像内顔検出処理」フォルダと「景観中文字認識」フォルダとに入力する。
フォルダ割当処理管理部126は、名称管理DB132を参照して、「画像内顔検出処理」フォルダの処理割当存在(「/local/bin/face-detect」)を確認し、News20070601.-001jpeg、News20070601.-002jpegおよびNews20070601.-003jpegそれぞれの入力に対して、処理実行部127は、「/local/bin/face-detect」から読み出したプログラムにより、News20070601.-001.-face.xml、News20070601.-002.-face.xmlおよびNews20070601.-003.-face.xmlという処理結果データを作成する。下位フォルダデータ投入部124は、その処理結果データを、これ以上、下位の処理付きフォルダに渡すことができないため、この「画像内顔検出処理」フォルダの中にその処理結果データを格納する。
同様に、フォルダ割当処理管理部126は、名称管理DB132を参照して、「景観中文字認識」フォルダの処理割当存在(「/local/bin/letter-detect」)を確認し、News20070601.-001jpeg、News20070601.-002jpegおよびNews20070601.-003jpegのそれぞれの入力に対して、処理実行部127は、「/local/bin/letter-detect」から読み出したプログラムにより、News20070601.-001.-letter.xml、News20070601.-002.-letter.xmlおよびNews20070601.-003.-letter.xmlという処理結果データを作成する。下位フォルダデータ投入部124は、その処理結果データを、これ以上、下位の処理付きフォルダに渡すことができないため、この「景観中文字認識」フォルダの中にその処理結果データを格納する。このようにすることで、プログラム実行制御装置10は、フォルダの作成処理により組み立てられたプログラムについて、そのフォルダの階層構造に従った一連の処理を実行することができる。
<第1の実施の形態の例>
なお、前記した第1の実施の形態のプログラム実行制御装置10を、UNIX(登録商標)によるプログラムの実行処理に適用するようにしてもよい。図6は、第1の実施の形態のプログラム実行制御装置の応用例を説明するために引用した図である。
ここでは、プログラム実行制御装置10が、UNIX(登録商標)のPIPEを使って、符号1201に示すような、「FILE1.c」というファイルの中に含まれるセミコロンの行数をカウントするスクリプトを実行する場合を例に説明する。符号1202に示すフォルダ群は、符号1201に示すスクリプトを、フォルダ階層化によって組み立てた場合の例を示したものである。また、プログラム実行制御装置10は、図6に示す名称管理DB132を参照して処理を実行する場合を例に説明する。
この名称管理DB132において、「grep」は、UNIX(登録商標)の「/bin/grep (文字列探索処理)」を示し、「wc」は、UNIX(登録商標)の「/usr/bin/wc (「-|」オプションを付けることよる行数のカウント処理)」を示し、「プログラム例2」は、UNIX(登録商標)の「/bin/cat (ファイルをそのまま次に渡す処理)」を示す。
例えば、符号1202に示す「プログラム例2」フォルダに、C言語で記述されたソースファイル(例えば、FILE1.c)が入力されると、下位フォルダデータ投入部124は、この「FILE1.c」をそのまま「プログラム例2」フォルダに入力する。つまり、フォルダ割当処理管理部126は、この「プログラム例2」フォルダの処理割当存在(「/bin/cat」)を確認し、処理実行部127は、この「FILE1.c」に「/bin/cat(ファイルをそのまま次に渡す処理)」を行い、その処理結果データを得る。つまり、処理実行部127は、処理結果データとして「FILE1.c」を得る。そして、下位フォルダデータ投入部124は、その処理結果データをさらに、下位の「grep‘;’」フォルダに入力する。フォルダ割当処理管理部126は、この「grep」フォルダの処理割当存在(「/usr/grep」)を確認し、「grep‘;’」フォルダに割り当てられた処理が「/usr/grep(文字列探索処理)」であると確認する。そして、処理実行部127は、「FILE1.c」に対し、パラメータ「‘;’」を設定した「/usr/grep(文字列探索処理)」を実行する。すると、処理実行部127は、処理結果データとして、「FILE1.c」中の「;」を含む行を抽出したデータを得る。
下位フォルダデータ投入部124は、その処理結果データ(「FILE1.c」中の「;」を含む行を抽出したデータ)をさらに、下位の「wc -|」フォルダに入力する。フォルダ割当処理管理部126は、名称管理DB132を参照して、この「wc」フォルダの処理割当存在(「/usr/bin/wc」)を確認し、このフォルダに割り当てられた処理が「/usr/bin/wc (「-|」オプションを付けることよる行数のカウント処理)」であると確認する。そして、処理実行部127は、この「-|」オプションを付けることよる行数のカウント処理にパラメータ「-|」を付けて、「FILE1.c」中の「;」を含む行数をカウントする。この後、下位フォルダデータ投入部124は、この処理結果データを、これ以上、下位の処理付きフォルダに渡すことができないため、この「wc -|」フォルダの中にその処理結果データを格納する。
つまり、ユーザがこの「wc -|」フォルダ内のファイルをあけると、一連の処理の処理結果データを確認できる。なお、この処理結果データの名称は、例えば「FILE1.c.+grep.+wc」というように、最初の入力データの名称(ファイル名)、経由してきたフォルダ名を列記したものであってもよい。このようにすることで、ユーザは、処理結果データの名称を見ることで、処理結果データが、どのような処理付きフォルダを経由して得られた結果かが分かりやすくなる。
≪第2の実施の形態≫
次に、本発明の第2の実施の形態を説明する。第2の実施の形態のプログラム実行制御装置は、条件分岐を示すフォルダ名のフォルダがあったとき、この条件に従って処理を実行することを特徴とする。例えば、if文を含むフォルダ名のフォルダがあるとき、プログラム実行制御装置は、このif文を含む名称のフォルダへこのif文に示される条件を満たすデータを入力する。
つまり、第2の実施の形態のプログラム実行制御装置は、前記した図5のS201において、処理結果データを下位フォルダに入力するとき、この下位フォルダそれぞれのフォルダ名にif文を含むフォルダがあるか否かを調査する。そして、プログラム実行制御装置は、このif文に示される条件を満たすデータを、このif文を含むフォルダ名のフォルダへ入力する。この第2の実施の形態のプログラム実行制御装置の基本的構成は、図3に示したプログラム実行制御装置10と同様なので、構成の説明を省略する。
まず、本実施の形態のプログラム実行制御装置10による処理例を、図7を用いて説明する。図7は、第2の実施の形態のプログラム実行制御装置の処理例を説明した図である。
例えば、プログラム実行制御装置10は、図7に示すような名称管理DB132を備え、フォルダ情報131(図3参照)には、符号601に示すようなフォルダが登録されていたとき、プログラム実行制御装置10は、この「プログラム例3」フォルダにデータが入力されると、この名称管理DB132を参照して、以下のような処理を行う。
まず、図7に示す「プログラム例3」フォルダに、「DataFolder301」データが入力されると、図2のプログラム実行制御装置10は、名称管理DB132の「/folderprog/through」を参照して、このデータに処理は行わず、入力されたものと同じ処理結果データを得る。
次に、下位フォルダデータ投入部124は、この処理結果データを「プログラム例3」フォルダのさらに下位の「処理3−1」フォルダに入力する。そして、フォルダ割当処理管理部126は、名称管理DB132を参照して、この「処理3−1」フォルダの処理割当存在(「usr/local/proc31」)を確認する。そして、処理実行部127は、この「usr/local/proc31」から読み出したプログラムにより、処理結果データを作成する。
ここで、下位フォルダデータ投入部124は、この処理結果データをさらに、下位の処理付きフォルダに投入しようとするが、そこには、「else」フォルダ、「if(100<val(*.result)and val(*fesult)<200))」フォルダおよび「if(val(*.result)≧200))」フォルダの3つのフォルダがある。
そこで、下位フォルダデータ投入部124は、else以外のフォルダに対して、各々フォルダへ「DataFolder302」の入力を試みる。なお、「val(*.result)」は、入力されたデータ内の拡張子がresultであるファイル内に書かれた先頭の数値を取得する命令である。2つのif文のフォルダは排他的な条件を持っていることになり、先の数値が、「100を超え、200未満」の場合、下位フォルダデータ投入部124は「DataFolder302」を「処理3−21」フォルダに入力する。そして、下位フォルダデータ投入部124は、その処理結果データはこれ以上、下位の処理付きフォルダに渡すことができないため、この「処理結果3−21」フォルダの中にその処理結果データを格納する。
一方、先の数値が「200以上」の場合には、下位フォルダデータ投入部124は「DataFolder302」を、「処理3−22」フォルダに投入する。そして、下位フォルダデータ投入部124は、その処理結果はこれ以上、下位の処理付きフォルダに渡すことができないため、この「処理結果3−22」フォルダの中にその処理結果データを格納する。
この2つのいずれのフォルダにも投入されなかった場合(つまり、先の数値が「100」以下の場合)には、下位フォルダデータ投入部124は「DataFolder302」フォルダを、「else」フォルダに入力する。フォルダ割当処理管理部126は、「else」フォルダに割り当てられた処理を確認し、処理実行部127は、その「DataFolder302」に処理を加えない。そして、フォルダ割当処理管理部126は、「DataFolder302」は、その下位の「処理3−23」フォルダにデータを投入し、その処理結果はこれ以上、下位の処理付きフォルダに渡すことができないため、「処理結果3−23」フォルダの中にその処理結果データを格納する。
例えば、「DataFolder302」フォルダ内の「a.result」がval()で参照されるとして、
この「a.result」の中身が「50」なら、下位フォルダデータ投入部124は、この「DataFolder302」フォルダを「処理3−23」フォルダへ入力する。また、「a.result」の中身が「150」なら、下位フォルダデータ投入部124は、この「DataFolder302」フォルダを、「処理3−21」フォルダへ入力する。さらに「a.result」の中身が「300」なら、下位フォルダデータ投入部124は、この「DataFolder302」フォルダを「処理3−22」フォルダへ入力する。このようにして、プログラム実行制御装置10は、条件分岐が設定されたプログラムについて処理を実行することができる。そして、その処理結果データを各フォルダに格納することができる。
すなわち、ユーザは、このようにフォルダ名にif文を含めることで、条件分岐のあるプログラムを簡単に組み立てることができる。
<第2の実施の形態の応用例 その1>
また、第2の実施の形態において、プログラム実行制御装置10は、if文を、複数のデータの到着を待ってから行う処理に応用してもよい。図8は、第2の実施の形態のプログラム実行制御装置の応用例を説明した図である。この第2の実施の形態のプログラム実行制御装置10は、図8に示す名称管理DB132を参照して、「2つの乱数値の加算結果に2を足した値を画面出力する」という処理を実行する場合を例に説明する。
この名称管理DB132において、「random」は、0から第1引数で指定された数値までの整数値の乱数を生成する処理(「/bin/random」)を示し、「計算」は、第1引数として与えられた計算式を評価する処理(「usr/local/bin/calculate」)を示し、「画面出力」は、入力されたファイルを表示する処理(「/bin/print-message」)を示す。さらに、「プログラム例4」や「合流先」は、何もしないという処理(「/folderprog/through」)を示す。なお、「none」フォルダは、処理付きフォルダではないものとする。
例えば、符号1302に示す「プログラム例4」フォルダに、中身が空のフォルダからなるデータ(例えば、「DataFolder401」)等が入力されると、フォルダ割当処理管理部126は、この「プログラム例4」フォルダに割り当てられた処理割当存在(「/folderprog/through」)を確認し、処理実行部127は「DataFolder401」に対して、特に何もせず、入力されたものと同じ処理結果データを得る。下位フォルダデータ投入部124は、その処理結果データをさらに、下位の処理付きフォルダに投入しようとするが、そこには、「random 6 > cy1.num」フォルダと、「random 6 > cy2.num」フォルダとの2つの処理付きフォルダがある。
そこで、下位フォルダデータ投入部124は、この2つのフォルダヘ「DataFolder401」の入力を試みる。まず、処理実行部127は、「random 6 > cy1.num」フォルダに割り当てられた処理(「/bin/random」)を実行し、0〜6までの乱数値を作成する。ここでは、処理実行部127が作成した乱数「cy1.num」を「DataFolder401」フォルダに格納し、処理結果データとして「DataFolder401/cy1.num」を得る。
次に、下位フォルダデータ投入部124は、処理結果データ「DataFolder401/cy1.num」を下位の処理付きフォルダに入力しようとするが、そこにはリンク「link/プログラム例4/none/合流先」がある。このため下位フォルダデータ投入部124は、その処理結果データを、そのリンク先である「合流先」フォルダに入力する。前記したとおり、この「合流先」フォルダに割り当てられた処理は「何もしない」というものなので、下位フォルダデータ投入部124は、さらにその下位フォルダに処理結果データ「DataFolder401/cy1.num」を受け渡す。
ここで、下位フォルダデータ投入部124は、「if(exist(cy1.num)and exist(cy2.num))」へ、処理結果データ「DataFolder401/cy1.num」の入力を試みる。しかし、この「DataFolder401」フォルダ内には「cy1.num」は存在するものの、「cy2.num」は存在しない。つまり、「if (exist(cy1.num)and exist(cy2.num))」という条件を満足しない。また、「else」フォルダも存在しない。このため、全体制御部129は、「DataFolder401/cy1.num」をそのまま「if (exist(cy1.num)and exist(cy2.num))」フォルダと同じ階層にフォルダごと保持する。
一方、処理実行部127は、「random 6 > cy2.num」フォルダに割り当てられた処理(「/bin/random」)を実行し、0〜6までの乱数値を作成する。そして、処理実行部127が作成した乱数を「DataFolder401」(乱数「cy1.num」を格納したフォルダと同じ名称のフォルダ)に格納し「DataFolder401/cy2.num」として得る。
次に、下位フォルダデータ投入部124は、前記した「DataFolder401/cy1.num」を得た場合と同様に、処理結果データ「DataFolder401/cy2.num」を下位の処理付きフォルダに入力しようとする。しかし、そこにはフォルダのリンク「link/プログラム例4/none/合流先」がある。このため下位フォルダデータ投入部124は、処理結果データをそのリンク先である「合流先」フォルダへ入力する。
前記したとおり、この「合流先」フォルダに割り当てられた処理は「何もしない」というものなので、下位フォルダデータ投入部124は、処理結果データをさらにその下位フォルダ「if(exist(cy1.num)and exist(cy2.num))」へ入力しようとする。ここで、このフォルダと同じ階層には、同じ名称の「DataFolder401」フォルダが存在する。このため、全体制御部129は、「DataFolder401/cy2.num」と、「DataFolder401/cy1.num」とマージし、「DataFolder401」に「cy1.num」と「cy2.num」の両方が存在するようにする。そして、下位フォルダデータ投入部124はこのデータがマージされた「DataFolder401」を、「if(exist(cy1.num)and exist(cy2.num))」フォルダへ入力する。ここで、「if(exist(cy1.num)and exist(cy2.num))」フォルダは、「cy1.num」と「cy2.num」の両方が存在する、という条件を満足するため、下位フォルダデータ投入部124は、さらにその下の「計算 "val(cy1.num)+val(cy2.num)+2"」フォルダヘの入力を行う。「val(Y)」が、入力されたデータYの先頭の数値を取得する命令であるとすると、処理実行部127は、それぞれの処理結果データの先頭の数値を足し、さらに乱数の値域を補正する「+2」を実行し、その処理結果データを下位の「画面出力」フォルダヘ入力する。
処理実行部127は、入力された処理結果データに対し、「画面出力」フォルダに割り当てられた処理(「/bin/print-message」)を実行する。下位フォルダデータ投入部124は、この処理結果データを、これ以上、下位の処理付きフォルダに渡すことができないため、「画面出力」フォルダの中にその処理結果データを格納する。なお、もし画面出力後にファイルを削除したければ画面出力フォルダの中にゴミ箱フォルダヘのリンクを置けばよい。このようにすることで画面出力後の処理結果データは削除される。
このようにすることで。プログラム実行制御装置10は、2つの乱数値の加算結果に2を足した値を画面出力するという処理を実行できる。
<第2の実施の形態の応用例 その2>
また、第2の実施の形態において、プログラム実行制御装置10は、if文を用いて条件分岐を設定できることとしたが、この条件分岐を使った繰り返し処理に応用にしてもよい。図9は、第2の実施の形態のプログラム実行制御装置10の応用例を説明した図である。また、ここではプログラム実行制御装置10は、図9に示す名称管理DB132を参照して処理を実行する場合を例に説明する。
この名称管理DB132において、「カウンタ追加」は、フォルダ内に繰り返し用のカウンタを格納するファイル「cnt」を生成する処理(「/folderprog/init-loop-cnt」)を示し、「計算」は、第1引数として与えられた計算式を評価する処理(「usr/local/bin/calculate」)を示し、「画面出力」は、入力されたファイルを画面表示する処理(「/bin/print-message」)を示す。
例えば、符号1401に示す「プログラム例5」フォルダに、中身が空のフォルダ(例えば、「DataFolder501」)等が入力されると、フォルダ割当処理管理部126は、この「プログラム例5」フォルダに割り当てられた処理割当存在(「/folderprog/through」)を確認し、処理実行部127は「DataFolder501」に対して、特に何もせず、入力されたものと同じ処理結果データを得る。下位フォルダデータ投入部124は、その処理結果データをさらに、下位の「カウンタ追加 0 > cnt」フォルダに入力する。処理実行部127は、この「カウンタ追加 O > cnt」フォルダに割り当てられた処理(「/folderprog/init-loop-cnt」)を実行し、「0」の値を持つcntファイルを作成する。そして、処理実行部127は、この「0」の値を持つcntファイルを「DataFolder501」フォルダに格納する。そして、このフォルダを処理結果データとする。
そして、下位フォルダデータ投入部124は、処理結果データ(「DataFolder501」フォルダ)をさらに、下位の処理付きフォルダに入力しようとするが、そこには、「else」フォルダと「if(val(cnt)10)」フォルダとがある。
そこで、下位フォルダデータ投入部124は、「if(val(cnt)<10)」フォルダに対して、この「DataFolder501」フォルダの入力を試みる。この「val(cnt)」は、入力されたフォルダ内の「cnt」ファイル内に書かれた先頭の数値を取得する命令である。ここで最初は、この「cnt」ファイルに記載された値は「0」であるので、「if(val(cnt)<10)」フォルダのフォルダ名に含まれるif文(「if(val(cnt)<10)」)の条件を満たす。よって、下位フォルダデータ投入部124は、この「DataFolder501」フォルダを、さらにその下位の「画面出力cnt」フォルダへ入力する。
処理実行部127は、この「画面出力」フォルダに割り当てられた画面表示処理(「/bin/print-message」)を実行する。つまり、処理実行部127は、「cnt」ファイルの内容を画面表示する。そして、下位フォルダデータ投入部124は、ここでの処理結果データを、さらにその下位の「計算“cnt++”」フォルダへ受け渡す。この処理実行部127は、この処理結果データに対し、「計算“cnt++”」フォルダに割り当てられた処理を実行する。つまり、処理実行部127は、「cnt」ファイルの内容の値をインクリメントする処理を実行する。
そして、下位フォルダデータ投入部124は、さらにその下位の処理付きフォルダへ処理結果データを入力するが、そこにはフォルダのリンク「カウンタ追加 0 >cnt」がある。そのため、下位フォルダデータ投入部124は、処理結果データをそのリンク先である「カウンタ追加 0 > cnt」フォルダへ入力する。
以下、「cnt」の値が「10」になるまで、if条件に従い、画面出力(「/bin/print-message」)が繰り返されるが、「cnt」の値が「10」になった時点で、if条件を満たさなくなる。よって、その処理結果データは、同じ階層にある「else」フォルダに入力される。この「else」フォルダは、入力されたデータに処理を加えるものではないので、処理実行部127は、処理を実行せず、下位フォルダデータ投入部124は、処理結果データをこの「画面出力“ループ終了"」フォルダに入力する。これにより、処理実行部127は、「画面出力“ループ終了"」フォルダに割り当てられた処理(「/bin/print-message」)を実行し、画面に“ループ終了"メッセージを表示する。ここで下位フォルダデータ投入部124は、これ以上、処理結果データを下位の処理付きフォルダに渡すことができないため、「画面出力“ループ終了"」フォルダの中にその処理結果データを格納する。
このようにすることで、プログラム実行制御装置10は、条件を満たすまで繰り返し処理を実行することができる。
≪第3の実施の形態≫
次に、本発明の第3の実施の形態を説明する。このプログラム実行制御装置は、フォルダにデータが入力されたとき、名称管理DBを参照して、このデータが予めフォルダに割り当てられた実行条件(例えば、所定のデータ型であること)を満たすデータであるか否かを判断する。そして、このデータが実行条件を満たさないと判断したとき、このフォルダに割り当てられた処理を実行しないことを特徴とする。なお、前記した実施の形態と同様の構成要素は、同じ符号を付して説明を省略する。このようなプログラム実行制御装置10Aは、名称管理DB132Aを備える(図3参照)。
図10は、第3の実施の形態のプログラム実行制御装置の名称管理DBを例示した図である。図10に示すように、名称管理DB132Aは、プログラムの名称と、その名称のフォルダに入力されたデータ対する処理に加え、このフォルダに割り当てられた処理の実行条件(このフォルダで受け付けるデータ形式の条件等)をさらに含む。
例えば、図10に示す名称管理DB132Aにおいて、「Proc-Jpeg重ね合わせ」に割り当てられた処理(「/usr/bin/merge-jpeg」)は、入力データ「A.jpg」および「B.jpg」が揃ったときに実行されることを示す。つまり、処理実行部127(図3参照)は、入力データ「A.jpg」および「B.jpg」が入力されるのを待って「Proc-Jpeg重ね合わせ」に割り当てられた処理を実行することを示す。
また、図10に示す「プログラム例6」に割り当てられた処理(「/folderprog/through」)の実行条件は、「NULL(入力されたフォルダが空でも受け付ける)」であり、「if」に割り当てられた処理(/folderprog/eval-if」の実行条件は、「ALL(何でも受け付ける)」であることを示す。さらに、この条件には「*(ワイルドカード)」等を用いてもよく、例えば、「Proc-映像内テロップ挿入」に割り当てられた処理(「usr/bin/telop-insert」)の実行条件は、入力データが「mpegファイル」または「txtファイル」であることを示す。
また、図10に示す「Proc-アニメGif作成」に割り当てられた処理(「usr/bin/merge-gif」)の実行条件は、「*.gif[ ](可変個のgifファイルを受け付ける)」と「start」とが揃ったときであることを示す。つまり、「Proc-アニメGif作成」フォルダにおいて、可変個のgifファイルの入力を受け付け、startファイルが入力されたときに、処理実行部127が、この「Proc-アニメGif作成」を実行することを示す。例えば、処理実行部127は、入力された複数個のgifファイルをファイルのID順に並べてアニメーションを作成する。このような実行条件に基づき、各処理付きフォルダに割り当てられた処理を実行するか否かの判断は、前記した図3の全体制御部129において行われる。
このようなプログラム実行制御装置10Aの動作手順を、図4を参照しつつ、図11および図12を用いて説明する。図11および図12は、第3の実施の形態のプログラム実行制御装置の動作手順における特徴的部分に示したフローチャートである。
このプログラム実行制御装置10Aは、前記した図4および図5に示した手順と同様の手順で処理を実行するが、データ入力を受け付ける処理(図4のS101)およびフォルダに割り当てられた処理を実行する処理(S104)が異なる。まず、図11を用いてデータ入力受け付け処理を説明する。
すなわち、図4のS101におけるデータ入力受け付けステップにおいて、データ受付部122(図3参照)は、フォルダに格納されたデータ入力を受け付ける(図11のS301:フォルダ入力受け付け)。つまり、データ受付部122(図3参照)は、フォルダごとデータ入力を受け付ける。全体制御部129は、このフォルダの入力先フォルダと同じ階層に、S301で入力されたフォルダと同じ名称のフォルダがあるか否かを判断する(S302)。
例えば、全体制御部129は、「Proc-Jpeg重ね合わせ」(図10参照)フォルダへ入力されたフォルダが「Data Folder99」フォルダであるとき、この「Proc-Jpeg重ね合わせ」フォルダと同じ階層に、同じ名称(「Data Folder99」)のフォルダがあるか否かを判断する。
ここで、全体制御部129が、入力先フォルダと同じ階層に、S301で入力されたフォルダと同じ名称のフォルダがあると判断したとき(S302のYes)、この同じ名称のフォルダのデータ同士をまとめて受け付けデータとする(S303)。
例えば、全体制御部129は、この「Proc-Jpeg重ね合わせ」フォルダと同じ階層に「Data Folder99」フォルダがあるとき、これらのフォルダ内のデータをまとめて、この「Proc-Jpeg重ね合わせ」フォルダの受付データとする。
一方、全体制御部129が、このデータ入力先フォルダと同じ階層に、S301で入力されたフォルダと同じ名称のフォルダはないと判断したとき(S302のNo)、S301に戻る。
このような処理をした後、プログラム実行制御装置10Aは、図4のS102以降の処理を実行する。
次に、図12を用いて、図4のS104における、フォルダに割り当てられた処理を実行するステップについて説明する。図4のS103において、フォルダ割当処理管理部126は、名称管理DB132A(図10参照)を参照して、処理が選択できたとき(S103のYes)、以下のような処理を行う。
すなわち、プログラム実行制御装置10Aの全体制御部129(図3参照)は、名称管理DB132Aを参照して、入力されたフォルダ(具体的には、このフォルダ内のデータ)が、入力先フォルダに割り当てられた処理を実行する実行条件を満たすか否かを判断する(図12のS401)。
ここで、全体制御部129が、この入力先フォルダに入力されたデータが、このフォルダ(入力先フォルダ)に割り当てられた処理の実行条件を満たすと判断したとき(S401のYes)、処理実行部127は、入力データに対して、このフォルダ(入力先フォルダ)に割り当てられた処理を実行し、処理結果データを作成する(S402)。そして、図4のS105以降の処理を実行する。
一方、全体制御部129が、名称管理DB132Aを参照して、当該フォルダに入力されたデータが、このフォルダ(入力先フォルダ)に割り当てられた処理の実行条件を満たさないと判断したとき(S401のNo)、当該フォルダ(入力先フォルダ)における受け入れを拒否する。そして、全体制御部129が、当該フォルダと同じ階層に、フォルダごと退避させておく(S403)。つまり、全体制御部129は、いったん入力先フォルダに入力されたデータを元に戻し、入力先フォルダと同じ階層にフォルダごと退避させておく。そして、図4のS105以降の処理を実行する。
このプログラム実行制御装置10Aの動作手順を、具体例を用いて説明する。図13は、第3の実施の形態のプログラム実行制御装置の動作手順を概念的に説明した図である。ここで、プログラム実行制御装置10Aは、図10に例示した名称管理DB132Aを参照するものとして説明する。
ここでは、「Proc-Jpeg重ね合わせ」フォルダへの入力データとして「A.jpg」と「B.jpg」とが揃ったとき、処理実行部127は、この「A.jpg」と「B.jpg」とに対し「Proc-Jpeg重ね合わせ」フォルダに割り当てられた処理を実行する場合を例に説明する。なお、図13において「プログラム例6」に入力されるデータ(「A.jpg」や「B.jpg」、または「A.jpg」や「B.jpg」を格納した「Data Folder99」)は、図示しない他の処理付きフォルダにより処理された後の処理結果データであってもよい。つまり、プログラム実行制御装置10Aは、図13(1)〜(4)に示す処理の前または後に、他の処理付きフォルダによる処理を実行してもよい。
(1)まず、「プログラム例6」フォルダに、「Data Folder99」フォルダに格納された「B.jpg」が入力されると、処理実行部127は、この「Data Folder99」フォルダに対して、処理を行わず、入力されたものと同じ処理結果データを得る。よって、下位フォルダデータ投入部124は、「Data Folder99」フォルダをそのまま「Proc-Jpeg重ね合わせ」フォルダへ入力する。ここで、「Proc-Jpeg重ね合わせ」フォルダと同じ階層に、今回入力された「Data Folder99」フォルダと同じ名称のフォルダがないので、全体制御部129は、データ同士をまとめない。
(2)次に、全体制御部129は、「A.jpg」がまだ入力されていないので、この「B.jpg」が格納される「Data Folder99」フォルダを「Proc-Jpeg重ね合わせ」フォルダと同じ階層に保持する(退避させておく)。つまり、全体制御部129は、「Proc-Jpeg重ね合わせ」フォルダに「A.jpg」が入力されるのを待つ。
(3)次に、「プログラム例6」フォルダに、「Data Folder99」フォルダに格納された「A.jpg」が入力されると、下位フォルダデータ投入部124は、「Data Folder99」フォルダごと「Proc-Jpeg重ね合わせ」フォルダへ入力する。ここで、全体制御部129は、「Proc-Jpeg重ね合わせ」フォルダと同じ階層にも「Data Folder99」フォルダがあることを確認すると、これらのフォルダ内のデータ(つまり、「A.jpg」と「B.jpg」)をまとめて、「Proc-Jpeg重ね合わせ」フォルダの受付データとする。
(4)この(3)における「A.jpg」の入力により、名称管理DB132Aに示される「Proc-Jpeg重ね合わせ」フォルダに割り当てられた処理の実行条件が揃ったことになる。よって、全体制御部129は、処理実行部127に「A.jpg」と「B.jpg」に対し、この「Proc-Jpeg重ね合わせ」フォルダに割り当てられた処理の実行と、その処理結果データを作成とを行わせる。つまり、全体制御部129は、処理実行部127に、この「Proc-Jpeg重ね合わせ」フォルダに割り当てられた処理(「usr/bin/merge-jpeg」)を実行させる。
このようにすることでプログラム実行制御装置10Aは、複数の所定データが揃ったときに、当該フォルダに割り当てられた処理を実行することができる。例えば、プログラム実行制御装置10Aにおいてフォルダが受け付けるデータが、HTTP(HyperText Transfer Protocol)のように連続するデータを1つ1つ受け取るプロトコルにより送信されるデータの場合でも、一連のデータが揃うのを待って、当該フォルダに割り当てられた処理を実行することができる。
また、このように名称管理DB132Aに、その処理付きフォルダで受け付け可能なファイル形式、スキーマ等も設定することで、プログラム実行制御装置10Aは、各処理付きフォルダごとに、そのフォルダに割り当てられた処理の対象となるデータを定義できる。
≪第4の実施の形態≫
次に、第4の実施の形態を説明する。第4の実施の形態は、各プログラム実行制御装置内の名称管理DBやプログラム記憶部の情報を、サーバで管理することを特徴とする。つまり、プログラム実行制御装置は、ネットワーク経由で、名称管理DBの情報と、その名称のプログラムとをサーバからダウンロードするようにしてもよい。図14は、第4の実施の形態のプログラム実行制御装置を含むシステムを例示した図である。
図14に示すように、システムは、1以上のプログラム実行制御装置10Bと、ネットワーク30経由でプログラム実行制御装置10Bに接続されるサーバ20とを含んで構成される。システムを構成するプログラム実行制御装置10Bおよびサーバ20の数は、図14に示す数に限定されない。このネットワーク30は、例えば、インターネットやLAN(Local Area Network)である。プログラム実行制御装置10Bは、このようなネットワーク30経由で通信を行うための通信インタフェースを備えるものとする。また、サーバ20もこのネットワーク30経由で通信を行うための通信インタフェースを備えるものとする。このサーバ20は、プログラムの名称ごとに、この名称のプログラムの格納領域を示した情報を名称管理DB232と、各種プログラムを格納するプログラム記憶部233とを備える。その詳細は、前記したプログラム実行制御装置10(10A)と同様なので説明を省略する。
このサーバ20は、このプログラム実行制御装置10Bからの要求に応じて、ネットワーク30経由で、名称管理DB232の情報およびこのプログラム記憶部233に格納されるプログラムを送信する。
例えば、サーバ20は、名称管理DB232にされるプログラム一覧を、ネットワーク30経由で、プログラム実行制御装置10Bの表示装置等に図2の符号103に示すようなプログラム選択画面として表示させる。つまり、フォルダそれぞれにプログラムの名称を付けた状態で画面上に表示させる。そして、サーバ20は、このプログラム選択画面103からプログラムの選択情報を受信すると、その名称のフォルダと、その名称のプログラムとをプログラム実行制御装置10Bへ送信する。このようにして受信したフォルダを、プログラム実行制御装置10Bのファイル管理部121は、フォルダ情報131に格納する。また、受信したプログラムをプログラム記憶部133に格納する。
このようにすることで、プログラム実行制御装置10Bは、サーバ20により公開されている様々なプログラムをフォルダに割り当てることができる。なお、サーバ20は、プログラム実行制御装置10Bへ、プログラムの名称(フォルダに割り当てる名前)と、そのプログラムの格納領域を送信し、プログラム自体はサーバ20側で持つようにしてもよい。つまり、プログラムはサーバ20側で実行するようにしてもよい。
なお、前記した各実施の形態において、一連のプログラムを実行するためのフォルダ群はすべてプログラム実行制御装置10,10A,10Bで保持することとしたが、これに限定されない。例えば、フォルダ群の一部のフォルダをプログラム実行制御装置10,10A,10Bで保持し、それ以外のフォルダについては、外部の装置のフォルダやWebDAV(Distributed Authoring and Versioning protocol for the WWW)のWebフォルダで保持するようにしてもよい。
図15は、本実施の形態において、画像の特徴量を抽出する処理を実行するためのフォルダ群と、プログラム実行制御装置が参照する名称管理DBとを例示した図である。なお、名称管理DB132において、名称管理DB132Aにおける実行条件の欄の記載は省略している。
例えば、図15に示すように、符号1601に示すフォルダ群により組み立てられている場合、このうち符号1602に示すフォルダ群、つまり、名称管理DB132の符号1321に示すプログラムが割り当てられたフォルダについては、外部の装置の処理付きフォルダを用いるようにしてもよい。この場合、フォルダ同士をネットワーク30越しに接続した関係ならば、このリンク先の情報としてフォルダ名にURIやURL(Uniform Resource Locator)等を記載すればよい。
以上説明したプログラム実行制御装置10,10A,10Bによれば、ユーザが、Webサーバや、各地点に設置されたセンサ等、様々なデータに対し、そのデータに応じた様々なプログラムの組み立てたいとき、簡単にプログラムを組み立てられるので大変便利である。
また、前記した各実施の形態のプログラム実行制御装置10,10A,10Bの表示処理部120は、表示画面上で、処理付きフォルダを、通常のフォルダとは異なる色で表示してもよい。さらに、表示処理部120は、フォルダ群のうち、そのフォルダ内にデータ(処理結果データ)が残っているものについては、異なる色で表示してもよい。このようにすることで、ユーザは、表示画面上で処理付きフォルダや、フォルダ内に処理結果データが残っているフォルダを識別しやすくなる。
さらに、プログラム実行制御装置10,10A,10Bは、フォルダ情報131に示されるフォルダの階層構造をXMLデータに変換して出力したり、またXMLデータで入力されたデータをフォルダの階層構造を示すデータに変換したりしてもよい。このようにすることで、プログラム実行制御装置10,10A,10Bが格納するフォルダ情報131を他のシステム等でも使いやすくなる。
また、プログラム実行制御装置10,10A,10Bのフォルダ割当処理管理部126は、当該フォルダが処理の割り当てられたフォルダか否かを、名称管理DB132を参照して判断することとしたが、このフォルダ名に含まれる識別子等で判断するようにしてもよい。例えば、フォルダ割当処理管理部126は、フォルダ名の先頭に「処理:」や「@」等の識別子となる文字や記号が入っていれば、このフォルダを、処理の割り当てられたフォルダ(処理付きフォルダ)と判断し、これらの文字や記号が入っていなければ通常フォルダと判断するようにしてもよい。このようにすることで、フォルダ割当処理管理部126は、フォルダが処理付きフォルダか通常フォルダか名称管理DB132を参照せずに判断できる。
さらに、このフォルダ割当処理管理部126が、データの入力先フォルダのフォルダ名と、名称管理DB132とを参照して、この入力先フォルダに割り当てられた処理を判断するとき、その判断結果をキャッシュとして記憶部13に記憶しておき、同じフォルダ名に関する問い合わせを受けたとき、このキャッシュを用いて返事を返してもよい。このようにすることで、フォルダ割当処理管理部126は、同じフォルダ名に関する問い合わせを高速に処理できる。
なお、前記した実施の形態においてプログラム実行制御装置10,10A,10Bにおいて、処理付きフォルダに対しそのフォルダに割り当てられた処理(フォルダ名の一部にパラメータが含まれていた場合には、そのパラメータを設定した処理)を実行し、その処置付きフォルダの下位にフォルダがあった場合でも、その下位のフォルダに処理結果データを入力しないようにしてもよい。つまり、図3に示したプログラム実行制御装置1010A,10Bにおいて、下位フォルダデータ投入部124を含まない構成としてもよい。
本実施の形態に係るプログラム実行制御装置10,10A,10Bは、前記したような処理を実行させるプログラムによって実現することができ、そのプログラムをコンピュータに読み取り可能な記憶媒体(CD−ROM等)に記憶して提供することが可能である。また、そのプログラムを、インターネット等のネットワークを通して提供することも可能である。