(57)【要約】【課題】プログラム実行までのユーザ操作を簡単にし、データ転送量やデータ転送回数を最適にし、ファイルの一部にアクセスすることを可能にする。【解決手段】プログラムによるファイル中の各データへの参照を記録したファイル参照情報を生成し、ファイル参照情報に基づいて、ファイルの中からプログラム実行の各段階毎に参照が開始されるデータを集めてデータ群並びにファイルの各データ群への参照に関するデータ群情報を作成する。クライアント側では、受信したデータ群情報及びデータ群に基づいてファイルを作成して、プログラム実行の各段階で参照することができる。【選択図】  図３
2004240802.tif 000002
【特許請求の範囲】
【請求項１】
プログラムによって参照される１以上のファイルを処理するデータ処理システムであって、
プログラムによるファイル中の各データへの参照を記録したファイル参照情報を生成するファイル参照情報生成手段と、
前記ファイル参照情報に基づいて、ファイルの中からプログラム実行の各段階毎に参照が開始されるデータを集めてデータ群を作成するデータ群作成手段と、
ファイルの各データ群への参照に関するデータ群情報を作成するデータ群情報作成手段と、
を具備することを特徴とするデータ処理システム。
【請求項２】
データ群情報は、ファイルの参照部分に関する情報と、その情報からデータ群内のデータを取り出すための情報を含む、
ことを特徴とする請求項１に記載のデータ処理システム。
【請求項３】
前記ファイル参照情報は、参照されたファイルの属性情報／内部データに関する情報を含む、
ことを特徴とする請求項１に記載のデータ処理システム。
【請求項４】
前記属性情報は、ファイル名、ファイル・サイズ、ファイルに関する時間（最終アクセス時間、内部データ更新時間、属性情報更新時間など）、グループ、オーナー、アクセス許可に関する属性のうち少なくとも１つを含む、
ことを特徴とする請求項３に記載のデータ処理システム。
【請求項５】
前記内部データは、ファイル内部データの参照時間、参照位置、参照サイズ、参照方法（参照関数名）のうち少なくとも１つを含む、
ことを特徴とする請求項３に記載のデータ処理システム。
【請求項６】
前記ファイル参照情報は、非参照のファイルの属性情報についての記録も含む、
ことを特徴とする請求項３に記載のデータ処理システム。
【請求項７】
前記ファイル参照情報は、プログラムが使用するすべてのファイルの属性情報についての記録を持つ、
ことを特徴とする請求項３に記載のデータ処理システム。
【請求項８】
前記データ群情報のファイルの参照部分に関する情報は、ファイルの属性情報／内部データに関する情報を持つ、
ことを特徴とする請求項２に記載のデータ処理システム。
【請求項９】
プログラム及びプログラムが参照する１以上のファイルを提供するサーバと、
プログラム及びプログラムが参照する１以上のファイルを要求するクライアントと、
クライアントへプログラム、データ群、データ群情報を転送する転送手段をさらに備える、
ことを特徴とする請求項１に記載のデータ処理システム。
【請求項１０】
前記転送手段は、プログラムの起動後、プログラム実行の各段階毎に参照されるデータ群の順でファイルをクライアントに転送する、
ことを特徴とする請求項９に記載のデータ処理システム。
【請求項１１】
前記転送手段は、プログラムとプログラム起動時に参照が開始されるデータ群とデータ群情報をまずクライアントへ転送し、以降、プログラム実行の各段階毎に参照が開始されるデータ群の順でクライアントへ転送する、
ことを特徴とする請求項９に記載のデータ処理システム。
【請求項１２】
クライアントにおいてプログラム実行中にファイル中のデータを参照する参照手段を備える、
ことを特徴とする請求項１１に記載のデータ処理システム。
【請求項１３】
前記参照手段は、受信したデータ群情報及びデータ群に基づいてファイルを作成して参照する、
ことを特徴とする請求項１２に記載のデータ処理システム。
【請求項１４】
前記参照手段は、データ群情報を使用して、プログラム実行中に参照されるデータがクライアントにあるかどうかを判断し、クライアントにないデータへの参照が発生した場合にはサーバにあるかどうかをさらに判断し、サーバにある場合にはデータ群情報に基づいて必要なデータ群をサーバへ要求する、
ことを特徴とする請求項１２に記載のデータ処理システム。
【請求項１５】
プログラムを構成要素毎に分割するプログラム分割手段を備え、
前記転送手段は、プログラムの起動後実行される順にプログラムの構成要素及び該構成要素によって参照が開始されるデータ群を転送する、
ことを特徴とする請求項９に記載のデータ処理システム。
【請求項１６】
プログラムは複数の基本構成要素によって構成されており、
プログラム実行時においてプログラムに含まれる各基本構成要素についてのプログラム参照情報を生成し、該プログラム参照情報を基に各基本構成要素間の関連性を考慮して、関連性のある複数の基本構成要素を１つのプログラム新規構成要素として生成して、プログラムを新規構成要素の集合として再構成するプログラム再構成手段と、
プログラムの起動後実行される順に各プログラム新規構成要素によって参照が開始されるデータ群及びデータ群情報を再構成するデータ群再構成手段をさらに備える、
ことを特徴とする請求項９に記載のデータ処理システム。
【請求項１７】
前記転送手段は、プログラムの起動後実行される順にプログラム新規構成要素及び該プログラム新規構成要素によって参照が開始されるデータ群を転送する、ことを特徴とする請求項１６に記載のデータ処理システム。
【請求項１８】
前記転送手段は、プログラムの起動直後に実行されるプログラム新規構成要素、該プログラム新規構成要素によって参照が開始されるデータ群、及び再構成されたデータ群情報をまずクライアントへ転送し、以降、実行される順にプログラム新規構成要素及び該プログラム新規構成要素によって参照が開始されるデータ群をクライアントへ転送する、
ことを特徴とする請求項１６に記載のデータ処理システム。
【請求項１９】
プログラムによって参照される１以上のファイルを処理するデータ処理方法であって、
プログラムによるファイル中の各データへの参照を記録したファイル参照情報を生成するファイル参照情報生成ステップと、
前記ファイル参照情報に基づいて、ファイルの中からプログラム実行の各段階毎に参照が開始されるデータを集めてデータ群を作成するデータ群作成ステップと、
ファイルの各データ群への参照に関するデータ群情報を作成するデータ群情報作成ステップと、
を具備することを特徴とするデータ処理方法。
【請求項２０】
クライアントへプログラム、データ群、データ群情報を転送する転送ステップをさらに備える、
ことを特徴とする請求項１９に記載のデータ処理方法。
【請求項２１】
前記転送ステップでは、プログラムとプログラム起動時に参照が開始されるデータ群とデータ群情報をまずクライアントへ転送し、以降、プログラム実行の各段階毎に参照が開始されるデータ群の順でクライアントへ転送する、
ことを特徴とする請求項２０に記載のデータ処理方法。
【請求項２２】
受信したデータ群情報及びデータ群に基づいてファイルを作成し、データ群情報を使用して、プログラム実行中に参照されるデータがクライアントにあるかどうかを判断し、クライアントにないデータへの参照が発生した場合にはサーバにあるかどうかをさらに判断し、サーバにある場合にはデータ群情報に基づいて必要なデータ群をサーバへ要求する参照ステップをさらに備える、
ことを特徴とする請求項２１に記載のデータ処理方法。
【請求項２３】
プログラムは複数の基本構成要素によって構成されており、
プログラム実行時においてプログラムに含まれる各基本構成要素についてのプログラム参照情報を生成し、該プログラム参照情報を基に各基本構成要素間の関連性を考慮して、関連性のある複数の基本構成要素を１つのプログラム新規構成要素として生成して、プログラムを新規構成要素の集合として再構成するプログラム再構成ステップと、
プログラムの起動後実行される順に各プログラム新規構成要素によって参照が開始されるデータ群及びデータ群情報を再構成するデータ群再構成ステップをさらに備える、
ことを特徴とする請求項２０に記載のデータ処理方法。
【請求項２４】
前記転送ステップでは、プログラムの起動直後に実行されるプログラム新規構成要素、該プログラム新規構成要素によって参照が開始されるデータ群、及び再構成されたデータ群情報をまずクライアントへ転送し、以降、実行される順にプログラム新規構成要素及び該プログラム新規構成要素によって参照が開始されるデータ群をクライアントへ転送する、
ことを特徴とする請求項２３に記載のデータ処理方法。
【請求項２５】
プログラムによって参照される１以上のファイルの処理をコンピュータ・システム上で実行するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、
プログラムによるファイル中の各データへの参照を記録したファイル参照情報を生成するファイル参照情報生成ステップと、
前記ファイル参照情報に基づいて、ファイルの中からプログラム実行の各段階毎に参照が開始されるデータを集めてデータ群を作成するデータ群作成ステップと、
ファイルの各データ群への参照に関するデータ群情報を作成するデータ群情報作成ステップと、
を具備することを特徴とするコンピュータ・プログラム。
【請求項２６】
プログラムとプログラム起動時に参照が開始されるデータ群とデータ群情報をまずプログラム及びファイルの要求元クライアントへ転送し、以降、プログラム実行の各段階毎に参照が開始されるデータ群の順でプログラム及びファイルの要求元クライアントへ転送する転送ステップをさらに備える、
ことを特徴とする請求項２５に記載のコンピュータ・プログラム
【請求項２７】
プログラムは複数の基本構成要素によって構成されており、
プログラム実行時においてプログラムに含まれる各基本構成要素についての参照情報を生成し、該参照情報を基に各基本構成要素間の関連性を考慮して、関連性のある複数の基本構成要素を１つのプログラム新規構成要素として生成して、プログラムを新規構成要素の集合として再構成するプログラム再構成ステップと、
プログラムの起動後実行される順に各プログラム新規構成要素によって参照が開始されるデータ群及びデータ群情報を再構成するデータ群再構成ステップをさらに備える、
ことを特徴とする請求項２５に記載のコンピュータ・プログラム
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワーク上でプログラムやデータをダウンロードしてインストールを行なうデータ処理システム及びデータ処理方法、並びにコンピュータ・プログラムに係り、特に、プログラムによって参照されるファイルをプログラムとともにダウンロードしてプログラムを実行するデータ処理システム及びデータ処理方法、並びにコンピュータ・プログラムに関する。
【０００２】
さらに詳しくは、本発明は、ダウンロード及びプログラム実行のためにプログラムが参照するファイルの構造を最適化するデータ処理システム及びデータ処理方法、並びにコンピュータ・プログラムに係り、特に、プログラム起動とともに即座にデータを参照することができるようにファイルの構造を最適化するデータ処理システム及びデータ処理方法、並びにコンピュータ・プログラムに関する。
【０００３】
【従来の技術】
いわゆるコンピュータ処理は、プロセッサ上で所定のプログラムを実行するという形式で実現される。通常、プログラムの実行時には、プログラムは幾つかのデータ・ファイルを参照する必要がある。昨今のネットワーク接続環境下では、サーバのプログラムを、ネットワークを通してクライアントで実行することがある。このようなプログラム実行形態として、以下に示す幾つかの方法が挙げられる。
【０００４】
インストール方式：
プログラム並びにプログラムが必要とするデータ・ファイルなどをインストールするための「インストール・プログラム」を、クライアントにダウンロードし、インストーラを実行させ、インストール終了後プログラムを実行する。
【０００５】
しかしながら、インストール方式による場合、ユーザがプログラムを実行するまでに行なう操作数が多くなり複雑である。また、実行までにかかる時間もその分長くなる。
【０００６】
ＪＡＲファイル方式：
ＪＡＲファイルは、プログラムとプログラムに必要とされるデータ・ファイルを１つにまとめて圧縮がされているファイルである（ＪＡＲファイルは、複数のＪａｖａクラス・ファイル（Ｊａｖａは登録商標）又はそれらを１つにまとめた、ＪａｖａＡｐｐｌｅｔを構成するファイルである）。サーバ上のＪＡＲファイルをクライアント側にダウンロードし、ＪＡＲファイルを展開し、プログラムを実行させる。ＪＡＲファイルのダウンロードと、ＪＡＲファイルの展開と、プログラムの実行に必要なユーザのステップ数は１つである。例えば、プログラムが起動までに使用するファイルを適切に選んで、それらのみをＪＡＲファイルに含めることにより起動時間の高速化を行なうことができる（例えば、特許文献１を参照のこと）。
【０００７】
しかしながら、ＪＡＲファイルにはプログラムが必要としないデータ・ファイルを含んでいたり、あるいは、必要なデータ・ファイルであっても、プログラムが必要とするデータがデータ・ファイルのどの部分かを検討していない。このため、データ・ファイル全体をＪＡＲファイルに含めることなり、ダウンロードの際には不必要なデータをダウンロードする分だけ余計に時間を要する。
【０００８】
この問題を防ぐために、ＪＡＲファイルの作成者／プログラム作成者は、ＪＡＲファイルに必要とされないデータ・ファイルをＪＡＲファイルに含めないようにする必要がある。また、ＪＡＲファイル作成時に実行までに必要なデータ・ファイルの選択する処理を行なったとしても（例えば、特許文献１を参照のこと）、必要なデータ・ファイルであっても、プログラムが必要とするデータはそのデータ・ファイルの一部であることがあり、ダウンロード量の最適化という面では問題があった。
【０００９】
ＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）方式：
ＮＦＳは、分散ファイル・システムの一種であり、サーバ上のプログラムの存在する場所をローカル・ストレージのように扱う仕組みを作成し、プログラムを実行する。これにより、ユーザは、リモート・コンピュータ上のファイルやディレクトリにアクセスし、それらのファイルやディレクトリをローカル・ファイルやローカル・ディレクトリと同様に扱うことができる。例えば、オペレーティング・システムのコマンドを使用して、リモート・ファイルやリモート・ディレクトリの作成、除去、読み取り、書き込み、ファイル属性の設定を行なうことができる。
【００１０】
ＮＦＳ方式の場合、ユーザがプログラムを実行するまでに行なうステップは１つで、プログラムが必要とするデータ・ファイル中の必要なデータのみを参照することができる。しかしながら、データ・ファイルを参照する度にＮＦＳサーバに要求をするため、ＮＦＳサーバの応答速度が遅い場合にはプログラムの実行が遅くなる。また、この方式は、サーバへのアクセス数が多いため、ＬＡＮ環境に比べてクライアント数が多いＷＡＮ環境には向いていない。
【００１１】
また、上述した以外にも、ダウンロード処理の完了を待ってからインストールする必要があり、システムの処理速度が低下することから、データをその構成要素に分割して、データの利用に応じて適宜構成要素を単位として移動を行なうという方法がある。
【００１２】
例えば、特定の利用環境を前提としないようにプログラム分割を行なうことにより、プログラムの移動に際しデータ転送量とデータ転送回数を最適化するという提案がなされている（例えば、非特許文献１を参照のこと）。
【００１３】
この方法によれば、まず基本構成要素の集合として構成されるプログラムに関して基本構成要素毎の参照情報を得る。次に、１つ又は複数の参照情報と１つのデータを入力とし、参照情報を利用して関連する複数の基本構成要素を１つの新規構成要素として構成し、プログラムを新規構成要素の集合として再構成を行なう。参照情報は、データ毎に累積され一般化した情報であり、例えば、プログラム実行時において基本構成要素が最初に利用される時刻情報、プログラム実行時に基本構成要素が利用される頻度情報、基本構成要素が利用された装置に関する情報などである。そして、参照情報を基にして、プログラム実行の観点から参照が近接している基本構成要素の集合として新規構成要素を構成する。
【００１４】
例えば、プログラムをサーバからクライアントへダウンロードして利用する際には、新規構成要素を単位としてダウンロードを行なう。したがって、たとえ同じクラス内のメソッドやデータであっても、互いの参照関係が近接していない場合には異なる新規構成要素として分割されるので、データ転送量を最適化することができる。また、たとえ異なるクラスに属するメソッドであっても、互いに近接して参照されているメソッドやデータは１つの新規構成要素として構成されるので、１回の転送で移動が行なえ、移動回数を最適化することができる。
【００１５】
また、プログラムの実行と並行して、新規構成要素を単位としてダウンロードを行なうことができる。クライアント側では、幾つかの新規構成要素のみを移動すればデータの利用が可能となるので、データ移動の最適化が可能となる。
【００１６】
しかしながら、この方法ではプログラムが実行中に参照するファイルについての記述がないので、この点に関してはプログラム起動までのデータ転送量とデータ転送回数の最適化が実現できているとは言い難い。
【００１７】
【特許文献１】
特表２００２−５２８７９１号
【非特許文献１】
特願２００１−３３１５０９号
【００１８】
【発明が解決しようとする課題】
本発明の目的は、プログラムによって参照されるファイルをプログラムとともにダウンロードしてプログラムを好適に実行することができる、優れたデータ処理システム及びデータ処理方法、並びにコンピュータ・プログラムを提供することにある。
【００１９】
本発明のさらなる目的は、ダウンロード及びプログラム実行のためにプログラムが参照するファイルの構造を最適化することができる、優れたデータ処理システム及びデータ処理方法、並びにコンピュータ・プログラムを提供することにある。
【００２０】
本発明のさらなる目的は、プログラム起動とともに即座にデータを参照することができるようにファイルの構造を最適化することができる、優れたデータ処理システム及びデータ処理方法、並びにコンピュータ・プログラムを提供することにある。
【００２１】
【課題を解決するための手段及び作用】
本発明は、上記課題を参酌してなされたものであり、その第１の側面は、プログラムによって参照される１以上のファイルを処理するデータ処理システムであって、
プログラムによるファイル中の各データへの参照を記録したファイル参照情報を生成するファイル参照情報生成手段と、
前記ファイル参照情報に基づいて、ファイルの中からプログラム実行の各段階毎に参照が開始されるデータを集めてデータ群を作成するデータ群作成手段と、
ファイルの各データ群への参照に関するデータ群情報を作成するデータ群情報作成手段と、
を具備することを特徴とするデータ処理システムである。
【００２２】
但し、ここで言う「システム」とは、複数の装置（又は特定の機能を実現する機能モジュール）が論理的に集合した物のことを言い、各装置や機能モジュールが単一の筐体内にあるか否かは特に問わない。
【００２３】
プログラムの実行時には、プログラムは幾つかのデータ・ファイルを参照する必要がある。クライアントにダウンロードし、インストーラを実行させ、インストール終了後プログラムを実行するという方式では、ユーザがプログラムを実行するまでに行なう操作数が多く、実行までの所要時間も長い。また、プログラムとプログラムに必要とされるデータ・ファイルを１つにまとめて圧縮がされているファイルをダウンロードする方式では、プログラムが必要とするデータがデータ・ファイルのどの部分かを検討していないため、不必要なデータをダウンロードする分だけ非効率的である。また、サーバ上のプログラムの存在する場所をローカル・ストレージのように扱う方式は、クライアント数が多いネットワーク環境には向いていない。
【００２４】
これに対し、本発明によれば、ファイル参照情報に基づいてファイルの中からプログラム実行の各段階毎に参照が開始されるデータを集めてデータ群を作成するので、プログラムの起動後からプログラム実行の各段階毎に参照されるデータ群の順でクライアントに転送することができる。例えば、プログラムとプログラム起動時に参照が開始されるデータ群とデータ群情報をまずクライアントへ転送し、以降、プログラム実行の各段階毎に参照が開始されるデータ群の順でクライアントへ転送するようにすることで、クライアント側では、プログラムと最初のデータ群が届いた段階で、プログラムを起動し、実行することができる。
【００２５】
したがって、本発明によれば、ユーザがプログラムを実行するまでに行なう操作を簡単にし、ダウンロードするファイルのサイズを最適にし、サーバにアクセスする回数を最適にし、データ・ファイルの一部にアクセスすることを可能にすることができる。また、本発明によれば、プログラムによるファイル操作が行なわれても、データ転送量とデータ転送回数の最適化が実現できる方法を提供することができる。
【００２６】
ここで、データ群情報は、ファイルの参照部分に関する情報と、その情報からデータ群内のデータを取り出すための情報を含むものとする。
【００２７】
また、ファイル参照情報は、参照されたファイルの属性情報／内部データに関する情報を含むものとする。ここで言う属性情報は、ファイル名、ファイル・サイズ、ファイルに関する時間（最終アクセス時間、内部データ更新時間、属性情報更新時間など）、グループ、オーナー、アクセス許可に関する属性のうち少なくとも１つを含むものである。また、内部データは、ファイル内部データの参照時間、参照位置、参照サイズ、参照方法（参照関数名）のうち少なくとも１つを含んでいる。
【００２８】
また、ファイル参照情報は、非参照のファイルの属性情報についての記録も含んでいてもよいし、プログラムが使用するすべてのファイルの属性情報の記録を持っていてもよい。また、データ群情報のファイルの参照部分に関する情報は、ファイルの属性情報／内部データに関する情報を持っていてもよい。
【００２９】
クライアント側では、受信したデータ群情報及びデータ群に基づいてファイルを作成して、プログラム実行の各段階で参照することができる。例えば、データ群情報を使用して、プログラム実行中に参照されるデータがクライアントにあるかどうかを判断することができる。そして、クライアントにないデータへの参照が発生した場合には、サーバにあるかどうかをさらに判断し、サーバにある場合にはデータ群情報に基づいて必要なデータ群をサーバへ要求するようにすればよい。
【００３０】
また、本発明の第１の側面に係るデータ処理システムは、プログラムを構成要素毎に分割するプログラム分割手段を備え、プログラムの起動後実行される順にプログラムの構成要素及び該構成要素によって参照が開始されるデータ群を転送するようにすればよい。
【００３１】
また、プログラムは複数の基本構成要素によって構成されているものとして扱うことができる。したがって、プログラム実行時においてプログラムに含まれる各基本構成要素についての参照情報を生成し、該参照情報を基に各基本構成要素間の関連性を考慮して、関連性のある複数の基本構成要素を１つのプログラム新規構成要素として生成して、プログラムを新規構成要素の集合として再構成することができる。
【００３２】
このような場合、プログラムの起動後、実行される順に従って、各プログラム新規構成要素によって参照が開始されるデータ群並びにデータ群情報を再構成する必要がある。そして、サーバは、プログラムの起動直後に実行されるプログラム新規構成要素、該プログラム新規構成要素によって参照が開始されるデータ群、及び再構成されたデータ群情報をまずクライアントへ転送し、以降、実行される順にプログラム新規構成要素及び該プログラム新規構成要素によって参照が開始されるデータ群をクライアントへ転送するようにすることで、データ転送量を最適化することができる。また、クライアント側では、プログラムの実行と並行して、プログラム新規構成要素と参照されるデータ群をダウンロードすることによって、ダウンロードを最適化することができる。
【００３３】
また、本発明の第２の側面は、プログラムによって参照される１以上のファイルの処理をコンピュータ・システム上で実行するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、
プログラムによるファイル中の各データへの参照を記録したファイル参照情報を生成するファイル参照情報生成ステップと、
前記ファイル参照情報に基づいて、ファイルの中からプログラム実行の各段階毎に参照が開始されるデータを集めてデータ群を作成するデータ群作成ステップと、
ファイルの各データ群への参照に関するデータ群情報を作成するデータ群情報作成ステップと、
を具備することを特徴とするコンピュータ・プログラムである。
【００３４】
本発明の第２の側面に係るコンピュータ・プログラムは、コンピュータ・システム上で所定の処理を実現するようにコンピュータ可読形式で記述されたコンピュータ・プログラムを定義したものである。換言すれば、本発明の第２の側面に係るコンピュータ・プログラムをコンピュータ・システムにインストールすることによって、コンピュータ・システム上では協働的作用が発揮され、本発明の第１の側面に係るデータ処理システムと同様の作用効果を得ることができる。
【００３５】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施形態や添付する図面に基づくより詳細な説明によって明らかになるであろう。
【００３６】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施形態について詳解する。
【００３７】
Ａ．システム構成
図１には、本発明に係るデータ処理方法を適用することができるシステム全体の構成を模式的に示している。このシステムは、サーバ（Ｓｅｒｖｅｒ）１と、クライアント（Ｃｌｉｅｎｔ）２，３…が、ネットワーク（Ｎｅｔｗｏｒｋ）４によって相互接続されることによって構成されている。
【００３８】
サーバ１やクライアント２，３…は、例えば、ワークステーション（ＷＳ）やパーソナル・コンピュータ（ＰＣ）などの一般的なコンピュータ・システム上でそれぞれサーバ・ソフトウェアやクライアント・ソフトウェアを起動するという形態で実現される。この種のコンピュータは、中央コントローラとしてのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、ＲＡＭやＲＯＭなどのメモリ装置、ハード・ディスクなどの外部記憶装置、ディスプレイやキーボード／マウスなどのユーザ・インターフェースを備え、オペレーティング・システムの制御下でプログラムの実行が行なわれる（後述）。
【００３９】
サーバ１は、プログラム１や、プログラムが参照する１以上のデータ・ファイル１−１、１−２…などの複数のコンピュータ・ファイルを持つ。サーバ１とクライアント２、クライアント３は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やインターネットなどのネットワーク４によって接続されている。クライアント２とクライアント３は、プログラム１−１又はプログラム１−２を実行する際には、サーバ１よりプログラムのダウンロードを行なうとともに、プログラムの実行するものとする。
【００４０】
本実施形態では、ネットワーク４を介してサーバ１と各クライアント２，３が接続されているが、それ以外の媒体を利用した接続又は構成でもあってもよい。例えば、プログラム１−１，１−２がハード・ディスクやＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）などの２次記憶装置に格納され、クライアント２，３…と接続されているとしてもよい。そして、各クライアント２，３…はプログラムの実行に際して、それら２次記憶装置からプログラムを読み出してメモリ上にロードし実行をするものとしてもよい。
【００４１】
図２には、図１に示したネットワーク・システムにおいて、サーバあるいはクライアントとして動作するホスト装置のハードウェア構成を模式的に示している。
【００４２】
メイン・コントローラであるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１は、オペレーティング・システム（ＯＳ）の制御下で、各種のアプリケーションを実行する。本実施形態では、ホストが、サーバとして動作する場合には、ＣＰＵ１０１は、プログラム構成要素の再構成、プログラムが参照する各ファイルについてのファイル参照情報、データ群、データ群情報の作成、又はこれらを１つにまとめたアーカイブ・ファイルの作成、プログラムや参照ファイル、又はアーカイブ・ファイルのクライアントへのダウンロード処理などを行なうサーバ・アプリケーションを実行する。また、ホストがクライアント端末であれば、ＣＰＵ１０１は、サーバからのプログラムや参照ファイル、又はアーカイブ・ファイルのダウンロード、プログラム構成要素のダウンロード実行、アーカイブ・ファイルの展開データ群から元のファイルの作成、並びにプログラム実行時のファイル参照などの処理を行なうクライアント・アプリケーションを実行する。
【００４３】
図示の通り、ＣＰＵ１０１は、バス１０８によって他の機器類（後述）と相互接続されている。
【００４４】
主メモリ１０２は、ＣＰＵ１０１において実行されるプログラム・コードをロードしたり、実行プログラムの作業データを一時保管したりするために使用される記憶装置であり、例えばＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）のような半導体メモリが使用される。ホストがサーバとして動作する場合には、プログラム構成要素の再構成、プログラムが参照する各ファイルについてのファイル参照情報、データ群、データ群情報の作成、又はこれらを１つにまとめたアーカイブ・ファイルの作成、プログラムや参照ファイル、又はアーカイブ・ファイルのクライアントへのダウンロード処理などを行なうサーバ・アプリケーションが実行プログラムとして主メモリ１０２にロードされる。また、ホストがクライアント端末であれば、ＣＰＵ１０１は、サーバからのプログラムや参照ファイル、又はアーカイブ・ファイルのダウンロード、プログラム構成要素のダウンロード実行、アーカイブ・ファイルの展開データ群から元のファイルの作成、並びにプログラム実行時のファイル参照などの処理を行なうクライアント・アプリケーションが実行プログラムとして主メモリ１０２にロードされる。
【００４５】
また、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０３は、データを恒久的に格納する半導体メモリであり、例えば、起動時の自己診断テスト（ＰＯＳＴ：Ｐｏｗｅｒ  Ｏｎ  Ｓｅｌｆ  Ｔｅｓｔ）や、ハードウェア入出力用のプログラム・コード（ＢＩＯＳ：Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）などが書き込まれている。
【００４６】
ディスプレイ・コントローラ１０４は、ＣＰＵ１０１が発行する描画命令を実際に処理するための専用コントローラである。ディスプレイ・コントローラ１０３において処理された描画データは、例えばフレーム・バッファ（図示しない）に一旦書き込まれた後、ディスプレイ１１１によって画面出力される。ディスプレイ１１１の表示画面は、一般に、操作可能ファイル形式に変換されたファイルの操作画面やファイル実行の処理結果、あるいはエラーその他のシステム・メッセージをユーザに視覚的にフィードバックする役割を持つ。
【００４７】
入力機器インターフェース１０５は、キーボード１１２やマウス１１３、あるいはその他のユーザ入力機器を対話装置１００に接続するための装置である。例えば、クライアント端末上で、ユーザは、キーボード１１２やマウス１１３を用いて、プログラムのダウンロード要求やその実行などの指示を行なうことができる。
【００４８】
ネットワーク・インターフェース１０６は、Ｅｔｈｅｒｎｅｔ（登録商標）などの所定の通信プロトコルに従って、システム１００をＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などの局所的ネットワーク、さらにはインターネットのような広域ネットワークに接続することができる。
【００４９】
ネットワーク上では、ファイルを要求するクライアントやファイルを提供するサーバなど、複数のホスト端末がトランスペアレントな状態で接続され、分散コンピューティング環境が構築されている。ネットワーク上では、ソフトウェア・プログラムやデータ・コンテンツなどの配信サービスを行なうことができる。
【００５０】
例えば、ホストがサーバとして動作する場合には、プログラム構成要素の再構成、プログラムが参照する各ファイルについてのファイル参照情報、データ群、データ群情報の作成、又はこれらを１つにまとめたアーカイブ・ファイルの作成、プログラムや参照ファイル、又はアーカイブ・ファイルのクライアントへのダウンロード処理などを行なうサーバ・アプリケーションをネットワーク経由でダウンロードできる他、プログラムが参照する各ファイルについてのファイル参照情報やデータ群情報をネットワーク経由で移動することができる。また、ホストがクライアント端末であれば、サーバからのプログラムや参照ファイル、又はアーカイブ・ファイルのダウンロード、プログラム構成要素のダウンロード実行、アーカイブ・ファイルの展開データ群から元のファイルの作成、並びにプログラム実行時のファイル参照などの処理を行なうクライアント・アプリケーションをダウンロードすることができる。
【００５１】
外部機器インターフェース１０７は、ハード・ディスク・ドライブ（ＨＤＤ）１１４やメディア・ドライブ１１５などの外部装置をホスト１００に接続するための装置である。
【００５２】
ＨＤＤ１１４は、記憶担体としての磁気ディスクを固定的に搭載した外部記憶装置であり（周知）、記憶容量やデータ転送速度などの点で他の外部記憶装置よりも優れている。ソフトウェア・プログラムを実行可能な状態でＨＤＤ１１４上に置くことを、プログラムのシステムへの「インストール」と呼ぶ。通常、ＨＤＤ１１４には、ＣＰＵ１０１が実行すべきオペレーティング・システムのプログラム・コードや、アプリケーション・プログラム、デバイス・ドライバなどが不揮発的に格納されている。
【００５３】
例えば、ホストがサーバとして動作する場合には、プログラム構成要素の再構成、プログラムが参照する各ファイルについてのファイル参照情報、データ群、データ群情報の作成、又はこれらを１つにまとめたアーカイブ・ファイルの作成、プログラムや参照ファイル、又はアーカイブ・ファイルのクライアントへのダウンロード処理などを行なうサーバ・アプリケーションをＨＤＤ１１４上にインストールすることができる。また、サーバは、プログラムを再構成して得られるプログラム新規構成要素、プログラムが参照する各ファイルについてのファイル参照情報や、データ群、データ群情報、アーカイブ・ファイルなどをＨＤＤ１４上に蓄積することができる。また、ホストがクライアントとして動作する場合には、サーバからのプログラムや参照ファイルのダウンロード、プログラム構成要素のサーバからのプログラムや参照ファイル、又はアーカイブ・ファイルのダウンロード、プログラム構成要素のダウンロード実行、アーカイブ・ファイルの展開データ群から元のファイルの作成、並びにプログラム実行時のファイル参照などの処理を行なうクライアント・アプリケーションなどを、ＨＤＤ１１４上にインストールすることができる。また、クライアントは、サーバから受信したプログラム新規構成要素や、プログラムが参照する各ファイルについてのファイル参照情報や、データ群、データ群情報、アーカイブ・ファイルなどをＨＤＤ１４上に蓄積することができる。
【００５４】
メディア・ドライブ１１５は、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）やＭＯ（Ｍａｇｎｅｔｏ−Ｏｐｔｉｃａｌｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）などの可搬型メディアを装填して、そのデータ記録面にアクセスするための装置である。
【００５５】
可搬型メディアは、主として、ソフトウェア・プログラムやデータ・ファイルなどをコンピュータ可読形式のデータとしてバックアップすることや、これらをシステム間で移動（すなわち販売・流通・配布を含む）する目的で使用される。例えば、プログラム構成要素の再構成、プログラムが参照する各ファイルについてのファイル参照情報、データ群、データ群情報の作成、又はこれらを１つにまとめたアーカイブ・ファイルの作成、プログラムや参照ファイル、又はアーカイブ・ファイルのクライアントへのダウンロード処理などを行なうサーバ・アプリケーションや、サーバからのプログラムや参照ファイル、又はアーカイブ・ファイルのダウンロード、プログラム構成要素のダウンロード実行、アーカイブ・ファイルの展開データ群から元のファイルの作成、並びにプログラム実行時のファイル参照などの処理を行なうクライアント・アプリケーションなどを、これら可搬型メディアを利用して複数の機器間で物理的に流通・配布することができる。勿論、関連性のある複数のプログラム基本構成要素から生成されるプログラム新規構成要素や、プログラムが参照する各ファイルについてのファイル参照情報や、データ群、データ群情報、アーカイブ・ファイルなどを、可搬型メディアを介してホスト装置間で移動することもできる。
【００５６】
Ｂ．第１の実施形態
本発明に係るネットワーク・システムでは、サーバのプログラムを、ネットワークを通してクライアントで実行する。
【００５７】
プログラムの実行時には、プログラムは幾つかのデータ・ファイルを参照する必要がある。クライアントにダウンロードし、インストーラを実行させ、インストール終了後プログラムを実行するという方式では、ユーザがプログラムを実行するまでに行なう操作数が多く、実行までの所要時間も長い。また、プログラムとプログラムに必要とされるデータ・ファイルを１つにまとめて圧縮がされているファイルをダウンロードする方式では、プログラムが必要とするデータがデータ・ファイルのどの部分かを検討していないため、不必要なデータをダウンロードする分だけ非効率的である。また、サーバ上のプログラムの存在する場所をローカル・ストレージのように扱う方式は、クライアント数が多いネットワーク環境には向いていない。
【００５８】
これに対し、本発明によれば、プログラムによるファイル中の各データへの参照を記録したファイル参照情報を生成し、このファイル参照情報に基づいて、ファイルの中からプログラム実行の各段階毎に参照が開始されるデータを集めてデータ群を作成するとともに、ファイルの各データ群への参照に関するデータ群情報を作成する。そして、プログラムの起動後、ファイル参照情報並びにデータ群情報に基づいて、プログラム実行の各段階毎に参照されるデータ群の順でクライアントに転送することができる。
【００５９】
例えば、プログラムとプログラム起動時に参照が開始されるデータ群とデータ群情報をまずクライアントへ転送し、以降、プログラム実行の各段階毎に参照が開始されるデータ群の順でクライアントへ転送するようにすることで、クライアント側では、プログラムと最初のデータ群が届いた段階で、プログラムを起動し、実行することができる。この結果、実行中のプログラムによってファイル操作が行なわれても、データ転送量とデータ転送回数の最適化を実現することができる。
【００６０】
図３には、本実施形態に係るネットワーク・システムにおいて、プログラムとプログラムによって参照される１以上のファイルを、サーバからクライアントに転送する仕組みを図解している。また、図４には、プログラムが参照するデータ・ファイルからデータ転送の単位となるデータ群を作成するための仕組みを図解している。
【００６１】
同図に示す例では、クライアントから要求されるプログラムは、その実行中にデータ・ファイル１、データ・ファイル２、並びに、データ・ファイル３という３つのファイルを参照する。但し、データ・ファイル１はサイズが５１２０バイト、データ・ファイル２はサイズが１０２４バイト、データ・ファイル３はサイズが２０４８バイトであるとする。プログラムが参照するファイルは、プログラムの設計者やそのインストーラの作成者が、プログラムが必要とするデータ・ファイルの属性情報としてあらかじめ記述されているものとする。
【００６２】
サーバ側では、まず、このプログラムによるファイル中の各データへの参照を記録したファイル参照情報を生成する。ファイル参照情報は、参照されたファイルの属性情報／内部データに関する情報を含んでいる。ここで言う属性情報は、ファイル名、ファイル・サイズ、ファイルに関する時間（最終アクセス時間、内部データ更新時間、属性情報更新時間など）、グループ、オーナー、アクセス許可に関する属性のうち少なくとも１つを含んでいる。また、内部データは、ファイル内部データの参照時間、参照位置、参照サイズ、参照方法（参照関数名）のうち少なくとも１つを含んでいる。
【００６３】
ファイル参照情報は、非参照のファイルの属性情報についての記録も含んでいてもよい。また、ファイル参照情報は、プログラムが使用するすべてのファイルの属性情報についての記録を持っていてもよい。
【００６４】
図３に示す例では、ファイル参照情報は、各ファイルについてのプログラムによる参照位置と参照サイズ（すなわち参照範囲）を記述している。例えば、データ・ファイル１に関しては、参照位置と参照サイズが（０，１０２４）、（２０４８，５１２）、…がプログラムからの参照範囲である。同様に、データ・ファイル２に関しては、参照位置と参照サイズが（５１２，２５６）、…がプログラムからの参照範囲である。
【００６５】
このようなファイル参照情報は、プログラム作成者やインストーラ作成者が任意に作成してもよいが、自動で生成するツールを使用してもよい。例えば、プログラムの実行時に関数や変数がどのような頻度でアクセスされるか、あるいは、どのような時刻又は時間間隔でアクセスされるかなどの、プログラム実行時の特性に関する情報を得る「トレース処理」を行なうことによって、ファイル参照情報を生成することができる。
【００６６】
例えば、プログラム開発プラットフォームとして当業界で周知のオペレーティング・システム“ｌｉｎｕｘ”などでは、システム・コールをトレースする機能である“ｓｔｒａｃｅ”コマンドが用意されている。このコマンドを使用することにより、ｏｐｅｎ，ｃｌｏｓｅ，ｒｅａｄ，ｗｒｉｔｅ，ｌｓｅｅｋなどの各ファイル操作に関するトレース情報を作成することができる。例えば、プロンプト画面で、
【００６７】
＃ｓｔｒａｃｅ  −ｔｔ  −ｅ  ｏｐｅｎ，ｃｌｏｓｅ，ｒｅａｄ，ｗｒｉｔｅ，ｌｓｅｅｋ  ．／ａ．ｏｕｔ
【００６８】
と入力することによって（但し、“−ｔｔ”は時間をトレース情報に含めるオプションであり、“−ｅ”は指定システム・コールをトレース情報に含めるオプションであり、“．  ／ａ．ｏｕｔ”はプログラムである）、以下に示すようなトレース情報を取り出すことができる。
【００６９】
１２：３９：００．５４８２８４  ｏｐｅｎ（”ｄａｔａ１”，  Ｏ＿ＲＤＯＮＬＹ）  ＝  ３
１２：３９：００．５４８３８４  ｌｓｅｅｋ（３，  １０，  ＳＥＥＫ＿ＳＥＴ）  ＝  １０
１２：３９：００．５４８４３５  ｒｅａｄ（３，  ”ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕ”．．．，  ２５６）  ＝  ２５６
１２：３９：００．５４８５１９  ｃｌｏｓｅ（３）  ＝  ０
【００７０】
次いで、サーバは、このファイル参照情報に基づいて、ファイルの中からプログラム実行の各段階毎に参照が開始されるデータを集めてデータ群を作成する。１つのデータ群は、プログラムの同じ実行段階で参照される各ファイルの参照データ部分で構成される。
【００７１】
また、サーバは、ファイルの各データ群への参照に関するデータ群情報を作成する。データ群情報は、ファイルの参照部分に関する情報と、その情報からデータ群内のデータを取り出すための情報を含んでいる。また、データ群情報のファイルの参照部分に関する情報は、ファイルの属性情報／内部データに関する情報を持っていてもよい。
【００７２】
図５には、データ群、並びにデータ群情報の一例を示している。データ群は、プログラムが参照ファイルから参照される範囲を取り出したデータである。また、データ群情報は、ファイルの参照部分に関する情報と、その情報からデータ群内のデータを取り出すことのできる情報で構成される。ファイルの参照部分に関する情報は、該当するファイル名と、ファイル内での参照位置の、参照されるデータのサイズで構成される。
【００７３】
図３に示す例では、プログラム起動後、最初の段階で参照されるデータ群をデータ群１とし、次の段階で参照されるデータ群をデータ群２としている。図示の例では、データ・ファイル１〜３中でプログラムから参照されるデータは、これら２つのデータ群１〜２に集められる。勿論、参照されるデータの総量並びに単位当たりのデータ転送量などに応じて、３以上のデータ群を作成するようにしてもよい。
【００７４】
１つのデータ群は、プログラムの同じ実行段階で参照される各ファイルの参照データで構成される。データ群情報は、データ群内で参照データ位置（データ群内データ位置）毎に、ファイルの参照部分に関する情報とその情報からデータ群内のデータを取り出すための情報を記述したレコードを用意する。
【００７５】
図３に示す例では、データ群情報の各レコードは、該当するデータ位置を含んでいるファイルのファイル名、ファイル・サイズ、データ群内データ位置、参照位置、参照サイズなどを書き込むフィールドを備えている。データ群１は、３箇所のデータ群内データ位置１〜３を含んでいるので、そのデータ群情報１は３つのレコードで構成される。例えば、最初のレコードは、データ群内データ位置１が、データ・ファイル１、そのファイル・サイズが５１２０、参照位置が０、参照サイズが１０２４であることを記述している。同様に、データ群２は５箇所のデータ群内データ位置１〜５を含んでいるので、そのデータ群情報２は５つのレコードで構成される。
【００７６】
図３に示す実施形態では、プログラムの起動後、ファイル参照情報並びにデータ群情報に基づいて、プログラム実行の各段階毎に参照されるデータ群の順で、サーバからクライアントへプログラムの参照データが転送される。
【００７７】
図示の例では、サーバは、プログラム・ダウンロードの最初の段階で、プログラム本体と、プログラム起動時に参照が開始されるデータ群１とすべてのデータ群情報（すなわち、データ群情報１及びデータ群情報２）を、クライアントへ転送する。
【００７８】
そして、プログラム・ダウンロードの次の段階として、サーバは、プログラム実行の次の段階で参照が開始されるデータ群すなわちデータ群２をクライアントへ転送する。
【００７９】
クライアント側では、プログラムと最初のデータ群が届いた段階で、プログラムを起動し、データ群情報に基づいてデータ・ファイルを作成し、これを参照（すなわちファイル操作）しながらプログラムを実行することができる。図６には、データ群１及びデータ群２から作成されたデータを示している。
【００８０】
最初に転送されるプログラム本体、データ群情報、及びデータ群１の総サイズと、次段階で転送されるデータ群２のサイズは、データ転送量とデータ転送回数を考慮して最適化される。
【００８１】
Ｃ．第２の実施形態
上述した本発明の第１の実施形態では、プログラムの起動後から各実行段階において、各データ・ファイルがプログラムによって参照される位置及びサイズに応じて、ファイルを分割して転送することにより、データ・ファイルの転送におけるデータ転送量とデータ転送回数を最適化するものである。
【００８２】
これに対し、プログラムを再構成して、分割転送するという手法もある。すなわち、プログラムを構成要素毎に分割し、プログラムの起動後実行される順にプログラムの構成要素を順次転送していくことによって、データ転送量とデータ転送回数を最適化することができる。
【００８３】
このようなプログラム構成要素毎の分割転送を、上述したプログラム参照ファイルの分割転送と組み合わせることによって、データ転送量とデータ転送回数をさらに最適化することができる。
【００８４】
サーバは、プログラムの起動直後に実行されるプログラム新規構成要素、該プログラム新規構成要素によって参照が開始されるデータ群、及び再構成されたデータ群情報をまずクライアントへ転送し、以降、実行される順にプログラム新規構成要素及び該プログラム新規構成要素によって参照が開始されるデータ群をクライアントへ転送するようにすることで、データ転送量を最適化することができる。
【００８５】
また、クライアント側では、プログラムの実行と並行して、プログラム新規構成要素と参照されるデータ群をダウンロードすることによって、ダウンロードを最適化することができる。
【００８６】
図７には、本実施形態において、サーバ上のプログラムをネットワークを通してクライアント側で実行するための全体フローを示している。
【００８７】
まず、ステップＳ１では、プログラムの再構成を行なう。プログラムは複数の基本構成要素によって構成されているものとして扱うことができる。したがって、プログラム実行時においてプログラムに含まれる各基本構成要素についてのプログラム参照情報を生成し、このプログラム参照情報を基に各基本構成要素間の関連性を考慮して、関連性のある複数の基本構成要素を１つのプログラム新規構成要素として生成して、プログラムをプログラム新規構成要素の集合として再構成することができる（後述）。
【００８８】
このようなプログラム構成要素毎の分割転送を、上述したプログラム参照ファイルの分割転送と組み合わせることによって、データ転送量とデータ転送回数をさらに最適化することができる。但し、この場合、プログラム新規構成要素の編成に伴い、データ群並びに各データ群への参照に関するデータ群情報を再構成する必要がある（ステップＳ２）。
【００８９】
データ群並びにデータ群情報を作成するために、まず、ファイル参照情報を作成する（ステップＳ２−１）。
【００９０】
ファイル参照情報は、参照されたファイルの属性情報／内部データに関する情報であり、図３に示した例では、各ファイルについてのプログラムによる参照位置と参照サイズで構成される。本実施形態では、ファイル参照情報は各ファイルについてのファイル操作情報を記述したテーブルとして構成されるものとする（後述）。
【００９１】
次いで、ファイル参照情報から、各ファイルに対して各プログラム新規構成要素が行なうファイル操作情報を記述した「新規構成要素ファイル操作情報」を作成する（ステップＳ２−２）。
【００９２】
次いで、プログラムから参照される各ファイルをブロックに分割し、各ブロックに対して各プログラム新規構成要素によって有効なファイル操作が行なわれたかどうかを記述した参照データ確認テーブルを作成する（ステップＳ２−３）。
【００９３】
次いで、この参照データ確認テーブルを利用して、プログラム新規構成要素から有効な操作が行なわれたブロックのデータを該当するファイルのブロックからコピーして、各プログラム新規構成要素についての参照データ・ファイルを作成する（ステップＳ２−４）。この参照データ・ファイルは、プログラム新規構成要素についてのデータ群に相当する。
【００９４】
次いで、参照データ・ファイルへ参照するための参照データ・ファイル・リストを各新規構成要素毎に作成する（ステップＳ２−５）。
【００９５】
次いで、プログラムとその参照ファイルのクライアントへの転送が行なわれる（ステップＳ３）。
【００９６】
本実施形態では、それぞれのプログラム新規構成要素に対し、関連する１以上の参照データ・ファイルを含める（アーカイブする）（ステップＳ３−１）。最初にダウンロードされるプログラム新規構成要素を含むアーカイブ・ファイルには、すべてのプログラム新規構成要素に関する参照データ・ファイル・リストが付加される。２回目以降にダウンロードされるプログラム新規構成要素のアーカイブ・ファイルには、関連する参照データ・ファイルのみが付加される。
【００９７】
次いで、起動からの新規構成要素必要時間に従って、各プログラム新規構成要素のアーカイブ・ファイルを順次クライアントへ転送する（ステップＳ３−２）。
【００９８】
そして、クライアント側では、受信したアーカイブ・ファイルを展開し、参照データ・ファイル・リストを利用してデータ・ファイルを作成する。そして、プログラムを起動して実行するとともに、その実行の各段階において、オープンやリード、ライト、クローズなどのデータ・ファイルの操作を行なう（ステップＳ３）。
【００９９】
Ｃ−１．プログラムの再構成
プログラムの再構成を行なう。プログラムは複数の基本構成要素によって構成されているものとして扱うことができる。したがって、プログラム実行時においてプログラムに含まれる各基本構成要素についてのプログラム参照情報を生成し、このプログラム参照情報を基に各基本構成要素間の関連性を考慮して、関連性のある複数の基本構成要素を１つのプログラム新規構成要素として生成して、プログラムをプログラム新規構成要素の集合として再構成することができる。
【０１００】
図８には、本実施形態において再構成の対象となるプログラムの内部構成例を模式的に示している。ここでは、プログラムの例として、マインスイーパー・ゲーム・プログラムである”ｋｍｉｎｅｓ”プログラム（ｋｍｉｎｅｓ：ｔｈｅ  ＫＤＥ  ｍｉｎｅｓｗｅｅｐｅｒ；Ｃｏｐｙｒｉｇｈｔ（Ｃ）１９９６−９７−９８−９９  Ｎｉｃｏｌａｓ  ＨＡＤＡＣＥＫ）を用いている。但し、図示のｋｍｉｎｅｓプログラムは、米インテル社の８０３８６アーキテクチャのＥＬＦフォーマットで作成されるものとする。
【０１０１】
同図に示すように、プログラムの構成はテキスト（ｔｅｘｔ）、データ（ｄａｔａ）、ヘッダ（ｈｅａｄｅｒ）の３つに大きく分類できる。このうちテキストはプログラムの命令列であり、図８に示す例ではテキスト５−３で示されている。プログラムの命令列は、関数を単位として、テキストを構成している。本実施形態では、関数を、テキストを構成する基本構成要素として扱う。図８には、ｋｍｉｎｅｓを構成する関数を１部示している。
【０１０２】
データは、プログラムにより参照される変数や定数のことであり、図８ではデータ５−４で示されている。ここでは、変数や定数は実際のダウンロードが必要なものに限定される。つまり、プログラムの実行時にスタック上やヒープ領域に動的に配置される変数や定数はプログラムより参照はされるが、ダウンロードを行なう必要はないので、データ５−４から除外される。また、静的に配置される変数や定数であっても、その初期値が０などの特定値である場合には、プログラム実行開始前に実行環境によって配置と初期化を行うことが可能であるので、ダウンロードを行なう必要がない。したがって、このような変数や定数もデータ５−４から除外される。データ５−４は、以上を除く変数や定数に分割することができる。本実施形態では、これら変数と定数を、データを構成する基本構成要素として扱う。図８では、例としてｋｍｉｎｅｓを構成する関数を１部示している。以降、本明細書中では、関数と変数、定数を総称して「シンボル」と呼ぶ。
【０１０３】
ヘッダは、プログラム管理データであり、図８ではヘッダ５−５として示されている。ここで、プログラム管理データとは、プログラムの実行によって直接参照されることはないが、その実行を実現するために実行環境によって参照されるデータ構造のことである。
【０１０４】
図示のように、プログラム管理データは、さらに複数の管理データにより構成される。ＥＬＦフォーマットの場合多くの管理データを持つが、本明細書では簡便のため、再配置テーブルであるｒｅｌｏｃａｔｉｏｎ５−６と動的シンボル・テーブルであるｄｙｎｓｙｍ５−７の２つより構成されるものとする。
【０１０５】
再配置テーブル５−６は、命令列やデータのどの部分が実行環境で決定されるアドレスを参照するかとその参照の解決方法を示しており、実行環境はこれを利用して決定したアドレスをプログラム・コードやデータに適用する。また、動的シンボル・テーブルはシンボル参照のアドレス解決を行なうために利用される。これら２つの管理データは、テーブル形式で構成されるため、複数のエントリから構成されている。再配置テーブルは複数の再配置エントリから構成され、動的シンボル・テーブルはシンボル・エントリにより構成される。
【０１０６】
本実施形態では、再配置エントリとシンボル・エントリをそれぞれ再配置テーブル５−６と動的シンボル・テーブル５−７の基本構成要素として扱っている。プログラム管理領域中の管理領域の種類によっては、その大きさが十分に小さいものである場合や、基本構成要素への分割が困難である場合がある。そのような場合には、それらを１つの基本構成要素として扱う。
【０１０７】
図８に示す例では、再配置テーブルＲｅｌｏｃａｔｉｏｎ５−６の最初のエントリｒｅｌ＿Ｋｍｉｎｅｓ：：Ｋｍｉｎｅｓ（Ｑｗｉｄｇｅｔ＊，ｃｈａｒ  ｃｏｎｓｔ＊）が、関数Ｋｍｉｎｅｓ：：Ｋｍｉｎｅｓ（Ｑｗｉｄｇｅｔ＊，ｃｈａｒ  ｃｏｎｓｔ＊）への参照を行なう命令列又はデータの位置と参照の解決方法が記述されているエントリであることを示している。また、動的シンボル・テーブルｄｙｎｓｙｍ５−７の最初のエントリｓｙｍ＿ｍａｉｎは、関数ｍａｉｎのアドレスを決める情報が記述されているエントリであることを示している。実際のｋｍｉｎｅｓとは異なるが、図８ではプログラムの実行がｍａｉｎから始まるものとし、ｍａｉｎを直接参照する命令列又はデータがｋｍｉｎｅｓプログラム内にないものとし、このためｒｅｌ＿ｍａｉｎが存在しないようになっている。
【０１０８】
次いで、プログラムの再構成手順について説明する。
【０１０９】
まず、プログラムの再構成に必要となる参照情報について説明する。以下の表１には本実施形態で使用する参照情報を示している。
【０１１０】
【表１】
2004240802.tif 000003
【０１１１】
上表に示す参照情報は、ｋｍｉｎｅｓプログラムを米インテル社のプロセッサＣｅｌｅｒｏｎ４６６ＭＨｚ上で実行したときの値を示している。なお、説明の簡素化のため、ｋｍｉｎｅｓが使用する動的ライブラリやｋｍｉｎｅｓ内部の定数については省略している。
【０１１２】
表１に示した参照情報の各エントリは、ＩｎｄｅｘとＳｙｍｂｏｌとＴｉｍｅｓｔａｍｐで構成される。Ｉｎｄｅｘは、各エントリを区別するために説明の便宜上あるもので、実際には必要ではない。
【０１１３】
Ｓｙｍｂｏｌはシンボルを識別するために使用される。表１では分かり易さのため文字列で示しているが、実際にはシンボルを識別するＩＤや動的ライブラリを区別するＩＤが使用される。このため、表１では同じシンボル名のエントリが存在するが、それらはファイル・スコープの異なる変数であり実際にはＩＤによって区別することができる。
【０１１４】
また、Ｔｉｍｅｓｔａｍｐはシンボルがプログラムの実行時に最初に参照された時刻を示している。プログラムの実行時に１度も参照されなかったシンボルは参照情報に現れない。Ｔｉｍｅｓｔａｍｐを最初にそのシンボルが参照された時刻とするのは、最初の参照でそのシンボルのダウンロードが必要となるためである。それ以後の参照では、既にダウンロードは完了しているため、それらの参照情報は必要としない。表１では、ｋｍｉｎｅｓが起動するまでのエントリをその参照順、つまりＴｉｍｅｓｔａｍｐ順で示している。
【０１１５】
このような参照情報は、プログラムの実行時に関数や変数がどのような頻度でアクセスされるか、あるいは、どのような時刻又は時間間隔でアクセスされるかなどの、プログラム実行時の特性に関する情報を得る「トレース処理」を行なうことによって生成することができる。トレースを実現する手法としては、プログラムの実行情報を得るためにプログラム・コードに情報取得を行なうコードの追加を行うＣｏｄｅ  Ｉｎｓｅｒｔｉｏｎ方式や、プログラムの実行からは透過的に実行環境によって定期的にプログラムの実行を中断してその時点のプログラムのコンテキスト情報からプログラムの実行情報の収集を行なうＳａｍｐｌｉｎｇ方式を挙げることができる。
【０１１６】
次いで、プログラムの再構成手順について、図９に示すフローチャートを参照しながら説明する。但し、再構成の前提として、参照情報生成手段により、再構成対象のプログラムを構成するモジュールについての上記の表１に示すような参照情報が与えられているものとする。
【０１１７】
まず、Ｔｉｍｅｓｔａｍｐをキーとして参照情報のエントリを参照時刻順にソートする（ステップＳ１１）。
【０１１８】
次いで、１つ前のエントリのＴｉｍｅｓｔａｍｐとの差分をとることで各シンボル間の参照時間間隔を計算する（ステップＳ１２）。
【０１１９】
次いで、得られた参照時間間隔を入力としてシステムが管理する参照時間間隔分布データを更新する（ステップＳ１３）。
【０１２０】
ここで、参照時間間隔分布データとは、ある参照時間間隔が発生した回数をその参照時間間隔毎に累計したものである。この累計はプログラム毎に累計を行なう方法や、プログラムを区別せずにすべてのプログラムに対して累計を行なう方法がある。本実施形態では、プログラムを区別せずにすべてのプログラムに対して累計を行なうものとする。また、本実施形態においての参照時間間隔分布データの更新では、参照時間間隔の回数が加算された後に、参照時間間隔の期待値と標準偏差の値が再計算される。参照時間間隔が短い基本構成要素はプログラム実行時に連続的に呼び出される可能性が高く、逆に、参照時間間隔が長い基本構成要素の間には、プログラム実行時に、ユーザ入力待ちやディスク・アクセスなどが含まれているなど関連性が低いと思料される。
【０１２１】
次いで、更新された期待値と標準偏差の値を加算して閾値とする（ステップＳ１４）。
【０１２２】
次いで、参照時刻順にソートされた参照情報を、前のステップで計算した閾値を用いて分割し、プログラムの新規構成要素すなわちワーキング・セット（ｗｏｒｋｉｎｇ  ｓｅｔ）を定義する。分割には、１つ前のエントリとの差分である参照時間間隔が閾値以上である部分で分割を行なう方法と、ワーキング・セット定義を開始したエントリの参照時刻からの差分が閾値以上である部分で分割を行なう方法がある。どちらの方法も、閾値未満の参照間隔である複数のシンボルを１つのワーキング・セットとして定義とする（ステップＳ１５）。
【０１２３】
参照が発生しないシンボルはプログラムの構造解析により幾つかのワーキング・セットとして定義することが可能であるが、本実施形態では簡便のためにまとめて１つのワーキング・セットを定義とする（ステップＳ１６）。
【０１２４】
このようにして得られたワーキング・セットの定義に従いプログラムのテキストとデータをワーキング・セットとして分割する（ステップＳ１７）。このとき、参照が発生しなかったシンボルから構成されるワーキング・セットには、プログラムの起動前にダウンロードを行なう必要があることを示すｐｒｅｌｏａｄのマークを付ける。
【０１２５】
そして、再配置テーブルを構成する再配置エントリと動的シンボル・テーブルを構成するシンボル・エントリのうちワーキング・セット定義に含まれるシンボルに対応するエントリを該当するワーキング・セットに追加していく（ステップＳ１８）。
【０１２６】
より具体的には、再配置エントリは命令列データのどの部分が実行環境で決定されるアドレスを参照するかを示しているため、シンボルと対応付けが可能である。また、一般的なトレーサは、ヘッダに対して参照時刻をとることができないので、ヘッダをワーキング・セット定義に従って分割することはできない。そこで、対応するシンボルが属するワーキング・セットに再配置エントリを入れることで再配置テーブルを分割するようにする。
【０１２７】
同様に、シンボル・エントリも対応するシンボルが存在するため、対応するシンボルが属するワーキング・セットにシンボル・エントリを入れることで動的シンボル・テーブルを分割するようにする。
【０１２８】
ここで、図８及び表１に示したプログラムを例にとって、上述のプログラム再構成の手順について説明する。表１は、最初の参照時刻順すなわちＴｉｍｅｓｔａｍｐの順序に従って既に並べ替えられている。
【０１２９】
システムが管理する参照時間間隔分布データにより、過去参照数２５，２１２回のデータの参照時間間隔の期待値が０．００６１１９５００７７３７１、そのときの標準偏差が０．１７９５５９７０１２２９５５であったとすると、閾値は０．１８５６７９２０２００３２６が得られる。この閾値を利用して参照時間間隔が閾値以上である部分で分割を行なうと、表１のＩｎｄｅｘ０−６，Ｉｎｄｅｘ７−３２，Ｉｎｄｅｘ３３−５４，Ｉｎｄｅｘ５５−５７，Ｉｎｄｅｘ５８の５つに分割することができる。ここでは、これらをそれぞれワーキング・セットとして定義する。
【０１３０】
表１に示した参照情報の例では、ＫＭｉｎｅｓの起動までの部分しかないために、プログラム全体を分割することはできないが、参照情報をプログラムのさまざまな実行に対して得ることで、実際にはプログラム全体の分割が可能となる。
【０１３１】
次いで、得られたワーキング・セットに対応する再配置テーブルのエントリと動的シンボル・テーブルのエントリを対応する各ワーキング・セット定義に追加を行う。例えば、関数ｍａｉｎがＱＡｒｒａｙＴ〈ｃｈａｒ〉ｖｉｒｔｕａｌ  ｔａｂｌｅとＱＳｔｒｉｎｇ  ｖｉｒｔｕａｌ  ｔａｂｌｅを参照するのであれば、ｒｅｌ＿ＱＡｒｒａｙＴ〈ｃｈａｒ〉ｖｉｒｔｕａｌ  ｔａｂｌｅとｒｅｌ＿  ＱＳｔｒｉｎｇ  ｖｉｒｔｕａｌ  ｔａｂｌｅがｍａｉｎの属するワーキング・セット定義に追加される。また、ｓｙｍ＿ｍａｉｎもｍａｉｎの属するワーキング・セット定義に追加される。
【０１３２】
以上の手順により、図８に示したＫＭｉｎｅｓの１部は、図８に示すような複数のワーキング・セットすなわちプログラム新規構成要素に再構成される。それぞれのワーキング・セット内ではプログラム実行時に連続的に参照される可能性が高く、これに対し、ワーキング・セット間ではユーザ入力待ちやディスク・アクセスが存在するなどの原因で参照時刻に隔たりがある、ということを充分理解されたい。
【０１３３】
図９に示したような手順でプログラムの再構成を行なうことにより、短時間内に参照が発生したシンボルのみを集めて各ワーキング・セットを構成することができる。また、再配置エントリやシンボル・エントリなどのプログラム管理データもシンボルに対応して分割することにより、実行環境がワーキング・セットをプログラムに対して利用可能にするために必要となる部分のみをダウンロードすることができる。
【０１３４】
Ｃ−２．新規構成要素ファイル操作情報の作成
この項では、プログラムの再構成処理により、ある参照時間間隔閾値を用いて４つのプログラム新規構成要素に分割されているプログラムを例にとって、ファイル参照情報の最構成について説明する。但し、これらプログラム新規構成要素の起動からの参照時間はそれぞれ以下に示す通りであるとする。
【０１３５】
プログラム新規構成要素１：０〜５
プログラム新規構成要素２：１０〜１５
プログラム新規構成要素３：２０〜２５
プログラム新規構成要素４：参照情報に登録なし
【０１３６】
これは、プログラムの起動からの各プログラム新規構成要素が必要となるまでの経過時間である「新規構成要素必要時間」を指しており、上記の例では、それぞれのプログラム新規構成要素についての必要時間が以下であることを表わしている。
【０１３７】
プログラム新規構成要素１：起動から０秒までに必要
プログラム新規構成要素２：起動から１０秒までに必要
プログラム新規構成要素３：起動から２０秒までに必要
プログラム新規構成要素４：起動から２５秒以降に必要
【０１３８】
プログラムによるファイル中の各データへの参照を記録したファイル参照情報に基づいて、ファイルの中からプログラム実行の各段階毎に参照が開始されるデータを集めてデータ群が作成される。
【０１３９】
本実施形態では、ファイル参照情報から、各ファイルに対して各プログラム新規構成要素が行なうファイル操作情報を記述した「新規構成要素ファイル操作情報」を作成する。ファイル参照情報は、以下の表２に示す通り、各ファイルについてのファイル操作情報を記述したテーブルとして構成される。
【０１４０】
【表２】
2004240802.tif 000004
【０１４１】
但し、ここで言うファイル操作情報は、呼び出し時間、シーク位置、アクセス・サイズ、呼び出し種別の組み合わせで構成される。呼び出し時間はプログラム開始からの時間のことを指す。シーク位置は、リード／ライトの操作のとき意味を持ち、リード／ライトを呼び出した時点の値を指す。アクセス・サイズは、リード／ライトの操作のとき意味を持ち、リードであれば、実際に読み込んだサイズを、ライトであれば実際に書き込んだサイズを指す。呼び出し種別は、例えばオープン／クローズ／リード／ライトのいずれかである。
【０１４２】
本実施形態では、以下に示す処理手順に従って、ファイル参照情報から新規構成要素ファイル操作情報を作成する。
【０１４３】
（１）ファイル参照情報のファイル名に対し、複数のファイル操作情報を呼び出し時間でソートする。
【０１４４】
（２）ファイル操作情報の呼び出し時間とそれぞれのプログラム新規構成要素の起動からの必要時間とを比較する。そして、ファイル操作情報の呼び出し時間よりも起動からの新規構成要素必要時間が短いものの中で最も該必要時間が最も長いものを、このファイル操作情報に対応するプログラム新規構成要素として選択する。この結果、１つの新規構成要素に対し１以上のファイル参照情報が選ばれる。
【０１４５】
（３）すべてのファイル操作情報に対して、上記の処理（２）を実行する。
【０１４６】
（４）すべてのファイル参照情報のすべてのファイル名に対し、上記の処理（１）及び（３）を実行し、新規構成要素ファイル操作情報を作成する。
【０１４７】
以下の表３には、新規構成要素ファイル操作情報の構成例を示している。同表に示す例では、各ファイル名についてのファイル操作情報がプログラム新規構成要素毎に仕分けされている。すなわち、新規構成要素ファイル操作情報を参照することにより、各プログラム新規構成要素が書くファイル名に対して行なったファイル操作を早見することができる。
【０１４８】
【表３】
2004240802.tif 000005
【０１４９】
また、図１０には、ファイル参照情報から新規構成要素ファイル操作情報を作成するための処理手順をフローチャートの形式で示している。
【０１５０】
まず、ファイル参照情報を参照し、１つのファイル名についてのレコードを取り出し（ステップＳ２１）、すべてのファイル名に対して以下の処理を繰り返し実行する（ステップＳ２２）。
【０１５１】
取り出したレコードに含まれるファイル操作情報を呼び出し時間でソートする（ステップＳ２３）。
【０１５２】
次いで、ファイル操作情報の呼び出し時間とそれぞれのプログラム新規構成要素の起動からの必要時間とを比較して、該当するプログラム新規構成要素を選択する（ステップＳ２４）。
【０１５３】
そして、レコードに含まれるすべてのファイル操作情報についてプログラム新規構成要素の選択処理を繰り返し実行する（ステップＳ２５）。
【０１５４】
すべてのファイル操作情報について処理を終えると、ステップＳ２１に戻り、次のファイル名のレコードを取り出し、同様の処理を繰り返し実行する。
【０１５５】
Ｃ−３．参照データ確認テーブルの作成
新規構成要素ファイル操作情報が作成されると、これを利用して、プログラムから参照される各ファイルをブロックに分割し、各ブロックに対して各プログラム新規構成要素によって有効なファイル操作が行なわれたかどうかを記述した参照データ確認テーブルを作成する。
【０１５６】
本実施形態では、以下に示す処理手順に従って、参照データ確認テーブルを作成する。
【０１５７】
（１）新規構成要素ファイル操作情報にある各ファイル名に対する新規構成要素の参照データ確認テーブルを作成する。このテーブルはファイルのサイズを数バイトのブロックに区切り、有効、無効の印を付けることのできるテーブルである。参照データ確認テーブルの初期値は無効である。
【０１５８】
（２）作成されたテーブルに有効の印を付ける。ブロック有効、無効の判断は、ファイルのサイズを超えるかどうかで判断される。ファイルのサイズは、プログラムが初めて動作する時に参照するファイル・サイズである。
【０１５９】
ファイル操作情報の呼び出し種別がリードの場合、シーク位置とアクセス・サイズからブロックを得る。ファイル・サイズを超えるような場所へのアクセスはブロック無効である。ブロックが無効でなければ、ブロックに有効を付ける。
【０１６０】
また、ファイル操作情報の呼び出し種別がライトの場合、シーク位置とアクセス・サイズからブロックを得る。ファイル・サイズを超えるような場所へのアクセスはブロック無効である。ブロックが無効でなければ、ブロックに有効を付ける。
【０１６１】
（３）上述した処理（２）をすべてのファイル操作情報について実行する。
【０１６２】
（４）上述した処理（１）及び（３）をファイル名に対するすべてのプログラム新規構成要素に対して実行する。
【０１６３】
（５）上述した処理（４）を新規構成要素ファイル操作情報に登録されているすべてのファイル名に対して実行する。
【０１６４】
図１１には、参照データ確認テーブルの作成例を示している。同図に示す例では、処理対象となるデータ・ファイルは、所定サイズのブロック（ア）〜（オ）の５ブロックに分割されているので、５つのカラムを持つ参照データ確認テーブルが用意される。各カラムの初期値は無効である。そして、ファイル操作情報を解析することにより、有効なアクセスが行なわれていることが判明したブロック（ア）、（イ）、並びに（エ）に有効の印が付けられている。
【０１６５】
また、図１２には、ファイル参照情報から新規構成要素ファイル操作情報を作成するための処理手順をフローチャートの形式で示している。
【０１６６】
新規構成要素ファイル操作情報を参照して、未処理のファイル名があれば（ステップＳ３１）、以下の処理を実行する。
【０１６７】
まず、新規構成要素ファイル操作情報のファイル名と新規構成要素から、参照データ確認テーブルを作成する（ステップＳ３２）。そして、新規構成要素ファイル操作情報にあるすべてのファイル名に対して、同様の処理を繰り返し行なう（ステップＳ３３）。
【０１６８】
次いで、ファイル操作情報を得る（ステップＳ３４）。ファイル操作情報の呼び出し種別がリードの場合には（ステップＳ３５）、アクセスするブロック位置を得て（ステップＳ３６）、ブロックが無効でないかどうかを判断する（ステップＳ３７）。そして、無効でない場合には、参照データ確認テーブルの該当ブロック位置に有効を記す（ステップＳ３８）。その後、ステップＳ３４に戻り、次のファイル操作情報について同様の処理を実行する。
【０１６９】
また、ファイル操作情報の呼び出し種別がリードの場合には（ステップＳ３９）、アクセスするブロック位置を得て（ステップＳ４０）、ブロックが無効でないかどうかを判断する（ステップＳ４１）。そして、無効でない場合には、参照データ確認テーブルの該当ブロック位置に有効を記す（ステップＳ４２）。その後、ステップＳ３４に戻り、次のファイル操作情報について同様の処理を実行する。
【０１７０】
参照データ確認テーブルは、各ファイル名について、ファイル操作を行なうプログラム新規構成要素毎に作成される。以下の表４には、参照データ確認テーブルと関連するファイル名並びに関連するプログラム新規構成要素の早見表を示している。
【０１７１】
【表４】
2004240802.tif 000006
【０１７２】
Ｃ−４．参照データ・ファイルの作成
次いで、この参照データ確認テーブルを利用して、プログラム新規構成要素から有効な操作が行なわれたブロックのデータを該当するファイルのブロックからコピーして、各プログラム新規構成要素についての参照データ・ファイルを作成する。この参照データ・ファイルは、プログラム新規構成要素についてのデータ群に相当する。
【０１７３】
また、参照データ・ファイルへ参照するための参照データ・ファイル・リストを各プログラム新規構成要素毎に作成する。参照データ・ファイル・リストは、プログラム新規構成要素についてのデータ群情報に相当する。
【０１７４】
本実施形態では、以下に示す処理手順に従って、参照データ・ファイル並びに参照データ・ファイル・リストを作成する。
【０１７５】
（１）参照データ確認テーブルにおいて有効なブロックのデータを、参照データ確認テーブルに関連するデータ・ファイルの該当ブロックから参照データ・ファイルにコピーする。参照データ・ファイルの名前はユニークな名前で作成する。
【０１７６】
図１１に示した例では、参照データ確認テーブルのブロック（ア）、（イ）、並びに（エ）に有効の印が付けられているので、参照データ確認テーブルに関連するデータ・ファイルの該当ブロックからデータがコピーされて、参照データ・ファイルが作成される（図１３を参照のこと）。
【０１７７】
（２）プログラム新規構成要素毎に、参照データ・ファイルを参照するための参照データ・ファイル・リストのファイルを作成する。この参照データ・ファイル・リストは、参照データ・ファイル名、データ・ファイル名、データ・ファイル・サイズ、並びに有効ブロック位置（番号）を記録する。データ・ファイル・サイズから全ブロックが幾つかは分る。
【０１７８】
図１４には、参照データ・ファイル・リストの構成例を示している。参照データ・ファイルは、プログラム新規構成要素が参照する各データ・ファイル毎に作成される。参照データ・ファイル・リストは、データ群としての参照データ・ファイルについての参照データ・ファイル名、元のデータ・ファイル名、データ・ファイル・サイズ、並びに有効ブロック番号をファイル形式で保持している。プログラムがファイルを参照するときには、参照データ・ファイル・リストを利用して、該当する参照データ・ファイルを探索することができる。
【０１７９】
（３）上述した（１）及び（２）の処理をすべての参照データ確認テーブルに対して実行する。
【０１８０】
なお、ファイルの参照はあるが無効なブロックを含むファイルと、参照がないファイルは、いつ参照されるか分らない新規構成要素に対して行なわれる。本実施形態では、新規構成要素４がこれに該当する。
【０１８１】
（１）ファイルの参照はあるが無効なブロックを含むファイル
すべての参照データ確認テーブルを確認し、無効のブロックがあるファイルは、無効ブロックを参照データ・ファイルにコピーする。参照データ・ファイル・リストファイルに、参照データ・ファイル名、ファイル名、データ・ファイル・サイズ、無効ブロック位置（コピーされたブロック位置の意味）を記録する。
【０１８２】
（２）参照がないファイル
参照がないファイルはすべてのブロックが無効であると考え、上述した（１）の操作を行なう。参照がないファイルは、ファイル参照情報にファイル名がなく、プログラムが必要とするデータ・ファイルの属性情報にファイル名があるファイルとして得ることができる。
【０１８３】
Ｃ−５．アーカイブ・ファイルの作成
本実施形態では、ファイル内のデータの一部をプログラム新規構成要素に含めるという手法が採られる。すなわち、プログラム構成要素、データ群としての複数の参照データ・ファイル、データ群情報としての参照データ・ファイル・リスト・ファイルをアーカイブすることにより、１つにまとめる。
【０１８４】
最初にダウンロードされるプログラム新規構成要素を含むアーカイブ・ファイルには、すべてのプログラム新規構成要素に関する参照データ・ファイル・リストが付加される。図１５には、最初にダウンロードされるアーカイブ・ファイルを作成する様子を示している。同図に示すように、プログラムの起動直後に実行されるプログラム新規構成要素と、このプログラム新規構成要素によって参照される参照データ・ファイルと、すべての参照データ・ファイルについての参照データ・ファイル・リスト・ファイルがアーカイブされ、単一のファイルが作成される。
【０１８５】
また、２回目以降にダウンロードされるプログラム新規構成要素のアーカイブ・ファイルには、関連する参照データ・ファイルのみが付加される。図１６には、２回目以降にダウンロードされるアーカイブ・ファイルを作成する様子を示している。同図に示すように、プログラムの起動後の各段階に実行されるプログラム新規構成要素と、このプログラム新規構成要素によって参照される参照データ・ファイルがアーカイブされ、単一のファイルが作成される。
【０１８６】
Ｃ−６．アーカイブ・ファイルの移動
本実施形態では、サーバからクライアントへのプログラム及びその参照ファイルの移動処理は、アーカイブ・ファイル毎に行なわれる。
【０１８７】
アーカイブ・ファイルの移動処理は、クライアント側に配置されたアーカイブ処理装置により以下に示す処理手順に従って実行される。図１７には、アーカイブ・ファイルを移動するための処理手順をフローチャートの形式で示している。
【０１８８】
（１）アーカイブ処理装置は、プログラム新規構成要素を要求する（ステップＳ５１）。プログラム新規構成要素はアーカイブ・ファイルと透過的に扱われ、実際にロードされるファイルはアーカイブ・ファイルである。
【０１８９】
（２）アーカイブ処理装置は、アーカイブ・ファイルを受信し、これを展開処理する（ステップＳ５２）。アーカイブ・ファイルには、プログラム新規構成要素と、参照データ・ファイルが含まれている。最初にダウンロードされたアーカイブ・ファイルの場合には、複数の参照データ・ファイル・リスト・ファイルが含まれている（図１５を参照のこと）。
【０１９０】
（３）アーカイブ処理装置は、初回にダウンロードしたプログラム新規構成要素に対する参照データ・ファイル・リスト・ファイルと、参照データ・ファイルを使用して、データ・ファイルをクライアント上に作成する（ステップＳ５３）。
【０１９１】
▲１▼参照データ・ファイル・リスト・ファイルに記述されているデータ・ファイルを、記述されているデータ・ファイル・サイズで作成する。データ・ファイルが既に存在している場合には、作成しない。
▲２▼参照データ・ファイルから、関連する参照データ・ファイル・リスト・ファイルで作成されたデータ・ファイルに、有効ブロックをコピーする。但し、コピーしようとしたブロックが既に有効であった場合はコピーを行なわない（この現象は、プログラム起動までの動作が起動毎に異なる場合でないと起きない）。
▲３▼クライアントのファイルシステムに、有効なブロックのリストを渡す。
▲４▼上述した▲１▼〜▲３▼の処理を、参照データ・ファイル・リスト上のすべてのファイルに対して実行する。
【０１９２】
（４）プログラム新規構成要素をクライアントに渡す（ステップＳ５４）。
【０１９３】
Ｃ−７．ファイル操作
クライアント側では、プログラムを起動し、データ群情報に基づいてデータ・ファイルを作成しこれを参照しながらプログラムを実行することができる。この項では、プログラム実行時に行なわれるファイル操作について説明する。
【０１９４】
ファイル・オープン：
ファイルのオープン（ｏｐｅｎ）操作は、以下に示す処理手順に従って行なわれる。図１８には、ファイルのオープン操作の処理手順をフローチャートの形式で示している。
【０１９５】
（１）プログラムは、ファイルのオープンを呼び出す。
【０１９６】
（２）ファイル・オープン要求に応答して、ファイルシステムは、まず、クライアント・ローカルでファイルの存在を調べる（ステップＳ６１）。
【０１９７】
ここで、該当するファイルが既にローカル・ファイルとして存在する場合には、通常通りのオープン操作を実行し、指定ファイル（ディスクリプタ）をプログラムに返して（ステップＳ６２）、本処理ルーチン全体を終了する。
【０１９８】
一方、要求されたファイルがローカル・ファイルとして存在しない場合には、ファイルシステムは、アーカイブ処理装置（前述）に対して、指定ファイルを要求する（ステップＳ６３）。
【０１９９】
アーカイブ処理装置は、参照データ・ファイル・リスト（図１４を参照のこと）を参照して、指定ファイルが存在するかどうかを調べる（ステップＳ６４）。
【０２００】
指定ファイルが存在する場合には、アーカイブ処理装置は、サーバに対して、指定ファイルを含んだアーカイブ・ファイルを要求する（ステップＳ６５）。
【０２０１】
そして、サーバ側からアーカイブ・ファイルを受信したならば（ステップＳ６６）、指定ファイルを作成し、これをファイルシステムに通知する（ステップＳ６７）。ファイルシステムは、通常通りのオープン操作を実行し、ディスクリプタをプログラムに返して（ステップＳ６２）、本処理ルーチン全体を終了する。
【０２０２】
一方、指定ファイルが存在しない場合には、アーカイブ処理装置はファイルシステムにその旨を通知し（ステップＳ６８）、本処理ルーチン全体を終了する。
【０２０３】
ファイル・リード：
ファイルのリード（ｒｅａｄ）操作は、以下に示す処理手順に従って行なわれる。図１９には、ファイルのリード操作の処理手順をフローチャートの形式で示している。
【０２０４】
（１）プログラムは、ファイルのリードを呼び出す。
【０２０５】
（２）ファイルのリード要求に応答して、ファイルシステムは、まず、指定ファイルが無効ブロックを含むかどうかを調べる（ステップＳ７１）。
【０２０６】
ここで、指定ファイル（ディスクリプタ）が無効ブロックを含んでいる場合には、リード要求されたブロック位置が有効かどうかをさらに調べる（ステップＳ７２）。
【０２０７】
そして、リード要求されたブロック位置が有効ブロックである場合には、ファイルシステムは、通常のリード処理を行なって（ステップＳ７３）、本処理ルーチン全体を終了する。
【０２０８】
一方、リード要求されたブロック位置が無効ブロックである場合には、ファイルシステムは、指定ファイルのリード位置が有効であるブロックを含むアーカイブ・ファイルをアーカイブ処理装置に要求する（ステップＳ７４）。
【０２０９】
アーカイブ処理装置は、サーバに対してアーカイブ・ファイルを要求し、サーバ側からアーカイブ・ファイルを受信したならば（ステップＳ７５）、指定ファイルを作成し、これをファイルシステムに通知する（ステップＳ７６）。ファイルシステムは、通常のリード処理を行なって（ステップＳ７３）、本処理ルーチン全体を終了する。
【０２１０】
また、指定ファイルが無効ブロックを含んでいない場合には（ステップＳ７１）、ファイルシステムは、通常のリード処理を行なって（ステップＳ７３）、本処理ルーチン全体を終了する。
【０２１１】
ファイル・ライト：
ファイルのライト（ｗｒｉｔｅ）操作は、以下に示す処理手順に従って行なわれる。図２０には、ファイルのライト操作の処理手順をフローチャートの形式で示している。
【０２１２】
（１）プログラムは、ファイルのライトを呼び出す。
【０２１３】
（２）ファイルのライト要求に応答して、ファイルシステムは、まず、指定ファイルが無効ブロックを含むかどうかを調べる（ステップＳ８１）。
【０２１４】
ここで、指定ファイル（ディスクリプタ）が無効ブロックを含んでいる場合には、ライト要求されたブロック位置が有効かどうか、並びにファイル・サイズを超えるような処理であるかどうかをさらに調べる（ステップＳ８２）。
【０２１５】
ライト要求がファイル・サイズを超えるような処理である場合には、ファイルシステムは通常のライト処理を行なって（ステップＳ８３）、本処理ルーチン全体を終了する。
【０２１６】
また、ライト要求されているブロック位置が有効ブロックである場合には、ファイルシステムは通常のライト処理を行なって（ステップＳ８３）、本処理ルーチン全体を終了する。
【０２１７】
一方、ライト要求されているブロック位置が無効ブロックである場合には、ファイルシステムは、指定ファイルのライト位置が有効であるブロックを含むアーカイブ・ファイルをアーカイブ処理装置に要求する（ステップＳ８４）。
【０２１８】
アーカイブ処理装置は、サーバに対してアーカイブ・ファイルを要求し、サーバ側からアーカイブ・ファイルを受信したならば（ステップＳ８５）、指定ファイルを作成し、これをファイルシステムに通知する（ステップＳ８６）。ファイルシステムは、通常のライト処理を行なって（ステップＳ８３）、本処理ルーチン全体を終了する。
【０２１９】
また、指定ファイルが無効ブロックを含んでいない場合には（ステップＳ８１）、ファイルシステムは、通常のライト処理を行なって（ステップＳ８３）、本処理ルーチン全体を終了する。
【０２２０】
なお、ファイルのクローズ（ｃｌｏｓｅ）処理は、プログラムからのファイルのクローズ呼び出しに応答して、ファイルシステムが通常のクローズ処理を行なう。
【０２２１】
［追補］
以上、特定の実施形態を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施形態の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、本明細書の記載内容を限定的に解釈するべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
【０２２２】
【発明の効果】
以上詳記したように、本発明によれば、ダウンロード及びプログラム実行のためにプログラムが参照するファイルの構造を最適化することができる、優れたデータ処理システム及びデータ処理方法、並びにコンピュータ・プログラムを提供することができる。
【０２２３】
また、本発明によれば、プログラム起動とともに即座にデータを参照することができるようにファイルの構造を最適化することができる、優れたデータ処理システム及びデータ処理方法、並びにコンピュータ・プログラムを提供することができる。
【０２２４】
本発明によれば、ユーザがプログラムを実行するまでに行なう操作を簡単にし、ダウンロードするファイルのサイズを最適にし、サーバにアクセスする回数を最適にし、データ・ファイルの一部にアクセスすることを可能にすることができる。また、本発明によれば、プログラムによるファイル操作が行なわれても、データ転送量とデータ転送回数の最適化が実現できる方法を提供することができる。
【図面の簡単な説明】
【図１】本発明に係るデータ処理方法を適用することができるシステム全体の構成を模式的に示した図である。
【図２】サーバあるいはクライアントとして動作するホスト装置のハードウェア構成を模式的に示した図である。
【図３】プログラムとプログラムによって参照される１以上のファイルを、サーバからクライアントに転送する仕組みを説明するための図である。
【図４】プログラムが参照するデータ・ファイルからデータ転送の単位となるデータ群を作成するための仕組みを示した図である。
【図５】データ群、並びにデータ群情報の一例を示した図である。
【図６】データ群１及びデータ群２から作成されたデータを示した図である。
【図７】サーバ上のプログラムをネットワークを通してクライアント側で実行するための全体フローを示した図である。
【図８】再構成の対象となるプログラムの内部構成例を模式的に示した図である。
【図９】プログラムの再構成手順を示したフローチャートである。
【図１０】ファイル参照情報から新規構成要素ファイル操作情報を作成するための処理手順を示したフローチャートである。
【図１１】参照データ確認テーブルの作成例を示した図である。
【図１２】ファイル参照情報から新規構成要素ファイル操作情報を作成するための処理手順を示したフローチャートである。
【図１３】参照データ確認テーブルを利用して参照データ・ファイルを作成する様子を示した図である。
【図１４】参照データ・ファイル・リストの構成例を示した図である。
【図１５】最初にダウンロードされるアーカイブ・ファイルを作成する仕組みを説明するための図である。
【図１６】２回目以降にダウンロードされるアーカイブ・ファイルを作成する仕組みを説明するための図である。
【図１７】アーカイブ・ファイルを移動するための処理手順を示したフローチャートである。
【図１８】ファイルのオープン操作の処理手順を示したフローチャートである。
【図１９】ファイルのリード操作の処理手順を示したフローチャートである。
【図２０】ファイルのライト操作の処理手順を示したフローチャートである。
【符号の説明】
１００…ホスト
１０１…ＣＰＵ，
１０２…主メモリ，１０３…ＲＯＭ
１０４…ディスプレイ・コントローラ
１０５…入力機器インターフェース
１０６…ネットワーク・インターフェース
１０７…外部機器インターフェース
１０８…バス
１１１…ディスプレイ
１１２…キーボード，１１３…マウス
１１４…ハード・ディスク装置
１１５…メディア・ドライブ
【図１】
2004240802.tif 000007
【図２】
2004240802.tif 000008
【図３】
2004240802.tif 000009
【図４】
2004240802.tif 000010
【図５】
2004240802.tif 000011
【図６】
2004240802.tif 000012
【図７】
2004240802.tif 000013
【図８】
2004240802.tif 000014
【図９】
2004240802.tif 000015
【図１０】
2004240802.tif 000016
【図１１】
2004240802.tif 000017
【図１２】
2004240802.tif 000018
【図１３】
2004240802.tif 000019
【図１４】
2004240802.tif 000020
【図１５】
2004240802.tif 000021
【図１６】
2004240802.tif 000022
【図１７】
2004240802.tif 000023
【図１８】
2004240802.tif 000024
【図１９】
2004240802.tif 000025
【図２０】
2004240802.tif 000026