(57)【特許請求の範囲】
【請求項１】
第１の手続き型言語により作成されたコンピュータプログラムのコードを読み込み、解釈して実行するプログラム実行部を備え、
前記プログラム実行部は、
外部からの通信接続要求に応じて通信チャネルを開設し、開設した前記通信チャネルに対して外部から送られてくる処理要求に対する結果を前記通信チャネル毎に返すとともに、
共有可能な変数及び関数を、各前記通信チャネルに対して外部から送られてくる処理要求によって変更可能とし、前記変数及び前記関数への変更結果を、他の通信チャネルによる同一の変数及び関数を利用する処理要求にも反映する、情報処理装置。
【請求項２】
前記プログラム実行部は、前記第１の手続き型言語とは異なる第２の手続き型言語により作成されたコンピュータプログラムのコードを読み込み、解釈して実行する、請求項１に記載の情報処理装置。
【請求項３】
前記プログラム実行部は、開設された前記通信チャネルで入力されたコードを解釈し、前記第２の手続き型言語に再構成して送信する、請求項２に記載の情報処理装置。
【請求項４】
前記プログラム実行部は、開設された前記通信チャネルを介してコードを受け付け、処理結果を待たずに該コードを受け付けたことを意味する返答を前記通信チャネルから返す、請求項１に記載の情報処理装置。
【請求項５】
前記プログラム実行部は、新たなシーケンスを生成して受け付けた前記コードを処理して該コードの処理結果を保持し、コードを受け付けた前記通信チャネルから結果要求が来た時に前記処理結果を返す、請求項４に記載の情報処理装置。
【請求項６】
前記プログラム実行部は、前記コードで用いられる変数の参照及び関数の実行を、認証を経てから行うよう制限し、外部からの通信接続要求に応じて開設される前記通信チャネル毎に設けられる認証リストを参照して認証する、請求項１に記載の情報処理装置。
【請求項７】
前記プログラム実行部は、他のプログラム実行部と通信する通信部を備え、
前記プログラム実行部は、前記通信部から前記他のプログラム実行部に接続要求を出して通信チャネルを開設させ、前記コードの変数や関数の実行を認証する認証鍵と前記他のプログラム実行部が持つ前記コードの変数や関数の実行を認証する認証鍵との間で認証したことを記憶する、請求項１に記載の情報処理装置。
【請求項８】
前記プログラム実行部は、外部からの通信接続要求に応じて開設された前記通信チャネルに連携し、コードの文脈を解釈することによって、自装置でのシンボル名と外部でのシンボル名との間の変換を行う、請求項１に記載の情報処理装置。
【請求項９】
第１の手続き型言語により作成されたコンピュータプログラムのコードを読み込み、解釈して実行することを備え、
前記実行することは、
外部からの通信接続要求に応じて通信チャネルを開設し、開設した前記通信チャネルに対して外部から送られてくる処理要求に対する結果を前記通信チャネル毎に返すとともに、
共有可能な変数及び関数を、各前記通信チャネルに対して外部から送られてくる処理要求によって変更可能とし、前記変数及び前記関数への変更結果を、他の通信チャネルによる同一の変数及び関数を利用する処理要求にも反映する、情報処理方法。
【請求項１０】
コンピュータに、
第１の手続き型言語により作成されたコンピュータプログラムのコードを読み込み、解釈して実行することを実行させ、
前記実行することは、
外部からの通信接続要求に応じて通信チャネルを開設し、開設した前記通信チャネルに対して外部から送られてくる処理要求に対する結果を前記通信チャネル毎に返すとともに、
共有可能な変数及び関数を、各前記通信チャネルに対して外部から送られてくる処理要求によって変更可能とし、前記変数及び前記関数への変更結果を、他の通信チャネルによる同一の変数及び関数を利用する処理要求にも反映する、コンピュータプログラム。
【請求項１１】
コンピュータに、
第１の手続き型言語により作成されたコンピュータプログラムのコードを読み込み、解釈して実行することを実行させ、
前記実行することは、
外部からの通信接続要求に応じて通信チャネルを開設し、開設した前記通信チャネルに対して外部から送られてくる処理要求に対する結果を前記通信チャネル毎に返すとともに、
共有可能な変数及び関数を、各前記通信チャネルに対して外部から送られてくる処理要求によって変更可能とし、前記変数及び前記関数への変更結果を、他の通信チャネルによる同一の変数及び関数を利用する処理要求にも反映する、コンピュータプログラムを格納した記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理装置、情報処理方法およびコンピュータプログラムに関する。
【背景技術】
【０００２】
ＬＩＳＰやＲｕｂｙ、Ｐｙｔｈｏｎ等の手続き型プログラミング言語では、変数や関数の定義情報がプログラムの実行時に読み込まれて、読み込まれた関数定義や変数の値に基づいてプログラムが実行される。このような手続き型プログラミング言語を解釈して実行するソフトウェア（逐次実行型データ処理モジュール）は、起動時に、毎回手続き型プログラミング言語で記述されたアプリケーションプログラムを読み込み、その後は読み込んだアプリケーションプログラムに従って、入力データを処理し、また処理結果を出力する。【０００３】
手続き型プログラミング言語を解釈して実行するソフトウェアの特徴としては、定義した変数名を入力すると、その変数の内容を読み出すことができ、また定義した関数を読み出す関数を入力すると、その関数コードを出力することができることがある。【０００４】
従来は、コンピュータシステムの構築において、要求仕様から機能モジュールをその目的毎に分解し、そのモジュール制御命令や通信手段も最初から定義して、コンパイラを用いて構築を実現している。機能モジュールの開発においては、そのモジュールの振る舞いを最初から機能モジュールにプリグラミングコードを用いて記述するか、既に記述されたコードを利用して、コンパイルし、リンクし、デバッグするという手順を踏んでシステムに組み込んでいた。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２０１１−５１３８２４号公報
【特許文献２】国際公開第２００５／１２１９７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来の逐次実行型データ処理モジュールは、キーボード通信チャネルやファイルシステム読み書きチャネルを通して動作し、コマンドによる指示でチャネルを切り替えながらスクリプトプログラムを読み込んで実行し、必要であれば新たな通信チャネルを開設し、その通信チャネルからスクリプトプログラムを利用する形態だった。【０００７】
本開示は、外部との間で通信チャネルを開設して、その外部からの処理要求を実行して通信チャネル毎に結果を返す逐次実行型データ処理モジュールを実現する、新規かつ改良された情報処理装置、情報処理方法およびコンピュータプログラムを提供する。
【課題を解決するための手段】
【０００８】
本開示によれば、第１の手続き型言語により作成されたコンピュータプログラムのコードを読み込み、解釈して実行するプログラム実行部を備え、前記プログラム実行部は、外部からの通信接続要求に応じて通信チャネルを開設し、開設した前記通信チャネルに対して外部から送られてくる処理要求に対する結果を前記通信チャネル毎に返す、情報処理装置が提供される。【０００９】
また本開示によれば、第１の手続き型言語により作成されたコンピュータプログラムのコードを読み込み、解釈して実行することを備え、前記実行することは、外部からの通信接続要求に応じて通信チャネルを開設し、開設した前記通信チャネルに対して外部から送られてくる処理要求に対する結果を前記通信チャネル毎に返す、情報処理方法が提供される。【００１０】
また本開示によれば、コンピュータに、第１の手続き型言語により作成されたコンピュータプログラムのコードを読み込み、解釈して実行することを実行させ、前記実行することは、外部からの通信接続要求に応じて通信チャネルを開設し、開設した前記通信チャネルに対して外部から送られてくる処理要求に対する結果を前記通信チャネル毎に返す、コンピュータプログラムが提供される。
【発明の効果】
【００１１】
以上説明したように本開示によれば、外部との間で通信チャネルを開設して、その外部からの処理要求を実行して通信チャネル毎に結果を返す逐次実行型データ処理モジュールを実現する、新規かつ改良された情報処理装置、情報処理方法およびコンピュータプログラムを提供することができる。
【図面の簡単な説明】
【００１２】
【図１】本開示の一実施形態にかかる情報処理システム１０の機能構成を示す説明図である。
【図２】本発明の一実施形態にかかる情報処理装置１００で実行される、コンピュータプログラムの構造例を示す説明図である。
【図３】本発明の一実施形態にかかる情報処理装置１００で実行される、コンピュータプログラムの構造例を示す説明図である。
【図４】本発明の一実施形態にかかる情報処理装置１００で実行される、コンピュータプログラムの構造例を示す説明図である。
【図５】本発明の一実施形態にかかる情報処理装置１００で実行される、コンピュータプログラムの構造例を示す説明図である。
【図６】図２に示したシンボルと、図３に示したコンスセルと、図４に示した名前格納テーブルと、図５に示した認証鍵テーブルとの対応関係を示す説明図である。
【図７】本開示の一実施形態にかかる情報処理装置１００、２００で実行されるコンピュータプログラムの概念について示す説明図である。
【図８】本開示の一実施形態にかかる情報処理装置１００、２００の動作を示す流れ図である。
【図９】逐次実行型データ処理モジュールによる、相互連携宣言と外部からの接続要求処理による通信チャネルの生成処理を示す説明図である。
【図１０】複数のＲＥＰＬｏｏｐによる、逐次実行型データ処理モジュールの内部状態の変化例を示す説明図である。
【図１１】逐次実行型データ処理モジュールでの相互連携の構造例を示す説明図である。
【図１２】本実施形態にかかる逐次実行型データ処理モジュールによる分散処理の概念を示す説明図である。
【発明を実施するための形態】
【００１３】
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００１４】
なお、説明は以下の順序で行うものとする。
＜１．従来技術とその問題点＞
＜２．本開示の一実施形態＞
［情報処理システムの機能構成］
＜３．まとめ＞
【００１５】
＜１．従来技術とその問題点＞
まず、本開示の好適な実施の形態について詳細に説明する前に、本開示の従来技術とその問題点について説明する。上述したように、従来のコンピュータシステムの構築においては、要求仕様から機能モジュールをその目的毎に分解し、そのモジュールの制御命令や通信手段も最初から定義しておき、コンパイラを用いてコンパイルすることで、システムの構築を実現している。機能モジュールの開発においては、その機能モジュールの振る舞いを最初から機能モジュールにプログラミングコードを用いて記述し、または、既に記述されたコードを利用して、コンパイルし、リンクし、デバッグするという手順を踏んでシステムに組み込んでいた。
【００１６】
このとき生成される機能モジュールは、特性も通信手段も指示命令形態も独自に決定されているため、同様にテストを何度も行う必要があり、システムのデバッグや修正に時間がかかっていた。
【００１７】
また、実行モジュールを複数に分けて、ネットワークを介して通信する方式で開発する場合でも、各機能モジュールの振る舞いを変えるには再度プログラミングし直すところから始めなければならず、かつ、実行モジュールへ、後述するセキュリティ機能を実装する際には、そのセキュリティ機能の実装も慎重に行う必要があり、開発コストがなかなか下がらないという問題があった。
【００１８】
また、セキュリティ機能を組み込むにあたっては、そのコードを秘密にすることでセキュリティを保っている場合があるが、コードの修正が必要な場合は、その実行モジュールの変更に関わる多くの開発者が、セキュリティ機能についての情報を知ってしまう問題が有った。
【００１９】
近年、スクリプト言語を用いてこのような問題点を改善する仕組みが出来つつあるが、スクリプトの読み込みは、キーボードを用いて、システムに備わったハードディスクなどに記録されたファイルから読み込む事で実現しており、ネットワーク越しにスクリプトを安全に読み込み、複数のデータ処理モジュールと安全に連携させる機能を持ったスクリプト処理モジュールは存在していなかった。
【００２０】
スクリプトを実行するスクリプト処理モジュールで実現されたコードを実行させて、ネットワーク通信を行いながら協調して動作するシステムは存在するが、ネットワークに接続し、接続されたネットワーク経由で接続先の別のスクリプト処理モジュールにスクリプトプログラムを組み込むなどの、高度にリモート制御可能なスクリプト処理モジュールは存在せず、プログラムの変更を安全にリモートで行うことが出来なかった。
【００２１】
コンパイラ型言語で１つの実行モジュールを初期化ファイルの変更だけで自由にその振る舞いを変えるように構築することは、冗長性が多くなり無駄が多く、かつ必要なものが備わっていないなどの不備が発生しやすかった。そして、セキュアなアプリケーションの開発時には、相互認証などのセキュリティアルゴリズムを隠蔽しながらも互換性を維持したい場合に、アプリケーションの数だけそのセキュリティアルゴリズムの開示が必要となり、セキュリティを高く保つことが難しかった。
【００２２】
そこで以下で説明する本開示の好適な実施の形態では、逐次実行型データ処理モジュールの機能を拡張し、処理単位を複数のモジュールに分散しながらも、そのモジュール間で認証処理を実行することで責任を分散して実行できる逐次実行型データ処理モジュールを示す。また、以下で説明する本開示の好適な実施の形態では、複数のコマンド入力用通信チャネルを備えた逐次実行型データ処理モジュールを示す。この逐次実行型データ処理モジュールは、通信チャネル毎に通信コネクションを保持し、各チャネルからの要求を順次処理しつつ、その結果としての内部状態変化を、更に他のチャネルで利用できるよう構成したものである。
【００２３】
＜２．本開示の一実施形態＞
［情報処理システムの機能構成］
まず、本開示の一実施形態にかかる情報処理システムの機能構成について説明する。図１は、本開示の一実施形態にかかる情報処理システム１０の機能構成を示す説明図である。以下、図１を用いて本開示の一実施形態にかかる情報処理システム１０の機能構成について説明する。
【００２４】
図１に示したように、本開示の一実施形態にかかる情報処理システム１０は、プログラムを実行する情報処理装置１００と、ＮＶＲＡＭ（Ｎｏｎ  Ｖｏｌａｔｉｌｅ  Ｒｏｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１５０と、入力部１６０と、表示部１７０と、外部記憶装置１８０と、インタフェース（Ｉ／Ｆ）１９０と、を含んで構成される。
【００２５】
情報処理装置１００は、手続き型プログラミング言語を解釈して実行することができるよう構成されているものであり、そのようなプログラミング言語として、例えばＬＩＳＰ、Ｓｃｈｅｍｅ、Ｒｕｂｙ、Ｐｙｔｈｏｎ等がある。
【００２６】
図１に示したように、情報処理装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｓｅｓｓｉｎｇ  Ｕｎｉｔ）１１０と、暗号化／復号部１２０と、ＲＯＭ１３０と、ＲＡＭ１４０と、を含んで構成される。
【００２７】
ＣＰＵ１１０は、情報処理装置１００の動作を制御するものであり、ＲＯＭ１３０に予め記録されているオペレーティングシステムソフトの読み出し命令を実行することで、当該オペレーティングシステムを実行することができる。ＣＰＵ１１０は、オペレーティングシステムの実行に際しては、ＲＡＭ１４０をワークエリアとして用いることができる。ここで、ＲＯＭ１３０に記録されているオペレーティングシステムソフトとしては、例えば、上述したような手続き型プログラミング言語を解釈して実行できるものである。なお本開示においては、外部記憶装置１８０から手続き型プログラムを読み込み実行する形でも良い。
【００２８】
本実施形態にかかる情報処理装置１００のＲＯＭ１３０から読み込まれるプログラムは、インタプリタとして処理する上記手続き型プログラミング言語の基本機能に加え、セキュリティ機能が付加されたものが格納される。これにより、情報処理装置１００にアプリケーションプログラムを組み込む際に、事前にコンパイルする必要がなく、またセキュリティ機能が付加されているので、アプリケーションが利用される情報処理装置１００そのものでデバッグが可能となる。従って、開発ステップの短縮に繋がって、短期間でのアプリケーションプログラムの開発が可能となる。
【００２９】
暗号化／復号部１２０は、入力されてくるデータに対して、指定された鍵を用いて暗号化処理を施して出力したり、入力されてくる暗号化データに対して、指定された鍵を用いて復号処理を施して出力したりするものである。本実施形態では、ソースコードを外部記憶装置１８０に保存する際にソースコードを暗号化したり、暗号化された状態で外部記憶装置１８０に記憶されているソースコードを復号したりするものである。暗号化／復号部１２０がソースコードの暗号化及び復号に用いる鍵は、ＮＶＲＡＭ１５０に格納される。
【００３０】
入力部１６０は、情報処理装置１００に接続され、情報処理装置１００に対するユーザの入力操作を受け付けるものである。入力部１６０は、例えばキーボードやマウス、タッチパネル等で構成されていてもよい。また表示部１７０は、情報処理装置１００に接続され、情報処理装置１００のＣＰＵ１１０における情報処理結果を、ＣＰＵ１１０の処理に基づいて表示するものである。表示部１７０は、例えば液晶ディスプレイ、有機ＥＬディスプレイその他の平板表示装置で構成されていてもよい。
【００３１】
外部記憶装置１８０は、情報処理装置１００に接続され、情報処理装置１００に用いられる各種データは格納するものである。表示部１７０は、例えばハードディスクで構成されていてもよい。
【００３２】
本実施形態では、外部記憶装置１８０には、手続き型プログラミング言語を解釈して実行することができる逐次実行型データ処理モジュール（「リスト処理モジュール」とも称する）と、その逐次実行型データ処理モジュールが読み込んで実行するソースコードが格納される。このソースコードは、暗号化／復号部１２０で暗号化された状態で格納される。暗号化／復号部１２０で暗号化された状態でソースコードが外部記憶装置１８０に記憶されることで、ソースコードの機密性を高めることが可能になる。
【００３３】
インタフェース１９０は、情報処理装置１００を他の装置や機器と接続するためのインタフェースであり、例えばシリアルインタフェースやパラレルインタフェース等で構成される。図１では、情報処理装置１００がインタフェース１９０を介して、ＩＣカードリーダライタ２０や、ネットワーク３０に接続されている情報処理装置２００と接続されている状態を図示している。
【００３４】
本実施形態では、情報処理装置２００も図１に示した情報処理装置１００の構成と同様の構成を有しており、リスト処理モジュールがソースコードを読み込んでスクリプトを実行することができる。
【００３５】
なお、図１では、ＮＶＲＡＭ１５０と、入力部１６０と、表示部１７０とは、情報処理装置１００の外部に設けられているように図示されているが、本開示はかかる例に限定されるものではない。すなわち、ＮＶＲＡＭ１５０、入力部１６０、表示部１７０の少なくともいずれかは情報処理装置１００の内部に設けられる構成を有していてもよい。以上、図１を用いて、本発明の一実施形態にかかる情報処理装置１００のハードウェア構成について説明した。次に、図１に示した情報処理装置１００で実行される、コンピュータプログラムの構造について説明する。
【００３６】
［プログラム構造例］
図２〜図５は、本発明の一実施形態にかかる情報処理装置１００で実行される、コンピュータプログラムの構造例を示す説明図である。以下、図２〜図５を用いて、本発明の一実施形態にかかる情報処理装置１００で実行される、コンピュータプログラムの構造例について説明する。
【００３７】
なお、以下においては、情報処理装置１００で実行されるコンピュータプログラムの言語として、特に断りが無ければＬＩＳＰを前提として説明するが、本開示においては、プログラミング言語として使用可能である言語はかかる例に限定されず、拡張機能または標準機能において、変数毎及び関数毎にそれぞれ独立してセキュリティが設定できるように構成することが可能な、手続き型のプログラミング言語であればいかなるものであっても良い。
【００３８】
ＣＰＵ１２０は、コンピュータプログラムの実行に際しては、情報処理装置１００で開発され、情報処理装置１００に組み込まれたプログラムのソースコードを解釈して実行するためのリスト処理モジュールをロードする。図２は、リスト処理モジュールが定義できる、シンボルと呼ぶデータ構造を示す説明図である。
【００３９】
図２に示したように、リスト処理モジュールが定義できるシンボル４００は、名前領域４０１と、変数定義領域４０２と、関数定義領域４０３と、セキュリティ属性領域４０４と、で構成される。
【００４０】
名前領域４０１は、印刷可能な文字テーブルを指し示すものである。名前領域４０１には、そのシンボルが変数を規定するものであればその変数名が格納され、関数を規定するものであればその関数名が格納されるものである。図２では、名前領域４０１を「ｐｎａｍｅ」で指し示している。
【００４１】
変数定義領域４０２は、そのシンボルが単純変数を規定するものであればその値を格納し、リスト変数を規定するものであればそのリストを指し示す値が格納されるものである。図２では、変数定義領域４０２を「ｖａｌｕｅ」で指し示している。
【００４２】
関数定義領域４０３は、そのシンボルが関数を規定するものであれば、その関数実態が格納されるものである。図３では、関数定義領域４０３を「ｆｕｎｃｔｉｏｎ」で指し示している。
【００４３】
セキュリティ属性領域４０４は、そのシンボルについてのセキュリティ属性に関する情報が格納されるものである。セキュリティ属性としては、例えば変数の読み出し属性、変数の変更属性、関数の実行属性がある。セキュリティ属性領域４０４には、そのシンボルへのアクセス権限を示すアクセスフラグと、そのシンボルへアクセスするための認証鍵を格納するテーブルを指し示す値とが格納される。
【００４４】
図２に示したシンボル４００に加えて、リスト構造を構成するためのコンスセルと呼ぶセルが連続的に定義されている。図３は、リスト構造を構成するためのコンスセル４１０の構成例を示す説明図である。コンスセル４１０は、図３に示したように、ＣＡＲスロット４１１およびＣＤＲスロット４１２と呼ばれる２つのポインタからなるオブジェクトである。図３では、ＣＡＲスロット４１１としてｃａｒ０〜ｃａｒ９、ＣＤＲスロット４１２としてｃｄｒ０〜ｃｄｒ９を示している。もちろん、それぞれのスロットの数はかかる例に限定されないことは言うまでもない。
【００４５】
シンボル４００の名前領域４０１に格納される名前を格納するためのテーブルも設けられる。図４はシンボル４００の名前領域４０１に格納される名前を格納するための名前格納テーブル４２０の構造例を示す説明図である。図４に示した名前格納テーブル４２０には、「ｅｖａｌ」、「ｓｅｔｑ」、「ｃｏｎｓ」、「ｄｅｆｕｎ」、「ｏｓａｉｆｕ」といった名称が格納されており、その実態であるシンボルと１対１に対応している。符号４２１は名称「ｅｖａｌ」が格納される領域であり、符号４２２は名称「ｓｅｔｑ」が格納される領域であり、符号４２３は名称「ｃｏｎｓ」が格納される領域であり、符号４２４は名称「ｄｅｆｕｎ」が格納される領域であり、符号４２５は名称「ｏｓａｉｆｕ」が格納される領域である。名前格納テーブル４２０の外部からシンボル名が名前格納テーブル４２０に対して入力されると、名前格納テーブル４２０に格納されているその入力されたシンボル名に対するシンボルが指し示されて評価される。なお、「ｏｓａｉｆｕ」は、情報処理装置１００に電子マネー機能を組み込む際にその電子マネーの残高を表す変数であるとする。
【００４６】
そして、シンボル４００のセキュリティ属性領域４０４に格納される、認証鍵を格納するテーブルを指し示す値に対応するテーブルも設けられる。図５は、認証鍵を格納する認証鍵テーブル４３０の構造例を示す説明図である。図５は、認証鍵テーブル４３０において、認証鍵がバージョン番号（ｋｖ１〜ｋｖ５）で管理されている状態を示すものである。符号４３１は鍵「ｋｅｙ１」が格納される領域であり、符号４３２は鍵「ｋｅｙ２」が格納される領域であり、符号４３３は鍵「ｋｅｙ３」が格納される領域であり、符号４３４は鍵「ｋｅｙ４」が格納される領域であり、符号４３５は鍵「ｋｅｙ５」が格納される領域である。
【００４７】
図６は、図２に示したシンボルと、図３に示したコンスセルと、図４に示した名前格納テーブルと、図５に示した認証鍵テーブルとの対応関係を示す説明図である。上述したように、シンボルは、印刷可能な名前のテーブルを指し示す領域と、値若しくは値のリストを指し示す領域と、関数属性と、セキュリティ属性とを持つ。関数属性は、関数のタイプ及びその関数の実態を指し示すポインタを持ち、セキュリティ属性は、セキュリティフラグと、鍵バージョンと、鍵を指し示すポインタとを持つ。なお、図６では、図５に示した認証鍵テーブル４３０において、符号４３１で示した鍵「ｋｅｙ１」及び符号４３２で示した鍵「ｋｅｙ２」が使用される様子が図示されている。
【００４８】
このように、リスト処理モジュールの一般的構造はシンボルと呼ばれ、数値若しくは数値を保持したリストへのポインタと、関数定義であれば関数へのポインタと、印刷可能な文字列を格納したテーブルを指し示すポインタと、で構成されている
【００４９】
そして本実施形態では、これに加えて、セキュリティ属性と２種類の暗号化鍵情報を保持するテーブルへのポインタがシンボルに付加されている。一方の鍵へのポインタはマスター鍵を指し、もう一方の鍵へのポインタは、当該シンボルのアクセス鍵（認証鍵）を指している。マスター鍵は当該シンボルのセキュリティ属性やアクセス鍵を変更する場合に、前もって相互認証機能により認証されているべき鍵を指している。シンボルに保持した情報の内容評価、内容変更、関数実行においてそのシンボルに設定されたセキュリティフラグが立っている場合は、シンボルに付加された一方の鍵で認証してあることがそのシンボル利用の条件となる。もう一方の鍵は、当該シンボルの鍵を変更する場合に、その権限を確認する権限認証鍵を示している。アクセス情報の変更は、その権限認証鍵で認証された状態でなければならない。
【００５０】
また、図３に示したような、コンスセルと呼ばれる、シンボルとシンボルの関係を表す２組のポインタがあり。それぞれのポインタは、シンボル又は他のシンボルを指すコンスセルを指し示す構造となっている。
【００５１】
組み込み関数はＲＯＭ１３０に書き込まれており、情報処理装置１００の最初の電源投入で、ＲＯＭ１３０に書き込まれている組み込み関数を、ＲＡＭ１４０に作成したシンボルに定義する。その後の電源投入では、既に登録済みのシンボルは初期化されない。
【００５２】
上記の構成は、ユーザにより新たな関数が登録される場合においても、同様に機能する構造となっている。
【００５３】
ＣＰＵ１１０が実行するリスト処理モジュールは、シンボルを自由に登録し、そのシンボルに数値やリスト、関数を自由に登録できる構成となっている。そして、登録されるシンボルにセキュリティ機能を生かすために、そのシンボルに、暗号鍵とアクセスフラグが登録される。ＣＰＵ１１０が実行するリスト処理モジュールには、システム鍵と呼ぶ暗号化鍵が最初に設定されている。そのシステム鍵で相互認証されたモードになっている状態でのみ、新たに登録されたシンボルは、そのシンボル独自の鍵とアクセスフラグが設定されることができる。また、ＣＰＵ１１０が実行するリスト処理モジュールで実行されるコンピュータプログラムは、システム鍵で相互認証されたモードになっている状態に限り、使用される変数や関数の定義を変更可能な構成となっている。
【００５４】
ＣＰＵ１１０が実行するリスト処理モジュールは、関数シンボルの登録に際しては、その関数で利用するシンボルの全ての鍵で認証済みであることが登録条件となっている。そしてその後、リスト処理モジュールは、その登録された関数を利用する場合は、単にその関数実行鍵で認証されていれば良い構造になっている。
【００５５】
以上、図１に示した情報処理装置１００で実行される、コンピュータプログラムの構造について説明した。次に、情報処理装置１００、２００で実行されるコンピュータプログラムについて詳細に説明する。
【００５６】
本実施形態にかかる情報処理装置１００、２００は、逐次実行型データ処理モジュールの機能を拡張し、単一チャネルを通しキーボードから入力された命令やファイルに記録されたスクリプトを読み込み実行するのみならず、複数のネットワークチャネルを開設し、チャネルを維持しながら逐次要求を処理する構成を有する。本実施形態にかかる情報処理装置１００、２００は、かかる構成を有することにより、あるチャネルからの要求を処理する関数や内部保持変数を他のチャネルからの処理要求により動的な変更可能となる。
【００５７】
図７は、本開示の一実施形態にかかる情報処理装置１００、２００で実行されるコンピュータプログラムの概念について示す説明図である。以下、図７を用いて本開示の一実施形態にかかる情報処理装置１００、２００で実行されるコンピュータプログラムの概念について説明する。
【００５８】
逐次解釈型言語はインタラクティブモードとしてＴＯＰ  ＬＥＶＥＬと呼ばれるＲｅａｄ  Ｅｖａｌ  Ｐｒｉｎｔ  Ｌｏｏｐ（ＲＥＰＬ）がある。情報処理装置１００に接続された入力装置１７０から命令が入力されると、このＲＥＰＬにより、命令が読み込み（Ｒｅａｄ）され、評価（Ｅｖａｌ）され、出力（Ｐｒｉｎｔ）される。
【００５９】
本実施形態では、情報処理装置１００で入力された関数は、情報処理装置２００へのスクリプトを出力とし、情報処理装置２００での評価（Ｅｖａｌ）結果を受け取り、情報処理装置１００の結果として出力（Ｐｒｉｎｔ）する。情報処理装置２００に接続された外部機器が、同様の逐次解釈型言語の入力となっていた場合は、そのＲＥＰＬが繰り返される。
【００６０】
そして本実施形態では、単一チャネルを通しキーボードから入力された命令やファイルに記録されたスクリプトを読み込み実行するのみならず、複数のネットワークチャネルを開設し、チャネルを維持しながら逐次要求を処理する構成を有する。
【００６１】
逐次解釈型言語の関数や定義変数は、例えば、上述したようなアクセスコントロールフラグを持った構造であり、例えば、外部機器で定義された変数や関数を読み出したり、変数や関数の定義を変更したりする場合には、認証が要求されるものとする。例えば、情報処理装置２００に格納されているスクリプトＢで定義されている変数や関数を、情報処理装置１００の逐次解釈型機能モジュールで実行しようとする場合は、情報処理装置１００と情報処理装置２００との間で相互認証を要するものとする。その逆も同様である。
【００６２】
また情報処理装置１００、２００は、それぞれ認証リスト１１４、２１４を有している。この認証リスト１１４、２１４は、セキュリティ属性を持つ関数・変数へのアクセスを管理するために設けられており、後述するように、認証リスト１１４、２１４は、通信チャネル毎に保持される。
【００６３】
情報処理装置１００と情報処理装置２００とは、同一の構造を有するものであるとし、通信Ｉ／Ｆ１はローカルポートとネットワーク通信ポートの切り替え及び認証モードを持つ。また、情報処理装置１００、２００は、それぞれ入出力セレクタを備えている。図７では、情報処理装置１００は入出力セレクタによって、ローカルポートまたは他の装置とネットワークで接続された状態を示していて、情報処理装置２００は入出力セレクタによって、情報処理装置１００または他の装置とネットワーク通信ポートに接続された状態を示している。
【００６４】
例えば、上述した「ｏｓａｉｆｕ」という変数は、電子マネーの残高が格納される変数であるが、この変数が定義されたスクリプトが例えば情報記憶装置２００に保存されている場合に、情報処理装置１００の逐次解釈型機能モジュールから参照しようとする場合は、情報処理装置１００と情報処理装置２００との間で相互認証を要してからでないと、情報処理装置１００の逐次解釈型機能モジュールからは参照できないようにする。
【００６５】
また、この「ｏｓａｉｆｕ」変数が定義されたスクリプトが情報処理装置１００に格納されている場合、後述するように、外部の装置から「ｏｓａｉｆｕ」変数を参照することができる。その際にも、情報処理装置１００は、その外部の装置との間で相互認証を実行してから、「ｏｓａｉｆｕ」変数の参照を可能とすることもできる。
【００６６】
通信Ｉ／Ｆ１のモードは、後述する関数ａｕｔｈ１の成功でモード０からモード１に遷移し、同じく後述する関数ａｕｔｈ２の成功でモード１からモード２に遷移する。また通信Ｉ／Ｆ２は後述する関数ｅｘ−ａｕｔｈ１の成功でモード０からモード１に遷移し、同じく後述する関数ｅｘ−ａｕｔｈ２の成功でモード１からモード２に遷移する。ここで、関数ｅｘ−ａｕｔｈ１はＥＶＡＬにより関数ａｕｔｈ１が生成され、関数ｅｘ−ａｕｔｈ２は同じように関数ａｕｔｈ２が生成され通信Ｉ／Ｆ２を介してネットワーク通信ポートに送られる。
【００６７】
情報処理装置１００の通信Ｉ／Ｆ２は、関数ｅｘ−ａｕｔｈ２の成功でモード１からモード２に遷移すると、情報処理装置２００の通信Ｉ／Ｆ１との間で暗号通信セッションが張られる。情報処理装置１００の通信Ｉ／Ｆ２と情報処理装置２００の通信Ｉ／Ｆ１との間で暗号通信セッションが張られると、ＥＶＡＬより送られる送信文は暗号化され、また受信文は復号される。また同様に、情報処理装置２００の通信Ｉ／Ｆ１も関数ｅｘ−ａｕｔｈ２の成功でモード２になると、情報処理装置１００の通信Ｉ／Ｆ２との間で暗号通信セッションが確立する。情報処理装置２００の通信Ｉ／Ｆ１に情報処理装置１００の通信Ｉ／Ｆ２との間で暗号通信セッションが確立されると、受信文を復号し、送信文を暗号化することで、情報処理装置１００の通信Ｉ／Ｆ２との暗号化通信が可能となる。
【００６８】
本実施形態では、情報処理装置２００のように通信Ｉ／Ｆ１がネットワークに接続された状態をｍｉｎｉｏｎモードと呼ぶ。ｍｉｎｉｏｎモードでは、通常のモード（ｎｏｒｍａｌモードと称する）の機器から手続き関数ｒｅｑｕｅｓｔを用いてスクリプトが送られ、ｎｏｒｍａｌモードの機器は、ｍｉｎｉｏｎモードの機器から結果を得ることが出来る。またｍｉｎｉｏｎモードとなった機器は、機器に接続されたキーボードでなく、ネットワークを介してどの機器からでも接続可能である。従ってｍｉｎｉｏｎモードは、逐次解釈型機能モジュール上の手続き関数の振る舞いを制限している。
【００６９】
通信Ｉ／Ｆ１、２は、認証モード０、１の時は平文で通信し合い、認証モード２になると、相互認証で交換して得られた乱数を、１つはセッション鍵、もう１つは初期値として暗号通信に利用する。なお、認証方式は上述の構成を利用し、同時に複数のシンボルを対象に認証する方式を用いている。
【００７０】
データ構造は、例えば１６ｂｙｔｅをブロックとする構造を定義する。データ入力は、Ｈｅｘａ入力では例えば「＃＿ｎｎｎｎ．．．」と表記し、ｂａｓｅ６４の場合は「＃〜ｎｎｎｎ．．．．」と表記する。
【００７１】
シンボルへは、例えば３ビットのセキュリティフラグが追加され、セキュリティフラグによって関数ｅｖａｌ，ｍｏｄ，ｅｘｅの機能が制限される。そして、上述の１６ｂｙｔｅのブロックデータを認証鍵とし、その認証鍵へのポインタデータがシンボルへ追加される。
【００７２】
認証条件は、セキュリティロックされた変数・関数の利用・評価では、それぞれのシンボルが内部相互認証（ａｕｔｈ１，ａｕｔｈ２）によるモード２か、外部認証（ｅｘ−ａｕｔｈ１）によるモード１で無ければならないとする。
【００７３】
標準コマンドの機能制限は、ｄｅｆｉｎｅ関数により定義する関数で利用するグローバル変数及び関数は、定義済みでかつ必要な認証済みでなければ実行できないものとする。また、セキュリティロックされた引数への関数・変数利用では、その変数は認証済みで無ければ利用できないものとする。ネットワーク通信経由の場合は、Ｔｏｐ  Ｌｅｖｅｌにおけるｄｅｆｉｎｅ関数の利用では、通信Ｉ／Ｆ１のモードがモード２で無ければならないとする。セキュリティフラグがセットされている関数・変数は、実行・評価時には、認証済みで無ければ利用できないものとする。
本実施形態では、装置間でのスクリプトの実行に関する機能コマンドは、例えば以下のように定義する。もちろん、コマンドの名称や機能は以下で示したものに限定されないことは言うまでもない。
ｕｎｄｅｆ：ｄｅｆｉｎｅ関数で定義した関数・変数を削除する
ｓｔａｒｔ−ｍｉｎｉｏｎ：特定のネットアドレスのポートのソケットを、スクリプトのＲｅａｄ入力及びＰｒｉｎｔ出力として接続する
ｃｏｎｎ−ｍｉｎｉｏｎ：特定のネットアドレスのポートを、他の機器の通信ソケットに接続する
ｒｅｑｕｅｓｔ：ｍｉｎｉｏｎモードの機器にスクリプトを送信し、その結果を受信する
ｓｅｔｓｙｍ：シンボルにセキュリティ属性を付加する
ａｕｔｈ１：シンボルに付属する認証鍵と、乱数によるメッセージコードとを用いて認証する
ａｕｔｈ２：ａｕｔｈ１で交換したデータを基に再度データ交換し相互認証する
ｅｘ−ａｕｔｈ１：ａｕｔｈ１関数を生成し、ｍｉｎｉｏｎモードの機器に送信し、その結果を受信・解析して内部で保持する
ｅｘ−ａｕｔｈ２：ｅｘ−ａｕｔｈ１コマンドで受信し解析した内容を利用し、更にｍ４を生成してａｕｔｈ２コマンドに組み込み、ｍｉｎｉｏｎモードの機器に送信する
ｂａｃｋｕｐ：読み込み定義された変数・関数・セキュリティ属性を、初期化ファイルとしてファイルに書き出す
【００７４】
関数の機能制限は、上記関数ｅｘ−ａｕｔｈ１，２の利用は、ｍｉｎｉｏｎモードではシステム鍵による認証を必要とする。なおｎｏｒｍａｌモードの場合は、関数ｅｘ−ａｕｔｈ１，２の利用に際して認証の必要はないものとする。このように関数ｅｘ−ａｕｔｈ１，２の利用を制限することより、勝手にネットワーク経由で外部から設定された鍵を用いて認証されるのを防ぐことができる。
【００７５】
また、関数ｌｏａｄの利用は、ｍｉｎｉｏｎモードではシステム鍵による認証を必要とする。なおｎｏｒｍａｌモードの場合は、関数ｌｏａｄの利用に際して認証の必要はないものとする。このように関数ｌｏａｄの利用を制限することより、勝手にネットワーク経由で外部から他の初期化ファイルにより変更されるのを防ぐことができる。
【００７６】
また、関数ｂａｃｋｕｐの利用は、ｍｉｎｉｏｎモードではシステム鍵による認証を必要とする。このように関数ｂａｃｋｕｐの利用を制限することより、リモートで勝手にバックアップされてしまうことを防ぐことができる。
【００７７】
ファイルの利用制限は、関数ｌｏａｄで読み込んだ初期化ファイルは、リスト処理モジュールの実行中はロックされ続けるものとする。これにより、同一の初期化ファイルを複数のモジュールから読み込まれ、変更されることで内容が競合することを防ぐことができる。
【００７８】
以上、図７を用いて本開示の一実施形態にかかる情報処理装置１００、２００で実行されるコンピュータプログラムの概念について説明した。次に、本開示の一実施形態にかかる情報処理装置１００、２００の動作について説明する。
【００７９】
本開示の一実施形態にかかる情報処理装置１００、２００で実行される逐次実行型データ処理モジュールに組み込まれた関数や変数を、他の通信チャネルから処理要求として利用する場合の一つの方法は、前もってチャネルを一旦クローズしてから、新たに通信チャネルを再構成する方法である。しかしこの方法を採る場合は、チャネルをクローズし、新たな通信チャネルを開設するプログラムを組む必要があり、手続きが煩雑となる。以下では、通信チャネルを開設し、チャネルを維持しながら逐次要求を処理する、逐次実行型データ処理モジュールの動作を説明する。
【００８０】
図８は、本開示の一実施形態にかかる情報処理装置１００、２００の動作を示す流れ図である。図８に示した流れ図は、逐次実行型データ処理モジュールの実行に際して、他の逐次実行型データ処理モジュールから通信接続要求があった場合の動作を示したものである。以下、図８を用いて、本開示の一実施形態にかかる情報処理装置１００、２００の動作について説明する。なお、以下の説明では、情報処理装置１００で実行される逐次実行型データ処理モジュールに、情報処理装置２００から通信接続要求があった場合の、逐次実行型データ処理モジュール動作を例示する。
【００８１】
まず、情報処理装置１００は、上述の逐次実行型データ処理モジュールを起動すると、キーボード入力通信要求受付チャネルを開設し、入力ありフラグが立つまで待機する。逐次実行型データ処理モジュールは、実行している際に、他の装置（情報処理装置２００）から通信接続要求があるかどうかを定期的に確認する（ステップＳ１０１）。情報処理装置１００で実行される逐次実行型データ処理モジュールは、他の装置（情報処理装置２００）から通信接続要求があるまでステップＳ１０１の確認を繰り返し、他の装置（情報処理装置２００）から通信接続要求があると、続いて情報処理装置１００で実行される逐次実行型データ処理モジュールは、逐次実行型データ処理モジュールで通信チャネルを開設済みであるかどうかを判断する（ステップＳ１０２）。
【００８２】
上記ステップＳ１０２の判断の結果、逐次実行型データ処理モジュールで通信チャネルを開設済みでない場合は、情報処理装置１００で実行される逐次実行型データ処理モジュールは、情報処理装置２００との間の通信チャネルを開設し、現在の利用チャネルとする（ステップＳ１０３）。情報処理装置１００で実行される逐次実行型データ処理モジュールは、通信チャネル毎に利用するシーケンスレジスタの入出力ポートを用意する。逐次実行型データ処理モジュールは、情報処理装置２００との間の通信チャネルを開設すると、一旦上記ステップＳ１０１に戻る。
【００８３】
一方、上記ステップＳ１０２の判断の結果、逐次実行型データ処理モジュールで通信チャネルを開設済みである場合は、続いて情報処理装置１００で実行される逐次実行型データ処理モジュールは、入力部１６０を構成するキーボードからの入力があるかどうかを判断する（ステップＳ１０４）。
【００８４】
ステップＳ１０４の判断の結果、入力部１６０を構成するキーボードからの入力があれば、情報処理装置１００で実行される逐次実行型データ処理モジュールは、キーボードチャネルと、ディスプレイチャネルとを、現在の利用チャネルに設定する（ステップＳ１０５）。
【００８５】
一方、ステップＳ１０４の判断の結果、入力部１６０を構成するキーボードからの入力がなければ、続いて情報処理装置１００で実行される逐次実行型データ処理モジュールは、開設した全ての通信チャネルに対し、入力があるかどうかを判断する（ステップＳ１０６）。
【００８６】
開設した通信チャネルからの入力がなければ、逐次実行型データ処理モジュールは一旦上記ステップＳ１０１の処理に戻って待ち状態となる。一方、開設した通信チャネルからの入力があれば、情報処理装置１００で実行される逐次実行型データ処理モジュールは、通信接続要求のあった情報処理装置２００に対して開設した通信チャネル（要求チャネル）を、現在の利用チャネルに設定する（ステップＳ１０７）。情報処理装置１００で実行される逐次実行型データ処理モジュールは、通信要求があった場合は、通信要求があった旨の情報を、該当するチャネルの適切なレジスタ（通信チャネルレジスタ）にセットし、入力ありを意味するフラグを立てる。
【００８７】
上記ステップＳ１０５またはステップＳ１０７で、現在の利用チャネルを設定すると、情報処理装置１００で実行される逐次実行型データ処理モジュールは、設定した現在の利用チャネルＩＯからデータを読みだして処理する（ステップＳ１０８）。ここで、入力ありを意味するフラグが立っている場合は、逐次実行型データ処理モジュールは、現在のシーケンスレジスタを現在の通信チャネルレジスタに保存し、該当する通信チャネルのレジスタをシーケンスレジスタにセットして、処理を進める。そして逐次実行型データ処理モジュールは、処理結果を、該当する通信チャネルを介して送信し、ステップＳ１０１の通信待ち状態に戻る。
【００８８】
ここで、逐次実行型データ処理モジュールが有するシーケンスレジスタの種類について説明する。シーケンスレジスタが保持するものとして、入出力ポート、スクリプトコード、スクリプトの内部表現形式、スタック情報、計算途中結果等がある。逐次実行型データ処理モジュールは、これらの情報をチャネル毎に保持しておき、入力待ちや内部切り替え指示により、他のチャネルからの処理要求を確認し、処理要求を送信した他のチャネルに切り替える構成を有している。
【００８９】
逐次実行型データ処理モジュールによる、入力されたスクリプト式の処理について説明する。スクリプト式は、各通信チャネルのシーケンス内で処理されるが、その式による実行で定義される関数・変数は共通の記憶領域に設定される。共通記憶領域に設定された関数・変数は、どの通信チャネルのスクリプト式からも利用できる構成となっている。
【００９０】
本実施形態では、逐次実行型データ処理モジュールは、複数の異なるスクリプト言語の解析・再構成を行う機能を供える。本実施形態にかかる逐次実行型データ処理モジュールは、最初の共通する言語切り替え用スクリプト式により切り替えられ、切り替え後は結果出力もその切り替え後の言語に従って出力する。
【００９１】
また、関数・変数にアクセスコントロール属性が付加されている場合は、チャネルシーケンス毎の認証リストを確認し、認証済みである場合のみ利用が許可される構造を有する。この認証リストは各チャネル固有であり、他のチャネルからは参照できない構造であるため、各チャネルのセキュリティは保持される。
【００９２】
本実施形態にかかる逐次実行型データ処理モジュールによる、通信チャネルの生成についてより詳細に説明する。図９は、逐次実行型データ処理モジュールによる、相互連携宣言と外部からの接続要求処理による通信チャネルの生成処理を示す説明図である。
【００９３】
図９の左側に示すように、逐次実行型データ処理モジュールが情報処理装置１００で起動された直後は、逐次実行型データ処理モジュールは、キーボード入力を受け付けて結果を返すＲＥＰＬｏｏｐを実行する。そして、図９の中央に示すように、逐次実行型データ処理モジュールは、他の装置からのソケット接続要求を受け付けるための命令を、キーボード入力に基づいて実行する。本実施形態では、他の装置からのソケット接続要求を受け付けて相互連携するための命令を「ｉｎｔｅｒａｃｔｏｒ」と定義し、この相互連携するための命令には、他の装置からのソケット接続要求を受け付けるポート番号が指定される。図９に示した例では、ポート番号９９９９が、他の装置からのソケット接続要求を受け付けるポートとして設定されている。
【００９４】
相互連携するための命令が実行されると、逐次実行型データ処理モジュールは、接続要求処理と入力確認のループを実行する。これは、図８に示した流れ図のステップＳ１０１からステップＳ１０６の処理に相当する。なお、他の装置と相互連携するための命令を実行した後であっても、逐次実行型データ処理モジュールは、自装置からのキーボード入力を受け付けて結果を返すＲＥＰＬｏｏｐを実行することができる。
【００９５】
そして、他の装置からソケット接続要求が送信されてくると、図９の右側に示すように、逐次実行型データ処理モジュールは、新たなＲＥＰＬｏｏｐを生成し、他の装置からの接続に対する入出力として割り当てたソケットのポート番号を通知し、そのソケットで通信待ち状態となる。本実施形態では、他の装置からソケット接続要求のコマンドを「ｃｏｎｎｅｃｔ」と定義し、引数として、情報処理装置１００のＩＰアドレス及びポート番号が指定される。
【００９６】
このように、本実施形態にかかる逐次実行型データ処理モジュールは、ＲＥＰＬｏｏｐを複数生成することができ、各モジュールが相互連携宣言していると、相互に通信チャネルを生成できるため、各モジュールが対等な立場でスクリプトによる変数・関数の定義や、変数・関数に対する操作が可能となる。
【００９７】
本実施形態にかかる逐次実行型データ処理モジュールは、ＲＥＰＬｏｏｐを複数生成することができるので、新たな内部処理チャネルを生成して、そのチャネルに処理を委ねることができる。逐次実行型データ処理モジュールは、処理チャネルを介してスクリプト式を受け付け、そのスクリプト式の処理結果を待たずに、スクリプト式を受け取ったことを意味するレスポンスを送信元に返す。スクリプトの処理は新たなシーケンスで実行し、結果はモジュール内に保持しておく。そして、スクリプト式の送信元から結果要求が来た時に、保持しておいた処理結果を返す。図１０は、複数のＲＥＰＬｏｏｐによる、逐次実行型データ処理モジュールの内部状態の変化例を示す説明図である。
【００９８】
図１０の左側に示すように、逐次実行型データ処理モジュールが情報処理装置１００で起動された直後は、逐次実行型データ処理モジュールは、キーボード入力を受け付けて結果を返すＲＥＰＬｏｏｐを実行する。ここで、キーボードから新しい処理チャネルを生成するための命令の入力を受け付けると、逐次実行型データ処理モジュールは、内部からのチャネル生成要求を解釈し、内部入出力ポート及び新たな処理チャネルを生成する。ここでは、新しい処理チャネルを生成するための命令が「ｓａｙ」と定義されている。図１０に示した例では、新たな処理チャネルに（１＋２）の加算処理を実行させる場合が示されている。
【００９９】
図１０の中央に示すように、逐次実行型データ処理モジュールの接続要求処理と入力確認ループは、新たな処理チャネルに、命令「ｓａｙ」で与えられた式の評価を依頼する。また逐次実行型データ処理モジュールは、命令「ｓａｙ」の発行元のチャネルに、生成された新たな処理チャネルの番号を通知する。
【０１００】
そして図１０の右側に示すように、命令「ｓａｙ」の発行元のチャネルは、通知されたチャネル番号を指定して、処理結果を取得するための命令を発行すると、依頼先の処理チャネルから処理結果を取得することが出来る。ここでは、処理結果を取得するための命令が「ｃｈｅｃｋ」と定義されており、引数として、処理を依頼したチャネル番号が指定されている。図１０に示した例では、新たな処理チャネルに（１＋２）の加算処理を実行させているので、処理結果を取得するための命令「ｃｈｅｃｋ」を実行すると、結果として「３」が返る。
【０１０１】
なお、図１０に示した例では、同一の装置内で新たに処理チャネルを生成して、その新たな処理チャネルに処理を行わせる例を示したが、本開示は係る例に限定されない。依頼元と依頼先が別々の装置であり、それぞれの装置で本実施形態にかかる逐次実行型データ処理モジュールが実行されている場合に、依頼元の装置から依頼先の装置に処理を行わせるようにしてもよい。
【０１０２】
図１１は、本実施形態にかかる情報処理装置１００で実行される、逐次実行型データ処理モジュールでの相互連携の構造例を示す説明図である。図１１には、プログラムを格納するプログラムメモリ１３１、変数を格納するセルオブジェクトメモリ１４１、およびデータを一時的に格納するワークメモリ１４２を図示している。
【０１０３】
通信接続要求受信部１１１は、通信接続要求を受け、設定した入出力チャネル番号を返信する。情報処理装置１００は、シーケンスレジスタ１１３を有しており、解析・再構成部１１５にスクリプト言語を初期設定し、チャネル番号に連携したプログラムシーケンスを起動し、受信待ち状態となる。解析・再構成部１１５は、複数の言語を解釈および再構築する複数の構文解析機能と構文再構成機能を持つ。関数・変数定義の内部表現は最適な一つの方式とし、一つのチャネルはあるスクリプト言語Ａで読み込み、他のチャネルは別のスクリプト言語Ｂで読み込み処理することが可能となるので、情報処理装置１００は、複数の違ったスクリプト言語との通信が可能となる。また情報処理装置１００は、解析・再構成部１１５を備えることで、スクリプト言語Ａの指示によりスクリプト言語Ｂで他のモジュールにスクリプトを送信するなどの翻訳行為が可能となる。また、解析・再構成部１１５は、スクリプトの文脈を解釈することによって、自装置でのシンボル名と外部でのシンボル名との間の変換を行う。例えば、スクリプト言語Ａにおいて、ある第１の命令と、別の第２の命令とがセットで使われるような場合に、解析・再構成部１１５は、スクリプト言語Ａからスクリプト言語Ｂへの変換に際して、スクリプトにおいて第１の命令と第２の命令とが登場すると、その文脈を解釈して、スクリプト言語Ｂにおける適切な命令に変換する。
【０１０４】
開設された入力チャネルにデータが入力されると、入出力セレクタ１１２は入力を通信ポートに切り替える。開設された入力チャネルにデータが入力されると、その入力されたチャネルに該当するシーケンスが待ち状態から解放され、入力されたデータに基づいた処理を実行する。開設された入力チャネルにスクリプト言語切り替え指示が入力されると、該当する入出力チャネルの、解析・再構成部１１５が対応する言語に切り替わるが、関数・変数を保持する内部形式に変更はない。
【０１０５】
また、セキュリティ属性を持つ関数・変数へのアクセスは通信チャネル毎に保持された認証リスト１１４に基づき管理される。認証リスト１１４は、他の装置で実行される逐次実行型データ処理モジュールとの間で、関数・変数へのアクセスの際に用いられる認証鍵同士が認証したことを記憶する。認証リスト１１４が通信チャネル毎に保持されることで、情報処理装置１００は、チャネル毎にセキュアなセッションを張り、そのままセキュアなセッションを維持しながら、スクリプトを順次受け付けることが可能となる。
【０１０６】
外部からの要求により開設された通信ポートは、一つの処理が終わると入力待ちで停止するが、プログラムシーケンスの中で外部装置と通信するコードが含まれ、そのコードが実行されると、開いている通信回線を通して目的の装置に通信接続要求を送出し、通信チャネル番号を取得し、目的の装置との間の通信を確立する。この通信回線で通信する相手は、情報処理装置１００と同一構成の場合は、情報処理装置１００からスクリプト式を送って処理要求を達成することができる。
【０１０７】
本実施形態にかかる逐次実行型データ処理モジュールは、新たにスクリプト式の定義として「ｓａｙ」と「ｃｈｅｃｋ」と「ｂｒｅａｋ」を組み込む。「ｓａｙ」は、その後に続くメッセージの処理を終えずに返事を返す式である。メッセージの処理はその後内部に開設された通信チャネルで続行し、その通信チャネルは、メッセージの処理結果を保持しておく。「ｃｈｅｃｋ」は、「ｓａｙ」により実行された処理結果を取り込む式である。「ｂｒｅａｋ」は、「ｓａｙ」により実行された処理が終わらない場合の強制終了に用いる。もちろん、上述の処理を実現するための式の名称は係る例に限定されない。
【０１０８】
図１２は、本実施形態にかかる逐次実行型データ処理モジュールによる分散処理の概念を示す説明図である。図１２に示した「Ｍａｓｔｅｒ  ＩＡ」は、例えばシステムの元となる装置であり、本実施形態にかかる逐次実行型データ処理モジュールが組み込まれており、予め決められた通信アドレスとポート番号で相互連携宣言を開始する。
【０１０９】
「ＩＡ−１」〜「ＩＡ−７」は、「Ｍａｓｔｅｒ  ＩＡ」と直接、または間接的に接続する装置であり、本実施形態にかかる逐次実行型データ処理モジュールが組み込まれている。「ＩＡ−１」〜「ＩＡ−７」は、逐次実行型データ処理モジュールを起動すると、「Ｍａｓｔｅｒ  ＩＡ」に自らの通信アドレス及びポート番号を登録すると共に、既に起動している他の装置の存在を確認する。図１２には、「ＩＡ−１」〜「ＩＡ−７」が、「Ｍａｓｔｅｒ  ＩＡ」に対して起動登録及び通信相手の存在確認を行なっている様子を図示している。
【０１１０】
そして「ＩＡ−１」〜「ＩＡ−７」は、起動している他の装置の逐次実行型データ処理モジュールの起動を確認し、その装置が目的とする相手なら、「Ｍａｓｔｅｒ  ＩＡ」から入手したアドレスを用いて通信接続要求を送り通信回線を確立する。図１２には、例えば、「ＩＡ−１」が「Ｍａｓｔｅｒ  ＩＡ」に自らの通信アドレス及びポート番号を登録すると共に、「ＩＡ−４」の逐次実行型データ処理モジュールの起動を確認し、「ＩＡ−４」に対して通信接続要求を送っている様子が図示されている。「ＩＡ−４」は、「ＩＡ−１」からの通信接続要求を受けて、「ＩＡ−１」からの通信のためのポートを開放して、「ＩＡ−１」からコマンドが送られてくるのを待機する。
【０１１１】
ここで、図１２には、「ＩＡ−１」にはディスプレイとキーボードが接続されており、「ＩＡ−４」にはディスプレイとキーボードが接続されていない状態が図示されている。「ＩＡ−１」と「ＩＡ−４」との通信が確立されている状態において、「ＩＡ−１」に接続されたキーボードからコマンドを入力して、「ＩＡ−４」の逐次実行型データ処理モジュールに処理をさせると、その結果が「ＩＡ−１」に接続されたディスプレイに表示される。従って、ここでは「ＩＡ−４」がサーバであり、「ＩＡ−１」がクライアントであるような概念である。
【０１１２】
本実施形態にかかる逐次実行型データ処理モジュールの適用例について、いくつか例を挙げて説明する。
【０１１３】
例えば、センサネットワークで接続された機器の相互通信において、本実施形態にかかる逐次実行型データ処理モジュールを各機器に組み込み、新たな機器が接続された時点でその機器の存在を伝え合い、かつその機器と通信する手続きを交換してネットワークを最適化することができる。
【０１１４】
また例えば、家庭内ＬＡＮに新たな機器が接続されるとその機器が持つ機能とその機能を利用する手続きを他の機器にも伝え、シームレスな接続を可能とすることができる。
【０１１５】
また例えば、複数のサーバがネットワークで接続され、全体として負荷を分散しながら動作しているシステムに於いて、一つのサーバで障害が発生した場合に、そのサーバからの通知によりサーバの機能を他のサーバに切り替えたりネットワーク接続ルートを変えたりすることで、自律的に復旧する仕組みの構築に利用できる。
【０１１６】
また例えば、言語や特徴・機能の異なるスクリプトモジュールから要求があっても、情報処理装置１００の内部に構成された言語解釈モジュール（解析・再構成部１１５）で変換し、他のモジュールが理解できるスクリプト指令を送ることができ、スクリプト翻訳機として利用できる。
【０１１７】
また例えば、高度な信頼性と動作継続性を要求される社会基幹装置などに各モジュールに組み込み、モジュールをまとめるマスターモジュールから、各モジュールの負荷状況を確認し、最適な負荷になるよう資源配分や接続ルーティングの変更を行い、最適稼働させることが動作中でも容易に可能である。また、各モジュールに動作ログ収集モジュールを更に設定して、各モジュールの内部変移をモニターし、障害が起こっているモジュールを検出しマスターモジュールに通知し修正をかけるなども動作中に行うことができ、システムを停止させずに負荷調整、障害検出、不具合修正を行うことができる。
【０１１８】
図１２に示した例において、「ＩＡ−１」と「ＩＡ−４」との通信が確立され、「ＩＡ−４」と「ＩＡ−５」との通信が確立されていれば、「ＩＡ−１」の逐次実行型データ処理モジュールから、「ＩＡ−４」の逐次実行型データ処理モジュールを介して、「ＩＡ−５」の逐次実行型データ処理モジュールに処理をさせるようにしてもよい。「ＩＡ−１」から「ＩＡ−４」にコマンドが送られてきたが、「ＩＡ−４」の逐次実行型データ処理モジュールが何らかの高負荷の処理を行なっているような場合に、「ＩＡ−４」から「ＩＡ−５」にその「ＩＡ−１」から送られたコマンドを転送して処理させることが可能になる。これにより、本実施形態にかかる逐次実行型データ処理モジュールを用いて自律分散型のシステムを構築することが可能となる。
【０１１９】
＜３．まとめ＞
逐次実行型データ処理モジュールに組み込まれた関数や変数を、他の通信チャネルから処理要求として利用する場合に、予めチャネルを一旦クローズし、新たに通信チャネルを再構成する方法がある。しかしこの方法では、他の通信チャネルから処理要求が来た場合に、開設中のチャネルのクローズとチャネルの再開設の必要があり、処理が煩雑なものとなる。またそのような構造では、ある通信チャネルからの処理要求に答え、関数及び変数定義や、関数の実行を行いながら、他の通信チャネルから、その処理プログラムが使用する変数の値を変える要求や、利用される関数の一部を変更するなどの要求を、動的に実現することは出来なかった。
【０１２０】
またそのような構造では、専用のスクリプトプログラム無しに、逐次実行型データ処理モジュール本体が、複数の同様なモジュールからの異なる要求に答えながら他の同様なモジュールに更に要求を出すといった、モジュール間で相互にネットワークを構築できる構成は実現できなかった。
【０１２１】
また、キーボード入力以外の通信チャネルを介してスクリプト式を受け付け、その処理結果を、受付元の通信チャネル経由で返すデータ処理モジュールも考え出されてはいた。しかし、そのデータ処理モジュールが通信チャネルを介して複数接続されている場合は、最後のモジュールが処理を終えレスポンスを返すまで、全てのモジュールが待ち状態となってしまい、独立して処理ができなかった。
【０１２２】
また、従来の逐次実行型データ処理モジュールは、それぞれ専用のスクリプト言語で定義するものなっており、他のスクリプト言語とスクリプト入力通信チャネルを利用して直接通信することが不可能であり、専用のスクリプト翻訳ソフトを介する必要があった。また、セキュリティ機能を持った逐次実行型データ処理モジュールは、チャネルを切り替えるたびに必要なオブジェクトの認証を再度行う必要があり、一つのチャネルをセキュアな暗号通信セッションとして維持しながら、他のモジュールからの新たな要求に答えることは出来なかった。そのような制約があるため、例えば電子マネーサーバ等で電子マネーのチャージをするセッションを維持しながら、別のチャネルを通して支払実行のセッション同時に確立することが出来ないという不都合があった。
【０１２３】
これに対し、本実施形態にかかる逐次実行型データ処理モジュールは、従来の逐次実行型データ処理モジュールの機能を拡張し、単一チャネルを通してキーボードやファイルのスクリプトを読み込み実行するのみでなく、複数のネットワークチャネルを開設しチャネルを維持しながら逐次要求を処理できるように構成されている。
【０１２４】
本実施形態にかかる逐次実行型データ処理モジュールを備える情報処理装置は、このような構成を有することで、あるチャネルからの要求を処理する関数や内部保持変数を、他のチャネルからの処理要求により動的な変更可能となる。このような構成を有することで、例えば電子マネーのチャージと支払やログデータの書き込みと消去、スマートグリッドメータのエネルギー供給量と消費量管理、車のレンタル時間と経過時間、サービスチケット購入と利用など、権限が違う作業を別チャネル経由で処理することが可能となる。
【０１２５】
また、本実施形態にかかる逐次実行型データ処理モジュールにセキュリティ機能が組み込まれた場合は、チャネル毎にセキュアなセッションを張り、そのままセキュアなセッションを維持しながらスクリプトを順次受け付けることが可能となる。そのため、例えば、電子マネーサーバのような、多数の端末から、支払い要求やチャージ要求を、同一の電子マネー保持変数に対してセキュアに処理させることが可能となる。
【０１２６】
また、通信回線を介したスクリプト式の入力では、入力された式の処理結果を求め、その結果を処理要求された通信チャネルを介し送信するまで、処理要求先は待たされてしまう。しかし、本実施形態にかかる逐次実行型データ処理モジュールのメッセージ送信機能は、メッセージが相手側に送られたことが確認できると次の処理に移れるため、即座に次の処理に移ることが可能となる。そして、その後相手から他の通信チャネルを介して新しいメッセージを受け付けることが可能となり、コマンドレスポンス方式でない平等のメッセージコミュニケーションが可能となる。
【０１２７】
また、本実施形態にかかる逐次実行型データ処理モジュールは、複数の言語を解釈および再構築する複数の構文解析機能と構文再構成機能を持ち、関数・変数定義の内部表現は最適な一つの方式とし、一つのチャネルはあるスクリプト言語Ａで読み込み、他のチャネルは別のスクリプト言語Ｂで読み込み処理することが可能となるので、複数の違ったスクリプト言語との通信が可能となる。また、スクリプト言語Ａの指示によりスクリプト言語Ｂで他のモジュールにスクリプトを送信するなどの翻訳行為が可能となる。
【０１２８】
本実施形態にかかる逐次実行型データ処理モジュールに定義された、セキュリティがセットされた変数や関数の利用では、必ず認証行為が必要となる。ここで、複数のチャネルからの認証行為は、チャネルごとに認証リストが管理されているので、他のチャネルで認証された変数や関数が誤って使われることが無く、安全に変数や関数を利用することができる。
【０１２９】
また、本実施形態にかかる逐次実行型データ処理モジュールの関数や変数が、外部通信チャネルを通した外部認証により、一つの通信チャネルを通した処理要求が利用可能となっても、その要求を出した通信チャネルに連携されるため、権限のない通信チャネルを通した要求から保護され、安全に変数や関数を利用することができる。
【０１３０】
もちろん、本開示の一実施形態にかかる情報処理装置１００で実行される逐次実行型データ処理モジュールの適用例は、上述したものに限られないことは言うまでもない。また、機器間の連携だけでなく、同一機器内の別々の領域（別ディレクトリ、別フォルダなど）にそれぞれ逐次実行型データ処理モジュールを組み込むことで、同様の動作が実現できる。また、本開示の一実施形態にかかる情報処理装置１００で実行される逐次実行型データ処理モジュールを格納した記憶媒体も実現することが可能である。
【０１３１】
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示はかかる例に限定されない。本開示の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【０１３２】
なお、本技術は以下のような構成も取ることができる。
（１）
第１の手続き型言語により作成されたコンピュータプログラムのコードを読み込み、解釈して実行するプログラム実行部を備え、
前記プログラム実行部は、
外部からの通信接続要求に応じて通信チャネルを開設し、開設した前記通信チャネルに対して外部から送られてくる処理要求に対する結果を前記通信チャネル毎に返す、情報処理装置。
（２）
前記プログラム実行部は、共有可能な変数及び関数を、各前記通信チャネルに対して外部から送られてくる処理要求によって変更可能とし、前記変数及び前記関数への変更結果を、他の通信チャネルによる同一の変数及び関数を利用する処理要求にも反映する、前記（１）に記載の情報処理装置。
（３）
前記プログラム実行部は、前記第１の手続き型言語とは異なる第２の手続き型言語により作成されたコンピュータプログラムのコードを読み込み、解釈して実行する、前記（１）または（２）に記載の情報処理装置。
（４）
前記プログラム実行部は、開設された前記通信チャネルで入力されたコードを解釈し、前記第２の手続き型言語に再構成して送信する、前記（３）に記載の情報処理装置。
（５）
前記プログラム実行部は、開設された前記通信チャネルを介してコードを受け付け、処理結果を待たずに該コードを受け付けたことを意味する返答を前記通信チャネルから返す、前記（１）〜（４）のいずれかに記載の情報処理装置。
（６）
前記プログラム実行部は、新たなシーケンスを生成して受け付けた前記コードを処理して該コードの処理結果を保持し、コードを受け付けた前記通信チャネルから結果要求が来た時に前記処理結果を返す、前記（５）に記載の情報処理装置。
（７）
前記プログラム実行部は、前記コードで用いられる変数の参照及び関数の実行を、認証を経てから行うよう制限し、外部からの通信接続要求に応じて開設される前記通信チャネル毎に設けられる認証リストを参照して認証する、前記（１）〜（６）のいずれかに記載の情報処理装置。
（８）
前記プログラム実行部は、他のプログラム実行部と通信する通信部を備え、
前記プログラム実行部は、前記通信部から前記他のプログラム実行部に接続要求を出して通信チャネルを開設させ、前記コードの変数や関数の実行を認証する認証鍵と前記他のプログラム実行部が持つ前記コードの変数や関数の実行を認証する認証鍵の間で認証したことを記憶する、前記（１）〜（７）のいずれかに記載の情報処理装置。
（９）
前記プログラム実行部は、外部からの通信接続要求に応じて開設された前記通信チャネルに連携し、コードの文脈を解釈することによって自装置でのシンボル名と外部でのシンボル名との間の変換を行う、前記（１）〜（８）のいずれかに記載の情報処理装置。
（１０）
第１の手続き型言語により作成されたコンピュータプログラムのコードを読み込み、解釈して実行するプログラム実行ステップを備え、
前記プログラム実行ステップは、
外部からの通信接続要求に応じて通信チャネルを開設し、開設した前記通信チャネルに対して外部から送られてくる処理要求に対する結果を前記通信チャネル毎に返す、情報処理方法。
（１１）
コンピュータに、
第１の手続き型言語により作成されたコンピュータプログラムのコードを読み込み、解釈して実行するプログラム実行ステップを実行させ、
前記プログラム実行ステップは、
外部からの通信接続要求に応じて通信チャネルを開設し、開設した前記通信チャネルに対して外部から送られてくる処理要求に対する結果を前記通信チャネル毎に返す、コンピュータプログラム。
（１２）
コンピュータに、
第１の手続き型言語により作成されたコンピュータプログラムのコードを読み込み、解釈して実行するプログラム実行ステップを実行させ、
前記プログラム実行ステップは、
外部からの通信接続要求に応じて通信チャネルを開設し、開設した前記通信チャネルに対して外部から送られてくる処理要求に対する結果を前記通信チャネル毎に返す、コンピュータプログラムを格納した記憶媒体。
【符号の説明】
【０１３３】
１００、２００    情報処理装置
１１０    ＣＰＵ
１２０    暗号化／復号部
１３０    ＲＯＭ
１４０    ＲＡＭ
１５０    ＮＶＲＡＭ
１６０    入力部
１７０    表示部
【図１】
0006024743.tif 000002
【図２】
0006024743.tif 000003
【図３】
0006024743.tif 000004
【図４】
0006024743.tif 000005
【図５】
0006024743.tif 000006
【図６】
0006024743.tif 000007
【図７】
0006024743.tif 000008
【図８】
0006024743.tif 000009
【図９】
0006024743.tif 000010
【図１０】
0006024743.tif 000011
【図１１】
0006024743.tif 000012
【図１２】
0006024743.tif 000013