(57)【要約】      （修正有）【課題】インタプリタに手を加えること無く、スクリプトアプリケーションのサイズを肥大化させること無く、スクリプトアプリケーションから保存されたデータに対する他のスクリプトアプリケーションからのアクセスを防止する。【解決手段】スクリプトアプリケーションが、サンドボックス内のデータアクセスに必要なセッションパスワードを生成し、インタプリタアプリケーションに送信し、インタプリタアプリケーションから受信したセッションパスワードの認証を行い、サンドボックス内のデータアクセス制限を行い、スクリプトの実行終了時にセッションパスワードを削除する。インタプリタアプリケーションが、スクリプトアプリケーションから受信したセッションパスワードをスクリプトアプリケーションに送信し、セッションパスワードで識別されるサンドボックス内に記述されたスクリプトを受け取り、インタプリタに解釈・実行させる。【選択図】図２
2012078943.tif 000002
【特許請求の範囲】
【請求項１】
スクリプトを解釈・実行するインタプリタを備えるインタプリタアプリケーションと前記インタプリタアプリケーションにスクリプトを送信するスクリプトアプリケーションを搭載する端末におけるスクリプトアプリケーションの実行方法であって、
前記スクリプトアプリケーションが、前記スクリプトが記述されたスクリプトファイルからスクリプトを読込み、前記インタプリタアプリケーションに前記スクリプトを送信するステップと、
前記インタプリタアプリケーションが、前記スクリプトアプリケーションからスクリプトを受け取り、前記インタプリタにスクリプトを解釈・実行させるステップと、
を備え、
前記スクリプトアプリケーションが、当該スクリプトアプリケーションのサンドボックス内のデータアクセスに必要なセッションパスワードを生成し、前記インタプリタアプリケーションに送信するステップと、前記インタプリタアプリケーションから受信した前記セッションパスワードの認証を行い、前記サンドボックス内のデータアクセス制限を行うステップと、前記スクリプトの実行終了時に、前記セッションパスワードを削除するステップとを備え、
前記インタプリタアプリケーションが、前記スクリプトアプリケーションから受信したセッションパスワードを前記スクリプトアプリケーションに送信し、当該セッションパスワードで識別される前記サンドボックス内に記述されたスクリプトを受け取り、前記インタプリタに解釈・実行させるステップとを備えることを特徴とするスクリプトアプリケーションの実行方法。
【請求項２】
前記インタプリタアプリケーションが、前記スクリプトアプリケーションから受信した前記セッションパスワードにより前記スクリプトアプリケーションのサンドボックス内からスクリプトライブラリを受信し、その受信したスクリプトライブラリを前記インタプリタアプリケーションのサンドボックス内に保存し、前記スクリプトに記述されている前記スクリプトライブラリのファイルパスを、前記インタプリタアプリケーションのサンドボックス内のファイルパスに書き換えるステップと、前記スクリプトの実行終了時に、前記インタプリタアプリケーションのサンドボックスから、前記スクリプトライブラリを削除するステップとをさらに備えることを特徴とする請求項１に記載のスクリプトアプリケーションの実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スクリプトアプリケーションのサイズ削減とスクリプトアプリケーションから保存したデータの安全性を確保するスクリプトアプリケーションの実行方法に関するものである。
【背景技術】
【０００２】
近年、モバイル用のオープンソースオペレーティングシステムとしてＡｎｄｒｏｉｄ(グーグル社の登録商標)が登場し、様々なハードウェアに搭載されている。Ａｎｄｒｏｉｄ用のアプリケーションは、ＤａｌｖｉｋＶＭ(Dalvik Vertual Machine)上で動作し、開発に用いる主なプログラミング言語はＪａｖａ(サンマイクロシステムズ社の登録商標)である。Ａｎｄｒｏｉｄには、セキュリティモデルとしてサンドボックスが採用されており、アプリケーションによって保存されたデータに対する、他のアプリケーションからのアクセスを防ぐことができるようになっている。アプリケーションが保存されている領域を、サンドボックス内でのアプリケーション実行の条件とすることで、アプリケーションを確実にサンドボックス内で実行させるアプリケーションの実行方法が下記の特許文献１に記載されている。
【０００３】
また、Ａｎｄｒｏｉｄでは、Ｉｎｔｅｎｔという仕組みにより、アプリケーション間の連携を行うことができる。具体的には、ＤａｌｖｉｋＶＭ上のアプリケーションフレームワークに搭載されているＩｎｔｅｎｔクラスのオブジェクトを生成し、他のアプリケーションに送信することで、他のアプリケーション内のコンポーネントプログラムを起動させることができるというものである。さらに、Ｉｎｔｅｎｔオブジェクトには、文字列やバイト配列等の任意のデータを付加することができ、他のアプリケーションにデータを送信することも可能である。
【０００４】
現在、Ａｎｄｒｏｉｄアプリケーションのスクリプト言語による開発を可能にする技術として、ＡＳＥ(Android Scripting Environment)やＲｕｂｏｔｏ等のＡｎｄｒｏｉｄ上でのインタプリタの開発が行われており、Ｒｕｂｙ、Ｐｙｔｈｏｎ，Ｐｅｒｌ等のスクリプト言語で記述したアプリケーションをＡｎｄｒｏｉｄ端末上で実行することができる。
ＤａｌｖｉｋＶＭ上で実行されるＪａｖａアプリケーションの開発には、Ｊａｖａで記述されたソースコードをＤａｌｖｉｋＶＭが解釈・実行することが可能なＤａｌｖｉｋバイトコードにコンパイルする必要がある。
【０００５】
一方で、スクリプト言語は、インタプリタが、スクリプトを直接読込んで、解釈・実行を行うため、開発者がバイトコードへ変換することなく、アプリケーションを実行させることができる。スクリプトアプリケーションにおけるセキュリティモデルとして、スクリプトで記述されたアプリケーションに対し、実行できるコマンドをアクセス制御リストにより制限することで、不正なスクリプトアプリケーションの実行を防止する方法が下記の特許文献２に記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−６５４９３公報
【特許文献２】特開２００４−５４４１公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記のインタプリタは、Ａｎｄｒｏｉｄアプリケーションとして提供され、スクリプトアプリケーションの実行は、インタプリタが、スクリプトの記述されたファイルを読込むことで行うため、インタプリタ上で実行されるスクリプトアプリケーションは、すべて同じサンドボックス内で実行されてしまう。したがって、スクリプトアプリケーションから保存されたデータに、他のスクリプトアプリケーションからアクセスすることが可能になってしまう。
スクリプトアプリケーションによって保存されたデータを保護するためには、Ａｎｄｒｏｉｄアプリケーションに対するサンドボックスモデルや前記の特許文献１のアプリケーションの実行方法をインタプリタに実装する、もしくは、１つのスクリプトアプリケーション毎に、インタプリタを組み込む必要がある。
【０００８】
前者の方法では、インタプリタの内部プログラムを改変する必要があり、実装の負担が大きく、後者の方法では、スクリプトアプリケーションのサイズが肥大化してしまう。また、特許文献２に記載の方法では、データの読込み、書き込みを制限する必要があるため、スクリプトアプリケーション開発の自由度を大きく減じてしまうことになる。
【０００９】
本発明の目的は、従来のインタプリタの内部プログラムに手を加えること無く、さらに、スクリプトアプリケーションのサイズを肥大化させること無く、スクリプトアプリケーションから保存されたデータに対する他のスクリプトアプリケーションからのアクセスを防止することが可能なスクリプトアプリケーション実行方法を提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明に係るスクリプトアプリケーションの実行方法は、スクリプトを解釈・実行するインタプリタを備えるインタプリタアプリケーションと前記インタプリタアプリケーションにスクリプトを送信するスクリプトアプリケーションを搭載する端末におけるスクリプトアプリケーションの実行方法であって、
前記スクリプトアプリケーションが、前記スクリプトが記述されたスクリプトファイルからスクリプトを読込み、前記インタプリタアプリケーションに前記スクリプトを送信するステップと、
前記インタプリタアプリケーションが、前記スクリプトアプリケーションからスクリプトを受け取り、前記インタプリタにスクリプトを解釈・実行させるステップと、
を備え、
前記スクリプトアプリケーションが、当該スクリプトアプリケーションのサンドボックス内のデータアクセスに必要なセッションパスワードを生成し、前記インタプリタアプリケーションに送信するステップと、前記インタプリタアプリケーションから受信した前記セッションパスワードの認証を行い、前記サンドボックス内のデータアクセス制限を行うステップと、前記スクリプトの実行終了時に、前記セッションパスワードを削除するステップとを備え、
前記インタプリタアプリケーションが、前記スクリプトアプリケーションから受信したセッションパスワードを前記スクリプトアプリケーションに送信し、当該セッションパスワードで識別される前記サンドボックス内に記述されたスクリプトを受け取り、前記インタプリタに解釈・実行させるステップとを備えることを特徴とする。
【００１１】
また、前記インタプリタアプリケーションが、前記スクリプトアプリケーションから受信した前記セッションパスワードにより前記スクリプトアプリケーションのサンドボックス内からスクリプトライブラリを受信し、その受信したスクリプトライブラリを前記インタプリタアプリケーションのサンドボックス内に保存し、前記スクリプトに記述されている前記スクリプトライブラリのファイルパスを、前記インタプリタアプリケーションのサンドボックス内のファイルパスに書き換えるステップと、前記スクリプトの実行終了時に、前記インタプリタアプリケーションのサンドボックスから、前記スクリプトライブラリを削除するステップとをさらに備えることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、従来のインタプリタの内部プログラムに手を加えること無く、さらに、スクリプトアプリケーションのサイズを肥大化させること無く、スクリプトアプリケーションから保存されたデータに対する他のスクリプトアプリケーションからのアクセスを防止することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明のスクリプトアプリケーションの実行方法を実施するソフトウェア構成図である。
【図２】インタプリタアプリケーション１０４とスクリプトアプリケーション１０５Ａ、Ｂの内部構成を示すブロック図である。
【図３】スクリプトアプリケーション１０５Ａのスクリプト実行開始処理を説明するためのフローチャートである。
【図４】スクリプト変換プログラム２０３のファイルパス変換処理の一例である。
【図５】インタプリタアプリケーション１０４のデータ書込み要求処理を説明するためのフローチャートである。
【図６】インタプリタアプリケーション１０４のデータ読込み要求処理を説明するためのフローチャートである。
【図７】スクリプトアプリケーション１０５の保存領域アクセスプログラム２１５の処理を説明するためのフローチャートである。
【図８】スクリプトアプリケーション１０５Ａの終了処理を説明するためのフローチャートである。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施の形態について説明する。
図１は、本発明のスクリプトアプリケーションの実行方法を実施するソフトウェア構成図である。
図１のソフトウェア構成図は、Ａｎｄｒｏｉｄ  ＯＳ１０１、Ｄａｌｖｉｋ  ＶＭ１０２、アプリケーションフレームワーク１０３、インタプリタアプリケーション１０４、スクリプトアプリケーションＡ１０５、スクリプトアプリケーションＢ１０６から成る構成例を示している。
インタプリタアプリケーション１０４は、スクリプトアプリケーション１０５Ａ、Ｂからスクリプトを受信し、実行するアプリケーションである。スクリプトアプリケーション１０５Ａ、Ｂは実行させるスクリプトをインタプリタアプリケーション１０４に送信するアプリケーションである。
【００１５】
図２は、インタプリタアプリケーション１０４とスクリプトアプリケーション１０５Ａ、Ｂの内部構成を示すブロック図である。
インタプリタアプリケーション１０４は、インタプリタ２０１、インタプリタ起動プログラム２０２、スクリプト変換プログラム２０３、保存領域アクセススクリプトライブラリファイル２０４、データ読込みラッパープログラム２０７、スクリプト終了プログラム２０８、インタプリタ用保存領域２０９とを備える。
スクリプトアプリケーション１０５Ａ、Ｂは、スクリプト送信プログラム２１１、メインスクリプトファイル２１２、スクリプトライブラリファイル２１３、セッションパスワード生成プログラム２１４、保存領域アクセスプログラム２１５、スクリプト用保存領域２１６を備える。
【００１６】
なお、セッションパスワードとは、インタプリタアプリケーション１０４がスクリプトアプリケーション１０５Ａ，Ｂのサンドボックス領域にあるファイルにアクセスするために必要なパスワードである。
また、メインスクリプトとは、スクリプトアプリケーション１０５Ａ、Ｂが、インタプリタアプリケーション１０４に最初に実行させるスクリプトであり、スクリプトライブラリは、メインスクリプト内で参照されるスクリプトである。
【００１７】
インタプリタ２０１は、スクリプトを実行するプログラムであり、インタプリタ起動プログラム２０２からセッションパスワード、保存領域アクセスプログラム識別情報、メインスクリプトを受け取って起動し、メインスクリプトを実行する。メインスクリプト実行時に、スクリプトライブラリファイル２１３を参照する場合には、インタプリタ用保存領域２０９からスクリプトライブラリを読み出す。さらに、メインスクリプトの実行終了時には、スクリプト終了プログラム２０８を起動し、セッションパスワードと保存領域アクセスプログラム識別情報をスクリプト終了プログラム２０８に渡す。
【００１８】
なお、保存領域アクセスプログラム識別情報とは、スクリプトアプリケーション毎に存在する保存領域アクセスプログラム２１５から特定のスクリプトアプリケーションの保存領域アクセスプログラム２１５を識別するために必要な情報であり、保存領域アクセスプログラム２１５を記述したＪａｖａクラスの完全修飾名または、ＩｎｔｅｎｔＦｉｌｔｅｒに記載されている条件情報でも良い。
ＩｎｔｅｎｔＦｉｌｔｅｒとは、Ａｎｄｒｏｉｄアプリケーション内のプログラムがどのようなＩｎｔｅｎｔを受信するかについての条件情報を記載したものであり、Ｉｎｔｅｎｔ内の条件情報とＩｎｔｅｎｔＦｉｌｔｅｒの条件情報が一致した時、プログラムはＩｎｔｅｎｔを受信する。
【００１９】
インタプリタ起動プログラム２０２は、インタプリタ２０１を起動し、スクリプトを実行させるプログラムであり、スクリプト送信プログラム２１１からＩｎｔｅｎｔを受け取り、Ｉｎｔｅｎｔからメインスクリプト、スクリプトライブラリ、セッションパスワード、保存領域アクセスプログラム識別情報を取り出し、インタプリタ２０１を起動し、メインスクリプト、セッションパスワード、保存領域アクセスプログラム識別情報を渡す。
また、スクリプト変換プログラム２０３にメインスクリプト、スクリプトライブラリを渡し、スクリプト変換プログラム２０３からファイルパスを変換したメインスクリプトを受け取る。
【００２０】
スクリプト変換プログラム２０３は、メインスクリプト内にあるスクリプトライブラリのファイルパスを、インタプリタ用保存領域に保存されたスクリプトライブラリファイル２０４のファイルパスに書き換えるプログラムであり、インタプリタ起動プログラム２０２からメインスクリプト、スクリプトライブラリを受け取り、スクリプトライブラリをインタプリタ用保存領域２０９に保存する。また、メインスクリプト内にある、スクリプトライブラリファイル２１３のファイルパスをインタプリタ用保存領域２０６９保存されたスクリプトライブラリファイル２１３の新しいファイルパスに書き換え、メインスクリプトをインタプリタ起動プログラム２０２に渡す。
【００２１】
保存領域アクセススクリプトライブラリファイル２０４は、データ読込みラッパープログラム２０７と保存領域アクセスプログラム２１５を介して、スクリプト用保存領域２１６にアクセスする保存領域アクセススクリプトライブラリが記述されており、スクリプト用保存領域２１６にデータを書き込むデータ書込み関数２０５と、スクリプト用保存領域２１６からデータを読み込むデータ読込み関数２０６が含まれる。
【００２２】
データ書込み関数２０５は、ファイル名、書込みデータ、セッションパスワード、保存領域アクセスプログラム識別情報を引数とし、Ｉｎｔｅｎｔにファイル名、書込みデータ、セッションパスワード、処理情報ＷＲＩＴＥを格納し、引数として受け取った保存領域アクセスプログラム識別情報と一致する保存領域アクセスプログラム２１５に、Ｉｎｔｅｎｔを送信する処理が記述される。
【００２３】
データ読込み関数２０６は、ファイル名、セッションパスワード、保存領域アクセスプログラム識別情報を引数とし、データＩＤを生成し、保存領域アクセスプログラム識別情報、ファイル名、セッションパスワード、データＩＤ、処理情報ＲＥＡＤをデータ読込みラッパープログラム２０７に渡し、データ読込みラッパープログラム２０７からデータＩＤに一致する読込みデータを取得し、読込みデータを戻り値として返す処理が記述されている。データＩＤとは、１回のデータ読込み処理に対し、生成されるＩＤ（Ｉｄｅｎｔｉｆｉｅｒ）であり、データ読込みラッパープログラム２０７が保持している読込みデータを識別するために使用する。また、処理情報とは、保存領域アクセスプログラム２１５に実行させる処理であり、データ書込みを表すＷＲＩＴＥ、データ読込みを表すＲＥＡＤ、保存領域アクセスプログラム２１５の実行停止を表すＥＮＤがある。
【００２４】
データ読込みラッパープログラム２０７は、保存領域アクセスプログラム２１５を介して、スクリプト用保存領域２１６からデータを読込むプログラムであり、インタプリタ２０１から読込みファイル名、セッションパスワード、保存領域アクセスプログラム識別情報、データＩＤを受け取り、Ｉｎｔｅｎｔに読込みファイル名、セッションパスワード、データＩＤを格納し、保存領域アクセスプログラム識別情報と一致する保存領域アクセスプログラム２１５にＩｎｔｅｎｔを送信する。さらに、保存領域アクセスプログラム２１５から受信したＩｎｔｅｎｔからデータＩＤと読込みデータを取得し、インタプリタ２０１に読込みデータを渡す。
【００２５】
スクリプト終了プログラム２０８は、メインスクリプト終了時に、インタプリタ用保存領域２０９に保存されているスクリプトライブラリの削除と保存領域アクセスプログラム２１５の停止を行うプログラムであり、インタプリタ２０１からセッションパスワードと保存領域アクセスプログラム識別情報を受け取り、インタプリタ用保存領域２０９内のスクリプトライブラリを削除する。また、Ｉｎｔｅｎｔにセッションパスワード、処理情報ＥＮＤを格納し、保存領域アクセスプログラム識別情報と一致する保存領域アクセスプログラム２１５に、Ｉｎｔｅｎｔを送信する。
【００２６】
インタプリタ用保存領域２０９は、インタプリタアプリケーション１０４のサンドボックス領域内に存在する保存領域であり、インタプリタアプリケーション１０４以外のアプリケーションからはアクセスできない。
スクリプトアプリケーション１０５Ａ，Ｂのスクリプト送信プログラム２１１は、メインスクリプトファイル２１２、スクリプトライブラリファイル２１３からスクリプトを読込み、インタプリタアプリケーション１０４に送信するプログラムであり、保存領域アクセスプログラム識別情報を保持しており、メインスクリプトファイル２１２からメインスクリプト、スクリプトライブラリファイル２１３からスクリプトライブラリを読み出し、セッションパスワード生成プログラム２１４を起動し、セッションパスワード生成プログラム２１４からセッションパスワードを取得し、Ｉｎｔｅｎｔにメインスクリプト、スクリプトライブラリ、セッションパスワード、保存領域アクセスプログラム識別情報を格納し、インタプリタ起動プログラム２０２に、Ｉｎｔｅｎｔを送信する。さらに、保存領域アクセスプログラム２１５を起動し、セッションパスワードを渡す。
【００２７】
メインスクリプトファイル２１２は、メインスクリプトが記述されたファイルである。
スクリプトライブラリファイル２１３は、スクリプトライブラリファイルが記述されたファイルであり、複数あっても良い。
【００２８】
セッションパスワード生成プログラム２１４は、スクリプト送信プログラム２１１により起動され、セッションパスワードを生成し、スクリプト送信プログラム２１１にセッションパスワードを渡す。
【００２９】
保存領域アクセスプログラム２１５は、スクリプト用保存領域２１６からデータ書込みとデータ読込みを行うプログラムであり、まず、インタプリタアプリケーションから受信したＩｎｔｅｎｔからセッションパスワードを取得し、セッションパスワードの認証を行う。続いて、Ｉｎｔｅｎｔから処理情報を取得し、処理情報がＷＲＩＴＥの場合、インタプリタ２０１から、Ｉｎｔｅｎｔからファイル名、書込みデータを取得し、ファイル名をもつファイルに書込みデータをスクリプト用保存領域２１６に書き込む。また、セッションパスワードの認証後、処理情報がＲＥＡＤの場合、Ｉｎｔｅｎｔからファイル名、データＩＤを取得し、ファイル名を持つファイルをスクリプト用保存領域２１６から読込み、ＩｎｔｅｎｔにデータＩＤと読込みデータを格納し、データ読込みラッパープログラム２０７に送信する。また、セッションパスワードの認証後、処理情報がＥＮＤの場合、保存領域アクセスプログラム２１５は実行を終了し、セッションパスワードが初期化される。
【００３０】
スクリプト用保存領域２１６は、スクリプトアプリケーション１０５Ａまたはスクリプトアプリケーション１０５Ｂのサンドボックス領域内に存在する保存領域であり、スクリプトアプリケーション１０５Ａまたはスクリプトアプリケーション１０５Ｂ以外のアプリケーションからはアクセスできない。
【００３１】
以下、本実施の形態に係るスクリプトアプリケーション実行方法の処理の詳細を図３〜図８を参照して説明する。
図３は、スクリプトアプリケーション１０５Ａのスクリプト実行開始処理を説明するためのフローチャートである。
ステップＳ３０１では、アプリ利用者が、スクリプトアプリケーション１０５Ａを起動する。
ステップＳ３０２では、スクリプト送信プログラム２１１を起動する。
ステップＳ３０３では、スクリプト送信プログラム２１１が、メインスクリプトファイル２１２とスクリプトライブラリファイル２１３を読込み、メインスクリプトとスクリプトライブラリを取得する。
【００３２】
ステップＳ３０４では、スクリプト送信プログラム２１１が、セッションパスワード生成プログラム２１４を起動する。
ステップＳ３０５では、セッションパスワード生成プログラム２１４が、セッションパスワードを生成し、スクリプト送信プログラム２１１に渡す。
ステップＳ３０６では、スクリプト送信プログラム２１１が、保存領域アクセスプログラム２１５を起動し、ステップＳ３０５で取得したセッションパスワードを渡す。
ステップＳ３０７では、スクリプト送信プログラム２１１が、ＩｎｔｅｎｔにステップＳ３０３で取得したメインスクリプト２１２とスクリプトライブラリ２１３、ステップＳ３０５で取得したセッションパスワード、保存領域アクセスプログラム識別情報を格納し、インタプリタ起動プログラム２０２に、Ｉｎｔｅｎｔを送信する。
【００３３】
ステップＳ３０８では、インタプリタ起動プログラム２０２が、受信したＩｎｔｅｎｔからメインスクリプト２１２、スクリプトライブラリ２１３、セッションパスワード、保存領域アクセスプログラム識別情報をＩｎｔｅｎｔから取得する。
ステップＳ３０９では、インタプリタ起動プログラム２０２が、スクリプト変換プログラム２０３を起動し、メインスクリプト２１２とスクリプトライブラリ２１３をスクリプト変換プログラム２０３に渡す。
ステップＳ３１０では、スクリプト変換プログラム２０３が、スクリプトライブラリをインタプリタ用保存領域２０９に保存する。
ステップＳ３１１では、スクリプト変換プログラム２０３が、メインスクリプト内にあるスクリプトライブラリのファイルパスを、インタプリタ用保存領域２０９に保存されているスクリプトライブラリのファイルパスに書き換え、インタプリタ起動プログラム２０２にファイルパスを書き換えたメインスクリプトを渡す。
【００３４】
図４にその一例を示す。図４は、スクリプト言語がＲｕｂｙであり、スクリプトライブラリのファイル名がsubscript.rb、インタプリタ２０１のＪａｖａパッケージ名がrubyinterpreterであった場合のファイルパス変換処理の一例である。
Ｄａｌｖｉｋ  ＶＭ１０２では、データは、/data/data/(Ｊａｖａパッケージ名)/filesフォルダに保存される。（Ｊａｖａパッケージ名）は保存処理を行うクラスのパッケージ名である。Ｒｕｂｙでは、ｒｅｑｕｉｒｅ関数で別ファイルのＲｕｂｙスクリプトを取り込む。よって、変換後のメインスクリプトのｒｅｑｕｉｒｅ関数には、/data/data/rubyinterpreter/files/subscript.rbが引数として与えられている。
また、スクリプトライブラリファイルが複数有り、スクリプトライブラリファイルが、別のスクリプトライブラリファイルを参照している場合には、スクリプトライブラリファイル内のファイルパスも書き換える。
【００３５】
ステップＳ３１２では、インタプリタ起動プログラム２０２が、インタプリタ２０１を起動し、メインスクリプト、セッションパスワード、保存領域アクセスプログラム識別情報をインタプリタ２０１に渡す。
ステップＳ３１３では、インタプリタ２０１が、メインスクリプトを実行する。
【００３６】
図５は、インタプリタアプリケーション１０４のデータ書込み要求処理を説明するためのフローチャートである。
ステップＳ５０１では、インタプリタ２０１が、保存領域アクセススクリプトライブラリファイル２０４から保存領域アクセススクリプトライブラリを読込み、データを書き込むファイル名、書込みデータ、ステップＳ３１２で取得したセッションパスワードと保存領域アクセスプログラム識別情報を引数とし、保存領域アクセススクリプトライブラリファイル２０４のデータ書込み関数２０５を実行する。
スクリプト言語がＲｕｂｙの場合では、メインスクリプトがｒｅｑｕｉｒｅ関数の引数として、保存領域アクセススクリプトライブラリを取り込み、保存領域アクセススクリプトライブラリに定義されているデータ書込み関数２０５にファイル名、書込みデータ、セッションパスワード、保存領域アクセスプログラム識別情報を引数として渡し、呼び出す。
【００３７】
ステップＳ５０２では、インタプリタ２０１が、データ書込み関数２０５を実行して、Ｉｎｔｅｎｔにファイル名、書込みデータ、セッションパスワード、処理情報ＷＲＩＴＥを格納し、保存領域アクセスプログラム識別情報と一致する保存領域アクセスプログラム２１５に、Ｉｎｔｅｎｔを送信する。
【００３８】
図６は、インタプリタアプリケーション１０４のデータ読込み要求処理を説明するためのフローチャートである。
ステップＳ６０１では、インタプリタ２０１が、保存領域アクセススクリプトライブラリファイル２０４から保存領域アクセススクリプトライブラリを読込み、データを読込むファイル名、ステップＳ３１２で取得したセッションパスワード、保存領域アクセスプログラム識別情報を引数とし、保存領域アクセススクリプトライブラリのデータ読込み関数２０６を実行する。
【００３９】
スクリプト言語がＲｕｂｙの場合では、メインスクリプトがｒｅｑｕｉｒｅ関数の引数に、保存領域アクセススクリプトライブラリファイル２０４を指定し、保存領域アクセススクリプトライブラリに定義されているデータ読込み関数にファイル名、セッションパスワード、保存領域アクセスプログラム識別情報を引数として渡し、呼び出す。
ステップＳ６０２では、インタプリタ２０１が、データ読込み関数２０６を実行して、データ読込みラッパープログラム２０７を起動し、保存領域アクセスプログラム識別情報、読込みファイル名、セッションパスワードをデータ読込みラッパープログラム２０７に渡す。
【００４０】
ステップＳ６０３では、データ読込みラッパープログラム２０７が、データＩＤを生成し、ＩｎｔｅｎｔにステップＳ６０２で取得したファイル名とセッションパスワード、処理情報ＲＥＡＤ、生成したデータＩＤを格納し、ステップＳ６０２で受け取った保存領域アクセスプログラム識別情報と一致する保存領域アクセスプログラムＡ２１５に、Ｉｎｔｅｎｔを送信する。
【００４１】
図７に示した保存領域アクセスプログラム２１５の処理後、ステップＳ６０４では、データ読込みラッパープログラム２０７が、ステップＳ７１０で受信したＩｎｔｅｎｔからデータＩＤとデータを取得し、データＩＤとデータを関連づけて保持する。
ステップＳ６０５では、インタプリタ２０１が、ステップＳ６０３で生成したデータＩＤをデータ読込みラッパープログラム２０７に渡す。
ステップＳ６０６では、データ読込みラッパープログラム２０７が、ステップＳ６０５で受信したデータＩＤと一致するデータを保持している場合、ステップＳ６０７に進み、データＩＤと一致するデータを保持していない場合、ステップＳ６０５に進む。
【００４２】
ステップＳ６０５とステップＳ６０６は、ステップＳ７０９で読込むデータのサイズによっては、ステップＳ６０４よりも先に行われることがある。この場合は、データ読込みラッパープログラム２０７が、ステップＳ６０５で受信したデータＩＤと一致するデータを保持していないため、一定時間後、再び、ステップＳ６０５の処理を行う。
【００４３】
ステップＳ６０７では、データ読込みラッパープログラム２０７が、ステップＳ６０５で受信したデータＩＤを持つ、ステップＳ６０４で受信したデータをインタプリタ２０１に渡す。
【００４４】
図７は、スクリプトアプリケーション１０５の保存領域アクセスプログラム２１５の処理を説明するためのフローチャートである。
ステップＳ７０１では、保存領域アクセスプログラム２１５が、ステップＳ５０２、ステップＳ６０３、ステップＳ８０３のいずれかで受信したＩｎｔｅｎｔからセッションパスワードを取得する。
ステップＳ７０２では、保存領域アクセスプログラム２１５が、ステップＳ７０１で取得したセッションパスワードと、ステップＳ３０６で受け取ったセッションパスワードを比較する。
【００４５】
ステップＳ７０３では、ステップＳ７０２でセッションパスワードが一致した場合、ステップＳ７０４に進み、セッションパスワードが一致しなかった場合、処理を終了する。
ステップＳ７０４では、保存領域アクセスプログラム２１５が、ステップＳ５０２、ステップＳ６０３、ステップＳ８０３のいずれかで受信したＩｎｔｅｎｔから処理情報を取得する。
【００４６】
ステップＳ７０５では、処理情報がＷＲＩＴＥだった場合、ステップＳ７０６に進み、処理情報がＲＥＡＤだった場合、ステップＳ７０８に進み、処理情報がＥＮＤだった場合、ステップＳ７１１に進む。
ステップＳ７０６では、保存領域アクセスプログラム２１５が、ステップＳ５０２で取得したＩｎｔｅｎｔからファイル名、書込みデータを取得する。
【００４７】
ステップＳ７０７では、保存領域アクセスプログラム２１５が、ステップＳ７０６で取得したファイル名を持つファイルに、ステップＳ７０６で取得した書込みデータを書き込む。
ステップＳ７０８ａでは、保存領域アクセスプログラム２１５が、ステップＳ６０３で取得したＩｎｔｅｎｔからファイル名、書き込みデータを取得する。
ステップＳ７０８ｂでは、保存領域アクセスプログラム２１５がＩｎｔｅｎｔから読み込みファイル名とデータＩＤを取得する。
【００４８】
ステップＳ７０９では、保存領域アクセスプログラム２１５が、ステップＳ７０８ｂで取得した読込みファイル名を持つファイルからデータを読込む。
ステップＳ７１０では、保存領域アクセスプログラム２１５が、ステップＳ７０９で読込んだデータと、ステップＳ７０８ｂで取得したデータＩＤをＩｎｔｅｎｔに格納し、データ読込みラッパープログラム２０７にＩｎｔｅｎｔを送信する。
ステップＳ７１１では、保存領域アクセスプログラム２１５が、ステップＳ３０６で受け取ったセッションパスワードを削除し、処理を終了する。
【００４９】
図８は、スクリプトアプリケーション１０５Ａの終了処理を説明するためのフローチャートである。
ステップＳ８０１では、インタプリタ２０１が、ステップＳ３１２で取得したセッションパスワードと保存領域アクセスプログラム識別情報をスクリプト終了プログラム２０８に渡す。
ステップＳ８０２では、スクリプト終了プログラム２０８が、ステップＳ３１０でインタプリタ用データ保存領域２０９に保存されたスクリプトライブラリファイル２１３を削除する。
【００５０】
ステップＳ８０３では、スクリプト終了プログラム２０８が、ＩｎｔｅｎｔにステップＳ８０１で取得したセッションパスワード、処理情報ＥＮＤを格納し、保存領域アクセスプログラム２１５にＩｎｔｅｎｔを送信する。
【符号の説明】
【００５１】
１０１        Ａｎｄｒｏｉｄ  ＯＳ
１０２        Ｄａｌｖｉｋ  ＶＭ
１０３               Ｆｒａｍｅｗｏｒｋ
１０４        インタプリタアプリケーション
１０５Ａ、Ｂ         スクリプトアプリケーション
２０１        インタプリタ
２０２               インタプリタ起動プログラム
２０３               スクリプト変換プログラム
２０４               保存領域アクセススクリプトライブラリファイル
２０５               データ書込み関数
２０６               データ読込み関数
２０７               データ読込みラッパープログラム
２０８               スクリプト終了プログラム
２０９               インタプリタ用保存領域
２１１               スクリプト送信プログラム
２１２               メインスクリプトファイル
２１３               スクリプトライブラリファイル
２１４               セッションパスワード生成プログラム
２１５               保存領域アクセスプログラム
２１６               スクリプト用保存領域
【図１】
2012078943.tif 000003
【図２】
2012078943.tif 000004
【図３】
2012078943.tif 000005
【図４】
2012078943.tif 000006
【図５】
2012078943.tif 000007
【図６】
2012078943.tif 000008
【図７】
2012078943.tif 000009
【図８】
2012078943.tif 000010