(57)【特許請求の範囲】
【請求項１】
手続き型言語により作成されたコンピュータプログラムのコードを読み込み、解釈して実行するプログラム実行部と、
前記プログラム実行部が実行中の前記コードにおける変数定義及び関数定義を、前記手続き型言語によるコードとして解釈可能な形式でバックアップするバックアップ部と、
耐タンパ機構で保護された鍵を保持する鍵保持部と、
前記鍵を用いて暗号化及び復号を行う暗号復号部と、
を備え、
前記バックアップ部は、バックアップの時点で定義された変数及び前記プログラム実行部が実行するプログラムにより変更された該変数が持つ値、関数定義、及び前記プログラム実行部に設定され該前記プログラム実行部が保持している情報を前記暗号復号部で暗号化してバックアップを作成する、情報処理装置。
【請求項２】
前記バックアップ部が作成したバックアップを読み込み、前記暗号復号部を用いて読み込んだバックアップを復号してリストアするリストア部を備える、請求項１に記載の情報処理装置。
【請求項３】
前記プログラム実行部は、前記バックアップ部が前記バックアップの存在を確認し、存在していれば該バックアップを読み込む、請求項２に記載の情報処理装置。
【請求項４】
前記プログラム実行部は、読み込んだ前記コードの変数定義または関数定義を削除する、請求項１に記載の情報処理装置。
【請求項５】
手続き型言語により作成されたコンピュータプログラムのコードを解釈して実行するプログラム実行ステップと、
前記プログラム実行ステップが実行中の前記コードにおける変数定義及び関数定義を、前記手続き型言語によるコードとして解釈可能な形式でバックアップするバックアップステップと、
耐タンパ機構で保護された鍵を用いて暗号化及び復号を行う暗号復号ステップと、
を備え、
前記暗号復号ステップは、前記バックアップステップの時点で定義された変数及び前記プログラム実行ステップで実行されるプログラムにより変更された該変数が持つ値、関数定義、及び前記プログラム実行ステップにおいて予め設定され該前記プログラム実行ステップにおいて保持されている情報を暗号化し、
前記バックアップステップは、前記暗号復号ステップで暗号化された情報をバックアップする、情報処理方法。
【請求項６】
コンピュータに、
手続き型言語により作成されたコンピュータプログラムのコードを解釈して実行するプログラム実行ステップと、
前記プログラム実行ステップが実行中の前記コードにおける変数定義及び関数定義を、前記手続き型言語によるコードとして解釈可能な形式でバックアップするバックアップステップと、
耐タンパ機構で保護された鍵を用いて暗号化及び復号を行う暗号復号ステップと、
を実行させ、
前記暗号復号ステップは、前記バックアップステップの時点で定義された変数及び前記プログラム実行ステップで実行されるプログラムにより変更された該変数が持つ値、関数定義、及び前記プログラム実行ステップにおいて予め設定され該前記プログラム実行ステップにおいて保持されている情報を暗号化し、
前記バックアップステップは、前記暗号復号ステップで暗号化された情報をバックアップする、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理装置、情報処理方法及びコンピュータプログラムに関する。
【背景技術】
【０００２】
ＬＩＳＰやＲｕｂｙ、Ｐｙｔｈｏｎ等の手続き型プログラミング言語では、変数や関数の定義情報がプログラムの実行時に読み込まれて、読み込まれた関数定義や変数の値に基づいてプログラムが実行される。このような手続き型プログラミング言語を解釈して実行するソフトウェアは、起動時に、毎回手続き型プログラミング言語で記述されたアプリケーションプログラムを読み込み、その後は読み込んだアプリケーションプログラムに従って、入力データを処理し、また処理結果を出力する。
【０００３】
手続き型プログラミング言語を解釈して実行するソフトウェアの特徴としては、定義した変数名を入力すると、その変数の内容を読み出すことができ、また定義した関数を読み出す関数を入力すると、その関数コードを出力することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２０１１−５１３８２４号公報
【特許文献２】国際公開第２００５／１２１９７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
手続き型プログラミング言語を解釈して実行するソフトウェアの特徴として、定義した変数名を入力すると、その変数の内容が読み出せて、また、定義した関数を読み出す関数を入力すると、その関数コードを出力する手段を持っている。しかし、その出力された情報をそのまま入力しても、当該ソフトウェアは、元の定義式と同様な解釈は出来なかった。
【０００６】
また、プログラムを作成するには、通常、プログラムを編集するための編集プログラムを起動してプログラムのソースコードを記述し、プログラムのソースコードが記述されたファイルを作成する。その後、ソースコードを解釈するための処理プログラムを起動してプログラムを実行し、プログラムを修正する必要があれば、また編集プログラムを利用した編集を繰り返す。このように、プログラムを実際に利用することができるまでには、編集と修正を繰り返すという複数のステップが必要である。
【０００７】
そこで、本開示は、上記問題に鑑みてなされたものであり、本開示の目的とするところは、手続き型プログラミング言語の開発を容易に実施することが可能な、新規かつ改良された情報処理装置、情報処理方法及びコンピュータプログラムを提供することにある。
【課題を解決するための手段】
【０００８】
本開示によれば、手続き型言語により作成されたコンピュータプログラムのコードを読み込み、解釈して実行するプログラム実行部と、前記プログラム実行部が実行中の前記コードにおける変数定義及び関数定義を、前記手続き型言語によるコードとして解釈可能な形式でバックアップを作成するバックアップ部と、を備える、情報処理装置が提供される。
【０００９】
本開示によれば、プログラム実行部は、手続き型言語により作成されたコンピュータプログラムのコードを読み込み、解釈して実行する。そして、バックアップ部は、前記プログラム実行部が実行中の前記コードにおける変数定義及び関数定義を、前記手続き型言語によるコードとして解釈可能な形式でバックアップを作成する。これにより、コードに基づいてプログラム実行部によりプログラムが実行されている際に、直接変数定義及び関数定義を修正し、これらの定義のバックアップの作成が可能となり、コードの再読み込みも迅速となることから、手続き型プログラミング言語の開発を容易に実施することが可能となる。
【００１０】
また、本開示によれば、手続き型言語により作成されたコンピュータプログラムのコードを解釈して実行するプログラム実行ステップと、前記プログラム実行ステップが実行中の前記コードにおける変数定義及び関数定義を、前記手続き型言語によるコードとして解釈可能な形式でバックアップを作成するバックアップステップと、を備える、情報処理方法が提供される。
【００１１】
また、本開示によれば、コンピュータに、手続き型言語により作成されたコンピュータプログラムのコードを解釈して実行するプログラム実行ステップと、前記プログラム実行ステップが実行中の前記コードにおける変数定義及び関数定義を、前記手続き型言語によるコードとして解釈可能な形式でバックアップを作成するバックアップステップと、を実行させる、コンピュータプログラムが提供される。
【発明の効果】
【００１２】
以上説明したように本開示によれば、手続き型プログラミング言語の開発を容易に実施することが可能な、新規かつ改良された情報処理装置、情報処理方法及びコンピュータプログラムを提供することができる。
【図面の簡単な説明】
【００１３】
【図１】従来のプログラム開発モデルの流れについて示す説明図である。
【図２】本開示の一実施形態にかかる情報処理システム１０の機能構成を示す説明図である。
【図３】リスト処理モジュールが定義できる、シンボルと呼ぶデータ構造を示す説明図である。
【図４】リスト構造を構成するためのコンスセル４１０の構成例を示す説明図である。
【図５】シンボル４００の名前領域４０１に格納される名前を格納するための名前格納テーブル４２０の構造例を示す説明図である。
【図６】認証鍵を格納する認証鍵テーブル４３０の構造例を示す説明図である。
【図７】図３に示したシンボルと、図４に示したコンスセルと、図５に示した名前格納テーブルと、図６に示した認証鍵テーブルとの対応関係を示す説明図である。
【図８】本開示の一実施形態にかかるＣＰＵ１１０の機能構成を示す説明図である。
【図９】本開示の一実施形態にかかる情報処理装置１００の動作を示す流れ図である。
【図１０Ａ】内部表現の一例を示す説明図である。
【図１０Ｂ】内部表現の一例を示す説明図である。
【図１０Ｃ】内部表現の一例を示す説明図である。
【図１１】本開示の一実施形態にかかる情報処理装置１００によるプログラム開発モデルを示す説明図である。
【図１２】本開示の一実施形態にかかる情報処理システム１０’の機能構成を示す説明図である。
【図１３】本開示の一実施形態にかかる情報処理装置１００のハードウェア構成を示す説明図である。
【発明を実施するための形態】
【００１４】
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００１５】
なお、説明は以下の順序で行うものとする。
＜１．従来のプログラム開発モデル＞
＜２．本開示の一実施形態＞
［２−１．情報処理システムの機能構成］
［２−２．プログラム構造例］
［２−３．情報処理装置の動作］
［２−４．変形例］
［２−５．情報処理装置のハードウェア構成］
＜３．まとめ＞
【００１６】
＜１．従来のプログラム開発モデル＞
まず、本開示の好適な実施の形態について詳細に説明する前に、従来のプログラム開発モデルとその問題点について説明する。図１は、本開示者が特願２０１１−０２７６２５において開示した技術に基づいて行われる、従来のプログラム開発モデルの流れについて示す説明図である。以下、図１を用いて従来のプログラム開発モデルの流れについて説明する。
【００１７】
まず、プログラムのソースコードを作成するためには、ソースコードの作成者が、ソースコードを編集するためのエディタを起動し（ステップＳ１１）、起動したエディタを用いてソースコードが記述されるプログラムファイル１を編集する（ステップＳ１２）。エディタを用いた、ソースコードの作成者によるプログラムファイル１の編集が完了すると、ソースコードの作成者によってエディタが終了される（ステップＳ１３）。
【００１８】
ソースコードの作成者により、ソースコードが記述されたプログラムファイル１が作成されると、プログラムファイル１に記述されたソースコードは、ソースコードを解釈するプログラム（スクリプト）によって解釈されて、当該ソースコードに基づいた処理が実行される。スクリプトが起動されると（ステップＳ２１）、当該スクリプトは、プログラムファイル１を読み込み（ステップＳ２２）、プログラムファイル１に記述されている変数を設定するとともに、変数を使用するための鍵の設定を行う（ステップＳ２３）。この変数の設定や鍵の設定は、本開示者が特願２０１１−０２７６２５において開示した技術に基づくものである。
【００１９】
スクリプトによってプログラムが読み込まれ、変数の設定や鍵の設定がなされると、プログラムはデバッグされる（ステップＳ２４）。デバッグの結果、プログラムの変更が必要かどうか判断され（ステップＳ２５）、プログラムの変更が必要であると判断されれば、再びソースコードの作成者による、ソースコードが記述されるプログラムファイル１の編集に戻る。一方、プログラムの変更は必要ないと判断されれば、プログラムはそのまま利用される（ステップＳ２６）。そして、プログラムの利用を終了するために、スクリプトは終了される（ステップＳ２７）。
【００２０】
従来は、このようにソースコードの編集と、プログラムのデバッグとを繰り返すことでプログラムの開発が行われてきた。しかし、このようなプログラム開発モデルでは、プログラムファイル１がスクリプトに読み込まれた状態でのデバッグを行うことができず、ソースコードを修正するにはまたエディタを起動して、そのエディタによるソースコードの編集に戻らなければいけない。従って、従来のプログラム開発モデルでは、迅速なデバッグが行えなかった。また、プログラムに機能を追加しようとしても、同様にソースコードの編集に戻らなければならず、逐次追記型のプログラム開発は不可能であった。
【００２１】
また、一度ソースコードをスクリプトに読み込ませると、元の定義に戻すことが出来ないという問題もあった。例えば、Ｌｉｓｐ系統のスクリプト言語であるＳｃｈｅｍｅの場合、変数の値を定義する「ｄｅｆｉｎｅ」を用いて（ｄｅｆｉｎｅ  ａ  １２３）と変数ａの値を定義する場合を考える。この場合、上記ソースコード「（ｄｅｆｉｎｅ  ａ  １２３）」を読み込ませた後に、変数ａの値を参照するために「ａ」が入力されると、変数ａに格納された値「１２３」が返される。しかし、一度ソースコードを読み込ませた後は、変数ａとその値とから変数ａの定義式に戻そうとしても、元の定義式である（ｄｅｆｉｎｅ  ａ  １２３）に戻すことが出来ない。
【００２２】
同様に関数の場合は、例えば、（ｄｅｆｉｎｅ  （ａｄｄ３  ｘ）（＋  ｘ  ３））として関数「ａｄｄ３」を定義することができるが、コード読み出し関数を入力しても、元の定義式にはならない。例えば関数の場合、Ｓｃｈｅｍｅのデータとしてプログラムコードを取得できる「ｇｅｔ−ｃｌｏｓｕｒｅ−ｃｏｄｅ」という命令があるが、この命令を実行しても、上記関数「ａｄｄ３」は、（ｇｅｔ−ｃｌｏｓｕｒｅ−ｃｏｄｅ  ａｄｄ３）＝＞（ｌａｍｂｄａ  （ｘ）  （＋  ｘ  ３））となり、上述した元の定義式とは異なる定義式が取得されてしまう。
【００２３】
また、本開示者が特願２０１１−０２７６２５において開示した技術によるシステムでは、プログラムはいつでも部分的に修正が可能であり、またプログラムのソースコードや内部変数の値も自由に読み出すことが可能である。本開示者が特願２０１１−０２７６２５において開示した技術では、耐タンパ性を有するＩＣチップ内に、セキュリティフラグ、暗号化通信手段、及び不揮発性メモリでセキュリティ対策を講じている。しかし、大規模システムでは、大容量の不揮発性メモリは高価であり、よりコストをかけずにセキュリティ対策を講じる必要性が求められる。
【００２４】
しかし、上記技術において、スクリプトを解釈して実行するソフトウェアは、起動の度に毎回スクリプトプログラムを読み込み、スクリプトの内容を解釈して内部表現に置き換え、その後、秘密鍵を含む多くのセキュリティ設定を行うステップが必要となる。そのため、起動後の手順が複雑となり、また読み込ませるスクリプトプログラムや秘密鍵を厳重に管理する必要があるといった懸念がある。
【００２５】
例えば特許文献２に開示されているように、装置の内部情報を暗号化して保存する技術が開発されている。しかし、この技術では、プログラムデータは不揮発性メモリを用いて装置内部に保存しているが、プログラム動作による結果データの保存に限定されていて、動的にプログラムが変わることを想定していない。従ってこの技術では、不揮発性メモリにプログラムを保存する構造を持たない構成における上述した問題を解決できない。
【００２６】
そこで、以下で説明する本開示の一実施形態では、一度ソースコードをスクリプトに読み込ませ、さらにソースコードに変更を加えた後であっても、最新のソースコードを書き戻すことが出来る技術について説明する。さらに、起動後の手順を簡素化することで、本開示者が特願２０１１−０２７６２５において開示した技術に比べ、プログラムの再起動を高速にすることができる技術についても説明する。
【００２７】
＜２．本開示の一実施形態＞
［２−１．情報処理システムの機能構成］
まず、本開示の一実施形態にかかる情報処理システムの機能構成について説明する。図２は、本開示の一実施形態にかかる情報処理システム１０の機能構成を示す説明図である。以下、図２を用いて本開示の一実施形態にかかる情報処理システム１０の機能構成について説明する。
【００２８】
図２に示したように、本開示の一実施形態にかかる情報処理システム１０は、プログラムを実行する情報処理装置１００と、ＮＶＲＡＭ（Ｎｏｎ  Ｖｏｌａｔｉｌｅ  Ｒｏｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１５０と、入力部１６０と、表示部１７０と、外部記憶装置１８０と、を含んで構成される。
【００２９】
情報処理装置１００は、手続き型プログラミング言語を解釈して実行することができるよう構成されているものであり、そのようなプログラミング言語として、例えばＬＩＳＰ、Ｓｃｈｅｍｅ、Ｒｕｂｙ、Ｐｙｔｈｏｎ等がある。
【００３０】
図２に示したように、情報処理装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｓｅｓｓｉｎｇ  Ｕｎｉｔ）１１０と、暗号化／復号部１２０と、ＲＯＭ１３０と、ＲＡＭ１４０と、を含んで構成される。
【００３１】
ＣＰＵ１１０は、情報処理装置１００の動作を制御するものであり、ＲＯＭ１３０に予め記録されているオペレーティングシステムソフトの読み出し命令を実行することで、当該オペレーティングシステムを実行することができる。ＣＰＵ１１０は、オペレーティングシステムの実行に際しては、ＲＡＭ１４０をワークエリアとして用いることができる。ここで、ＲＯＭ１３０に記録されているオペレーティングシステムソフトとしては、例えば、上述したような手続き型プログラミング言語を解釈して実行できるものである。なお本開示においては、外部記憶装置１８０から手続き型プログラムを読み込み実行する形でも良い。
【００３２】
本実施形態にかかる情報処理装置１００のＲＯＭ１３０から読み込まれるプログラムは、インタプリタとして処理する上記手続き型プログラミング言語の基本機能に加え、セキュリティ機能が付加されたものが格納される。これにより、情報処理装置１００にアプリケーションプログラムを組み込む際に、事前にコンパイルする必要がなく、またセキュリティ機能が付加されているので、アプリケーションが利用される情報処理装置１００そのものでデバッグが可能となる。従って、開発ステップの短縮に繋がって、短期間でのアプリケーションプログラムの開発が可能となる。
【００３３】
暗号化／復号部１２０は、入力されてくるデータに対して、指定された鍵を用いて暗号化処理を施して出力したり、入力されてくる暗号化データに対して、指定された鍵を用いて復号処理を施して出力したりするものである。本実施形態では、ソースコードを外部記憶装置１８０に保存する際にソースコードを暗号化したり、暗号化された状態で外部記憶装置１８０に記憶されているソースコードを復号したりするものである。暗号化／復号部１２０がソースコードの暗号化及び復号に用いる鍵は、ＮＶＲＡＭ１５０に格納される。
【００３４】
入力部１６０は、情報処理装置１００に接続され、情報処理装置１００に対するユーザの入力操作を受け付けるものである。入力部１６０は、例えばキーボードやマウス、タッチパネル等で構成されていてもよい。また表示部１７０は、情報処理装置１００に接続され、情報処理装置１００のＣＰＵ１１０における情報処理結果を、ＣＰＵ１１０の処理に基づいて表示するものである。表示部１７０は、例えば液晶ディスプレイ、有機ＥＬディスプレイその他の平板表示装置で構成されていてもよい。
【００３５】
外部記憶装置１８０は、情報処理装置１００に接続され、情報処理装置１００に用いられる各種データは格納するものである。表示部１７０は、例えばハードディスクで構成されていてもよい。
【００３６】
本実施形態では、外部記憶装置１８０には、手続き型プログラミング言語を解釈して実行することができるスクリプト解釈実行モジュール（「リスト処理モジュール」とも称する）と、そのスクリプト解釈実行モジュールが読み込んで実行するソースコードが格納される。このソースコードは、暗号化／復号部１２０で暗号化された状態で格納される。暗号化／復号部１２０で暗号化された状態でソースコードが外部記憶装置１８０に記憶されることで、ソースコードの機密性を高めることが可能になる。
【００３７】
なお、図２では、ＮＶＲＡＭ１５０と、入力部１６０と、表示部１７０とは、情報処理装置１００の外部に設けられているように図示されているが、本開示はかかる例に限定されるものではない。すなわち、ＮＶＲＡＭ１５０、入力部１６０、表示部１７０の少なくともいずれかは情報処理装置１００の内部に設けられる構成を有していてもよい。以上、図２を用いて、本発明の一実施形態にかかる情報処理装置１００のハードウェア構成について説明した。次に、図２に示した情報処理装置１００で実行される、コンピュータプログラムの構造について説明する。
【００３８】
［２−２．プログラム構造例］
図３〜図６は、本発明の一実施形態にかかる情報処理装置１００で実行される、コンピュータプログラムの構造例を示す説明図である。以下、図３〜図６を用いて、本発明の一実施形態にかかる情報処理装置１００で実行される、コンピュータプログラムの構造例について説明する。
【００３９】
なお、以下においては、情報処理装置１００で実行されるコンピュータプログラムの言語として、特に断りが無ければＬＩＳＰを前提として説明するが、本開示においては、プログラミング言語として使用可能である言語はかかる例に限定されず、拡張機能または標準機能において、変数毎及び関数毎にそれぞれ独立してセキュリティが設定できるように構成することが可能な、手続き型のプログラミング言語であればいかなるものであっても良い。
【００４０】
ＣＰＵ１２０は、コンピュータプログラムの実行に際しては、情報処理装置１００で開発され、情報処理装置１００に組み込まれたプログラムのソースコードを解釈して実行するためのリスト処理モジュールをロードする。図３は、リスト処理モジュールが定義できる、シンボルと呼ぶデータ構造を示す説明図である。
【００４１】
図３に示したように、リスト処理モジュールが定義できるシンボル４００は、名前領域４０１と、変数定義領域４０２と、関数定義領域４０３と、セキュリティ属性領域４０４と、で構成される。
【００４２】
名前領域４０１は、印刷可能な文字デーブルを指し示すものである。名前領域４０１には、そのシンボルが変数を規定するものであればその変数名が格納され、関数を規定するものであればその関数名が格納されるものである。図３では、名前領域４０１を「ｐｎａｍｅ」で指し示している。
【００４３】
変数定義領域４０２は、そのシンボルが単純変数を規定するものであればその値を格納し、リスト変数を規定するものであればそのリストを指し示す値が格納されるものである。図３では、変数定義領域４０２を「ｖａｌｕｅ」で指し示している。
【００４４】
関数定義領域４０３は、そのシンボルが関数を規定するものであれば、その関数実態が格納されるものである。図３では、関数定義領域４０３を「ｆｕｎｃｔｉｏｎ」で指し示している。
【００４５】
セキュリティ属性領域４０４は、そのシンボルについてのセキュリティ属性に関する情報が格納されるものである。セキュリティ属性としては、例えば変数の読み出し属性、変数の変更属性、関数の実行属性がある。セキュリティ属性領域４０４には、そのシンボルへのアクセス権限を示すアクセスフラグと、そのシンボルへアクセスするための認証鍵を格納するテーブルを指し示す値とが格納される。
【００４６】
図３に示したシンボル４００に加えて、リスト構造を構成するためのコンスセルと呼ぶセルが連続的に定義されている。図４は、リスト構造を構成するためのコンスセル４１０の構成例を示す説明図である。コンスセル４１０は、図４に示したように、ＣＡＲスロット４１１およびＣＤＲスロット４１２と呼ばれる２つのポインタからなるオブジェクトである。図４では、ＣＡＲスロット４１１としてｃａｒ０〜ｃａｒ９、ＣＤＲスロット４１２としてｃｄｒ０〜ｃｄｒ９を示している。もちろん、それぞれのスロットの数はかかる例に限定されないことは言うまでもない。
【００４７】
シンボル４００の名前領域４０１に格納される名前を格納するためのテーブルも設けられる。図５はシンボル４００の名前領域４０１に格納される名前を格納するための名前格納テーブル４２０の構造例を示す説明図である。図５に示した名前格納テーブル４２０には、「ｅｖａｌ」、「ｓｅｔｑ」、「ｃｏｎｓ」、「ｄｅｆｕｎ」、「ｏｓａｉｆｕ」といった名称が格納されており、その実態であるシンボルと１対１に対応している。符号４２１は名称「ｅｖａｌ」が格納される領域であり、符号４２２は名称「ｓｅｔｑ」が格納される領域であり、符号４２３は名称「ｃｏｎｓ」が格納される領域であり、符号４２４は名称「ｄｅｆｕｎ」が格納される領域であり、符号４２５は名称「ｏｓａｉｆｕ」が格納される領域である。名前格納テーブル４２０の外部からシンボル名が名前格納テーブル４２０に対して入力されると、名前格納テーブル４２０に格納されているその入力されたシンボル名に対するシンボルが指し示されて評価される。なお、「ｏｓａｉｆｕ」は、情報処理装置１００に電子マネー機能を組み込む際にその電子マネーの残高を表す変数であるとする。
【００４８】
そして、シンボル４００のセキュリティ属性領域４０４に格納される、認証鍵を格納するテーブルを指し示す値に対応するテーブルも設けられる。図６は、認証鍵を格納する認証鍵テーブル４３０の構造例を示す説明図である。図６は、認証鍵テーブル４３０において、認証鍵がバージョン番号（ｋｖ１〜ｋｖ５）で管理されている状態を示すものである。符号４３１は鍵「ｋｅｙ１」が格納される領域であり、符号４３２は鍵「ｋｅｙ２」が格納される領域であり、符号４３３は鍵「ｋｅｙ３」が格納される領域であり、符号４３４は鍵「ｋｅｙ４」が格納される領域であり、符号４３５は鍵「ｋｅｙ５」が格納される領域である。
【００４９】
図７は、図３に示したシンボルと、図４に示したコンスセルと、図５に示した名前格納テーブルと、図６に示した認証鍵テーブルとの対応関係を示す説明図である。上述したように、シンボルは、印刷可能な名前のテーブルを指し示す領域と、値若しくは値のリストを指し示す領域と、関数属性と、セキュリティ属性とを持つ。関数属性は、関数のタイプ及びその関数の実態を指し示すポインタを持ち、セキュリティ属性は、セキュリティフラグと、鍵バージョンと、鍵を指し示すポインタとを持つ。なお、図７では、図６に示した認証鍵テーブル４３０において、符号４３１で示した鍵「ｋｅｙ１」及び符号４３２で示した鍵「ｋｅｙ２」が使用される様子が図示されている。
【００５０】
このように、リスト処理モジュールの一般的構造はシンボルと呼ばれ、数値若しくは数値を保持したリストへのポインタと、関数定義であれば関数へのポインタと、印刷可能な文字列を格納したテーブルを指し示すポインタと、で構成されている
【００５１】
そして本実施形態では、これに加えて、セキュリティ属性と２種類の暗号化鍵情報を保持するテーブルへのポインタをシンボルに付加している。一方の鍵へのポインタはマスター鍵を指し、もう一方の鍵へのポインタは、当該シンボルのアクセス鍵（認証鍵）を指している。マスター鍵は当該シンボルのセキュリティ属性やアクセス鍵を変更する場合に、前もって相互認証機能により認証されているべき鍵を指している。シンボルに保持した情報の内容評価、内容変更、関数実行においてそのシンボルに設定されたセキュリティフラグが立っている場合は、シンボルに付加された一方の鍵で認証してあることがそのシンボル利用の条件となる。もう一方の鍵は、当該シンボルの鍵を変更する場合に、その権限を確認する権限認証鍵を示している。アクセス情報の変更には、その権限認証鍵で認証された状態でなければならない。
【００５２】
また、図４に示したような、コンスセルと呼ばれる、シンボルとシンボルの関係を表す２組のポインタがあり。それぞれのポインタは、シンボル又は他のシンボルを指すコンスセルを指し示す構造となっている。
【００５３】
組み込み関数はＲＯＭ１３０に書き込まれており、情報処理装置１００の最初の電源投入で、ＲＯＭ１３０に書き込まれている組み込み関数を、ＲＡＭ１４０に作成したシンボルに定義する。その後の電源投入では、既に登録済みのシンボルは初期化されない。
【００５４】
上記の構成は、ユーザにより新たな関数が登録される場合においても、同様に機能する構造となっている。
【００５５】
ＣＰＵ１１０が実行するリスト処理モジュールは、シンボルを自由に登録し、そのシンボルに数値やリスト、関数を自由に登録できる構成となっている。そして、登録されるシンボルにセキュリティ機能を生かすために、そのシンボルに暗号鍵とアクセスフラグを登録しておく。ＣＰＵ１１０が実行するリスト処理モジュールには、システム鍵と呼ぶ暗号化鍵が最初に設定されている。そのシステム鍵で相互認証されたモードになっている状態（以下の説明のモード２に該当する状態）でのみ、新たに登録されたシンボルは、そのシンボル独自の鍵とアクセスフラグが設定されることができる。また、ＣＰＵ１１０が実行するリスト処理モジュールで実行されるコンピュータプログラムは、システム鍵で相互認証されたモードになっている状態に限り、使用される変数や関数の定義を変更可能な構成となっている。
【００５６】
ＣＰＵ１１０が実行するリスト処理モジュールは、関数シンボルの登録に際しては、その関数で利用するシンボルの全ての鍵で認証済みであることが登録条件となっている。そしてその後、リスト処理モジュールは、その登録された関数を利用する場合は、単にその関数実行鍵で認証されていれば良い構造になっている。
【００５７】
以上、図２に示した情報処理装置１００で実行される、コンピュータプログラムの構造について説明した。次に、情報処理装置１００のＣＰＵ１１０の機能構成について説明する。
【００５８】
図８は、情報処理装置１００に含まれるＣＰＵ１１０の機能構成を示す説明図である。以下、図８を用いてＣＰＵ１１０の機能構成について説明する。
【００５９】
図８に示したように、ＣＰＵ１１０は、プログラム実行部１１２と、バックアップ部１１４と、リストア部１１６と、を含んで構成される。本開示の一実施形態にかかるＣＰＵ１１０は、例えば、ＣＰＵ１１０は、ＲＯＭ１３０に格納されているコンピュータプログラムを読みだして実行することで、図８に示したような機能構成を有することができる。
【００６０】
プログラム実行部１１２は、手続き型言語により作成されたコンピュータプログラムのコードを解釈して実行する。本実施形態では、プログラム実行部１１２は、上述したリスト処理モジュールの機能を備えており、外部記憶装置１８０に記憶されたソースコードを読み込んで、そのソースコードを解釈することで、ソースコードに記述された内容を実行することができる。
【００６１】
バックアップ部１１４は、プログラム実行部１１２が実行中のコンピュータプログラムの変数定義及び関数定義を、上記手続き型言語によるコードとして解釈可能な形式で外部記憶装置１８０にバックアップする。Ｌｉｓｐ系統のスクリプト言語であるＳｃｈｅｍｅにおいて、例えば、変数の値を定義する「ｄｅｆｉｎｅ」を用いて（ｄｅｆｉｎｅ  ａ  １２３）というＳ式で変数ａの値を定義した場合、バックアップ部１１４は、この変数ａの変数定義を（ｄｅｆｉｎｅ  ａ  １２３）というＳ式でバックアップする。また例えば、（ｄｅｆｉｎｅ  （ａｄｄ３  ｘ）（＋  ｘ  ３））いうＳ式で関数「ａｄｄ３」を定義した場合、バックアップ部１１４は、この関数「ａｄｄ３」の関数定義を、（ｄｅｆｉｎｅ  （ａｄｄ３  ｘ）（＋  ｘ  ３））というＳ式でバックアップする。なお、バックアップ部１１４は、コンピュータプログラムの変数定義及び関数定義のバックアップに際し、暗号化／復号部１２０を用いて暗号化してもよい。
【００６２】
リストア部１１６は、バックアップ部１１４がバックアップしたデータを読み込んでリストアする。バックアップ部１１４が、コンピュータプログラムの変数定義及び関数定義のバックアップに際し、暗号化／復号部１２０を用いて暗号化していた場合は、リストア部１１６は、暗号化／復号部１２０を用いて、読み込んだデータを復号してリストアしてもよい。
【００６３】
このような構成を有することで、ＣＰＵ１１０は、手続き型言語により作成されたコンピュータプログラムのコードを解釈して実行するとともに、実行中のコードの変数定義及び関数定義を、その手続き型言語がそのまま解釈できる形式でバックアップすることができる。かかる構成を有することにより、従来のコンピュータプログラムの開発ステップと比較して、情報処理装置１００における手続き型言語によるコンピュータプログラムの開発ステップを削減することができる。以上、情報処理装置１００のＣＰＵ１１０の機能構成について説明した。次に、図２に示した情報処理装置１００の動作について説明する。
【００６４】
［２−３．情報処理装置の動作］
図１０は、本開示の一実施形態にかかる情報処理装置１００の動作を示す流れ図である。図１０に示した流れ図は、情報処理装置１００の電源が投入され、情報処理装置１００でリスト処理モジュールが実行される場合の情報処理装置１００の動作について示したものである。以下、図１０を用いて本開示の一実施形態にかかる情報処理装置１００の動作について説明する。
【００６５】
情報処理装置１００の電源が投入されると、ＣＰＵ１１０のプログラム実行部１１２が、スクリプト解釈実行モジュールを、ＲＯＭ１３０から読み込む（ステップＳ１０１）。ステップＳ１０１において、スクリプト解釈実行モジュールがＣＰＵ１１０のプログラム実行部１１２によってＲＯＭ１３０から読み込まれると、続いてＣＰＵ１１０のプログラム実行部１１２は、ソースコードのバックアップデータが外部記憶装置１８０に存在するかどうかを確認する（ステップＳ１０２）。
【００６６】
上記ステップＳ１０２の判断の結果、ソースコードのバックアップデータが外部記憶装置１８０に存在していれば、スクリプト解釈実行モジュールを読み込んだＣＰＵ１１０のプログラム実行部１１２は、ソースコードのバックアップデータを外部記憶装置１８０から読み込む（ステップＳ１０３）。ソースコードのバックアップデータが、ＮＶＲＡＭ１５０に格納されている鍵で暗号化されている場合は、スクリプト解釈実行モジュールを読み込んだＣＰＵ１１０は、バックアップデータを、そのＮＶＲＡＭ１５０に格納されている鍵を用いてリストア部１１６で復号して、プログラム実行部１１２でスクリプト言語として読み込む（ステップＳ１０３）。バックアップデータをスクリプト言語として読み込んだスクリプト解釈実行モジュールは、表示部１７０に入力待ち記号を出力し、ソースコードの編集者からの入力待ち状態となる。
【００６７】
スクリプト解釈実行モジュールは、外部記憶装置１８０から読み込んだソースコードを読み込むことで、ソースコードに記述された変数や関数の定義、及び変数や関数に規定された鍵の情報を読み込んで、プログラムを実行することが出来る。
【００６８】
上記ステップＳ１０３でソースコードのバックアップデータが外部記憶装置１８０から読み込まれた後は、ソースコードの編集者によってソースコードの変更が行われてもよい（ステップＳ１０４）。ソースコードの編集者によって、入力部１６０から入力されたスクリプト言語は、インタプリタがそのまま解釈できる外部記述形式から、インタプリタで解釈された後にスクリプト解釈実行モジュールが解釈できる内部記述形式に解釈されてＲＡＭ１４０に記録される。なお、上記ステップＳ１０２の判断の結果、ソースコードのバックアップデータが外部記憶装置１８０に存在していなければ、ソースコードの編集者によってソースコードが新規に作成される（ステップＳ１０４）。
【００６９】
その後は、ソースコードの編集者によって、ＲＥＡＤ−ＥＶＡＬ−ＰＲＩＮＴループによるプログラムの実行が、情報処理装置１００を用いて行われる（ステップＳ１０５）。
【００７０】
ソースコードの編集者によるプログラム作成が行われている際に、スクリプト解釈実行モジュールを読み込んだＣＰＵ１１０のプログラム実行部１１２は、ソースコードの編集者からバックアップ指示があるかどうかを常に判断する（ステップＳ１０６）。このバックアップ指示は、例えば、ソースコードの編集者が入力部１６０を操作してバックアップ用のコマンドを入力することによってなされるようにしてもよい。
【００７１】
ソースコードの編集者からバックアップ指示があれば、スクリプト解釈実行モジュールを読み込んだＣＰＵ１１０のバックアップ部１１４は、図３から図６に示した、Ｓｙｍｂｏｌテーブル、Ｃｏｄｅテーブル、名前テーブル、鍵テーブルの内容を、スクリプト解釈実行モジュールに読み込ませた時と同様の記述形式に逆変換する。バックアップ部１１４は、逆変換したデータを、ＮＶＲＡＭ１５０に格納されている鍵で暗号化して暗号化されたバックアップデータとして出力し、外部記憶装置１８０に格納する（ステップＳ１０７）。
【００７２】
ここで、本実施形態のバックアップ部１１４によるソースコードのバックアップの一例を示す。Ｌｉｓｐ系統のスクリプト言語であるＳｃｈｅｍｅにおいて、例えば関数定義のためのＳ式を、（ｄｅｆｉｎｅ  （ａｄｄ３  ｘ）（＋  ｘ  ３））とした場合、内部表現は図１０Ａに示したような構造となる。従って、バックアップ部１１４は、この関数「ａｄｄ３」をバックアップする際には、図１０Ａに示した内部表現に基づいて、関数定義が上記のＳ式（ｄｅｆｉｎｅ  （ａｄｄ３  ｘ）（＋  ｘ  ３））と一致するようバックアップする。
【００７３】
また例えば、変数定義のためのＳ式を、（ｄｅｆｉｎｅ  ａ  １２３）とした場合、内部表現は図１０Ｂに示したような構造となる。ここで、この変数「ａ」の変数値を変更する場合を考える。例えば、変数「ａ」の変数値を変更するためのＳ式が（ｓｅｔ！  ａ  ２３４）と情報処理装置１００に入力されると、変数「ａ」の値は「２３４」に変更され、また内部表現は図１０Ｃに示したような構造となる。
【００７４】
ここで、バックアップ部１１４が変数「ａ」の定義に逆変換すると、図１０Ｃに示した内部表現に基づいて、（ｄｅｆｉｎｅ  ａ  ２３４）というＳ式が得られることになる。このように、バックアップ部１１４は、バックアップの際に、バックアップ時点での変数の値から変数定義のためのＳ式を取得することができる。これは、上述した関数定義のバックアップについても同様であり、スクリプト解釈実行モジュールに関数定義が読み込まれた後、編集者によって関数定義が変更されると、バックアップ部１１４は、その変更された状態での、関数定義のためのＳ式を取得することができる。
【００７５】
このように、ソースコードの編集者からバックアップ指示を受けて、指示を受けた状態をバックアップすることで、例えばシステムを一旦停止させて、その後システムを再起動する場合に、システムの起動回復が用意となる。また、プログラムのソースコードを知りたければ、Ｓｃｈｅｍｅ等に組み込まれた関数（ｒｅａｄ−ｃｌｏｓｕｒｅ−ｃｏｄｅ）またはバックアップのための関数で読み出すことが可能なため、情報処理装置１００の内部にソースコードを保持する必要も無く、またソースコードの管理も不要となる。
【００７６】
図１１は、本開示の一実施形態にかかる情報処理装置１００によるプログラム開発モデルを示す説明図である。本開示の一実施形態にかかる情報処理装置１００では、ＣＰＵ１１０のプログラム実行部１１２によって読み込まれて実行されるスクリプト解釈実行モジュールが、外部記憶装置１８０に記憶されているソースコードのバックアップデータを、起動時に読み込み、そのバックアップデータが暗号化されていれば所定の鍵を用いて復号する。ソースコードの編集者は、プログラムのソースコードや関数の実行指令を、入力部１６０を用いて入力し、スクリプト解釈実行モジュールは、その結果を表示部１７０に出力する。
【００７７】
そして、ソースコードの編集者が、入力部１６０を用いてバックアップ指示を入力すると、スクリプト解釈実行モジュールは、バックアップ指示があった時点の状態を、スクリプト解釈実行モジュールに読み込ませた時と同様の記述に逆変換することでバックアップする。バックアップに際しては、ＣＰＵ１１０のバックアップ部１１４は、所定の鍵を用いて暗号化してもよい。
【００７８】
このように、プログラムのバックアップ機能をスクリプト解釈実行モジュールに用意することで、逐次追記型のプログラム開発が可能となる。これにより、たとえシステムの規模が大きくなったとしても、安全に、かつ、プログラムを成長させ利用できるスクリプト実行処理環境を提供できる。このような逐次追記型のプログラム開発モデルは、図１に示した従来のプログラム開発モデルに比べて作業工程が大きく削減されていることが分かる。
【００７９】
バックアップされたデータはそのままスクリプト解釈実行モジュールが通常のスクリプトを受け付けるのと同様なフォーマットで記述されている。従って、バックアップデータの読み込みに新たなインタフェースを要しない。また、一度読み込んだスクリプト言語プログラムは、暗号化され署名付きで出力されるので、改ざんを検出でき、さらに内部テータの暴露から保護できる。
【００８０】
本開示者が特願２０１１−０２７６２５において開示した技術では、変数や関数にセキュリティフラグが設定された状態まで設定する場合は、それぞれの鍵で認証することが必要となり、単純にスクリプトプログラムを読み込ませるだけでは元の状態にはならない。一方、本開示の一実施形態で示されたリストア方法では、暗号鍵設定に毎回認証を必要としないので、システムの再立ち上げが容易となる。
【００８１】
スクリプト言語のプログラムは、ファイルから読み込まれた後、入力部１６０を用いての変更や、動作中のプログラムによりに変数値や関数コードが変化することがある。本開示では、バックアップ指示により、その変化した内容を、スクリプト解釈実行モジュールに読み込ませた時と同様の記述形式でバックアップして、最終形態のソースコードが入手可能となる。
【００８２】
暗号化されバックアップデータとして保存されたデータはスクリプト解釈実行モジュールと暗号化部により復号され関数と変数値や秘密鍵がリストアされるので、初めからスクリプト言語を読み込み、更に変数値の再設定、暗号鍵の再設定が必要なく、システムの再起動が高速となる。
【００８３】
［２−４．変形例］
上述してきた説明では、情報処理装置１００で実行されるスクリプト解釈実行モジュールが読み込むスクリプトのバックアップデータが、情報処理装置１００に接続された外部記憶装置１８０に格納されるものとして説明してきた。しかし、スクリプトのバックアップデータの格納はかかる例に限定されない。
【００８４】
図１２は、本開示の一実施形態の変形例にかかる情報処理システム１０’の構成を示す説明図である。図１２に示した情報処理システム１０’は、図２に示した情報処理システム１０とは異なり、スクリプトのバックアップデータを格納する外部記憶装置２００が、情報処理装置１００と、ネットワーク１９０を介して接続されている。このように、スクリプトのバックアップデータを格納する外部記憶装置２００を、ネットワーク１９０を介して情報処理装置１００に接続した状態であっても、同様に、スクリプトのバックアップデータの外部記憶装置２００への格納、及びスクリプトのバックアップデータの外部記憶装置２００からの読み込みが可能である。
【００８５】
他の変形例について説明する。手続き型言語で作成されたスクリプトによるプログラムを、情報処理装置１００に一旦読み込ませると、その後はＣＰＵ１１０により、情報処理装置１００に接続されたハードディスクなどの外部記憶装置１８０に保存することで、バックアップデータを自動的に読み込むことができるから、キーボードまたはネットワークからのプログラムの再読み込みが必要無いという特徴を持っている。
【００８６】
一方で、一度組み込んだ関数や変数を、情報処理装置１００または外部記憶装置１８０に保存したバックアップファイルをから削除するには、そのファイルを入手し編集する等の手段を用いないと削除が出来なくなる。特に、情報処理装置１００が有する独自の秘密鍵でバックアップファイルが暗号化されてしまうと、その秘密鍵で復号しない限り、ファイルを入手し編集する等の手段による削除もできなくなってしまう。
【００８７】
スクリプトプログラムを変更し続けると使わなくなった変数や関数名が出てくるが、使わなくなった変数や関数は内部リソースを消費するだけでなく、まだ使っているのか、もう使われなくなっているのかが分かりづらくなってしまう。
【００８８】
そこで、情報処理装置１００で実行されるスクリプト解釈実行モジュールに削除コマンドを組み込み、ユーザは、その削除コマンドを実行することで、不要になった変数や関数は削除できるようにしてもよい。これによりスクリプトプログラムの編集がより容易になる。
【００８９】
［２−５．情報処理装置のハードウェア構成］
次に、図１３を参照しながら、本開示の一実施形態に係る情報処理装置１００のハードウェア構成について、詳細に説明する。図１３は、本開示の一実施形態に係る情報処理装置１００のハードウェア構成を説明するためのブロック図である。
【００９０】
情報処理装置１００は、主に、ＣＰＵ９０１と、ＲＯＭ９０３と、ＲＡＭ９０５と、ホストバス９０７と、ブリッジ９０９と、外部バス９１１と、インタフェース９１３と、入力装置９１５と、出力装置９１７と、撮像装置９１８と、ストレージ装置９１９と、ドライブ９２１と、接続ポート９２３と、通信装置９２５とを備える。
【００９１】
ＣＰＵ９０１は、演算処理装置および制御装置として機能し、ＲＯＭ９０３、ＲＡＭ９０５、ストレージ装置９１９、またはリムーバブル記録媒体９２７に記録された各種プログラムに従って、情報処理装置１００内の動作全般またはその一部を制御する。ＲＯＭ９０３は、ＣＰＵ９０１が使用するプログラムや演算パラメータ等を記憶する。ＲＡＭ９０５は、ＣＰＵ９０１の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を一次記憶する。これらはＣＰＵバス等の内部バスにより構成されるホストバス９０７により相互に接続されている。
【００９２】
ホストバス９０７は、ブリッジ９０９を介して、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ／Ｉｎｔｅｒｆａｃｅ）バスなどの外部バス９１１に接続されている。
【００９３】
入力装置９１５は、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチおよびレバーなどユーザが操作する操作手段である。また、入力装置９１５は、例えば、赤外線やその他の電波を利用したリモートコントロール手段（いわゆる、リモコン）であってもよいし、情報処理装置１００の操作に対応した携帯電話やＰＤＡ等の外部接続機器９２９であってもよい。さらに、入力装置９１５は、例えば、上記の操作手段を用いてユーザにより入力された情報に基づいて入力信号を生成し、ＣＰＵ９０１に出力する入力制御回路などから構成されている。情報処理装置１００のユーザは、この入力装置９１５を操作することにより、情報処理装置１００に対して各種のデータを入力したり処理動作を指示したりすることができる。
【００９４】
出力装置９１７は、例えば、ＣＲＴディスプレイ装置、液晶ディスプレイ装置、プラズマディスプレイ装置、ＥＬディスプレイ装置およびランプなどの表示装置や、スピーカおよびヘッドホンなどの音声出力装置や、プリンタ装置、携帯電話、ファクシミリなど、取得した情報をユーザに対して視覚的または聴覚的に通知することが可能な装置で構成される。出力装置９１７は、例えば、情報処理装置１００が行った各種処理により得られた結果を出力する。具体的には、表示装置は、情報処理装置１００が行った各種処理により得られた結果を、テキストまたはイメージで表示する。他方、音声出力装置は、再生された音声データや音響データ等からなるオーディオ信号をアナログ信号に変換して出力する。
【００９５】
撮像装置９１８は、例えばディスプレイ装置の上部に設けられており、情報処理装置１００のユーザの静止画像または動画像を撮影することが出来る。撮像装置９１８は、例えばＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）イメージセンサまたはＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）イメージセンサを備えており、レンズで集光した光を電気信号に変換することで静止画像または動画像を撮影することができる。
【００９６】
ストレージ装置９１９は、情報処理装置１００の記憶部の一例として構成されたデータ格納用の装置であり、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等の磁気記憶部デバイス、半導体記憶デバイス、光記憶デバイス、または光磁気記憶デバイス等により構成される。このストレージ装置９１９は、ＣＰＵ９０１が実行するプログラムや各種データ、および外部から取得した音響信号データや画像信号データなどを格納する。
【００９７】
ドライブ９２１は、記録媒体用リーダライタであり、情報処理装置１００に内蔵、あるいは外付けされる。ドライブ９２１は、装着されている磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリ等のリムーバブル記録媒体９２７に記録されている情報を読み出して、ＲＡＭ９０５に出力する。また、ドライブ９２１は、装着されている磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリ等のリムーバブル記録媒体９２７に記録を書き込むことも可能である。リムーバブル記録媒体９２７は、例えば、ＤＶＤメディア、Ｂｌｕ−ｒａｙメディア、コンパクトフラッシュ（登録商標）（ＣｏｍｐａｃｔＦｌａｓｈ：ＣＦ）、メモリースティック、または、ＳＤメモリカード（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ  ｍｅｍｏｒｙ  ｃａｒｄ）等である。また、リムーバブル記録媒体９２７は、例えば、非接触型ＩＣチップを搭載したＩＣカード（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ  ｃａｒｄ）または電子機器等であってもよい。
【００９８】
接続ポート９２３は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポート、ｉ．Ｌｉｎｋ等のＩＥＥＥ１３９４ポート、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）ポート、ＲＳ−２３２Ｃポート、光オーディオ端子、ＨＤＭＩ（Ｈｉｇｈ−Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）ポート等の、機器を情報処理装置１００に直接接続するためのポートである。この接続ポート９２３に外部接続機器９２９を接続することで、情報処理装置１００は、外部接続機器９２９から直接音響信号データや画像信号データを取得したり、外部接続機器９２９に音響信号データや画像信号データを提供したりする。
【００９９】
通信装置９２５は、例えば、通信網９３１に接続するための通信デバイス等で構成された通信インタフェースである。通信装置９２５は、例えば、有線または無線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、Ｂｌｕｅｔｏｏｔｈ、またはＷＵＳＢ（Ｗｉｒｅｌｅｓｓ  ＵＳＢ）用の通信カード、光通信用のルータ、ＡＤＳＬ（Ａｓｙｍｍｅｔｒｉｃ  Ｄｉｇｉｔａｌ  Ｓｕｂｓｃｒｉｂｅｒ  Ｌｉｎｅ）用のルータ、または、各種通信用のモデム等である。この通信装置９２５は、例えば、インターネットや他の通信機器との間で、例えばＴＣＰ／ＩＰ等の所定のプロトコルに則して信号等を送受信することができる。また、通信装置９２５に接続される通信網９３１は、有線または無線によって接続されたネットワーク等により構成され、例えば、インターネット、家庭内ＬＡＮ、赤外線通信、ラジオ波通信または衛星通信等であってもよい。
【０１００】
＜３．まとめ＞
以上説明したように本開示の一実施形態によれば、手続き型プログラミング言語を解釈して実行することができる情報処理装置１００は、ユーザ（ソースコードの編集者）によるバックアップ指示に基づいて、バックアップ指示があった時点の状態を、スクリプト解釈実行モジュールに読み込ませた時と同様の記述に逆変換することで、情報処理装置１００に接続された外部記憶装置１８０（または情報処理装置１００とネットワーク１９０を介して接続された外部記憶装置２００）にバックアップする。バックアップ指示があった時点の状態をバックアップするに際しては、ＮＶＲＡＭ１５０に格納された鍵を用いて暗号化することができる。
【０１０１】
また、情報処理装置１００に接続された外部記憶装置１８０（または情報処理装置１００とネットワーク１９０を介して接続された外部記憶装置２００）にバックアップしたデータは、情報処理装置１００の起動時に、スクリプト解釈実行モジュールが読み込んでリストアする。リストアに際しては、本開示者が特願２０１１−０２７６２５において開示した技術のような、変数や関数にセキュリティフラグが設定された状態での鍵による認証が不要なので、単純にスクリプトプログラムを読み込ませるだけで、元の状態に戻すことが出来る。
【０１０２】
また、上記の実施形態のフローチャートに示されたステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的に又は個別的に実行される処理をも含む。また時系列的に処理されるステップでも、場合によっては適宜順序を変更することが可能であることは言うまでもない。
【０１０３】
また、明細書中において説明した一連の処理は、ハードウェア、またはソフトウェア、あるいはハードウェアとソフトウェアとの複合構成によって実行するようにしてもよい。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータのメモリにインストールして実行させるか、または、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させるようにしてもよい。
【０１０４】
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示はかかる例に限定されない。本開示の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【０１０５】
なお、本技術は以下のような構成も取ることができる。
（１）
手続き型言語により作成されたコンピュータプログラムのコードを読み込み、解釈して実行するプログラム実行部と、
前記プログラム実行部が実行中の前記コードにおける変数定義及び関数定義を、前記手続き型言語によるコードとして解釈可能な形式でバックアップを作成するバックアップ部と、
を備える、情報処理装置。
（２）
耐タンパ機構で保護された鍵を保持する鍵保持部と、
前記鍵を用いて暗号化及び復号を行う暗号復号部と、
を備え、
前記バックアップ部は、前記プログラム実行部が、バックアップの時点で定義された変数及びプログラムにより変更された該変数が持つ値、関数定義、及び前記プログラム実行部に設定され該前記プログラム実行部が保持している情報を前記暗号復号部で暗号化してバックアップを作成する、前記（１）に記載の情報処理装置。
（３）
前記バックアップ部が作成したバックアップを読み込み、前記暗号復号部を用いて読み込んだバックアップを復号してリストアするリストア部を備える、前記（２）に記載の情報処理装置。
（４）
前記プログラム実行部は、前記バックアップ部が前記バックアップの存在を確認し、存在していれば該バックアップを読み込む、前記（３）に記載の情報処理装置。
（５）
前記プログラム実行部は、読み込んだ前記コードの変数定義または関数定義を削除する、前記（１）から（４）のいずれかに記載の情報処理装置。
（６）
手続き型言語により作成されたコンピュータプログラムのコードを解釈して実行するプログラム実行ステップと、
前記プログラム実行ステップが実行中の前記コードにおける変数定義及び関数定義を、前記手続き型言語によるコードとして解釈可能な形式でバックアップを作成するバックアップステップと、
を備える、情報処理方法。
（７）
コンピュータに、
手続き型言語により作成されたコンピュータプログラムのコードを解釈して実行するプログラム実行ステップと、
前記プログラム実行ステップが実行中の前記コードにおける変数定義及び関数定義を、前記手続き型言語によるコードとして解釈可能な形式でバックアップを作成するバックアップステップと、
を実行させる、コンピュータプログラム。
【符号の説明】
【０１０６】
１０    情報処理システム
１００    情報処理装置
１１０    ＣＰＵ
１１２    プログラム実行部
１１４    バックアップ部
１１６    リストア部
１２０    暗号化／復号部
１３０    ＲＯＭ
１４０    ＲＡＭ
１５０    ＮＶＲＡＭ
１６０    入力部
１７０    表示部
１８０、２００    外部記憶装置
【図１】
0005772316.tif 000002
【図２】
0005772316.tif 000003
【図３】
0005772316.tif 000004
【図４】
0005772316.tif 000005
【図５】
0005772316.tif 000006
【図６】
0005772316.tif 000007
【図７】
0005772316.tif 000008
【図８】
0005772316.tif 000009
【図９】
0005772316.tif 000010
【図１０Ａ】
0005772316.tif 000011
【図１０Ｂ】
0005772316.tif 000012
【図１０Ｃ】
0005772316.tif 000013
【図１１】
0005772316.tif 000014
【図１２】
0005772316.tif 000015
【図１３】
0005772316.tif 000016