説明

スクリプトアプリケーションの実行方法

【課題】インタプリタに手を加えること無く、スクリプトアプリケーションのサイズを肥大化させること無く、スクリプトアプリケーションから保存されたデータに対する他のスクリプトアプリケーションからのアクセスを防止する。
【解決手段】スクリプトアプリケーションが、サンドボックス内のデータアクセスに必要なセッションパスワードを生成し、インタプリタアプリケーションに送信し、インタプリタアプリケーションから受信したセッションパスワードの認証を行い、サンドボックス内のデータアクセス制限を行い、スクリプトの実行終了時にセッションパスワードを削除する。インタプリタアプリケーションが、スクリプトアプリケーションから受信したセッションパスワードをスクリプトアプリケーションに送信し、セッションパスワードで識別されるサンドボックス内に記述されたスクリプトを受け取り、インタプリタに解釈・実行させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、スクリプトアプリケーションのサイズ削減とスクリプトアプリケーションから保存したデータの安全性を確保するスクリプトアプリケーションの実行方法に関するものである。
【背景技術】
【0002】
近年、モバイル用のオープンソースオペレーティングシステムとしてAndroid(グーグル社の登録商標)が登場し、様々なハードウェアに搭載されている。Android用のアプリケーションは、DalvikVM(Dalvik Vertual Machine)上で動作し、開発に用いる主なプログラミング言語はJava(サンマイクロシステムズ社の登録商標)である。Androidには、セキュリティモデルとしてサンドボックスが採用されており、アプリケーションによって保存されたデータに対する、他のアプリケーションからのアクセスを防ぐことができるようになっている。アプリケーションが保存されている領域を、サンドボックス内でのアプリケーション実行の条件とすることで、アプリケーションを確実にサンドボックス内で実行させるアプリケーションの実行方法が下記の特許文献1に記載されている。
【0003】
また、Androidでは、Intentという仕組みにより、アプリケーション間の連携を行うことができる。具体的には、DalvikVM上のアプリケーションフレームワークに搭載されているIntentクラスのオブジェクトを生成し、他のアプリケーションに送信することで、他のアプリケーション内のコンポーネントプログラムを起動させることができるというものである。さらに、Intentオブジェクトには、文字列やバイト配列等の任意のデータを付加することができ、他のアプリケーションにデータを送信することも可能である。
【0004】
現在、Androidアプリケーションのスクリプト言語による開発を可能にする技術として、ASE(Android Scripting Environment)やRuboto等のAndroid上でのインタプリタの開発が行われており、Ruby、Python,Perl等のスクリプト言語で記述したアプリケーションをAndroid端末上で実行することができる。
DalvikVM上で実行されるJavaアプリケーションの開発には、Javaで記述されたソースコードをDalvikVMが解釈・実行することが可能なDalvikバイトコードにコンパイルする必要がある。
【0005】
一方で、スクリプト言語は、インタプリタが、スクリプトを直接読込んで、解釈・実行を行うため、開発者がバイトコードへ変換することなく、アプリケーションを実行させることができる。スクリプトアプリケーションにおけるセキュリティモデルとして、スクリプトで記述されたアプリケーションに対し、実行できるコマンドをアクセス制御リストにより制限することで、不正なスクリプトアプリケーションの実行を防止する方法が下記の特許文献2に記載されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2006−65493公報
【特許文献2】特開2004−5441公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、上記のインタプリタは、Androidアプリケーションとして提供され、スクリプトアプリケーションの実行は、インタプリタが、スクリプトの記述されたファイルを読込むことで行うため、インタプリタ上で実行されるスクリプトアプリケーションは、すべて同じサンドボックス内で実行されてしまう。したがって、スクリプトアプリケーションから保存されたデータに、他のスクリプトアプリケーションからアクセスすることが可能になってしまう。
スクリプトアプリケーションによって保存されたデータを保護するためには、Androidアプリケーションに対するサンドボックスモデルや前記の特許文献1のアプリケーションの実行方法をインタプリタに実装する、もしくは、1つのスクリプトアプリケーション毎に、インタプリタを組み込む必要がある。
【0008】
前者の方法では、インタプリタの内部プログラムを改変する必要があり、実装の負担が大きく、後者の方法では、スクリプトアプリケーションのサイズが肥大化してしまう。また、特許文献2に記載の方法では、データの読込み、書き込みを制限する必要があるため、スクリプトアプリケーション開発の自由度を大きく減じてしまうことになる。
【0009】
本発明の目的は、従来のインタプリタの内部プログラムに手を加えること無く、さらに、スクリプトアプリケーションのサイズを肥大化させること無く、スクリプトアプリケーションから保存されたデータに対する他のスクリプトアプリケーションからのアクセスを防止することが可能なスクリプトアプリケーション実行方法を提供することにある。
【課題を解決するための手段】
【0010】
上記目的を達成するため、本発明に係るスクリプトアプリケーションの実行方法は、スクリプトを解釈・実行するインタプリタを備えるインタプリタアプリケーションと前記インタプリタアプリケーションにスクリプトを送信するスクリプトアプリケーションを搭載する端末におけるスクリプトアプリケーションの実行方法であって、
前記スクリプトアプリケーションが、前記スクリプトが記述されたスクリプトファイルからスクリプトを読込み、前記インタプリタアプリケーションに前記スクリプトを送信するステップと、
前記インタプリタアプリケーションが、前記スクリプトアプリケーションからスクリプトを受け取り、前記インタプリタにスクリプトを解釈・実行させるステップと、
を備え、
前記スクリプトアプリケーションが、当該スクリプトアプリケーションのサンドボックス内のデータアクセスに必要なセッションパスワードを生成し、前記インタプリタアプリケーションに送信するステップと、前記インタプリタアプリケーションから受信した前記セッションパスワードの認証を行い、前記サンドボックス内のデータアクセス制限を行うステップと、前記スクリプトの実行終了時に、前記セッションパスワードを削除するステップとを備え、
前記インタプリタアプリケーションが、前記スクリプトアプリケーションから受信したセッションパスワードを前記スクリプトアプリケーションに送信し、当該セッションパスワードで識別される前記サンドボックス内に記述されたスクリプトを受け取り、前記インタプリタに解釈・実行させるステップとを備えることを特徴とする。
【0011】
また、前記インタプリタアプリケーションが、前記スクリプトアプリケーションから受信した前記セッションパスワードにより前記スクリプトアプリケーションのサンドボックス内からスクリプトライブラリを受信し、その受信したスクリプトライブラリを前記インタプリタアプリケーションのサンドボックス内に保存し、前記スクリプトに記述されている前記スクリプトライブラリのファイルパスを、前記インタプリタアプリケーションのサンドボックス内のファイルパスに書き換えるステップと、前記スクリプトの実行終了時に、前記インタプリタアプリケーションのサンドボックスから、前記スクリプトライブラリを削除するステップとをさらに備えることを特徴とする。
【発明の効果】
【0012】
本発明によれば、従来のインタプリタの内部プログラムに手を加えること無く、さらに、スクリプトアプリケーションのサイズを肥大化させること無く、スクリプトアプリケーションから保存されたデータに対する他のスクリプトアプリケーションからのアクセスを防止することができる。
【図面の簡単な説明】
【0013】
【図1】本発明のスクリプトアプリケーションの実行方法を実施するソフトウェア構成図である。
【図2】インタプリタアプリケーション104とスクリプトアプリケーション105A、Bの内部構成を示すブロック図である。
【図3】スクリプトアプリケーション105Aのスクリプト実行開始処理を説明するためのフローチャートである。
【図4】スクリプト変換プログラム203のファイルパス変換処理の一例である。
【図5】インタプリタアプリケーション104のデータ書込み要求処理を説明するためのフローチャートである。
【図6】インタプリタアプリケーション104のデータ読込み要求処理を説明するためのフローチャートである。
【図7】スクリプトアプリケーション105の保存領域アクセスプログラム215の処理を説明するためのフローチャートである。
【図8】スクリプトアプリケーション105Aの終了処理を説明するためのフローチャートである。
【発明を実施するための形態】
【0014】
以下、図面を参照して本発明の実施の形態について説明する。
図1は、本発明のスクリプトアプリケーションの実行方法を実施するソフトウェア構成図である。
図1のソフトウェア構成図は、Android OS101、Dalvik VM102、アプリケーションフレームワーク103、インタプリタアプリケーション104、スクリプトアプリケーションA105、スクリプトアプリケーションB106から成る構成例を示している。
インタプリタアプリケーション104は、スクリプトアプリケーション105A、Bからスクリプトを受信し、実行するアプリケーションである。スクリプトアプリケーション105A、Bは実行させるスクリプトをインタプリタアプリケーション104に送信するアプリケーションである。
【0015】
図2は、インタプリタアプリケーション104とスクリプトアプリケーション105A、Bの内部構成を示すブロック図である。
インタプリタアプリケーション104は、インタプリタ201、インタプリタ起動プログラム202、スクリプト変換プログラム203、保存領域アクセススクリプトライブラリファイル204、データ読込みラッパープログラム207、スクリプト終了プログラム208、インタプリタ用保存領域209とを備える。
スクリプトアプリケーション105A、Bは、スクリプト送信プログラム211、メインスクリプトファイル212、スクリプトライブラリファイル213、セッションパスワード生成プログラム214、保存領域アクセスプログラム215、スクリプト用保存領域216を備える。
【0016】
なお、セッションパスワードとは、インタプリタアプリケーション104がスクリプトアプリケーション105A,Bのサンドボックス領域にあるファイルにアクセスするために必要なパスワードである。
また、メインスクリプトとは、スクリプトアプリケーション105A、Bが、インタプリタアプリケーション104に最初に実行させるスクリプトであり、スクリプトライブラリは、メインスクリプト内で参照されるスクリプトである。
【0017】
インタプリタ201は、スクリプトを実行するプログラムであり、インタプリタ起動プログラム202からセッションパスワード、保存領域アクセスプログラム識別情報、メインスクリプトを受け取って起動し、メインスクリプトを実行する。メインスクリプト実行時に、スクリプトライブラリファイル213を参照する場合には、インタプリタ用保存領域209からスクリプトライブラリを読み出す。さらに、メインスクリプトの実行終了時には、スクリプト終了プログラム208を起動し、セッションパスワードと保存領域アクセスプログラム識別情報をスクリプト終了プログラム208に渡す。
【0018】
なお、保存領域アクセスプログラム識別情報とは、スクリプトアプリケーション毎に存在する保存領域アクセスプログラム215から特定のスクリプトアプリケーションの保存領域アクセスプログラム215を識別するために必要な情報であり、保存領域アクセスプログラム215を記述したJavaクラスの完全修飾名または、IntentFilterに記載されている条件情報でも良い。
IntentFilterとは、Androidアプリケーション内のプログラムがどのようなIntentを受信するかについての条件情報を記載したものであり、Intent内の条件情報とIntentFilterの条件情報が一致した時、プログラムはIntentを受信する。
【0019】
インタプリタ起動プログラム202は、インタプリタ201を起動し、スクリプトを実行させるプログラムであり、スクリプト送信プログラム211からIntentを受け取り、Intentからメインスクリプト、スクリプトライブラリ、セッションパスワード、保存領域アクセスプログラム識別情報を取り出し、インタプリタ201を起動し、メインスクリプト、セッションパスワード、保存領域アクセスプログラム識別情報を渡す。
また、スクリプト変換プログラム203にメインスクリプト、スクリプトライブラリを渡し、スクリプト変換プログラム203からファイルパスを変換したメインスクリプトを受け取る。
【0020】
スクリプト変換プログラム203は、メインスクリプト内にあるスクリプトライブラリのファイルパスを、インタプリタ用保存領域に保存されたスクリプトライブラリファイル204のファイルパスに書き換えるプログラムであり、インタプリタ起動プログラム202からメインスクリプト、スクリプトライブラリを受け取り、スクリプトライブラリをインタプリタ用保存領域209に保存する。また、メインスクリプト内にある、スクリプトライブラリファイル213のファイルパスをインタプリタ用保存領域2069保存されたスクリプトライブラリファイル213の新しいファイルパスに書き換え、メインスクリプトをインタプリタ起動プログラム202に渡す。
【0021】
保存領域アクセススクリプトライブラリファイル204は、データ読込みラッパープログラム207と保存領域アクセスプログラム215を介して、スクリプト用保存領域216にアクセスする保存領域アクセススクリプトライブラリが記述されており、スクリプト用保存領域216にデータを書き込むデータ書込み関数205と、スクリプト用保存領域216からデータを読み込むデータ読込み関数206が含まれる。
【0022】
データ書込み関数205は、ファイル名、書込みデータ、セッションパスワード、保存領域アクセスプログラム識別情報を引数とし、Intentにファイル名、書込みデータ、セッションパスワード、処理情報WRITEを格納し、引数として受け取った保存領域アクセスプログラム識別情報と一致する保存領域アクセスプログラム215に、Intentを送信する処理が記述される。
【0023】
データ読込み関数206は、ファイル名、セッションパスワード、保存領域アクセスプログラム識別情報を引数とし、データIDを生成し、保存領域アクセスプログラム識別情報、ファイル名、セッションパスワード、データID、処理情報READをデータ読込みラッパープログラム207に渡し、データ読込みラッパープログラム207からデータIDに一致する読込みデータを取得し、読込みデータを戻り値として返す処理が記述されている。データIDとは、1回のデータ読込み処理に対し、生成されるID(Identifier)であり、データ読込みラッパープログラム207が保持している読込みデータを識別するために使用する。また、処理情報とは、保存領域アクセスプログラム215に実行させる処理であり、データ書込みを表すWRITE、データ読込みを表すREAD、保存領域アクセスプログラム215の実行停止を表すENDがある。
【0024】
データ読込みラッパープログラム207は、保存領域アクセスプログラム215を介して、スクリプト用保存領域216からデータを読込むプログラムであり、インタプリタ201から読込みファイル名、セッションパスワード、保存領域アクセスプログラム識別情報、データIDを受け取り、Intentに読込みファイル名、セッションパスワード、データIDを格納し、保存領域アクセスプログラム識別情報と一致する保存領域アクセスプログラム215にIntentを送信する。さらに、保存領域アクセスプログラム215から受信したIntentからデータIDと読込みデータを取得し、インタプリタ201に読込みデータを渡す。
【0025】
スクリプト終了プログラム208は、メインスクリプト終了時に、インタプリタ用保存領域209に保存されているスクリプトライブラリの削除と保存領域アクセスプログラム215の停止を行うプログラムであり、インタプリタ201からセッションパスワードと保存領域アクセスプログラム識別情報を受け取り、インタプリタ用保存領域209内のスクリプトライブラリを削除する。また、Intentにセッションパスワード、処理情報ENDを格納し、保存領域アクセスプログラム識別情報と一致する保存領域アクセスプログラム215に、Intentを送信する。
【0026】
インタプリタ用保存領域209は、インタプリタアプリケーション104のサンドボックス領域内に存在する保存領域であり、インタプリタアプリケーション104以外のアプリケーションからはアクセスできない。
スクリプトアプリケーション105A,Bのスクリプト送信プログラム211は、メインスクリプトファイル212、スクリプトライブラリファイル213からスクリプトを読込み、インタプリタアプリケーション104に送信するプログラムであり、保存領域アクセスプログラム識別情報を保持しており、メインスクリプトファイル212からメインスクリプト、スクリプトライブラリファイル213からスクリプトライブラリを読み出し、セッションパスワード生成プログラム214を起動し、セッションパスワード生成プログラム214からセッションパスワードを取得し、Intentにメインスクリプト、スクリプトライブラリ、セッションパスワード、保存領域アクセスプログラム識別情報を格納し、インタプリタ起動プログラム202に、Intentを送信する。さらに、保存領域アクセスプログラム215を起動し、セッションパスワードを渡す。
【0027】
メインスクリプトファイル212は、メインスクリプトが記述されたファイルである。
スクリプトライブラリファイル213は、スクリプトライブラリファイルが記述されたファイルであり、複数あっても良い。
【0028】
セッションパスワード生成プログラム214は、スクリプト送信プログラム211により起動され、セッションパスワードを生成し、スクリプト送信プログラム211にセッションパスワードを渡す。
【0029】
保存領域アクセスプログラム215は、スクリプト用保存領域216からデータ書込みとデータ読込みを行うプログラムであり、まず、インタプリタアプリケーションから受信したIntentからセッションパスワードを取得し、セッションパスワードの認証を行う。続いて、Intentから処理情報を取得し、処理情報がWRITEの場合、インタプリタ201から、Intentからファイル名、書込みデータを取得し、ファイル名をもつファイルに書込みデータをスクリプト用保存領域216に書き込む。また、セッションパスワードの認証後、処理情報がREADの場合、Intentからファイル名、データIDを取得し、ファイル名を持つファイルをスクリプト用保存領域216から読込み、IntentにデータIDと読込みデータを格納し、データ読込みラッパープログラム207に送信する。また、セッションパスワードの認証後、処理情報がENDの場合、保存領域アクセスプログラム215は実行を終了し、セッションパスワードが初期化される。
【0030】
スクリプト用保存領域216は、スクリプトアプリケーション105Aまたはスクリプトアプリケーション105Bのサンドボックス領域内に存在する保存領域であり、スクリプトアプリケーション105Aまたはスクリプトアプリケーション105B以外のアプリケーションからはアクセスできない。
【0031】
以下、本実施の形態に係るスクリプトアプリケーション実行方法の処理の詳細を図3〜図8を参照して説明する。
図3は、スクリプトアプリケーション105Aのスクリプト実行開始処理を説明するためのフローチャートである。
ステップS301では、アプリ利用者が、スクリプトアプリケーション105Aを起動する。
ステップS302では、スクリプト送信プログラム211を起動する。
ステップS303では、スクリプト送信プログラム211が、メインスクリプトファイル212とスクリプトライブラリファイル213を読込み、メインスクリプトとスクリプトライブラリを取得する。
【0032】
ステップS304では、スクリプト送信プログラム211が、セッションパスワード生成プログラム214を起動する。
ステップS305では、セッションパスワード生成プログラム214が、セッションパスワードを生成し、スクリプト送信プログラム211に渡す。
ステップS306では、スクリプト送信プログラム211が、保存領域アクセスプログラム215を起動し、ステップS305で取得したセッションパスワードを渡す。
ステップS307では、スクリプト送信プログラム211が、IntentにステップS303で取得したメインスクリプト212とスクリプトライブラリ213、ステップS305で取得したセッションパスワード、保存領域アクセスプログラム識別情報を格納し、インタプリタ起動プログラム202に、Intentを送信する。
【0033】
ステップS308では、インタプリタ起動プログラム202が、受信したIntentからメインスクリプト212、スクリプトライブラリ213、セッションパスワード、保存領域アクセスプログラム識別情報をIntentから取得する。
ステップS309では、インタプリタ起動プログラム202が、スクリプト変換プログラム203を起動し、メインスクリプト212とスクリプトライブラリ213をスクリプト変換プログラム203に渡す。
ステップS310では、スクリプト変換プログラム203が、スクリプトライブラリをインタプリタ用保存領域209に保存する。
ステップS311では、スクリプト変換プログラム203が、メインスクリプト内にあるスクリプトライブラリのファイルパスを、インタプリタ用保存領域209に保存されているスクリプトライブラリのファイルパスに書き換え、インタプリタ起動プログラム202にファイルパスを書き換えたメインスクリプトを渡す。
【0034】
図4にその一例を示す。図4は、スクリプト言語がRubyであり、スクリプトライブラリのファイル名がsubscript.rb、インタプリタ201のJavaパッケージ名がrubyinterpreterであった場合のファイルパス変換処理の一例である。
Dalvik VM102では、データは、/data/data/(Javaパッケージ名)/filesフォルダに保存される。(Javaパッケージ名)は保存処理を行うクラスのパッケージ名である。Rubyでは、require関数で別ファイルのRubyスクリプトを取り込む。よって、変換後のメインスクリプトのrequire関数には、/data/data/rubyinterpreter/files/subscript.rbが引数として与えられている。
また、スクリプトライブラリファイルが複数有り、スクリプトライブラリファイルが、別のスクリプトライブラリファイルを参照している場合には、スクリプトライブラリファイル内のファイルパスも書き換える。
【0035】
ステップS312では、インタプリタ起動プログラム202が、インタプリタ201を起動し、メインスクリプト、セッションパスワード、保存領域アクセスプログラム識別情報をインタプリタ201に渡す。
ステップS313では、インタプリタ201が、メインスクリプトを実行する。
【0036】
図5は、インタプリタアプリケーション104のデータ書込み要求処理を説明するためのフローチャートである。
ステップS501では、インタプリタ201が、保存領域アクセススクリプトライブラリファイル204から保存領域アクセススクリプトライブラリを読込み、データを書き込むファイル名、書込みデータ、ステップS312で取得したセッションパスワードと保存領域アクセスプログラム識別情報を引数とし、保存領域アクセススクリプトライブラリファイル204のデータ書込み関数205を実行する。
スクリプト言語がRubyの場合では、メインスクリプトがrequire関数の引数として、保存領域アクセススクリプトライブラリを取り込み、保存領域アクセススクリプトライブラリに定義されているデータ書込み関数205にファイル名、書込みデータ、セッションパスワード、保存領域アクセスプログラム識別情報を引数として渡し、呼び出す。
【0037】
ステップS502では、インタプリタ201が、データ書込み関数205を実行して、Intentにファイル名、書込みデータ、セッションパスワード、処理情報WRITEを格納し、保存領域アクセスプログラム識別情報と一致する保存領域アクセスプログラム215に、Intentを送信する。
【0038】
図6は、インタプリタアプリケーション104のデータ読込み要求処理を説明するためのフローチャートである。
ステップS601では、インタプリタ201が、保存領域アクセススクリプトライブラリファイル204から保存領域アクセススクリプトライブラリを読込み、データを読込むファイル名、ステップS312で取得したセッションパスワード、保存領域アクセスプログラム識別情報を引数とし、保存領域アクセススクリプトライブラリのデータ読込み関数206を実行する。
【0039】
スクリプト言語がRubyの場合では、メインスクリプトがrequire関数の引数に、保存領域アクセススクリプトライブラリファイル204を指定し、保存領域アクセススクリプトライブラリに定義されているデータ読込み関数にファイル名、セッションパスワード、保存領域アクセスプログラム識別情報を引数として渡し、呼び出す。
ステップS602では、インタプリタ201が、データ読込み関数206を実行して、データ読込みラッパープログラム207を起動し、保存領域アクセスプログラム識別情報、読込みファイル名、セッションパスワードをデータ読込みラッパープログラム207に渡す。
【0040】
ステップS603では、データ読込みラッパープログラム207が、データIDを生成し、IntentにステップS602で取得したファイル名とセッションパスワード、処理情報READ、生成したデータIDを格納し、ステップS602で受け取った保存領域アクセスプログラム識別情報と一致する保存領域アクセスプログラムA215に、Intentを送信する。
【0041】
図7に示した保存領域アクセスプログラム215の処理後、ステップS604では、データ読込みラッパープログラム207が、ステップS710で受信したIntentからデータIDとデータを取得し、データIDとデータを関連づけて保持する。
ステップS605では、インタプリタ201が、ステップS603で生成したデータIDをデータ読込みラッパープログラム207に渡す。
ステップS606では、データ読込みラッパープログラム207が、ステップS605で受信したデータIDと一致するデータを保持している場合、ステップS607に進み、データIDと一致するデータを保持していない場合、ステップS605に進む。
【0042】
ステップS605とステップS606は、ステップS709で読込むデータのサイズによっては、ステップS604よりも先に行われることがある。この場合は、データ読込みラッパープログラム207が、ステップS605で受信したデータIDと一致するデータを保持していないため、一定時間後、再び、ステップS605の処理を行う。
【0043】
ステップS607では、データ読込みラッパープログラム207が、ステップS605で受信したデータIDを持つ、ステップS604で受信したデータをインタプリタ201に渡す。
【0044】
図7は、スクリプトアプリケーション105の保存領域アクセスプログラム215の処理を説明するためのフローチャートである。
ステップS701では、保存領域アクセスプログラム215が、ステップS502、ステップS603、ステップS803のいずれかで受信したIntentからセッションパスワードを取得する。
ステップS702では、保存領域アクセスプログラム215が、ステップS701で取得したセッションパスワードと、ステップS306で受け取ったセッションパスワードを比較する。
【0045】
ステップS703では、ステップS702でセッションパスワードが一致した場合、ステップS704に進み、セッションパスワードが一致しなかった場合、処理を終了する。
ステップS704では、保存領域アクセスプログラム215が、ステップS502、ステップS603、ステップS803のいずれかで受信したIntentから処理情報を取得する。
【0046】
ステップS705では、処理情報がWRITEだった場合、ステップS706に進み、処理情報がREADだった場合、ステップS708に進み、処理情報がENDだった場合、ステップS711に進む。
ステップS706では、保存領域アクセスプログラム215が、ステップS502で取得したIntentからファイル名、書込みデータを取得する。
【0047】
ステップS707では、保存領域アクセスプログラム215が、ステップS706で取得したファイル名を持つファイルに、ステップS706で取得した書込みデータを書き込む。
ステップS708aでは、保存領域アクセスプログラム215が、ステップS603で取得したIntentからファイル名、書き込みデータを取得する。
ステップS708bでは、保存領域アクセスプログラム215がIntentから読み込みファイル名とデータIDを取得する。
【0048】
ステップS709では、保存領域アクセスプログラム215が、ステップS708bで取得した読込みファイル名を持つファイルからデータを読込む。
ステップS710では、保存領域アクセスプログラム215が、ステップS709で読込んだデータと、ステップS708bで取得したデータIDをIntentに格納し、データ読込みラッパープログラム207にIntentを送信する。
ステップS711では、保存領域アクセスプログラム215が、ステップS306で受け取ったセッションパスワードを削除し、処理を終了する。
【0049】
図8は、スクリプトアプリケーション105Aの終了処理を説明するためのフローチャートである。
ステップS801では、インタプリタ201が、ステップS312で取得したセッションパスワードと保存領域アクセスプログラム識別情報をスクリプト終了プログラム208に渡す。
ステップS802では、スクリプト終了プログラム208が、ステップS310でインタプリタ用データ保存領域209に保存されたスクリプトライブラリファイル213を削除する。
【0050】
ステップS803では、スクリプト終了プログラム208が、IntentにステップS801で取得したセッションパスワード、処理情報ENDを格納し、保存領域アクセスプログラム215にIntentを送信する。
【符号の説明】
【0051】
101 Android OS
102 Dalvik VM
103 Framework
104 インタプリタアプリケーション
105A、B スクリプトアプリケーション
201 インタプリタ
202 インタプリタ起動プログラム
203 スクリプト変換プログラム
204 保存領域アクセススクリプトライブラリファイル
205 データ書込み関数
206 データ読込み関数
207 データ読込みラッパープログラム
208 スクリプト終了プログラム
209 インタプリタ用保存領域
211 スクリプト送信プログラム
212 メインスクリプトファイル
213 スクリプトライブラリファイル
214 セッションパスワード生成プログラム
215 保存領域アクセスプログラム
216 スクリプト用保存領域

【特許請求の範囲】
【請求項1】
スクリプトを解釈・実行するインタプリタを備えるインタプリタアプリケーションと前記インタプリタアプリケーションにスクリプトを送信するスクリプトアプリケーションを搭載する端末におけるスクリプトアプリケーションの実行方法であって、
前記スクリプトアプリケーションが、前記スクリプトが記述されたスクリプトファイルからスクリプトを読込み、前記インタプリタアプリケーションに前記スクリプトを送信するステップと、
前記インタプリタアプリケーションが、前記スクリプトアプリケーションからスクリプトを受け取り、前記インタプリタにスクリプトを解釈・実行させるステップと、
を備え、
前記スクリプトアプリケーションが、当該スクリプトアプリケーションのサンドボックス内のデータアクセスに必要なセッションパスワードを生成し、前記インタプリタアプリケーションに送信するステップと、前記インタプリタアプリケーションから受信した前記セッションパスワードの認証を行い、前記サンドボックス内のデータアクセス制限を行うステップと、前記スクリプトの実行終了時に、前記セッションパスワードを削除するステップとを備え、
前記インタプリタアプリケーションが、前記スクリプトアプリケーションから受信したセッションパスワードを前記スクリプトアプリケーションに送信し、当該セッションパスワードで識別される前記サンドボックス内に記述されたスクリプトを受け取り、前記インタプリタに解釈・実行させるステップとを備えることを特徴とするスクリプトアプリケーションの実行方法。
【請求項2】
前記インタプリタアプリケーションが、前記スクリプトアプリケーションから受信した前記セッションパスワードにより前記スクリプトアプリケーションのサンドボックス内からスクリプトライブラリを受信し、その受信したスクリプトライブラリを前記インタプリタアプリケーションのサンドボックス内に保存し、前記スクリプトに記述されている前記スクリプトライブラリのファイルパスを、前記インタプリタアプリケーションのサンドボックス内のファイルパスに書き換えるステップと、前記スクリプトの実行終了時に、前記インタプリタアプリケーションのサンドボックスから、前記スクリプトライブラリを削除するステップとをさらに備えることを特徴とする請求項1に記載のスクリプトアプリケーションの実行方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate