(57)【要約】【課題】  開発生産性の高いシナリオ指向型プログラム開発環境を実現する。【解決手段】  ＸＭＬ文書に所望の処理の順序関係だけ記述し、外部プログラムなどに処理を委譲する。このＸＭＬ文書を記憶部１２０内の構造化データ格納部１２１に格納しておく。制御部１１０は、記憶部１２０内の検証用ファイル格納部１２２に格納された検証用スキーマファイルにより、構造化データ格納部１２１に格納されたＸＭＬ文書に構文上の誤りが無いか否かを検証する。制御部１１０は構文上の誤りのないＸＭＬ文書に記載された命令列を実行する。【選択図】  図２
2006221556.tif 000002
【特許請求の範囲】
【請求項１】
複数の要素ブロック間に階層関係を有する構造化データに記述された命令列により記載された処理を実行するプログラム実行装置であって、
前記構造化データに出現する要素ブロック間の階層関係と各要素ブロックの出現順序関係とを定義したスキーマデータを格納するスキーマ格納手段と、
前記スキーマ格納手段に格納されたスキーマデータに従って、前記構造化データにおける記述の構文上の妥当性を判別する判別手段と、
前記判別手段により記述が妥当であると判別された前記構造化データに記述された命令列を解釈実行する実行手段と、
を具備することを特徴とするプログラム実行装置。
【請求項２】
前記命令列は、所定の処理を実行する外部実行手段を呼び出す命令を含むものであって、
前記実行手段は、
命令列を解釈し、解釈した命令に対応する前記外部実行手段を呼び出して実行させ、実行結果を受け取ることにより命令列を実行すること、
を特徴とする請求項１に記載のプログラム実行装置。
【請求項３】
前記実行手段は、
前記構造化データに記述された命令列のうち、分離して実行されるべき部分を判別し、該分離して実行されるべき部分をコンパイルするコンパイル手段を具備し、
前記コンパイル手段でコンパイルされた分離して実行されるべき部分を、前記構造化データに記述された命令列のうち分離して実行されるべきではない部分とは別の構造化データとして実行すること、
を特徴とする請求項１または２に記載のプログラム実行装置。
【請求項４】
複数の要素ブロック間に階層関係を有する構造化データに記述された命令列により記載された処理を実行するプログラム実行方法であって、
前記構造化データに出現する要素ブロック間の階層関係と各要素ブロックの出現順序関係とを定義したスキーマデータに従って、前記構造化データにおける記述の構文上の妥当性を判別する判別ステップと、
前記判別ステップにより記述が妥当であると判別された構造化データに記述された命令列を解釈実行する実行ステップと、
を備えることを特徴とするプログラム実行方法。
【請求項５】
コンピュータ装置を、
構造化データに出現する要素ブロック間の階層関係と各要素ブロックの出現順序関係とを定義したスキーマデータに従って、前記構造化データにおける記述の構文上の妥当性を判別し、
記述が妥当であると判別された構造化データに記述された命令列を解釈実行する、
プログラム実行装置として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム実行装置、プログラム実行方法およびプログラムに関し、特に、情報処理装置上で構造化データに記述された命令列を解釈して実行するプログラム実行装置、プログラム実行方法およびプログラムに関する。
【背景技術】
【０００２】
従来より、基本的な処理（以下、コンポーネントと称する）を組み合わせて所望の処理を容易に記述することのできる手法が望まれており、そのための手法が提案されている（例えば、特許文献１）。
【特許文献１】特開２００４−１０２４３６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、従来の提案手法では、コンポーネントの組み合わせ方が余りに柔軟すぎて、プログラミング経験が無いような者には、所望の処理をプログラムのロジックに落とし込むことが困難である。また、そのような者は得てしてプログラミング上の些細なミスを犯しやすいという傾向がある。
【０００４】
また、コンポーネントの作成者は、そのコンポーネントの利用形態を考慮して作成しなければならず、作成時に慎重さを要求され、結果として作成時間が延びてしまうという問題が生じている。
【０００５】
本発明は、上記問題点に鑑みてなされたもので、構造化して記述された命令列を解釈して実行するプログラム実行装置、プログラム実行方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明の第１の観点にかかるプログラム実行装置は、
複数の要素ブロック間に階層関係を有する構造化データに記述された命令列により記載された処理を実行するプログラム実行装置であって、
前記構造化データに出現する要素ブロック間の階層関係と各要素ブロックの出現順序関係とを定義したスキーマデータを格納するスキーマ格納手段と、
前記スキーマ格納手段に格納されたスキーマデータに従って、前記構造化データにおける記述の構文上の妥当性を判別する判別手段と、
前記判別手段により記述が妥当であると判別された前記構造化データに記述された命令列を解釈実行する実行手段と、
を具備する。
【０００７】
この発明によれば、スキーマデータに従って構造化データの記載を構文上から検証した上で、この構造化データに記述された命令列が解釈・実行される。したがって、構文上誤った記載がされた構造化データは実行されない。構造化データは、ＸＭＬ形式等のテキストデータであり、構造化データに記述された命令列は容易に確認できる。この構造化データの作成者は、構造化データに出現する要素ブロックの階層関係と出現順序関係とにさえ気をつけていればよく、命令列の記述に注力できる。
【０００８】
上記プログラム実行装置において、
前記命令列は、所定の処理を実行する外部実行手段を呼び出す命令を含む。
この場合、前記実行手段は、
命令列を解釈し、解釈した命令に対応する前記外部実行手段を呼び出して実行させ、実行結果を受け取ることにより命令列を実行することが望ましい。
【０００９】
この発明によれば、所定の処理を実行する外部実行手段を追加するだけで構造化データで記述可能な処理のバリエーションを増やすことができる。また、外部実行手段の作成の際も、構造化データからの呼び出し形態を考慮する必要性がなくなり、外部実行手段の作成の手間が短くて済む。
【００１０】
上記プログラム実行装置において、
前記実行手段は、
前記構造化データに記述された命令列のうち、分離して実行されるべき部分を判別し、該分離して実行されるべき部分をコンパイルするコンパイル手段を具備してもよい。この場合、実行手段は、
前記コンパイル手段でコンパイルされた分離して実行されるべき部分を、前記構造化データに記述された命令列のうち分離して実行されるべきではない部分とは別の構造化データとして実行する。
【００１１】
本発明の第２の観点にかかるプログラム実行方法は、
複数の要素ブロック間に階層関係を有する構造化データに記述された命令列により記載された処理を実行するプログラム実行方法であって、
前記構造化データに出現する要素ブロック間の階層関係と各要素ブロックの出現順序関係とを定義したスキーマデータに従って、前記構造化データにおける記述の構文上の妥当性を判別する判別ステップと、
前記判別ステップにより記述が妥当であると判別された構造化データに記述された命令列を解釈実行する実行ステップと、
を備える。
【００１２】
さらに、本発明の第３の観点にかかるプログラムは、
コンピュータ装置を、
構造化データに出現する要素ブロック間の階層関係と各要素ブロックの出現順序関係とを定義したスキーマデータに従って、前記構造化データにおける記述の構文上の妥当性を判別し、
記述が妥当であると判別された構造化データに記述された命令列を解釈実行する、
プログラム実行装置として機能させる。
【発明の効果】
【００１３】
本発明によれば、スキーマデータに従って各種処理を記載した構造化データを解釈して実行することができる。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照して、本発明の実施の形態にかかる情報処理システムとその動作とを説明する。
図１に示すように、本実施の形態にかかる情報処理システム１は、複数の情報処理装置１００Ａ、１００Ｂ、１００Ｃが通信ネットワークＣを介して接続されている。
【００１５】
通信ネットワークＣは、例えば、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）などの所定の通信プロトコルに基づくＬＡＮ（Local Area Network）などの通信ネットワークである。
【００１６】
情報処理装置１００Ａ、１００Ｂ、１００Ｃは、格納している構造化データを読み出して解釈・実行し、一定の処理を実行する。他の構造化データや外部プログラム（以下、「エージェント」と称する）を呼び出し、処理結果を受け取れるように、構造化データ中に命令列を記述できる。
【００１７】
図２に示すように、本実施の形態にかかる情報処理装置１００Ａは、制御部１１０と、記憶部１２０と、入力制御部１３０と、出力制御部１４０と、通信制御部１５０とを備える。そして、入力制御部１３０に入力装置１３が、出力制御部１４０に出力装置１４がそれぞれ接続されている。他の情報処理装置１００Ｂ、１００Ｃも１００Ａと同じ構成、機能を有する。
【００１８】
制御部１１０は、例えば、中央演算処理装置（ＣＰＵ、Central Processing Unit）やワークエリアとなる記憶装置（ＲＡＭ（Random Access Memory）等）などを備える。制御部１１０は、記憶部１２０に格納されている動作プログラムを読み出して実行することにより、制御部１１０は情報処理装置１００の各部を制御しつつ、後述する実行処理などを実行する。
【００１９】
記憶部１２０は、ハードディスク装置などの記憶装置から構成され、情報処理システム１内で解釈・実行される構造化データや、構造化データの構文上の誤りを検証する検証用スキーマファイル、制御部１１０の動作プログラムなどを格納する。図２に示すように、記憶部１２０は、構造化データ格納部１２１と、検証用ファイル格納部１２２と、プログラム格納部１２３とを備える。
【００２０】
構造化データ格納部１２１は、「構造化データ」を格納する。構造化データは、情報処理装置１００で実行されるスクリプト的なファイルで、後述する「パーサプログラム」による検証後に、「基盤プログラム」（同じく後述）により実行される。図３に、この構造化データの記述例を示す。この記述例に示した構造化データは、ネットワークを介して参照可能なデータベースからデータを取得するためのものである。
【００２１】
図３の１行目の記載はこの構造化データがＸＭＬ文書であることを示すＸＭＬ宣言である。
２行目の記載では検証用スキーマファイルを指定する。なお、所定の拡張子（例えば、「ＸＳＤ」）が省略されている。
「<xap:Information>」で始まる要素ブロックには、この構造化データの属性情報（作成日時、版数、コメントなど）が記載されている。
「<xap:Agents>」で始まる要素ブロックには、この構造化データの実行に必要となる「エージェント」が指定される。
「<xap:Embedding」で始まる要素ブロック（以下、「実行可能要素ブロック」と称する）には、この構造化データの実行に必要となる命令列であって、「エージェント」として実行される命令列が記載される。この「実行可能要素ブロック」には、「エージェント」に記述される一般的なメソッドと異なるような例外的な振る舞いやこの構造化データだけで実行されるようなメソッドが記述される。
【００２２】
「<xap:Scenarios>」で始まる要素ブロックには、この構造化データで実行される命令列と、実行時に参照される定数や文字列とが記載される。
この中で、「<xap:Define」で始まる要素ブロックには、この構造化データで参照される定数や文字列が記載される。
この中で、「<xap:Scene」で始まる要素ブロックには、いくつかの命令列で定義されるメソッドが記載される。ここで、個々の命令は「<xap:Setting」（図示なし）、「<xap:Action」、「<xap:Waiting」のいずれかで始まる要素ブロックで記述される。これらの要素ブロックでは、「エージェント」に定義されたメソッドを呼び出す。「エージェント」の呼び出し規約（呼び出し方）は定められている。例えば、図３の「<xap:Action」で始まるブロックでは、実行時に「Function=」で指定されるメソッドが呼び出される。このメソッドの処理結果（返り値）は、「Return=」で指定される変数に格納される。ただし、この指定が空の場合、返り値を後で使用しない。
「<xap:Scene」で始まる各要素ブロックは、条件分岐や繰り返しを示す要素ブロック（例えば、図３の「<xap:If」で始まる要素ブロック）内に記述された遷移条件により関連付けされる。
「<xap:Scene」で始まる要素ブロックや条件分岐や繰り返しを示す要素ブロック内に「<xap:Scenarios>」で始まる要素ブロックを記述することができる。従って、「エージェント」の呼び出し規約、要素ブロックの記述体系（階層関係や出現順序関係）を知っている必要があるものの、利用者は命令列と条件分岐や繰り返しとの組み合わせにより様々な処理を構造化データ内に記述することができる。
【００２３】
なお、要素ブロックの組み合わせ方により、構造化データは、
（１）単に「エージェント」に定義されたいくつかのメソッドの呼び出し順序を記述した要素ブロック（「<xap:Scenarios>」で始まる要素ブロックが該当する）：「シナリオ部」
（２）基本的なメソッドを定義した「コンポーネント」の呼び出し順序を記述し、不要なメソッドを隠蔽したり、新たなメソッドとして定義した要素ブロック（「<xap:Agents」で始まる要素ブロックと「<xap:Embedding」で始まる要素ブロックとが該当する）：「エージェント部」
とに分類することができる。プログラミング経験のない者は、（１）「シナリオ部」の作成に専念することができる。また、プログラミング経験の豊富な者は、（１）「シナリオ部」の作成だけでなく、（２）「エージェント部」で定義される「エージェント」の作成も可能である。
このように、プログラミングの技能に応じて作成する構造化データの複雑さに差をつけることができる。
【００２４】
検証用ファイル格納部１２２は、構造化データ格納部１２１に格納されている構造化データの記述が所定の記述仕様に則っているか否かを制御部１１０が判別するために必要となるＸＭＬスキーマを記述したファイルを格納する。このＸＭＬスキーマを記述したファイルには、後述の「基盤プログラム」を提供する側であらかじめ用意され、すべての構造化データの検証に適用されるものと、サードパーティや利用者が用意した構造化データ単位で適用を切り換えられるものとがある。構造化データ単位で適用するＸＭＬスキーマを切り換えることができるため、「エージェント」の動作仕様に応じて検証内容を変更することができる。
【００２５】
プログラム格納部１２３には、情報処理装置１００Ａの基本動作を司るオペレーティングシステム（Operating System：ＯＳ）が格納されていることはもとより、例えば、以下のようなプログラムが格納される。
（１）「パーサプログラム」：検証用ファイル格納部１２２に格納された検証用スキーマファイルに従って、構造化データ格納部１２１に格納された構造化データに構文上の誤りが無いかどうかを判別するプログラム
（２）「基盤プログラム」：構造化データ格納部１２１に格納された構造化データを実行するプログラム。構造化データの実行に付随して、「パーサプログラム」、「コンパイラ」、「通信プログラム」等を起動し、これらのプログラムを制御する
（３）「コンパイラ」：構造化データに含まれる「実行可能要素ブロック」をコンパイルして「エージェント」として仕立てあげるプログラム
（４）「通信プログラム」：通信制御部１５０を制御し、通信ネットワークＣを介して情報処理装置１００Ａ、１００Ｂと通信を行うプログラム
その他、構造化データの実行時に必要な外部プログラムや「エージェント」も格納される。
【００２６】
図２に戻り、入力制御部１３０は、例えば、キーボードやマウス等の入力装置１３を接続し、入力装置１３から入力された制御部１１０への指示などを受け付けて制御部１１０に伝達する。
【００２７】
出力制御部１４０は、例えば、ディスプレイ等の出力装置１４を接続し、制御部１１０の処理結果などを必要に応じて出力装置１４に出力する。
【００２８】
通信制御部１５０は、例えば、ＮＩＣ（Network Interface Card）やルータなどの通信装置から構成され、情報処理装置１００Ａと通信ネットワークＣとを接続し、この情報処理装置と他の情報処理装置１００Ｂ、１００Ｃとの間で行われる通信を制御する。
【００２９】
以下、本実施の形態にかかる情報処理装置１００Ａ、１００Ｂ、１００Ｃの動作について、図４を参照して説明する。１００Ａの構造化データ記憶部１２１に格納された構造化データを基盤プログラムで実行する場合を想定して説明する。
なお、構造化データに記載された命令列の実行に必要な他の構造化データおよび外部プログラムは、必要に応じて情報処理装置１００Ａ、１００Ｂ、１００Ｃにインストールされている。
また、以下の説明において、特に必要がなければ、制御部１１０など個々の動作を述べず、情報処理装置１００Ａ全体の動作として説明する。
【００３０】
図４は、本実施の形態にかかる実行処理を説明するためのフローチャートである。実行処理は、利用者が入力装置１３を操作し、構造化データ格納部１２１に格納されている構造化データを指定して基盤プログラムを起動することにより開始される。
まず、制御部１１０は、指定された構造化データを構造化データ格納部１２１から読み出す（ステップＳ１０１）。
【００３１】
次に、制御部１１０は、検証用ファイル格納部１２２に格納されている検証用スキーマファイルを読み出し、読み出した構造化データに記述された要素ブロック間の階層構造が検証用スキーマファイルに記載された階層構造定義に則っているか否かを判別する（ステップＳ１０２）。構造化データに記述された要素ブロック間の階層構造が検証用スキーマファイルに記載された階層構造定義に則っていないと判別した場合（ステップＳ１０２：ＮＧ）、構文誤りにより実行不能であることを示すエラーメッセージを出力装置１４に出力し実行処理を終了する。
【００３２】
構造化データに記述された要素ブロック間の階層構造が検証用スキーマファイルに記載された階層構造定義に則っていると判別した場合（ステップＳ１０２：ＯＫ）、制御部１１０は構造化データの記述を走査し、構造化データ中に埋め込まれた「実行可能要素ブロック」が存在するか否かを判別する（ステップＳ１０３）。具体的には、構造化データに図３の「<xap:Embedding」で始まる要素ブロックがあるか否かを判別する。構造化データ中に「実行可能要素ブロック」が埋め込まれていると判別した場合（ステップＳ１０３：ＹＥＳ）、制御部１１０は「実行可能要素ブロック」内に指定されたプログラム言語用のコンパイラで、「実行可能要素ブロック」内に記述された命令列をコンパイルし、「エージェント」を生成する（ステップＳ１０４）。なお、「実行可能要素ブロック」内に指定されたプログラム言語の種類によっては、制御部１１０は、プログラム格納部１２３からその言語用のインタプリタを読み出して起動する。構造化データ中に「実行可能要素ブロック」が埋め込まれていないと判別した場合（ステップＳ１０３：ＮＯ）、制御部１１０はステップＳ１０４を実行せず、直接ステップＳ１０５の実行に移る。
【００３３】
次に、制御部１１０は再び構造化データの記述を走査し、構造化データ中に「エージェント」を指定する記載があるか否か、すなわちこの構造化データの実行のために実行される「エージェント」が存在するか否かを判別する（ステップＳ１０５）。具体的には、構造化データに図３の<xap:Agents>〜</xap:Agents>の要素ブロックがあるか否かを判別する。構造化データ中に「エージェント」を指定する記載があると判別した場合（ステップＳ１０５：ＹＥＳ）、<xap:Agents>〜</xap:Agents>の要素ブロック内の「Name=」の後に記載された文字列に対応する「エージェント」をプログラム格納部１２３から読み出す（ステップＳ１０６）。構造化データ中に「エージェント」を指定する記載がないと判別した場合（ステップＳ１０５：ＮＯ）、制御部１１０はステップＳ１０６を実行せず、直接ステップＳ１０７の実行に移る。
【００３４】
最後に、制御部１１０は構造化データ中の最も「外側」の階層の<xap:Senarios>〜</xap:Senarios>内の<xap:Scene>から</xap:Scene>までの間に記載された命令列を実行する（ステップＳ１０７）。ここで、命令列の記載内容に応じて制御部１１０は、「エージェント」内のメソッドを実行する。これには、メソッドから遠隔手続き呼び出しなどの手法により他の情報処理装置１００Ｂ、１００Ｃに処理を依頼し処理結果を受け取ることを含む。図３の記述例に即して説明すると、例えば、GUIControllerという名称が「<xap:Agents>」で始まる要素ブロックで定義されているので、上から４１行目から始まる要素ブロックにおいて、制御部１１０は、GUIControllerという「エージェント」に含まれるNavigate()なるメソッドを、引数「UrlTopPage」で実行すると解釈する。制御部１１０は、そのメソッドを実行する。
【００３５】
すべての命令列の実行が終了するか異常終了すると、制御部１１０は、実行処理の実行を終了する。
【００３６】
以上、説明したように、本発明の実施の形態にかかる情報処理装置１００Ａ等によれば、利用者が必要に応じて記述した構造化データを解釈・実行する。ここで、情報処理装置１００Ａ等は、「エージェント」と協調動作させることにより、構造化データに記載された様々な処理を実行することができる。
【００３７】
また、構造化データの記述は、ＸＭＬ形式に則って行われ、パーサプログラムが検証用スキーマファイルを参照して、実行前に構造化データ記述の妥当性を検証する。ここで、構造化データの記述者は、処理に必要なメソッドを「エージェント」から呼び出すことができ、構造化データについてはメソッドの実行順序にしぼって記述することができる。
ただし、構造化データ内に、「エージェント」として扱われる命令列を埋め込むことができる。これは、「エージェント」に記述することが不適当なメソッドを記述するために使用される。また、「エージェント」が修正できない場合にも使用される。
【００３８】
また、「基盤プログラム」が外部プログラムのメソッドを呼び出して実行し、呼び出し結果を構造化データ側に返却する。このため、外部プログラム内に呼び出される側の処理を記述する者は、構造化データにおける出現順序を考慮する事なく、処理を記述することが可能である。
【００３９】
なお、本発明は上記実施の形態に限定されず、種々の変形および応用が可能である。
例えば、実行開始直前に構文上の誤りが検査される限りにおいて、構造化データがＸＭＬ形式以外のマークアップ言語、もしくはデータ記述言語、等で記述された構造化データであってもよい。また、上記実施の形態で示した要素ブロックは例示であって、必要に応じて拡張・改変することができる。この場合、拡張・改変に応じてスキーマファイルの記述も変更される。さらに、構造化データから「エージェント」を呼び出し、呼び出された「エージェント」が他の「エージェント」を呼び出せるように構成してもよい。この場合、呼び出される「エージェント」は所定の呼び出しルーチンを持つように構成される。
【００４０】
また、上記実施の形態は、３台の情報処理装置１００Ａ、１００Ｂ、１００Ｃがネットワークに接続される形態であったが、構造化データに記載された処理が単一の情報処理装置１００内で完結するような形態でもよい。
【００４１】
なお、本発明の実施の形態にかかる情報処理装置１００Ａ他を実現するための情報処理装置は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。例えば、汎用コンピュータに、上述の処理を実行するためのプログラムを格納した媒体（ＣＤ−ＲＯＭなど）から当該プログラムをプログラム格納部１２３にインストールすることにより、上述の処理を実行する情報処理装置１００Ａ他を構成することができる。
【００４２】
また、上述の機能を、ＯＳ（Operating System）とアプリケーションとの分担、またはＯＳとアプリケーションとの協動により実現する場合などには、ＯＳ以外の部分のみを媒体に格納してもよい。
【００４３】
また、搬送波にプログラムを重畳し、通信ネットワークを介して配信することも可能である。例えば、通信ネットワーク上の掲示板（ＢＢＳ、Bulletin Board System）に該プログラムを掲示し、ネットワークを介して該プログラムを配信してもよい。そして、このプログラムを起動し、オペレーティングシステムの制御下で、他のアプリケーションプログラムと同様に実行することにより、上述の処理を実行できるように構成しても構わない。
【図面の簡単な説明】
【００４４】
【図１】本発明の実施の形態にかかる情報処理システムの構成を示す図である。
【図２】図１の情報処理装置の構成を示す図である。
【図３】図２に示す構造化データ格納部に格納される構造化データの記述例を示す図である。
【図４】本発明の実施の形態にかかる情報処理装置の動作を説明するためのフローチャートである。
【符号の説明】
【００４５】
１      情報処理システム
１００、１００Ａ、１００Ｂ、１００Ｃ  情報処理装置
１１０  制御部
１２０  記憶部
１２１  構造化データ格納部
１２２  検証用ファイル格納部
１２３  プログラム格納部
１３０  入力制御部
１３    入力装置
１４０  出力制御部
１４    出力装置
１５０  通信制御部
【図１】
2006221556.tif 000003
【図２】
2006221556.tif 000004
【図３】
2006221556.tif 000005
【図４】
2006221556.tif 000006