(57)【要約】【課題】各種のファイルを端末にダウンロードさせて利用させるのに好適なダウンロードサービスシステム等を提供する。【解決手段】ダウンロードサーバ装置１１は、複数の端末１２にダウンロードさせるべきファイルの入力を受け付け、入力を受け付けられたファイルを複数に分割し、分割された結果（以下、それぞれを「セクタ」という。）のそれぞれと、当該セクタの当該ファイルにおける位置と、の対を、送信し、複数の端末１２のそれぞれは、ダウンロードサーバ装置１１から送信される対を受信し、受信された対に指定されたセクタと、当該セクタの当該ファイルにおける位置と、を取得し、取得されたセクタの内容を、ダウンロードすべきファイルを復元するための記憶域のうち取得された位置に、記憶させ、当該記憶域中にすべてのセクタの内容が記憶された場合、当該記憶域に記憶された内容をダウンロードされたファイルとする。【選択図】  図１
2004287631.tif 000002
【特許請求の範囲】
【請求項１】
ダウンロードサーバ装置と、複数の端末と、を備えるダウンロードサービスシステムであって、
（ａ）前記ダウンロードサーバ装置は、
前記複数の端末にダウンロードさせるべきファイルの入力を受け付け、
前記入力を受け付けられたファイルを複数に分割し、
前記分割された結果（以下、それぞれを「セクタ」という。）のそれぞれと、当該セクタの当該ファイルにおける位置と、の対を、送信し、
（ｂ）前記複数の端末のそれぞれは、
前記ダウンロードサーバ装置から送信される対を受信し、
前記受信された対に指定されたセクタと、当該セクタの当該ファイルにおける位置と、を取得し、
前記取得されたセクタの内容を、ダウンロードすべきファイルを復元するための記憶域のうち前記取得された位置に、記憶させ、
当該記憶域中にすべてのセクタの内容が記憶された場合、当該記憶域に記憶された内容をダウンロードされたファイルとする
ことを特徴とするもの。
【請求項２】
複数のダウンロードサーバ装置と、複数の端末と、を備えるダウンロードサービスシステムであって、
（ａ）前記複数のダウンロードサーバ装置のそれぞれは、
前記複数の端末にダウンロードさせるべきファイルの入力を受け付け、
前記入力を受け付けられたファイルを複数に分割し、
前記分割された結果（以下、それぞれを「セクタ」という。）のそれぞれと、当該セクタの当該ファイルにおける位置と、の対を、送信し、
（ｂ）前記複数の端末のそれぞれは、
前記ダウンロードサーバ装置のいずれかから送信される対を受信し、
前記受信された対に指定されたセクタと、当該セクタの当該ファイルにおける位置と、を取得し、
前記取得されたセクタの内容をダウンロードすべきファイルを復元するための記憶域中のうち前記取得された位置に、記憶させ、
ダウンロードすべきファイルのすべてのセクタの内容が当該記憶域中に記憶された場合、当該記憶域に記憶された内容をダウンロードされたファイルとし、
（ｃ）前記複数のダウンロードサーバ装置が同時に送信する対がある場合、当該対に指定される位置は、互いに異なる
ことを特徴とするもの。
【請求項３】
複数のダウンロードサーバ装置と、振分サーバ装置と、複数の端末と、を備えるダウンロードサービスシステムであって、
（ａ）前記複数のダウンロードサーバ装置のそれぞれは、
前記複数の端末にダウンロードさせるべきファイルの入力を受け付け、
前記入力を受け付けられたファイルを複数に分割し、
前記分割された結果（以下、それぞれを「セクタ」という。）のそれぞれと、当該セクタの当該ファイルにおける位置と、の対を、送信し、
（ｂ）前記振分サーバ装置は、
前記複数のダウンロードサーバ装置が送信する対に指定される位置と、当該対を送信する予定時刻と、を指定する予定情報を送信し、
（ｃ）前記複数の端末のそれぞれは、
前記振分サーバ装置から送信される予定情報を受信し、
前記受信された予定情報から、ダウンロードすべきファイルを復元するための記憶域中に記憶されていないセクタの位置を指定する対を送信するダウンロードサーバ装置と、その送信の時刻と、を指定する情報を取得し、
前記取得された情報に指定された時刻に、前記取得された情報に指定されたダウンロードサーバ装置から、送信される対を受信し、
前記受信された対に指定されたセクタと、当該セクタの当該ファイルにおける位置と、を取得し、
前記取得されたセクタの内容を、当該記憶域のうち前記取得された位置に、記憶させ、
ダウンロードすべきファイルのすべてのセクタの内容が当該記憶域中に記憶された場合、当該記憶域に記憶された内容をダウンロードされたファイルとする
ことを特徴とするもの。
【請求項４】
請求項１から３のいずれか１項に記載のダウンロードサービスシステムであって、
前記複数の端末にダウンロードさせるべきファイルは、当該端末において実行可能な動的ロード可能ライブラリであって、
（ｆ）前記複数の端末のそれぞれは、
プログラムの実行において、既にダウンロードされた動的ロード可能ライブラリ（以下「既存ライブラリ」という。）を呼び出す指令を実行する際に、所定の条件が満たされるか否かを調べ、
当該所定の条件が満たされる場合、当該未だダウンロードされていない動的ロード可能ライブラリ（以下「新規ライブラリ」という。）を、前記ダウンロードサーバ装置からダウンロードし、当該プログラムのうち当該既存ライブラリを呼び出す指令を当該新規ライブラリを呼び出す指令に書き換え、当該既存ライブラリを呼び出す指令を実行するのにかえて当該新規ライブラリを呼び出す指令を実行する
ことを特徴とするもの。
【請求項５】
実行部と、検査部と、記憶部と、受信部と、復元部と、更新部と、を備え、「ダウンロードさせるべきファイルの入力を受け付け、前記入力を受け付けられたファイルを複数に分割し、前記分割された結果（以下、それぞれを「セクタ」という。）のそれぞれと、当該セクタの当該ファイルにおける位置と、の対を、送信するダウンロードサーバ装置」と通信可能な端末であって、
前記実行部は、既にダウンロードされた動的ロード可能ライブラリ（以下「既存ライブラリ」という。）を呼び出す指令を含む指令列を実行し、
前記検査部は、当該プログラムの実行において、既存ライブラリを呼び出す指令を実行する際に、所定の条件が満たされるか否かを調べ、
当該所定の条件が満たされる場合、前記記憶部は、未だダウンロードされていない動的ロード可能ライブラリ（以下「新規ライブラリ」という。）を表現するファイルをダウンロードして復元するための記憶域を確保し、
前記受信部は、前記ダウンロードサーバ装置から送信される対を受信し、
前記復元部は、前記受信された対に指定されたセクタと、当該セクタの当該ファイルにおける位置と、を取得し、ダウンロードすべきファイルを復元するための記憶域中の、前記取得された位置に、前記取得されたセクタの内容を記憶させ、ダウンロードすべきファイルのすべてのセクタの内容が当該記憶域中に記憶された場合、当該記憶域に記憶された内容を新規ライブラリとして復元し、
前記更新部は、当該新規ライブラリが復元された場合、当該プログラムのうち当該既存ライブラリを呼び出す指令を当該新規ライブラリを呼び出す指令に書き換え、当該既存ライブラリを呼び出す指令を実行するのにかえて当該新規ライブラリを呼び出す指令を前記実行部に実行させる
ことを特徴とするもの。
【請求項６】
実行工程と、検査工程と、確保工程と、受信工程と、復元工程と、更新工程と、を備え、「ダウンロードさせるべきファイルの入力を受け付け、前記入力を受け付けられたファイルを複数に分割し、前記分割された結果（以下、それぞれを「セクタ」という。）のそれぞれと、当該セクタの当該ファイルにおける位置と、の対を、送信するダウンロードサーバ装置」と通信する指令列の実行方法であって、
前記実行工程では、既にダウンロードされた動的ロード可能ライブラリ（以下「既存ライブラリ」という。）を呼び出す指令を含む指令列を実行し、
前記検査工程では、当該プログラムの実行において、既存ライブラリを呼び出す指令を実行する際に、所定の条件が満たされるか否かを調べ、
前記確保工程では、当該所定の条件が満たされる場合、未だダウンロードされていない動的ロード可能ライブラリ（以下「新規ライブラリ」という。）を表現するファイルをダウンロードして復元するための記憶域を確保し、
前記受信工程では、当該記憶域が確保された場合、前記ダウンロードサーバ装置から送信される対を受信し、
前記復元工程では、前記受信された対に指定されたセクタと、当該セクタの当該ファイルにおける位置と、を取得し、ダウンロードすべきファイルを復元するための記憶域中の、前記取得された位置に、前記取得されたセクタの内容を記憶させ、ダウンロードすべきファイルのすべてのセクタの内容が当該記憶域中に記憶された場合、当該記憶域に記憶された内容を新規ライブラリとして復元し、
前記更新工程では、当該新規ライブラリが復元された場合、当該プログラムのうち当該既存ライブラリを呼び出す指令を当該新規ライブラリを呼び出す指令に書き換え、当該既存ライブラリを呼び出す指令を実行するのにかえて当該新規ライブラリを呼び出す指令を前記実行工程にて実行させる
ことを特徴とする方法。
【請求項７】
「ダウンロードさせるべきファイルの入力を受け付け、前記入力を受け付けられたファイルを複数に分割し、前記分割された結果（以下、それぞれを「セクタ」という。）のそれぞれと、当該セクタの当該ファイルにおける位置と、の対を、送信するダウンロードサーバ装置」と通信可能なコンピュータ（ゲーム装置を含む。）を、実行部、検査部、記憶部、受信部、復元部、および、更新部として機能させるプログラムであって、
前記実行部は、既にダウンロードされた動的ロード可能ライブラリ（以下「既存ライブラリ」という。）を呼び出す指令を含む指令列を実行し、
前記検査部は、当該プログラムの実行において、既存ライブラリを呼び出す指令を実行する際に、所定の条件が満たされるか否かを調べ、
当該所定の条件が満たされる場合、前記記憶部は、未だダウンロードされていない動的ロード可能ライブラリ（以下「新規ライブラリ」という。）を表現するファイルをダウンロードして復元するための記憶域を確保し、
前記受信部は、当該記憶域が確保された場合、前記ダウンロードサーバ装置から送信される対を受信し、
前記復元部は、前記受信された対に指定されたセクタと、当該セクタの当該ファイルにおける位置と、を取得し、ダウンロードすべきファイルを復元するための記憶域中の、前記取得された位置に、前記取得されたセクタの内容を記憶させ、ダウンロードすべきファイルのすべてのセクタの内容が当該記憶域中に記憶された場合、当該記憶域に記憶された内容を新規ライブラリとして復元し、
前記更新部は、当該新規ライブラリが復元された場合、当該プログラムのうち当該既存ライブラリを呼び出す指令を当該新規ライブラリを呼び出す指令に書き換え、当該既存ライブラリを呼び出す指令を実行するのにかえて当該新規ライブラリを呼び出す指令を前記実行部に実行させる
ように機能させることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ダウンロードサービスシステム、端末、指令列の実行方法、ならびに、プログラムに関する。
【０００２】
【従来の技術】
インターネットの基盤技術の急速な普及にともない、パーソナルコンピュータやゲーム装置など、種々の情報処理装置がインターネットに接続されるようになっている。そして、その情報処理装置やその周辺機器用のプログラムやドライバソフトウェアなど、当該情報処理機器等のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等で実行される指令列（プログラムや動的ロード可能ライブラリも、この指令列によって表現される。）をその主な内容とするファイルが、インターネット内のダウンロードサーバ装置からコンピュータ通信網を介して提供されるのが一般的になってきている。
【０００３】
たとえば、コンピュータ用のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）やアプリケーションの修正プログラムやコンピュータ用の周辺機器のドライバソフトウェアは、インターネット内の所定のウェブサイトにユーザが当該コンピュータを用いてアクセスし、そのウェブサイトからファイルをダウンロードし、当該ファイルを（適宜展開等して）実行し、必要に応じてコンピュータを再起動することによって、当該コンピュータで利用できるようになる。
【０００４】
また、近年注目を集めつつあるオンラインネットワークゲームでは、ゲーム装置で実行されるプログラム全体や動的に実行可能なライブラリなどプログラムの一部として機能するもののほか、当該ゲームで用いられる各種のデータなどを、当該ゲーム装置が所定のウェブサイトにアクセスしてダウンロードするような形態がとられている。
【０００５】
このようなダウンロード形態では、アプリケーションの修正プログラムを利用できるようにするには、当該アプリケーションを停止させなければならず、ＯＳの修正プログラムやドライバソフトウェアでは、ＯＳの停止（コンピュータの再起動）が必要となる場合が多々ある。また、一般に、ユーザが自発的に修正プログラムのダウンロードを行わなければならない場合が多い。さらに、このような修正プログラムのダウンロードは、一時期に集中して行われることが多い。
【０００６】
【発明が解決しようとする課題】
そこで、このようなダウンロードにおいても、できるだけ情報処理装置の運用を維持したまま（たとえば、ＯＳの再起動やゲームの中断をせずに）、必要に応じて適宜修正プログラムやライブラリ等のファイルをダウンロードして情報処理装置で利用できるようにしたいという要望は大きい。また、ダウンロードによるアクセス集中を緩和する手法も求められている。
【０００７】
本発明は、このような課題を解決するためになされたもので、動的ロード可能ライブラリを含む各種のファイルを端末にダウンロードさせて利用させるのに好適なダウンロードサービスシステム、端末、当該端末における指令列の実行方法、ならびに、プログラムを提供することを目的とする。
【０００８】
【課題を解決するための手段】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【０００９】
本発明の第１の観点に係るダウンロードサービスシステムは、ダウンロードサーバ装置と、複数の端末と、を備え、以下のように構成する。ここで、複数の端末は、典型的には同種の端末であり、ダウンロードサーバ装置から同じファイルをダウンロードすることが期待される情報処理装置である。
【００１０】
まず、ダウンロードサーバ装置は、複数の端末にダウンロードさせるべきファイルの入力を受け付け、入力を受け付けられたファイルを複数に分割し、分割された結果（以下、それぞれを「セクタ」という。）のそれぞれと、当該セクタの当該ファイルにおける位置と、の対を、送信する。すなわち、ダウンロードさせるファイルを複数のセクタに分割し、当該セクタのそれぞれの当該ファイルにおける位置（典型的には、追番やファイルの先頭からのオフセット）とともに、これをブロードキャスト型の通信形態で送信する。また、送信の形態としては、複数の端末に対して同時に同じ内容を送信する、いわゆる「放送型」の送信を採用することができる。
【００１１】
一方、複数の端末のそれぞれは、ダウンロードサーバ装置から送信される対を受信し、受信された対に指定されたセクタと、当該セクタの当該ファイルにおける位置と、を取得し、取得されたセクタの内容を、ダウンロードすべきファイルを復元するための記憶域のうち取得された位置に、記憶させ、当該記憶域中にすべてのセクタの内容が記憶された場合、当該記憶域に記憶された内容をダウンロードされたファイルとする。すなわち、ブロードキャスト型の通信形態で送信されたセクタとそのファイル内における位置を適宜受信し、受信するごとに当該位置にセクタを配置して、すべてのセクタの受信と配置が終わったことをもって、ファイルのダウンロードができることとなる。
【００１２】
本発明により、端末からのファイルをダウンロードしたい旨の要求に対して、ダウンロードサーバ装置が当該ファイルを応答として返す形態の通信手法ではなく、ファイルの断片であるセクタを送信によって端末へ伝送する手法を採用することができ、これによって、端末が当該セクタの受信や当該ファイルのダウンロードに成功した旨を通知する必要も、ダウンロードサーバ装置がこれを確認する必要もないダウンロードサービスシステムを構築することが可能となる。
【００１３】
本発明の他の観点に係るダウンロードサービスシステムは、複数のダウンロードサーバ装置と、複数の端末と、を備え、以下のように構成する。ここで、複数の端末は、典型的には同種の端末であり、ダウンロードサーバ装置から同じファイルをダウンロードすることが期待される情報処理装置である。また、複数のダウンロードサーバ装置は、いずれも同じファイルに対するダウンロードサービスを提供する。
【００１４】
まず、複数のダウンロードサーバ装置のそれぞれは、複数の端末にダウンロードさせるべきファイルの入力を受け付け、入力を受け付けられたファイルを複数に分割し、分割された結果（以下、それぞれを「セクタ」という。）のそれぞれと、当該セクタの当該ファイルにおける位置と、の対を、送信する。すなわち、上記発明と同様に、ダウンロードさせるファイルを複数のセクタに分割し、当該セクタのそれぞれの当該ファイルにおける位置とともに、これをブロードキャスト型の通信形態で送信する。
【００１５】
一方、複数の端末のそれぞれは、ダウンロードサーバ装置のいずれかから送信される対を受信し、受信された対に指定されたセクタと、当該セクタの当該ファイルにおける位置と、を取得し、取得されたセクタの内容を、ダウンロードすべきファイルを復元するための記憶域のうち取得された位置に、記憶させ、ダウンロードすべきファイルのすべてのセクタの内容が当該記憶域中に記憶された場合、当該記憶域に記憶された内容をダウンロードされたファイルとする。すなわち、上記発明と同様に、ブロードキャスト型の通信形態で送信されたセクタとそのファイル内における位置を適宜受信し、受信するごとに当該位置にセクタを配置して、すべてのセクタの受信と配置が終わったことをもって、ファイルのダウンロードができることとなる。ただし、ダウンロードサーバ装置が複数あるため、そのいずれからセクタと位置の対を受信することも可能である。
【００１６】
そして、複数のダウンロードサーバ装置が同時に送信する対がある場合、当該対に指定される位置は、互いに異なる。すなわち、複数のダウンロードサーバ装置は、同じセクタを同時には送信しない。たとえば、１００台のダウンロードサーバ装置があり、これが同じファイルのダウンロードサービスを行う場合、ファイルを１００分割してこれを同時に時差送信する手法を採用することができる。また、ファイルを１０分割し、これを１０台ずつで時差送信する手法を採用することも可能である。後者の場合、当該１００台を１０台ずつのグループに分けて観察すれば、「複数のダウンロードサーバ装置は、同じセクタを同時には送信しない」と言えるからである。
【００１７】
本発明では、同じファイルを分割して、各セクタを時差放送するので、特定のダウンロードサーバ装置に対するアクセスの集中を緩和することができる。
【００１８】
また、本発明のダウンロードサービスシステムは、振分サーバ装置をさらに備え、以下のように構成することができる。
【００１９】
すなわち、振分サーバ装置は、複数のダウンロードサーバ装置が送信する対に指定される位置と、当該対を送信する予定時刻と、を指定する予定情報を送信する。すなわち、当該予定情報には、典型的には、１つのレコードに、ダウンロードサーバ装置の識別符号（典型的には、ホスト名やＩＰアドレス、通信用のポート番号、通信プロトコル等の情報）、ファイル内におけるセクタの位置、当該セクタを送信する予定時刻、の３つの情報が含まれることとなる。
【００２０】
一方、複数の端末のそれぞれは、振分サーバ装置から送信される予定情報を受信し、受信された予定情報から、当該記憶域中に記憶されていないセクタの位置を指定する対を送信するダウンロードサーバ装置と、その送信の時刻と、を指定する情報を取得し、「ダウンロードサーバ装置のいずれかから送信される対」として、取得された情報に指定された送信の時刻に、取得された情報に指定されたダウンロードサーバ装置から送信される対を受信する。すなわち、必要なセクタを提供するダウンロードサーバ装置を予定情報からあらかじめ取得して、セクタ取得のスケジューリングを行い、当該スケジュールにしたがって、適宜ダウンロードサーバ装置を切り替えてセクタの受信を行う。
【００２１】
本発明では、振分サーバが提供する予定情報に基づいて端末が必要なセクタを複数のダウンロードサーバ装置から適宜受信するので、特定のダウンロードサーバ装置に対するアクセスの集中を緩和することができる。なお、本発明においては、複数のサーバ装置は、同時に同じ位置のセクタに対する対を送信しても良いが、できるだけこれが重複しないことが望ましい。
【００２２】
また、本発明のダウンロードサービスシステムにおいて、複数の端末にダウンロードさせるべきファイルは、当該端末において実行可能な動的ロード可能ライブラリであって、以下のように構成することができる。すなわち、各端末は、これが実行可能な指令列を含むＤＬＬ（Ｄｙｎａｍｉｃ  Ｌｉｎｋ  Ｌｉｂｒａｒｙ）やＳＯ（Ｓｈａｒｅｄ  Ｏｂｊｅｃｔ）などに代表される動的ロード可能ライブラリをダウンロードサーバ装置から得ることとなる。
【００２３】
そして、複数の端末のそれぞれは、プログラムの実行において、既にダウンロードされた動的ロード可能ライブラリ（以下「既存ライブラリ」という。）を呼び出す指令を実行する際に、所定の条件が満たされるか否かを調べ、当該所定の条件が満たされる場合、当該未だダウンロードされていない動的ロード可能ライブラリ（以下「新規ライブラリ」という。）を、ダウンロードサーバ装置からダウンロードし、当該プログラムのうち当該既存ライブラリを呼び出す指令を当該新規ライブラリを呼び出す指令に書き換え、当該既存ライブラリを呼び出す指令を実行するのにかえて当該新規ライブラリを呼び出す指令を実行する。
【００２４】
所定の条件としては、「呼び出したいライブラリのバージョンが所定のバージョン以上であること」「呼び出したいライブラリをダウンロードした日時が所定の日時以降であること」すなわち、「既存ライブラリのバージョンが所定のバージョン未満であること」「既存ライブラリをダウンロードした日時が、所定の日時よりも前であること」等が考えられる。典型的には、ある動的ロード可能ライブラリの指令列が他の動的ロード可能ライブラリを呼び出す指令列を含む場合は、後者のライブラリに対する「所定の条件」を前者のライブラリが指定する。そして、既存ライブラリを呼び出す指令列を新規ライブラリを呼び出す指令列に置換することによって、ライブラリのバージョンアップ等を行う。
【００２５】
本発明により、ＯＳやオンラインゲームアプリケーションの実行を維持したまま、適宜必要な動的ロード可能ライブラリをダウンロードし、ライブラリの更新を行うことができるようになる。
【００２６】
本発明の他の観点に係る端末は、実行部と、検査部と、記憶部と、受信部と、復元部と、更新部と、を備え、以下のように構成する。すなわち、当該端末は、「ダウンロードさせるべきファイルの入力を受け付け、入力を受け付けられたファイルを複数に分割し、分割された結果（以下、それぞれを「セクタ」という。）のそれぞれと、当該セクタの当該ファイルにおける位置と、の対を、送信するダウンロードサーバ装置」と通信可能とする。
【００２７】
そして、実行部は、既にダウンロードされた動的ロード可能ライブラリ（以下「既存ライブラリ」という。）を呼び出す指令を含む指令列を実行する。典型的には、指令列は、ＣＰＵで実行される機械語である。
【００２８】
一方、検査部は、当該プログラムの実行において、既存ライブラリを呼び出す指令を実行する際に、所定の条件が満たされるか否かを調べる。所定の条件としては、上記発明と同様のものを利用することができる。
【００２９】
さらに、当該所定の条件が満たされる場合、記憶部は、未だダウンロードされていない動的ロード可能ライブラリ（以下「新規ライブラリ」という。）を表現するファイルをダウンロードして復元するための記憶域を確保する。記憶部としては、端末が備えるメモリを利用することができるほか、ハードディスクなどの不揮発性記憶装置を利用してもよい。
【００３０】
そして、受信部は、当該記憶域が確保された場合、ダウンロードサーバ装置から送信される対を受信する。当該受信が成功した旨をダウンロードサーバ装置に通知する必要はない点は、上記発明と同様である。
【００３１】
一方、復元部は、受信された対に指定されたセクタと、当該セクタの当該ファイルにおける位置と、を取得し、取得されたセクタの内容を、ダウンロードすべきファイルを復元するための記憶域のうち取得された位置に、記憶させ、ダウンロードすべきファイルのすべてのセクタの内容が当該記憶域中に記憶された場合、当該記憶域に記憶された内容を新規ライブラリとして復元する。すなわち、新規ライブラリを分割したセクタとセクタとその新規ライブラリ内における位置を適宜受信し、受信するごとに記憶域内の当該位置にセクタを配置して、すべてのセクタの受信と配置が終わったことをもって、新規ライブラリのダウンロードができることとなる。
【００３２】
更新部は、当該新規ライブラリが復元された場合、当該プログラムのうち当該既存ライブラリを呼び出す指令を当該新規ライブラリを呼び出す指令に書き換え、当該既存ライブラリを呼び出す指令を実行するのにかえて当該新規ライブラリを呼び出す指令を実行部に実行させる。すなわち、実行時に既存ライブラリに対する呼び出しを新規ライブラリに対する呼び出しに切り替え、以降の呼び出しについてもすべてライブラリのバージョンアップを行うようにする。
【００３３】
本発明により、端末は、ＯＳやネットワークゲームアプリケーション等の実行を維持したまま、必要に応じてセクタを適宜取得して動的ロード可能ライブラリを復元し、そのバージョンアップ等ができるようになる。
【００３４】
本発明の他の観点に係る指令列の実行方法は、実行工程と、検査工程と、確保工程と、受信工程と、復元工程と、更新工程と、を備え、以下のように構成する。まず、指令列の実行方法においては、「ダウンロードさせるべきファイルの入力を受け付け、入力を受け付けられたファイルを複数に分割し、分割された結果（以下、それぞれを「セクタ」という。）のそれぞれと、当該セクタの当該ファイルにおける位置と、の対を、送信するダウンロードサーバ装置」と通信する。
【００３５】
そして、実行工程では、既にダウンロードされた動的ロード可能ライブラリ（以下「既存ライブラリ」という。）を呼び出す指令を含む指令列を実行する。
【００３６】
一方、検査工程では、当該プログラムの実行において、既存ライブラリを呼び出す指令を実行する際に、所定の条件が満たされるか否かを調べる。
【００３７】
さらに、確保工程では、当該所定の条件が満たされる場合、未だダウンロードされていない動的ロード可能ライブラリ（以下「新規ライブラリ」という。）を表現するファイルをダウンロードして復元するための記憶域を確保する。
【００３８】
そして、受信工程では、当該記憶域が確保された場合、ダウンロードサーバ装置から送信される対を受信する。
【００３９】
一方、復元工程では、受信された対に指定されたセクタと、当該セクタの当該ファイルにおける位置と、を取得し、取得されたセクタの内容を、ダウンロードすべきファイルを復元するための記憶域のうち取得された位置に、記憶させ、ダウンロードすべきファイルのすべてのセクタの内容が当該記憶域中に記憶された場合、当該記憶域に記憶された内容を新規ライブラリとして復元する。
【００４０】
さらに、更新工程では、当該新規ライブラリが復元された場合、当該プログラムのうち当該既存ライブラリを呼び出す指令を当該新規ライブラリを呼び出す指令に書き換え、当該既存ライブラリを呼び出す指令を実行するのにかえて当該新規ライブラリを呼び出す指令を実行工程にて実行させる。
【００４１】
本発明の他の観点に係るプログラムは、コンピュータ（ゲーム装置を含む。）を、上記の端末として機能させるように構成する。このプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記録媒体に記録することができる。上記プログラムは、当該プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記録媒体は、当該コンピュータとは独立して配布・販売することができる。
【００４２】
【発明の実施の形態】
以下に本発明の実施形態を説明する。なお、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本願発明の範囲に含まれる。
【００４３】
（第１の実施の形態）
図１は、本発明の第１の実施の形態に係るダウンロードサービスシステムの概要構成を示す模式図である。以下、本図を参照して説明する。
【００４４】
ダウンロードサービスシステム１０は、ダウンロードサーバ装置１１と、複数の端末１２と、が、インターネット１３を介して通信可能に接続されている。複数の端末１２のそれぞれは、ダウンロードサーバ装置１１から各種のファイルをダウンロードする。理解を容易にするため、以下では、複数の端末１２としてインターネットへの接続が可能なゲーム装置を例してあげて、説明する。
【００４５】
図２は、本実施形態の端末１２として機能するゲーム装置の概要構成を示す模式図である。以下、本図を参照して説明する。
【００４６】
ゲーム装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０３と、インターフェース１０４と、コントローラ１０５と、外部メモリ１０６と、画像処理部１０７と、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）−ＲＯＭドライブ１０８と、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）１０９と、を備える。
【００４７】
ゲーム用のプログラムおよびデータを記憶したＤＶＤ−ＲＯＭをＤＶＤ−ＲＯＭドライブ１０８に装着して、ゲーム装置１００の電源を投入することにより、当該プログラムが実行され、本実施形態の格納装置が実現される。
【００４８】
ＣＰＵ  １０１は、ゲーム装置１００全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。
【００４９】
ＲＯＭ  １０２には、電源投入直後に実行されるＩＰＬ（Ｉｎｉｔｉａｌ  Ｐｒｏｇｒａｍ  Ｌｏａｄｅｒ）が記録され、これが実行されることにより、ＤＶＤ−ＲＯＭに記録されたプログラムをＲＡＭ  １０３に読み出してＣＰＵ  １０１による実行が開始される。また、ＲＯＭ  １０２には、ゲーム装置１００全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータを記録される。
【００５０】
ＲＡＭ  １０３は、データやプログラムを一時的に記憶するためのもので、ＤＶＤ−ＲＯＭから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。
【００５１】
インターフェース１０４を介して接続されたコントローラ１０５は、ユーザがゲーム実行の際に行う操作入力を受け付ける。
【００５２】
インターフェース１０４を介して着脱自在に接続された外部メモリ１０６には、ゲームの進行状態を示すデータのほか、ダウンロードされた動的ロード可能なライブラリが書き換え可能に記憶される。また、外部メモリ１０６としては、バッテリバックアップされたＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）などを利用することができるほか、ハードディスクなどの不揮発性記憶装置を採用することもできる。ハードディスクを利用する場合は、インターフェース１０４は、コントローラ１０５用とハードディスクとで異なるものを利用するのが一般的である。以下、理解を容易にするため、「ハードディスクに対するアクセス」も「外部メモリ１０６に対するアクセス」に含めるものとして、説明を行う。
【００５３】
ユーザは、コントローラ１０５を介して指示入力を行うことにより、セーブデータを適宜外部メモリ１０６に記録することができる。また、ダウンロードにより動的ロード可能ライブラリがバージョンアップされた場合は、新規なバージョンが自動的に外部メモリ１０６に記録される。
【００５４】
ＤＶＤ−ＲＯＭドライブ１０８に装着されるＤＶＤ−ＲＯＭには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データが記録される。ＣＰＵ  １０１の制御によって、ＤＶＤ−ＲＯＭドライブ１０８は、これに装着されたＤＶＤ−ＲＯＭに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはＲＡＭ  １０３等に一時的に記憶される。
【００５５】
画像処理部１０７は、ＤＶＤ−ＲＯＭから読み出されたデータをＣＰＵ  １０１や画像処理部１０７が備える画像演算プロセッサ（図示せず）によって加工処理した後、これを画像処理部１０７が備えるフレームメモリ（図示せず）に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部１０７に接続されるモニタ（図示せず）へ出力される。これにより、各種の画像表示が可能となる。
【００５６】
画像演算プロセッサは、２次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。また、仮想３次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Ｚバッファ法によりレンダリングして、所定の視点位置から仮想３次元空間に配置されたポリゴンを俯瞰したレンダリング画像を得る演算の高速実行も可能である。
【００５７】
さらに、ＣＰＵ  １０１と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を２次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。フォント情報は、ＲＯＭ  １０２に記録されているが、ＤＶＤ−ＲＯＭに記録された専用のフォント情報を利用することも可能である。
【００５８】
ＮＩＣ  １０９は、ゲーム装置１００をインターネット等のコンピュータ通信網（図示せず）に接続するためのものであり、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を構成する際に用いられる１０ＢＡＳＥ−Ｔ／１００ＢＡＳＥ−Ｔ規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ＩＳＤＮ（Ｉｎｔｅｇｒａｇｅｄ  Ｓｅｒｖｉｃｅｓ  Ｄｉｇｉｔａｌ  Ｎｅｔｗｏｒｋ）モデム、ＡＤＳＬ（Ａｓｙｍｍｅｔｒｉｃ  Ｄｉｇｉｔａｌ  Ｓｕｂｓｃｒｉｂｅｒ  Ｌｉｎｅ  Ｍｏｄｅｍ）モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとＣＰＵ  １０１との仲立ちを行うインターフェース（図示せず）により構成される。ＮＩＣ  １０９を介して、ゲーム装置１００は、ダウンロードサーバ装置１１にアクセスできるようになる。
【００５９】
音声処理部１１０は、ＤＶＤ−ＲＯＭから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ（図示せず）から出力させる。また、ＣＰＵ  １０１の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカから出力させる。
【００６０】
このほか、ゲーム装置１００は、ハードディスク等の大容量外部記憶装置を用いて、ＲＯＭ  １０２、ＲＡＭ  １０３、外部メモリ１０６、ＤＶＤ−ＲＯＭドライブ１０８に装着されるＤＶＤ−ＲＯＭ等と同じ機能を果たすように構成してもよい。
【００６１】
また、ユーザからの文字列の編集入力を受け付けるためのキーボードや、各種の位置の指定および選択入力を受け付けるためのマウスなどを接続する形態も採用することができる。また、本実施形態のゲーム装置１００にかえて、汎用のパーソナルコンピュータを利用することもできる。
【００６２】
一方、ダウンロードサーバ装置１１としては、サーバコンピュータを利用することができる。サーバコンピュータも、その基本構成は、ゲーム装置１００と酷似している。たとえば、サーバコンピュータにおいては、特殊な画像処理は必要ないため、ゲーム装置に比べて画像処理部１０７の機能は低いものとする。また、音声処理部１１０やコントローラ１０５などは省略されることがある。また、コントローラ１０５にかえてキーボードやマウスを利用することもあるし、他の端末からＮＩＣ  １０９を介してダウンロードサーバ装置１１に対する各種の入力指示を行う形態をとることも多い。このほか、外部メモリ１０６としては、ハードディスク等を利用するのが一般的である。
【００６３】
（ダウンロードサーバ装置）
図３は、ダウンロードサーバ装置１１の概要構成を示す模式図である。図４は、ダウンロードサーバ装置１１において実行されるダウンロードサービス処理の流れを示すフローチャートである。以下、これらの図を参照して説明する。なお、理解を容易にするため、以下では、ダウンロードサーバ装置１１が端末１２にダウンロードさせるファイルは、当該端末１２で利用可能な動的ロード可能ライブラリであるものとして説明する。
【００６４】
まず、ダウンロードサーバ装置１１のファイル受付部３０１は、ダウンロードさせるべきファイルの入力を受け付け、受け付けられたファイル全体を、ダウンロードサーバ装置１１が有するハードディスク３１１に記録する（ステップＳ４０１）。ファイルには、端末において動的ロード可能ライブラリを識別するための識別子が割り当てられている。当該識別子としては、ファイル名を用いることができる。また、当該ファイルを提供する提供元などを十分に識別できるように構成されたＣＬＳＩＤなどの識別子や、提供元が有するコンピュータのホスト名とファイル名とを組み合わせたもの等を採用してもよい。
【００６５】
ついで、分割部３０２は、入力を受け付けられたファイルを複数のセクタに分割し、当該セクタと、当該セクタのファイル全体における位置と、からなる対をハードディスク３１１に記録する（ステップＳ４０２）。この対が以降の送信の単位となるが、対には、ファイルの識別子、ファイル全体のサイズ、セクタのサイズ、当該セクタのチェックサムやＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）・ＭＤ５値、ファイルのバージョン番号等の情報を含めてもよい。
【００６６】
なお、理解を容易にするため、これらの情報を含めた場合であっても、以下の説明では、送信の単位を「対」と呼ぶこととする。
【００６７】
また、ファイル内におけるセクタの位置としては、「ファイルの先頭からの当該セクタのバイト数表現によるオフセット」を採用するのが典型的であるが、先頭のセクタから最後の直前のセクタまでのサイズが同じである場合等には、「当該セクタに対する追番とセクタの総数」を利用するのも良い。たとえば、セクタの総数が１０個である場合、セクタの位置として１／１０、２／１０、…、１０／１０を利用するのである。この場合は、最終セクタ以外のセクタのサイズと追番とから、各セクタの位置を容易に計算できる。本図では、ファイルを３分割した場合についてを示している。
【００６８】
そして、選択部３０３は、ハードディスク３１１に記録された対からいずれか１つを選択する（ステップＳ４０３）。選択の手法については、以下のような手法を利用することができる。
（１）まず先頭の対を選択し、以降は次の対を選択し、最後の対の選択がされたら、また先頭の対を選択する、というように、巡回的に対を選択する。
（２）乱数を生成し、その乱数によって、いずれか１つの対を選択する。
【００６９】
さらに、送信部３０４は、選択された対を送信して（ステップＳ４０４）、ステップＳ４０３に戻る。インターネットを利用した送信の典型的な手法としては、プロトコルとしてＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）を利用するものがある。ＵＤＰは、その下位層にあるＩＰパケットをそのままアプリケーションから使えるようにしただけのプロトコルである。そのため、パケットが相手に確実に届くという保証はないし、再送や受信確認応答、フロー制御、大きなデータの分割や再合成（フラグメント化）などはすべてアプリケーション側で自分で制御する必要がある。ただし、これらのオーバーヘッドがないので、処理は簡単であり、高速という特徴がある。本実施形態においては、ダウンロードさせるファイルの分割はすでに終了しており、ファイルの復元は対に指定される位置情報によって端末で適宜行われるので、ＵＤＰは好適である。
【００７０】
このほか、端末１２がインターネットに接続される場合には、接続プロバイダが端末１２に対して動的にＩＰアドレスを割り振るＤＨＣＰ（Ｄｙｎａｍｉｃ  Ｈｏｓｔ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）技術が利用されるのが一般的であるが、接続プロバイダがダウンロードサーバ装置１１の運営も行う場合には、当該プロバイダが管理する全端末１２に対し、ブロードキャストアドレスを利用することで、送信を行う手法を採用してもよい。
【００７１】
さらに、送信の手法としては、ブロードキャストによるもの、ユニキャストによるもの、マルチキャストによるもの、等、種々の技術を適用することができる。
【００７２】
（端末）
図５は、端末１２の概要構成を示す模式図である。図６は、端末１２において実行される指令列の実行方法の処理の流れを示すフローチャートである。以下、これらの図を参照して説明する。以下、理解を容易にするため、端末１２は、上記のゲーム装置１００によって実現されるものとして説明する。
【００７３】
まず、端末１２は、実行部５０１と、検査部５０２と、記憶部５０３と、受信部５０４と、復元部５０５と、更新部５０６と、を備える。
【００７４】
まず、ＣＰＵ  １０１は、実行部５０１として機能し、ＤＶＤ−ＲＯＭドライブ１０８に装着されたＤＶＤ−ＲＯＭや外部メモリ１０６（上述したように、ゲーム装置１００が備えるハードディスク等の書換可能な不揮発性記憶装置であってもよい。）から実行すべきゲームアプリケーションプログラムをＲＡＭ  １０３にロードする（ステップＳ６０１）。
【００７５】
そして、プログラムの先頭から、順に指令を読み出す（ステップＳ６０２）。当該指令の最小単位は、ＣＰＵ  １０１が実行可能な機械語指令であるが、ここでは理解を容易にするため、「あるひとまとまりの処理」の処理に対応する所定の機械語指令列を「指令」として考える。このような「指令」には、既に外部メモリ１０６にダウンロードされた動的ロード可能ライブラリやＤＶＤ−ＲＯＭドライブ１０８に装着されたＤＶＤ−ＲＯＭに記録されている動的ロード可能ライブラリ（以下「既存ライブラリ」という。）を呼び出すものも含まれる。
【００７６】
ついで、ＣＰＵ  １０１は、検査部５０２として機能し、読み出した指令が、既存ライブラリを呼び出す指令であるか否かを調べる（ステップＳ６０３）。そうでない場合（ステップＳ６０３；Ｎｏ）、当該指令に対応する処理を実行して（ステップＳ６０４）、ステップＳ６０２に戻る。一方、読み出した指令が、既存ライブラリを呼び出す指令である場合（ステップＳ６０３；Ｙｅｓ）、所定のダウンロード条件が満たされるか否かを調べる（ステップＳ６０５）。所定のダウンロード条件としては、「呼び出したいライブラリのバージョンが所定のバージョン以上であること」「呼び出したいライブラリをダウンロードした日時が所定の日時以降であること」すなわち、「既存ライブラリのバージョンが所定のバージョン未満であること」「既存ライブラリをダウンロードした日時が、所定の日時よりも前であること」等を採用することができる。
【００７７】
さて、当該所定のダウンロード条件が満たされない場合（ステップＳ６０５；Ｎｏ）、既存ライブラリを通常通り実行して（ステップＳ６０７）、ステップＳ６０２に戻る。一方、当該所定のダウンロード条件が満たされる場合（ステップＳ６０５；Ｙｅｓ）、ＣＰＵ  １０１は、外部メモリ１０６やＲＡＭ  １０３と共働して、記憶部５０３として機能し、未だダウンロードされていない動的ロード可能ライブラリ（以下「新規ライブラリ」という。）を表現するファイルをダウンロードして復元するための記憶域を確保する（ステップＳ６０８）。
【００７８】
記憶域は、外部メモリ１０６やＲＡＭ  １０３に確保することができる。ＲＡＭ  １０３を利用した場合は、以降の処理で新規ライブラリのダウンロードが終了したら、当該新規ライブラリを外部メモリ１０６に保存することが望ましい。これによって、次回に当該ゲームアプリケーションプログラムを起動した際には、新規ライブラリにバージョンアップが済んだ状況でゲームが開始されることとなるからである。
【００７９】
そして、当該記憶域の確保がされた場合、ＣＰＵ  １０１は、ＮＩＣ  １０９と共働して、受信部５０４として機能し、ダウンロードサーバ装置１１から送信される対を受信する（ステップＳ６０９）。最初の対が受信されると、当該対に指定されるファイル（動的ロード可能ライブラリ）全体のサイズを取得することができるため、確保される記憶域のサイズを確定することができる。
【００８０】
さらに、ＣＰＵ  １０１は、復元部５０５として機能し、受信された対に指定されたセクタと、当該セクタの当該ファイルにおける位置と、を取得し（ステップＳ６１０）、取得されたセクタの内容を、ダウンロードすべきファイルを復元するための記憶域のうち取得された位置に、記憶させ（ステップＳ６１１）、ダウンロードすべきファイルのすべてのセクタの内容が当該記憶域中に記憶されたか否かを判定し（ステップＳ６１２）、すべて記憶された場合（ステップＳ６１２；Ｙｅｓ）、当該記憶域に記憶された内容を新規ライブラリとして復元する（ステップＳ６１３）。そうでない場合（ステップＳ６１２；Ｎｏ）、ステップＳ６０９に戻る。
【００８１】
新規ライブラリがＲＡＭ  １０３に復元された場合、その内容は、前述した通り、外部メモリ１０６に書き出すことが望ましい。典型的には、外部メモリ１０６には、既存ライブラリがすでに記録されているので、同じファイル名を利用してこれを上書きしてもよいし、新旧両バージョンをいずれも記録保持しておくような形態を採用してもよい。また、新旧両バージョンが記録保持されている場合は、一定期間経過後に、旧バージョンを削除するようにしてもよい。
【００８２】
さらに、ＣＰＵ  １０１は、更新部５０６として機能し、当該新規ライブラリが復元された場合、当該プログラムのうち当該既存ライブラリを呼び出す指令を当該新規ライブラリを呼び出す指令に書き換え（ステップＳ６１４）、当該既存ライブラリを呼び出す指令を実行するのにかえて当該新規ライブラリを呼び出す指令を実行部として実行して（ステップＳ６１５）、ステップＳ６０２に戻る。
【００８３】
尚、ステップＳ６０５においては、これらの要求されるバージョン番号や日時を、当該既存ライブラリに対して引数やグローバル変数として渡して通常通り呼び出す一方で、当該既存ライブラリ側の先頭でダウンロード条件が満たされるか否かを判断して以下の処理やダウンロード等（ステップＳ６０５〜Ｓ６１５）を行う実施形態を採用することもできる。この場合、新規ライブラリにも、同様の処理を行うような指令を含める必要がある。
【００８４】
このような動的ロード可能ライブラリの呼び出しには、種々の技法がある。
（１）第１の手法は、ある種のＯＳで用いられているシステムコールＬｏａｄＬｉｂｒａｒｙ，ＧｅｔＰｒｏｃＡｄｄｒｅｓｓ，ＦｒｅｅＬｉｂｒａｒｙを利用するものである。ライブラリｌｉｂ．ｄｌｌ中のある関数ｆｏｏを呼び出す場合を考える。この手法では、関数ｆｏｏのアドレスを保持するための変数ｐを用いる。以下、Ｃ言語の表記にしたがって説明する。まず、
ｈａｎｄｌｅ  ＝  ＬｏａｄＬｉｂｒａｒｙ（”ｌｉｂ．ｄｌｌ”）；
を実行して、動的ロード可能ライブラリｌｉｂ．ｄｌｌを利用できるようにする。ついで、
ｐ  ＝  ＧｅｔＰｒｏｃＡｄｄｒｅｓｓ（ｈａｎｄｌｅ，”ｆｏｏ”）；
を実行すれば、関数ｆｏｏを呼び出すためのアドレスが変数ｐに得られる。引数１，…，引数ｎを渡して関数ｆｏｏを呼び出したい場合には、
（＊ｐ）（引数１，…，引数ｎ）；
とすれば良い。動的ロード可能ライブラリｌｉｂ．ｄｌｌの利用を停止する場合には、
ＦｒｅｅＬｉｂｒａｒｙ（ｈａｎｄｌｅ）；
とする。
【００８５】
本手法を採用している場合には、既存ライブラリｌｉｂ．ｄｌｌのバージョンアップが必要な場合は、まず、ＦｒｅｅＬｉｂｒａｒｙを使って、既存ライブラリの利用を停止する。ついで、上記のダウンロード処理ステップＳ６０８〜Ｓ６１５を実行して、同名の新規ライブラリｌｉｂ．ｄｌｌをダウンロードする。そして、上記のようにＬｏａｄＬｉｂｒａｒｙを実行すれば、新規ライブラリが利用できるようになり、上記のようにＧｅｔＰｒｏｃＡｄｄｒｅｓｓを実行すれば、変数ｐの内容が変更されるので、既存ライブラリを呼び出す指令が新規ライブラリを呼び出す指令に書き換えられる。あとは、（＊ｐ）（．．．）の呼び出しを実行すれば、新規ライブラリを呼び出す指令が実行されることとなる。
【００８６】
（２）第２の手法は、プログラム中でライブラリ呼び出し指令が配置されている場所をあらかじめ調査しておき、通常はプログラムのコンパイルおよび静的リンク時に実行されるライブラリ呼び出しのアドレス解決の処理を、実行時に行うものである。
【００８７】
ライブラリ呼び出し指令は、Ｃ言語では関数呼び出しに相当する。関数ｆｏｏが動的ロード可能ライブラリにより提供されるものである場合、
ｆｏｏ（引数１，…，引数ｎ）；
がライブラリ呼び出し指令であるが、ある種のＣＰＵにおける実装では、これは以下のような機械語の処理にコンパイルされる。
（ｐ）引数ｎをスタックにプッシュ；
（ｑ）：
（ｒ）引数１をスタックにプッシュ；
（ｓ）次のプログラムカウンタをスタックにプッシュ；
（ｔ）ｆｏｏのアドレスにジャンプ；
【００８８】
上記のように機械語指令にコンパイルされると、「ｆｏｏのアドレス」もまた、機械語指令の列に埋め込まれることとなる。上記の例でいえば、「（ｔ）ｆｏｏのアドレスにジャンプ；」という機械語指令には、「ｆｏｏのアドレス」が埋め込まれている。このように機械語指令の列のうち、「ｆｏｏのアドレス」が埋め込まれている場所を、あらかじめすべて取得しておく。
【００８９】
一方、関数ｆｏｏは、通常は、以下のような機械語の処理にコンパイルされる。
（１）スタック内の引数を利用して処理を実行；
（２）スタックから次のプログラムカウンタをポップ；
（３）引数１からｎをスタックからポップ；
（４）ポップしたプログラムカウンタにジャンプ；
【００９０】
そこで、動的ロード可能ライブラリ内の関数ｆｏｏは、上記の通常の関数のコンパイルとは異なり、以下のような処理を行うように用意しておく。
（１）スタック内の引数やグローバル変数をチェック；
（２）ダウンロードが必要でなければ（ａ）〜（ｄ）を実行；
（ａ）スタック内の引数を利用して処理を実行；
（ｂ）スタックから次のプログラムカウンタをポップ；
（ｃ）引数１からｎをスタックからポップ；
（ｄ）ポップしたプログラムカウンタにジャンプ；
（３）ダウンロードを実行；
（４）新規ライブラリ中のｆｏｏのアドレスをあらかじめ取得した機械語指令の列のうち「ｆｏｏのアドレス」が埋め込まれている場所に書き込む；
（５）新規ライブラリ中のｆｏｏのアドレスにジャンプ；
【００９１】
このようにした場合、元のプログラム自体にも書き換えが生じるので、ＲＡＭ１０３内の当該プログラムと、ＲＡＭ  １０３内に確保された記憶域の動的ロード可能ライブラリと、を、あわせて一体として外部メモリ１０６に書き出しておき、次回以降のゲーム装置１００の起動に備えることが望ましい。
【００９２】
また、マルチスレッド環境下で上記のようなライブラリの利用の開始／停止や機械語指令列内のアドレス書き換えを実行する際には、セマフォ等を利用して、排他制御を行う必要がある。
【００９３】
本実施形態により、ダウンロードサービスシステムにおいて、動的ロード可能ライブラリを含む各種のファイルをセクタに分割して端末に送信する一方で、端末では、セクタから元のファイルを復元して利用することができる。
【００９４】
（他の実施の形態）
上記の実施形態では、ダウンロードサーバ装置１１は１つ用意され、これが複数の端末１２に対してダウンロードサービスを提供していた。本実施形態では、複数のダウンロードサーバ装置が、複数の端末に対してダウンロードサービスを提供する。
【００９５】
本実施形態におけるダウンロードサーバ装置の構成は、上記実施形態のダウンロードサーバ装置１１と同様である。ただし、各ダウンロードサーバ装置は、「同じファイルの同じ位置に配置されるセクタに対する対」を同時に重複して送信しないように、それぞれの送信のスケジューリングを行う。
【００９６】
一般に、各端末が同時に同じ位置のセクタを必要とする可能性は低い。したがって、上記のようにスケジューリングを行うだけで、特定のダウンロードサーバ装置に対するアクセスの集中が緩和できる。
【００９７】
このような複数のダウンロードサーバ装置としては、いわゆる中継局やリピータのような専用のものを用意しても良いし、すでに当該ファイルをダウンロード済みの端末を、所定の時間帯においてダウンロードサーバ装置として機能させるような実施形態を採用することもできる。
【００９８】
さらに、上記のような送信のスケジューリングを行った場合、
（１）どのダウンロードサーバ装置が、
（２）どの時刻に
（３）どのファイルのどの位置のセクタを
送信する予定であるかを指定する予定情報を送信する振分サーバ装置を別途用意しておくことが望ましい。また、予定情報には、各ファイルのサイズも含めておくことが望ましい。
【００９９】
各端末は、所定のタイミングで、たとえば、
（ａ）電源投入後一定時間が経過してから、
（ｂ）一定時間ごとに乱数を発生させそれが所定の値となったら、
（ｃ）ユーザからの入力指示が一定時間行われなかったら、
（ｄ）ネットワークのトラフィックが一定値よりも低かったら
などの条件が満たされる場合に、振分サーバから予定情報を受信しておく。
【０１００】
そして、あるファイルをダウンロードしたいと考える場合は、そのファイルのあるセクタを、直近の時刻でこれが受信可能なダウンロードサーバ装置から受信する。セクタの受信順序は、「先頭から順に」でも良いし、「未だ受信していないものを乱数で選択」しても良いし、「当該端末に近いダウンロードサーバ装置が提供するセクタを優先して」でも良い。
【０１０１】
なお、複数のダウンロードサーバ装置を利用する場合、特に、中継局やリピータ、他の端末をダウンロードサーバとして利用する場合には、データの欠落や改竄を検知したり、バージョン管理を行ったりするために、ディジタル署名の技術を適用することが望ましい。この際には、たとえば、セクタごとにディジタル署名を付加する手法や、ファイルにディジタル署名を付加したものを分割してセクタとして提供し、ダウンロードしたセクタを結合してからディジタル署名を確認する手法などを採用することができる。これにより、安全なファイルのダウンロード環境を提供することができる。
【０１０２】
このように、振分サーバ装置を用意しておくことにより、アクセス集中の緩和を積極的に緩和することができる。
【０１０３】
【発明の効果】
以上説明したように、本発明によれば、動的ロード可能ライブラリを含む各種のファイルを端末にダウンロードさせて利用させるのに好適なダウンロードサービスシステム、端末、当該端末における指令列の実行方法、ならびに、プログラムを提供することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態に係るダウンロードサービスシステムの概要構成を示す模式図である。
【図２】ダウンロードサービスシステムの端末が実現される典型的なゲーム装置の概要構成を示す模式図である。
【図３】ダウンロードサーバ装置の概要構成を示す模式図である。
【図４】ダウンロードサーバ装置において実行されるダウンロードサービス処理の流れを示すフローチャートである。
【図５】端末の概要構成を示す模式図である。
【図６】端末において実行される指令列の実行方法の処理の流れを示すフローチャートである。
【符号の説明】
１０    ダウンロードサービスシステム
１１    ダウンロードサーバ装置
１２    端末
１００  ゲーム装置
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  インターフェース
１０５  コントローラ
１０６  外部メモリ
１０７  画像処理部
１０８  ＤＶＤ−ＲＯＭドライブ
１０９  ＮＩＣ
１１０  音声処理部
３０１  ファイル受付部
３０２  分割部
３０３  選択部
３０４  送信部
３１１  ハードディスク
５０１  実行部
５０２  検査部
５０３  記憶部
５０４  受信部
５０５  復元部
５０６  更新部
【図１】
2004287631.tif 000003
【図２】
2004287631.tif 000004
【図３】
2004287631.tif 000005
【図４】
2004287631.tif 000006
【図５】
2004287631.tif 000007
【図６】
2004287631.tif 000008