(57)【特許請求の範囲】
【請求項１】
プログラムであって、
前記プログラムに対する動作を行う第１のプログラムをメモリマップトファイルとして生成する第１の機能と、
前記メモリマップトファイルとして生成された前記第１のプログラムを実行させる第２の機能と、
をコンピュータに実現させるためのプログラム。
【請求項２】
前記第２の機能は、前記第１のプログラムを実行するローダープログラムを生成し、生成された前記ローダープログラムにより前記第１のプログラムを実行させる、
請求項１に記載のプログラム。
【請求項３】
前記第１のプログラムにより、前記ローダープログラムをオペレーティングシステムにより削除する指示を登録する、
請求項２に記載のプログラム。
【請求項４】
前記第１のプログラムにより、前記プログラムに対する動作として、前記プログラムを削除する動作を行う、
請求項１から請求項３のいずれか１項に記載のプログラム。
【請求項５】
前記第１のプログラムにより、前記プログラムに対する動作として、前記プログラムを改変する動作を行う、
請求項１から請求項３のいずれか１項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムに関する。
【背景技術】
【０００２】
例えば、他のプログラムに関する処理を実行する再配置プログラムが知られている（特許文献１参照。）。当該再配置プログラムは、高速メモリに配置された第１のプログラムと低速メモリに配置された第２のプログラムに対して配置を入れ替える処理を実行する（特許文献１の請求項１参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−１９４８５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来のプログラムでは、自己のプログラム（以下で、「自プログラム」ともいう。）に対する処理を実行するプログラムを生成する場合、当該プログラムが残存する場合があった。
【０００５】
本発明の実施形態は、このような事情に鑑み、自プログラムに対する処理を実行するプログラムを残存させないことができるプログラムを提供する。
【課題を解決するための手段】
【０００６】
本発明の実施形態に係るプログラムは、プログラムであって、前記プログラムに対する動作を行う第１のプログラムをメモリマップトファイルとして生成する第１の機能と、前記メモリマップトファイルとして生成された前記第１のプログラムを実行させる第２の機能と、をコンピュータに実現させるためのプログラムである。
【０００７】
本発明の一態様に係るプログラムにおいて、前記第２の機能は、前記第１のプログラムを実行するローダープログラムを生成し、生成された前記ローダープログラムにより前記第１のプログラムを実行させる、構成が用いられてもよい。
【０００８】
本発明の一態様に係るプログラムにおいて、前記第１のプログラムにより、前記ローダープログラムをオペレーティングシステムにより削除する指示を登録する、構成が用いられてもよい。
【０００９】
本発明の一態様に係るプログラムにおいて、前記第１のプログラムにより、前記プログラムに対する動作として、前記プログラムを削除する動作を行う、構成が用いられてもよい。
【００１０】
本発明の一態様に係るプログラムにおいて、前記第１のプログラムにより、前記プログラムに対する動作として、前記プログラムを改変する動作を行う、構成が用いられてもよい。
【発明の効果】
【００１１】
上記したプログラムによれば、自プログラムに対する処理を実行するプログラムを残存させないことができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態に係る情報処理システムの概略的な構成例を示す図である。
【図２】本発明の一実施形態に係る端末装置の概略的な構成例を示す図である。
【図３】本発明の一実施形態に係るプログラムの概略的なイメージを示す図である。
【図４】本発明の一実施形態に係るプログラムを用いて行われる処理の手順の一例を示すフローチャートである。
【図５】本発明の一実施形態に係るローダープログラムを用いて行われる処理の手順の一例を示すフローチャートである。
【図６】本発明の一実施形態に係る自己処理プログラムを用いて行われる処理の手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
本発明の実施形態について図面を参照して詳細に説明する。
【００１４】
［情報処理システムの構成例の説明］
図１は、本発明の一実施形態に係る情報処理システム１１の概略的な構成例を示す図である。
情報処理システム１１は、複数の端末装置２１〜２５と、ネットワーク３１を備える。各端末装置２１〜２５は、ネットワーク３１に接続されている。
各端末装置２１〜２５は、コンピュータなどである。
ネットワーク３１は、インターネットなどである。
【００１５】
ここで、図１の例では、複数の端末装置２１〜２５として、５個の端末装置２１〜２５を示したが、端末装置の数は任意であってもよい。
また、図１の例では、１個のネットワーク３１を示したが、ネットワークの数は任意であってもよい。
また、情報処理システム１１の構成は、他の構成であってもよい。
また、本実施形態では、端末装置２１〜２５がネットワーク３１に接続される例を示すが、他の構成例として、端末装置２１〜２５がネットワーク３１に接続されなくてもよい。
【００１６】
［端末装置の構成例の説明］
図２は、本発明の一実施形態に係る端末装置２１の概略的な構成例を示す図である。
ここで、本実施形態では、各端末装置２１〜２５について、概略的な構成は同様である。このため、本実施形態では、端末装置２１を例として、構成例および動作例を示す。
端末装置２１は、プロセッサ１０１と、メモリ１０２と、ネットワークインターフェイス１０３と、操作部１０４と、表示部１０５と、記憶装置１０６と、入出力インターフェイス１０７と、これらを接続するバス１１１を備える。
【００１７】
プロセッサ１０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などから構成されており、プログラムを実行することで、当該プログラムに規定された処理を実行する。
メモリ１０２は、揮発性の記憶部であり、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などから構成されており、データを一時的に記憶する。ＲＡＭとしては、例えば、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）が用いられてもよい。
ネットワークインターフェイス１０３は、外部のネットワーク（本実施形態では、ネットワーク３１）と接続するインターフェイスである。
操作部１０４は、キーボード、マウスなどのうちの１以上から構成されており、人（ユーザ）により行われる操作を受け付ける。
表示部１０５は、画面を有しており、情報を当該画面に表示出力する。
記憶装置１０６は、不揮発性の記憶部であり、例えば、ハードディスクなどから構成されており、データを記憶する。
入出力インターフェイス１０７は、外部の記録媒体などと接続するインターフェイスである。
【００１８】
［実施形態に係るプログラムの説明］
本実施形態に係るプログラム（以下で、「本プログラム」ともいう。）について説明する。
本プログラムは、物理的なファイルとして実行対象のプログラム（以下で、「自己処理プログラム」ともいう。）を出力することなく、コードを実行する。
本実施形態では、自己処理プログラムとして、自己のプログラム（本プログラム）を削除する機能を有するプログラム（削除用プログラム）が用いられる場合を示す。そして、削除用プログラムを残さずに、本プログラムの削除を実行する。
【００１９】
図３は、本発明の一実施形態に係るプログラム（本プログラム２０１）の概略的なイメージを示す図である。
本プログラム２０１により行われる概略的な処理のイメージ（１）〜（５）を示す。
（１）本プログラム２０１は、ローダープログラム２１１を生成する。ここで、本プログラム２０１およびローダープログラム２１１は、それぞれ、通常のファイルとして存在する。
（２）本プログラム２０１は、メモリマップトファイルとして自己処理プログラム２２１を生成する。本実施形態では、メモリ１０２を用いてメモリマップトファイルが生成される。
（３）ローダープログラム２１１は、自己処理プログラム２２１を実行する。
（４）自己処理プログラム２２１は、本プログラム２０１に対して定められた処理を実行する。本実施形態では、当該処理として、本プログラム２０１を削除する処理が用いられている。
（５）自己処理プログラム２２１は、ローダープログラム２１１を削除する指示を登録する。
なお、ローダープログラム２１１の生成処理のタイミングと、自己処理プログラム２２１の生成処理のタイミングとしては、順序が逆であってもよく、または、同時（または、略同時）であってもよい。
【００２０】
ここで、メモリマップトファイルは、メモリ上にデータを格納して、プロセス間で共有することができる仕組みである。メモリマップトファイルでは、物理ファイルと連動（マッピング）することも可能であり、また、物理ファイルと連動しないことも可能である。本実施形態では、メモリマップトファイルについて、物理ファイルと連動しない使い方をする。
なお、メモリマップトファイルについては、例えば、一般に知られた技術が用いられてもよい。
【００２１】
以下で、本プログラム２０１について、さらに説明する。
まず、本プログラム２０１の作成時の処理について説明する。
必要な自己処理を行うプログラム（自己処理プログラム２２１）を作成する。自己処理プログラム２２１は、本実施形態では、本プログラム２０１（自己処理の呼び出し元となるプログラムである命令実行プログラム）の削除および関連ファイルの削除を実行する機能を有する。
本実施形態では、自己処理プログラム２２１は、本プログラム２０１の削除の用途で使用されることから、本プログラム２０１のプロセスが終了するまでは本プログラム２０１のファイルを削除することができないため、本プログラム２０１の削除に失敗した場合には一定の時間間隔でリトライし続ける機能を有する。
【００２２】
また、ローダープログラム２１１を作成する。ローダープログラム２１１は、メモリマップトファイルからデータを読み込み、必要に応じて所定の復元用の変換を実行し、当該変換の後のバイナリ値をプログラムとしてメモリ上から実行するプログラムである。
そして、本プログラム２０１のビルド時に、自己処理プログラム２２１およびローダープログラム２１１のバイナリ値をリソースとして埋め込む。
【００２３】
ここで、当該リソースとして自己処理プログラム２２１のバイナリ値をどのように保持しているかという形式に合わせて復元用の変換を行う必要がある。このような復元用の変換が、前記したローダープログラム２１１による所定の復元用の変換である。このため、当該リソースとして自己処理プログラム２２１のバイナリ値をそのまま（変換せずに）保持している場合には、前記したローダープログラム２１１による所定の復元用の変換は不要である。
なお、バイナリ値としては、例えば、プログラムのデータそのままの値が用いられてもよく、または、特定条件で可逆的な変換を行った値が用いられてもよい。当該変換としては、例えば、ビット反転の変換、または、可逆圧縮の変換などが用いられてもよい。
【００２４】
また、通常、メモリマップトファイルでは、ページサイズ単位でデータが格納される。このため、元のバイナリ値を正確に取得することができない場合がある。そこで、本実施形態では、ローダープログラム２１１の引数として読み込み対象のバイナリ値のファイルサイズを受け取り、受け取ったファイルサイズ分のデータ（バイナリ値）をメモリマップトファイルから読み込む構成とした。
【００２５】
次に、図４〜図６を参照して、本実施形態に係るプログラムにおいて行われる処理の一例を示す。
図４は、本発明の一実施形態に係るプログラム（本プログラム２０１）を用いて行われる処理の手順の一例を示すフローチャートである。
本実施形態では、端末装置２１において、プロセッサ１０１が、メモリ１０２を用いて、記憶装置１０６に記憶された本プログラム２０１を読み出して実行する場合を示す。
【００２６】
（ステップＳ１）
端末装置２１において、本プログラム２０１を実行する。
【００２７】
（ステップＳ２）
本プログラム２０１は、実行されると、所定のタイミングで、ローダープログラム２１１をファイルとして出力することで、ローダープログラム２１１を生成する。当該所定のタイミングは、任意のタイミングであってもよく、例えば、本プログラム２０１で規定されたタイミングであってもよく、または、本プログラム２０１の外部で発生した所定の指示があったときのタイミングであってもよい。本実施形態では、当該所定のタイミングになってから、ステップＳ２以降の処理が実行される。
【００２８】
なお、ローダープログラム２１１のバイナリ値に所定の変換が行われたデータが本プログラム２０１に保持されている場合には、本プログラム２０１は、当該データに当該所定の変換の逆変換（復元用の変換）を行ったデータ（実行可能な形式のデータ）をファイルに保存する。また、本実施形態では、本プログラム２０１は、当該ファイルをｔｅｍｐフォルダに出力する。
【００２９】
（ステップＳ３）
本プログラム２０１は、自己処理プログラム２２１のバイナリ値をメモリマップトファイルに保存することで、自己処理プログラム２２１を生成する。
【００３０】
なお、自己処理プログラム２２１のバイナリ値に所定の変換が行われたデータが本プログラム２０１に保持されている場合には、本プログラム２０１は、当該データに当該所定の変換の逆変換（復元用の変換）を行ったデータ（実行可能な形式のデータ）をメモリマップトファイルに保存してもよい。この場合には、既に当該逆変換が行われることから、前記したローダープログラム２１１による所定の復元用の変換は不要である。
【００３１】
（ステップＳ４）
本プログラム２０１は、ローダープログラム２１１を実行する。この際、本プログラム２０１は、ローダープログラム２１１に、メモリマップトファイルの名称と、自己処理プログラム２２１のバイナリのサイズと、自己処理プログラム２２１の実行に必要な引数の情報を渡して、ローダープログラム２１１を実行する。
【００３２】
（ステップＳ５）
端末装置２１において、本プログラム２０１を終了する。
ここで、本実施形態では、ローダープログラム２１１がメモリマップトファイルから情報（自己処理プログラム２２１）を読み取るよりも先に本プログラム２０１が終了してしまうと、メモリマップトファイルの情報も消去される。このため、本プログラム２０１は、ローダープログラム２１１がメモリマップトファイルから情報を読み込む処理を完了するまで待機するために、所定の時間（例えば、余裕をもって２秒ほど）待機してから終了する構成としてある。
【００３３】
図５は、本発明の一実施形態に係るローダープログラム２１１を用いて行われる処理の手順の一例を示すフローチャートである。
【００３４】
（ステップＳ１１）
ステップＳ４の処理によって、ローダープログラム２１１を実行する。
【００３５】
（ステップＳ１２）
ローダープログラム２１１は、実行されると、メモリマップトファイルから自己処理プログラム２２１を読み込んで実行する。
【００３６】
図６は、本発明の一実施形態に係る自己処理プログラム２２１を用いて行われる処理の手順の一例を示すフローチャートである。
【００３７】
（ステップＳ２１）
ステップＳ１２の処理によって、自己処理プログラム２２１を実行する。
【００３８】
（ステップＳ２２）
自己処理プログラム２２１は、実行されると、本プログラム２０１に対して定められた処理を実行する。本実施形態では、当該処理は削除の処理であり、自己処理プログラム２２１は本プログラム２０１を削除する。
【００３９】
（ステップＳ２３）
自己処理プログラム２２１は、前記した処理（本実施形態では、削除の処理）が完了した後に、ローダープログラム２１１の削除の指示を登録する。本実施形態では、この登録は、所定のコマンドにより行われ、具体的には、ＷＩＮＡＰＩ（ＭｏｖｅＦｉｌｅＥｘ関数）により行われる。
これにより、ファイルの実態を持たないプログラム（本実施形態では、自己処理プログラム２２１）の実行が実現される。
【００４０】
ここで、削除の指示が登録されたファイル（本実施形態では、ローダープログラム２１１）は、オペレーティングシステム（ＯＳ）の再起動時に、当該ＯＳにより削除される。
なお、自己処理プログラム２２１の処理自体はローダープログラム２１１のプロセスとして動作することから、自己処理プログラム２２１の処理においてローダープログラム２１１のファイル自体を削除することはできない。このため、本実施形態では、自己処理プログラム２２１により、ローダープログラム２１１の削除の指示をＯＳに登録しておく構成としてある。この構成では、ローダープログラム２１１は処理実行後にＯＳの再起動後までは残ることになるが、ローダープログラム２１１自体には実行する処理の内容は含まれないため、仮にローダープログラム２１１の解析が行われたとしても、実行した処理の内容は確認されない。
【００４１】
［実施形態のまとめ］
以上のように、本実施形態に係るプログラム（本プログラム２０１）では、自プログラムに対する処理を実行するプログラム（自己処理プログラム２２１）を残存させないことができる。
【００４２】
ここで、本実施形態では、自己処理プログラムとして、本プログラム２０１を削除するプログラムを用いたが、他の構成例として、本プログラム２０１を改変あるいは更新するなど、様々な機能を有するプログラムが用いられてもよい。
【００４３】
なお、一例として、本実施形態に係るプログラム（本プログラム２０１）は、端末装置２１の出荷時に当該端末装置２１の記憶装置１０６にあらかじめ記憶されてもよい。
他の例として、本実施形態に係るプログラム（本プログラム２０１）は、他の端末装置（図１の例では、端末装置２２〜２５）または他のサーバ装置などからネットワーク３１を介して端末装置２１に送信されることで、当該端末装置２１により受信されて、当該端末装置２１の記憶装置１０６に記憶されてもよい。
他の例として、本実施形態に係るプログラム（本プログラム２０１）は、記録媒体から入出力インターフェイス１０７を介して端末装置２１に入力されることで、当該端末装置２１の記憶装置１０６に記憶されてもよい。
【００４４】
また、本実施形態では、端末装置２１において、当該端末装置２１が本プログラム２０１を実行する構成を示したが、他の構成例として、本プログラム２０１を端末装置２１の外部の装置により実行させてもよい。
【００４５】
なお、他の構成例として、本プログラム２０１に自己処理プログラム２２１のバイナリ値を埋め込まずに、自己処理プログラム２２１のバイナリ値をネットワーク通信により（本プログラム２０１が存在する端末装置２１に）転送して本プログラム２０１に受け渡す構成、または他の手法により自己処理プログラム２２１のバイナリ値を本プログラム２０１に受け渡す構成が用いられてもよい。
【００４６】
一構成例として、プログラム（実施形態では、本プログラム２０１）であって、当該プログラムに対する動作（実施形態では、削除）を行う第１のプログラム（実施形態では、自己処理プログラム２２１であり、図６の例では、ステップＳ２２の機能を有する）をメモリマップトファイルとして生成する第１の機能（図４の例では、ステップＳ３の機能）と、メモリマップトファイルとして生成された第１のプログラムを実行させる第２の機能（図４の例では、ステップＳ４の機能）と、をコンピュータに実現させるためのプログラムである。
一構成例として、第２の機能は、第１のプログラムを実行するローダープログラム（実施形態では、ローダープログラム２１１）を生成し（図４の例では、ステップＳ２の機能）、生成されたローダープログラムにより第１のプログラムを実行させる（図５の例では、ステップＳ１２の機能）。
一構成例として、第１のプログラムにより、ローダープログラムをオペレーティングシステム（ＯＳ）により削除する指示を登録する（図６の例では、ステップＳ２３の機能）。
一構成例として、第１のプログラムにより、プログラム（本プログラム２０１）に対する動作として、当該プログラムを削除する動作を行う。
一構成例として、第１のプログラムにより、プログラム（本プログラム２０１）に対する動作として、当該プログラムを改変する動作を行う。
【００４７】
以上のように、実施形態に係る装置（例えば、端末装置２１〜２５）の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体（記憶媒体）に記録（記憶）して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより、処理を行うことができる。
なお、ここでいう「コンピュータシステム」とは、オペレーティングシステムあるいは周辺機器等のハードウェアを含むものであってもよい。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ等の書き込み可能な不揮発性メモリ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
さらに、「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークあるいは電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（例えば、ＤＲＡＭ）のように、一定時間プログラムを保持しているものも含む。
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）あるいは電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【００４８】
なお、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。
【符号の説明】
【００４９】
１１…情報処理システム、２１〜２５…端末装置、３１…ネットワーク、１０１…プロセッサ、１０２…メモリ、１０３…ネットワークインターフェイス、１０４…操作部、１０５…表示部、１０６…記憶装置、１０７…入出力インターフェイス、１１１…バス、２０１…プログラム、２１１…ローダープログラム、２２１…自己処理プログラム
【要約】
【課題】自己のプログラムに対する処理を実行するプログラムを残存させないことができるプログラムを提供する。
【解決手段】プログラムであって、前記プログラムに対する動作を行う第１のプログラムをメモリマップトファイルに保存する第１の機能と、前記メモリマップトファイルに保存された前記第１のプログラムを実行させる第２の機能と、をコンピュータに実現させるためのプログラム。
【選択図】図１【図１】
0005985098.tif 000002
【図２】
0005985098.tif 000003
【図３】
0005985098.tif 000004
【図４】
0005985098.tif 000005
【図５】
0005985098.tif 000006
【図６】
0005985098.tif 000007