(57)【要約】【課題】分散処理による情報処理を行う場合に、起動時はそのネットワーク環境に即して機能モジュールを複数のコンピュータ上で動作させることで、予めネットワーク上に特殊なサービスを走らせておく必要がないようにする。【解決手段】コンテンツ情報ファイル２２とともにカプセル化文書２１として一体化され、コンピュータによって最初に起動される起動機能モジュールを動作させるプログラムコード２３ａと、ネットワークプロトコルを用いて機能モジュール間の送受信を行う他の各機能モジュール中の通信機能モジュールのプログラムコード２３ｂａとを利用することで、起動時はそのネットワーク環境に即して機能モジュールを複数のコンピュータ上で動作させればよく、予めネットワーク上に特殊なサービスを走らせておく必要がなく、予め特別なサービスがコンピュータ上で走っていない環境でも分散処理により動作するカプセル化文書２１を提供できる。【選択図】　　　　図１１
2004102821.tif 000002
【特許請求の範囲】
【請求項１】
文書の表現実体に関するコンテンツ情報ファイルと、ネットワーク上に接続されたコンピュータにより解釈、実行されて前記コンテンツ情報に対する表示、その他の処理を行う複数の機能モジュールのプログラムコードファイルと、が単一の文書としてカプセル化され、
前記機能モジュールのプログラムコードファイルの一つは、前記コンピュータによって最初に起動される起動機能モジュールを動作させるプログラムコードであり、当該プログラムコードにより起動された前記起動機能モジュールはカプセル化した当該文書内に保持された他の機能モジュールのプログラムコードファイルから当該他の機能モジュールを起動させる機能を有し、かつ、当該他の機能モジュールの一部は、コンピュータ間を接続する前記ネットワークにおけるネットワークプロトコルを用いて他の機能モジュールと情報を送受信する通信機能を有する、
文書のデータ構造。
【請求項２】
前記機能モジュールのプログラムコードは、中間言語コードで記述されている請求項１記載の文書のデータ構造。
【請求項３】
前記機能モジュールは、マルチキャスト又はブロードキャスト機能により情報を送受信する送受信機能を有する、請求項１又は２記載の文書のデータ構造。
【請求項４】
前記機能モジュールは、独立したプロセスとして起動動作すると共に他の機能モジュールのプロセス内で動作可能である、請求項１，２又は３記載の文書のデータ構造。
【請求項５】
前記機能モジュール間での情報の送受信は、異なるプロセス間では前記ネットワークプロトコルを使用して行い、同一プロセス内ではそのコンピュータにおけるメモリ上で行うように切換え自在である、請求項４記載の文書のデータ構造。
【請求項６】
前記複数の機能モジュールの各々のプログラムコードファイルは、前記起動機能モジュールによって前記ネットワークを通じて複数のコンピュータに転送されて各々のコンピュータにおいて対応する機能を行う機能モジュールとして起動動作する、請求項４又は５記載の文書のデータ構造。
【請求項７】
前記起動機能モジュールは、同一のコンピュータ内で前記複数の機能モジュールのプログラムコードファイルを実行させる場合はこれらのプログラムコードファイルを一つのプロセス内で実行させる、請求項６記載の文書のデータ構造。
【請求項８】
前記起動された機能モジュールの一部は、起動されたコンピュータの動作環境を取得し、前記ネットワークを通じて取得した前記動作環境の情報を他の機能モジュールに転送する動作環境取得機能モジュールである、請求項１ないし７の何れか一記載の文書のデータ構造。
【請求項９】
前記起動機能モジュールは、前記動作環境取得機能モジュールにより転送された前記動作環境の情報に基づいて他の機能モジュールの起動先コンピュータを決定する、請求項８記載の文書のデータ構造。
【請求項１０】
前記機能モジュールが動作する上で必要な動作環境の情報や当該機能モジュールが情報を送信する送信先が記述された文書構造ファイルをカプセル化した当該文書内に有し、
前記起動機能モジュールは、前記動作環境取得機能モジュールにより転送された前記動作環境の情報と前記文書構造ファイルに記述された情報とに基づいて他の機能モジュールの起動先コンピュータを決定する、請求項８記載の文書のデータ構造。
【請求項１１】
前記機能モジュールは、特定の一つの機能に対して動作環境の違いにより複数の機能モジュールをカプセル化した当該文書内に有する、請求項１ないし１０の何れか一記載の文書のデータ構造。
【請求項１２】
前記機能モジュールとして、前記複数の機能モジュールにより表示されたコンテンツ情報上に加筆する機能を行う加筆機能モジュールを含む、請求項１ないし１１の何れか一記載の文書のデータ構造。
【請求項１３】
前記機能モジュールとして、特定の機能モジュール間の通信の情報を受信し、記録すると共に、記録された通信情報を送信する機能を有する記録機能モジュールを含む、請求項１ないし１２の何れか一記載の文書のデータ構造。
【請求項１４】
文書の表現実体に関するコンテンツ情報ファイルと、ネットワーク上に接続されたコンピュータにより解釈、実行されて前記コンテンツ情報に対する表示、その他の処理を行う複数の機能モジュールのプログラムコードファイルと、が単一の文書としてカプセル化され、前記機能モジュールのプログラムコードファイルの一つは、前記コンピュータによって最初に起動される起動機能モジュールを動作させるプログラムコードであり、当該プログラムコードにより起動された前記起動機能モジュールはカプセル化した当該文書内に保持された他の機能モジュールのプログラムコードファイルから当該他の機能モジュールを起動させる機能を有し、かつ、当該他の機能モジュールの一部は、コンピュータ間を接続する前記ネットワークにおけるネットワークプロトコルを用いて他の機能モジュールと情報を送受信する機能を有する、文書のデータ構造を記憶した記憶媒体。
【請求項１５】
ネットワークを通じて接続された他のコンピュータとの間でデータを送受信するコンピュータ構成のデータ処理装置であって、
文書の表現実体に関するコンテンツ情報ファイルと、前記ネットワーク上に接続された何れかのコンピュータにより解釈、実行されて前記コンテンツ情報に対する表示、その他の処理を行う複数の機能モジュールのプログラムコードファイルと、が単一の文書としてカプセル化され、前記機能モジュールのプログラムコードファイルの一つは、前記ネットワーク上の何れかのコンピュータによって最初に起動される起動機能モジュールを動作させるプログラムコードであり、当該プログラムコードにより起動された前記起動機能モジュールはカプセル化した当該文書内に保持された他の機能モジュールのプログラムコードファイルから当該他の機能モジュールを起動させる機能を有し、かつ、当該他の機能モジュールの一部は、前記ネットワークにおけるネットワークプロトコルを用いて他の機能モジュールと情報を送受信する機能を有する、文書のデータ構造を備えるデータ処理装置。
【請求項１６】
ネットワーク上に接続された複数のコンピュータと、これらのコンピュータによって閲覧可能な文書のデータ構造とを含み、
前記文書のデータ構造は、文書の表現実体に関するコンテンツ情報ファイルと、ネットワーク上に接続されたコンピュータにより解釈、実行されて前記コンテンツ情報に対する表示、その他の処理を行う複数の機能モジュールのプログラムコードファイルと、が単一の文書としてカプセル化され、前記機能モジュールのプログラムコードファイルの一つは、前記コンピュータによって最初に起動される起動機能モジュールを動作させるプログラムコードであり、当該プログラムコードにより起動された前記起動機能モジュールはカプセル化した当該文書内に保持された他の機能モジュールのプログラムコードファイルから当該他の機能モジュールを起動させる機能を有し、かつ、当該他の機能モジュールの一部は、コンピュータ間を接続する前記ネットワークにおけるネットワークプロトコルを用いて他の機能モジュールと情報を送受信する機能を有する、
文書閲覧システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワークにより複数のコンピュータが接続されたシステム構成における電子文書の表示、編集等の閲覧、及び電子文書作成、管理等に適した文書のデータ構造、記憶媒体、データ処理装置及び文書閲覧システムに関する。
【０００２】
【従来の技術】
初期のコンピュータは、弾道計算や科学計算のような純粋な計算機として発明され、利用されてきた。また、大型コンピュータにより集中的に情報処理が行われ、一台のコンピュータを多くのユーザで使用してきた。しかしながら、現在では、個人が自分用に一台のコンピュータを使用できる安価なコンピュータ（パーソナルコンピュータ＝ＰＣ）が出現し、それにより純粋な計算処理よりもオフィスでの文書作成、編集、閲覧等の処理にコンピュータが多く使用され、非常に多くの台数のコンピュータが現在稼動し、また、ネットワーク技術や、インターネットの発達により殆どのコンピュータは何らかのネットワークに接続されている。
【０００３】
つまり、コンピュータの歴史を一言で言い表すと、ホストコンピュータの時代から、ローカルコンピューティングの時代を経ており、現在はローカルコンピューティングからネットワークコンピューティングへの移行過程である。
【０００４】
そこで、現在コンピュータの使用形態を大きく分けると、二つに分類される。第一の分類は、ユーザがコンピュータを使ってローカルに情報処理を行う形態であり、具体的な例では主にオフィスでの文書作成、編集などが挙げられる。第二の分類は、ユーザが自分のコンピュータをクライアントとしてサーバにアクセスする形態であり、例えば、インターネットを通じてＷｅｂページを閲覧する等の例が挙げられる。そして、現在は益々第二の分類に属す使用形態が増えてきている。
【０００５】
また、初期のインターネットではただ単に情報を配信する形態が殆どであったが、今日ではクライアントから各種情報をＷｅｂサーバに送信し、それをサーバが処理することでサービスを行うことが増え、これを商業形態に使用する各種のビジネスモデルが増えている。
【０００６】
これらの技術の根本は、ＩＰ（インターネットプロトコル）とＨＴＭＬ（ハイパー・テキスト・メイクアップ・ラングエッジ）に基づくものである。しかしながら、真の意味でのネットワークコンピューティングの時代には移行できてはいない。
【０００７】
なぜならば、現在のインターネットに代表されるネットワーク利用はローカルコンピューティングの延長で、クライアントと呼ばれるローカルコンピュータとサーバと呼ばれるローカルコンピュータが互いに情報を処理し、ネットワークを通じて情報伝達しているにすぎず、ネットワーク上に繋がった複数のコンピュータを有機的に結合して情報処理を行うものではない。
【０００８】
また、現在、オフィス文書を作成する場合は、第一の使用形態が殆どである。しかしながら、マルチメディアを扱う場合はＨＴＭＬ等との親和性が高く、マルチメディア情報を再生するためにはＨＴＭＬ技術や、ストリーミング技術を使用しなければならず、第一の形態よりも第二の形態の方が扱いやすい。従って、オフィス文書等にマルチメディア情報を含ませる場合には適切な環境が現在は整っていない現況にある。
【０００９】
また、新たな試みとして、ネットワークに多くのコンピュータが接続されている現実から、分散的に情報処理を行うことも試みられている。また、ナップスター等のＰ２Ｐ技術により複数のＰＣ（パーソナルコンピュータ）を有機的に接続し情報を共有する試みもある。
【００１０】
そして、現在多くの技術者は複数のコンピュータに複数のサービスを予め走らせ、ユーザはこれらのサービスをディスカバリィして協調して処理を行う分散処理技術の開発を進めている。
【００１１】
ここで、一つのジョブを複数のコンピュータで実行することについて考えると、コンピュータによる情報処理は、一般的に、ユーザが情報を入力し、処理し、出力する３つのブロックからなる。ここで、“処理”の部分は複数のコンピュータでジョブを分散して行うのは容易である。なぜならば、単に複数のコンピュータの処理能力に応じてジョブを分け、スケジューリングして動作させればよい。しかしながら、“入力”と“出力”の部分を複数のコンピュータで分担するのには幾つかの問題がある。
【００１２】
例えば、従来のクライアントサーバシステムは十分入出力の能力のあるクライアントが入力と出力の処理を受け持ち、サーバは処理の部分を受け持つ単純なシステムで有った。このような入力、出力を他のコンピュータで受け持つ場合はそれらを受け持つコンピュータの能力の差が問題となる。
【００１３】
ここで、入力を受け持つコンピュータの非力さを、ネットワーク上に接続された他の機器のユーザインターフェースを利用することでカバーするようにしたものがある（例えば、特許文献１参照）。また、端末がネットワークを通じてサーバからサービスを受ける場合に端末の能力に応じて送信情報を変化させることで出力の非力さをカバーする例が開示されている（例えば、特許文献２参照）。また、入出力をリアルタイムにコミュニケーションを行う例が開示されている（例えば、特許文献３参照）。
【００１４】
【特許文献１】
特開２００１−２８２４０４公報
【特許文献２】
特開２０００−０２０４３５公報
【特許文献２】
特開２０００−１９４６６１公報
【００１５】
【発明が解決しようとする課題】
このように真の意味でのネットワークコンピューティングを実現するためには分散処理のために処理を分担されるコンピュータの入出力等の能力を考慮に入れる技術が必要である。
【００１６】
しかしながら、これらの公知技術は全て予めそれらのサービスを行うサーバが規定され、それらのサーバが入出力用のコンピュータにその能力の差を埋めるように動作しているので、予めサービスを起動しておく必要がある。
【００１７】
また、複数のコンピュータから自動的に適切な入出力の能力を判定し、複数のコンピュータの中から特定のコンピュータを探すようなものではない。
【００１８】
さらに、このような分散処理を行う場合は、処理される文書等のコンテンツや、サービスプログラムまで分散され管理が難しくなっている。
【００１９】
ちなみに、本出願人は、文書のデータ構造として、複数のコンテンツ情報ファイルとそれらを表示したり編集したり文書間通信等を行う複数の機能を実現させる機能モジュールのプログラムコードファイルとを一つのファイルにカプセル化した文書のデータ構造（カプセル化文書）を既に提案しているが、このようなカプセル化文書は、複数のファイルを含んでいるためにファイルサイズが大きくなる。そのために、カプセル化文書を一つのコンピュータで扱う場合は処理能力の大きなコンピュータが必要になってしまう。逆にいえば、能力の低いＰＤＡ等からは当該カプセル化文書に対して簡単にはアクセスすることができない。
【００２０】
そこで、本発明は、ユーザが非力なコンピュータからカプセル化文書を操作する場合に、ユーザが意識しなくても複数のコンピュータの中から近くの適切なコンピュータを探し機能モジュールを転送、起動し、それらの機能モジュールを複数のコンピュータに分散的に動作させ、ネットワークを通じて情報を伝達することで協調的に動作させることで、能力の低いＰＤＡ等からも簡単にアクセスできる文書のデータ構造を提供することを目的とする。
【００２１】
また、本発明の目的は、分散処理による情報処理を行う場合に、本質的には、処理される情報や、処理プログラムは保管時には分散して管理する必要がなく、一括して管理し、実際の処理時に分散して動作しても良い点に着目し、文書を管理する場合はそのコンテンツ情報や閲覧機能を含めて一つに管理・保存することができると共に、起動時はそのネットワーク環境に即して機能モジュールを複数のコンピュータ上で動作させることで、予めネットワーク上に特殊なサービスを走らせておく必要がないようにすることである。
【００２２】
また、本発明の目的は、動作環境を取得して適切に分散処理することで適切な入出力機器が接続されたコンピュータを選択して実行することで最適な動作環境を提供することである。
【００２３】
つまり、本発明の目的は、一つのファイルを保存・管理するだけで、実行時にはネットワーク上の複数のコンピュータ上での分散処理が可能で、かつ、適切な入出力環境で操作できる新たな文書のデータ構造を提供することである。
【００２４】
【課題を解決するための手段】
請求項１記載の発明の文書のデータ構造は、文書の表現実体に関するコンテンツ情報ファイルと、ネットワーク上に接続されたコンピュータにより解釈、実行されて前記コンテンツ情報に対する表示、その他の処理を行う複数の機能モジュールのプログラムコードファイルと、が単一の文書としてカプセル化され、前記機能モジュールのプログラムコードファイルの一つは、前記コンピュータによって最初に起動される起動機能モジュールを動作させるプログラムコードであり、当該プログラムコードにより起動された前記起動機能モジュールはカプセル化した当該文書内に保持された他の機能モジュールのプログラムコードファイルから当該他の機能モジュールを起動させる機能を有し、かつ、当該他の機能モジュールの一部は、コンピュータ間を接続する前記ネットワークにおけるネットワークプロトコルを用いて他の機能モジュールと情報を送受信する通信機能を有する。
【００２５】
従って、コンテンツ情報ファイルとともにカプセル化により一体化された起動機能モジュールと各機能モジュール中の通信機能モジュールとのプログラムコードを利用することで、起動時はそのネットワーク環境に即して機能モジュールを複数のコンピュータ上で動作させればよく、予めネットワーク上に特殊なサービスを走らせておく必要がなく、よって、予め特別なサービスがコンピュータ上で走っていない環境でも分散処理により動作するカプセル化された文書のデータ構造を提供できる。
【００２６】
請求項２記載の発明は、請求項１記載の文書のデータ構造において、前記機能モジュールのプログラムコードは、中間言語コードで記述されている。
【００２７】
従って、機能モジュールのプログラムコードをＪＡＶＡ（登録商標）等の中間言語コードで記述することで、マルチプラットフォーム上で動作させることができる。
【００２８】
請求項３記載の発明は、請求項１又は２記載の文書のデータ構造において、前記機能モジュールは、マルチキャスト又はブロードキャスト機能により情報を送受信する送受信機能を有する。
【００２９】
従って、マルチキャスト又はブロードキャスト機能により情報を送受信させることで、複数の機能モジュールに情報を伝達する場合に、コネクション型の通信に比べてネットワークに負荷がかからない。
【００３０】
請求項４記載の発明は、請求項１，２又は３記載の文書のデータ構造において、前記機能モジュールは、独立したプロセスとして起動動作すると共に他の機能モジュールのプロセス内で動作可能である。
【００３１】
従って、機能モジュールは独立したプロセスとして起動動作すると共に他の機能モジュールのプロセス内で動作可能であるので、複数のコンピュータ上で分散処理させることができ、かつ、メモリが要らなく同一プロセス内でのデータ交換が容易になる。
【００３２】
請求項５記載の発明は、請求項４記載の文書のデータ構造において、前記機能モジュール間での情報の送受信は、異なるプロセス間では前記ネットワークプロトコルを使用して行い、同一プロセス内ではそのコンピュータにおけるメモリ上で行うように切換え自在である。
【００３３】
従って、機能モジュール間で情報を送受信する場合に、異なるプロセス間ではネットワークプロトコルを使用し、同一プロセス内ではそのコンピュータにおけるメモリ上で情報を送受信させるように切換えることで、同一プロセス内ではメモリ上で情報を転送することで高速にデータを送受信できる。
【００３４】
請求項６記載の発明は、請求項４又は５記載の文書のデータ構造において、前記複数の機能モジュールの各々のプログラムコードファイルは、前記起動機能モジュールによって前記ネットワークを通じて複数のコンピュータに転送されて各々のコンピュータにおいて対応する機能を行う機能モジュールとして起動動作する。
【００３５】
従って、複数の機能モジュールのプログラムコードファイルは起動機能モジュールによってネットワークを通じて複数のコンピュータに転送され、各種の機能を行う機能モジュールとして起動動作することで機能モジュールを複数のコンピュータ上で分散させて動作させることができる。
【００３６】
請求項７記載の発明は、請求項６記載の文書のデータ構造において、前記起動機能モジュールは、同一のコンピュータ内で前記複数の機能モジュールのプログラムコードファイルを実行させる場合はこれらのプログラムコードファイルを一つのプロセス内で実行させる。
【００３７】
従って、起動機能モジュールは同一のコンピュータ内で複数の機能モジュールを動作させる場合は一つのプロセス内で複数の機能モジュールを動作させることで、不要なメモリ空間が無くなり、かつ、機能モジュール間の情報交換が容易になる。
【００３８】
請求項８記載の発明は、請求項１ないし７の何れか一記載の文書のデータ構造において、前記起動された機能モジュールの一部は、起動されたコンピュータの動作環境を取得し、前記ネットワークを通じて取得した前記動作環境の情報を他の機能モジュールに転送する動作環境取得機能モジュールである。
【００３９】
従って、動作環境取得機能モジュールが起動されたコンピュータの動作環境を取得し、取得した動作環境情報をネットワークを通じて他の機能モジュールに転送することで複数のコンピュータの動作環境を取得できる。
【００４０】
請求項９記載の発明は、請求項８記載の文書のデータ構造において、前記起動機能モジュールは、前記動作環境取得機能モジュールにより転送された前記動作環境の情報に基づいて他の機能モジュールの起動先コンピュータを決定する。
【００４１】
従って、起動機能モジュールは動作環境取得機能モジュールから転送された動作環境情報に基づいて他の機能モジュールの起動先コンピュータを決定することで、適切な動作環境のコンピュータで機能モジュールを起動できる。
【００４２】
請求項１０記載の発明は、請求項８記載の文書のデータ構造において、前記機能モジュールが動作する上で必要な動作環境の情報や当該機能モジュールが情報を送信する送信先が記述された文書構造ファイルをカプセル化した当該文書内に有し、前記起動機能モジュールは、前記動作環境取得機能モジュールにより転送された前記動作環境の情報と前記文書構造ファイルに記述された情報とに基づいて他の機能モジュールの起動先コンピュータを決定する。
【００４３】
従って、カプセル化された文書内に、機能モジュールが動作する上で必要な動作環境情報や機能モジュールが情報を送信する送信先が記述された文書構造ファイルを有し、起動機能モジュールは動作環境取得機能モジュールから転送された動作環境情報とこの文書構造ファイルの情報に基づいて他の機能モジュールの起動先コンピュータを決定することで、起動される機能モジュールの起動条件が容易に把握でき、より適切な動作環境のコンピュータで機能モジュールを起動できる。
【００４４】
請求項１１記載の発明は、請求項１ないし１０の何れか一記載の文書のデータ構造において、前記機能モジュールは、特定の一つの機能に対して動作環境の違いにより複数の機能モジュールをカプセル化した当該文書内に有する。
【００４５】
従って、動作環境の違いに対しても容易に対処できる。
【００４６】
請求項１２記載の発明は、請求項１ないし１１の何れか一記載の文書のデータ構造において、前記機能モジュールとして、前記複数の機能モジュールにより表示されたコンテンツ情報上に加筆する機能を行う加筆機能モジュールを含む。
【００４７】
従って、複数の機能モジュールにより表示されたコンテンツ情報上に加筆する機能を行う加筆機能モジュールを具備することで、加筆機能を持つカプセル化された文書のデータ構造を提供できる。
【００４８】
請求項１３記載の発明は、請求項１ないし１２の何れか一記載の文書のデータ構造において、前記機能モジュールとして、特定の機能モジュール間の通信の情報を受信し、記録すると共に、記録された通信情報を送信する機能を有する記録機能モジュールを含む。
【００４９】
従って、機能モジュールは特定の機能モジュール間の通信の情報を受信し、記録すると共に、記録された通信情報を送信する機能を有する記録機能モジュールを具備することで、記録機能を有するカプセル化された文書のデータ構造を提供できる。
【００５０】
請求項１４記載の発明の記憶媒体は、文書の表現実体に関するコンテンツ情報ファイルと、ネットワーク上に接続されたコンピュータにより解釈、実行されて前記コンテンツ情報に対する表示、その他の処理を行う複数の機能モジュールのプログラムコードファイルと、が単一の文書としてカプセル化され、前記機能モジュールのプログラムコードファイルの一つは、前記コンピュータによって最初に起動される起動機能モジュールを動作させるプログラムコードであり、当該プログラムコードにより起動された前記起動機能モジュールはカプセル化した当該文書内に保持された他の機能モジュールのプログラムコードファイルから当該他の機能モジュールを起動させる機能を有し、かつ、当該他の機能モジュールの一部は、コンピュータ間を接続する前記ネットワークにおけるネットワークプロトコルを用いて他の機能モジュールと情報を送受信する機能を有する、文書のデータ構造を記憶している。
【００５１】
従って、請求項１記載の発明と同様の作用を奏する。
【００５２】
請求項１５記載の発明は、ネットワークを通じて接続された他のコンピュータとの間でデータを送受信するコンピュータ構成のデータ処理装置であって、文書の表現実体に関するコンテンツ情報ファイルと、前記ネットワーク上に接続された何れかのコンピュータにより解釈、実行されて前記コンテンツ情報に対する表示、その他の処理を行う複数の機能モジュールのプログラムコードファイルと、が単一の文書としてカプセル化され、前記機能モジュールのプログラムコードファイルの一つは、前記ネットワーク上の何れかのコンピュータによって最初に起動される起動機能モジュールを動作させるプログラムコードであり、当該プログラムコードにより起動された前記起動機能モジュールはカプセル化した当該文書内に保持された他の機能モジュールのプログラムコードファイルから当該他の機能モジュールを起動させる機能を有し、かつ、当該他の機能モジュールの一部は、前記ネットワークにおけるネットワークプロトコルを用いて他の機能モジュールと情報を送受信する機能を有する、文書のデータ構造を備える。
【００５３】
従って、コンテンツ情報ファイルとともにカプセル化により一体化された起動機能モジュールと各機能モジュール中の通信機能モジュールとのプログラムコードを利用することで、予め特別なサービスがコンピュータ上で走っていない環境でも分散処理により動作するカプセル化された文書のデータ構造を備えるので、例えば、ユーザが非力な他のコンピュータから当該データ処理装置が備えるカプセル化された文書を閲覧操作する場合に、ユーザが意識しなくてもこのカプセル化された文書にアクセスして起動させることにより当該データ処理装置を含む複数のコンピュータの中から近くの適切なコンピュータを探し機能モジュールを転送、起動し、それらの機能モジュールを複数のコンピュータに分散的に動作させ、ネットワークを通じて情報を伝達することで協調的に動作させることで、能力の低いＰＤＡ等からも簡単にアクセスできることとなる。
【００５４】
請求項１６記載の発明の文書閲覧システムは、ネットワーク上に接続された複数のコンピュータと、これらのコンピュータによって閲覧可能な文書のデータ構造とを含み、前記文書のデータ構造は、文書の表現実体に関するコンテンツ情報ファイルと、ネットワーク上に接続されたコンピュータにより解釈、実行されて前記コンテンツ情報に対する表示、その他の処理を行う複数の機能モジュールのプログラムコードファイルと、が単一の文書としてカプセル化され、前記機能モジュールのプログラムコードファイルの一つは、前記コンピュータによって最初に起動される起動機能モジュールを動作させるプログラムコードであり、当該プログラムコードにより起動された前記起動機能モジュールはカプセル化した当該文書内に保持された他の機能モジュールのプログラムコードファイルから当該他の機能モジュールを起動させる機能を有し、かつ、当該他の機能モジュールの一部は、コンピュータ間を接続する前記ネットワークにおけるネットワークプロトコルを用いて他の機能モジュールと情報を送受信する機能を有する。
【００５５】
従って、コンテンツ情報ファイルとともにカプセル化により一体化された起動機能モジュールと各機能モジュール中の通信機能モジュールとのプログラムコードを利用することで、予め特別なサービスがコンピュータ上で走っていない環境でも分散処理により動作するカプセル化された文書のデータ構造を備えるので、例えば、ユーザが非力なコンピュータからカプセル化された文書を閲覧操作する場合に、ユーザが意識しなくても複数のコンピュータの中から近くの適切なコンピュータを探し機能モジュールを転送、起動し、それらの機能モジュールを複数のコンピュータに分散的に動作させ、ネットワークを通じて情報を伝達することで協調的に動作させることで、能力の低いＰＤＡ等からも簡単にアクセスできることとなる。
【００５６】
【発明の実施の形態】
本発明の一実施の形態を図面に基づいて説明する。
【００５７】
本発明は、パーソナルコンピュータに代表される各種情報処理装置によって動作する文書のデータ構造（カプセル化文書構造）とその実装形態に関するものであるので、まず、一般的なパソコンで説明する。
【００５８】
図１は本実施の形態も適用される一般的又は標準的なパーソナルコンピュータのハードウェアの構成図である。コンピュータ１は、情報処理を行うＣＰＵ（Ｃｅｎｔｒａｌ　Ｐｒｏｃｅｓｓｉｎｇ　Ｕｎｉｔ）２と、ＢＩＯＳ（Ｂａｓｉｃ　Ｉｎｐｕｔ　Ｏｕｔｐｕｔ　Ｓｙｓｔｅｍ）等を格納するＲＯＭ（Ｒｅａｄ　Ｏｎｌｙ　Ｍｅｍｏｒｙ）３と、情報を処理中に一時的に格納するＲＡＭ（Ｒａｎｄｏｍ　Ａｃｃｅｓｓ　Ｍｅｍｏｒｙ）４等の一次記憶装置と、処理結果等を保存するＨＤＤ（Ｈａｒｄ　Ｄｉｓｋ　Ｄｒｉｖｅ）５等の二次記憶装置と、情報を外部に保管又は配布し若しくは情報（カプセル化文書１０１）を外部から入手するための記憶媒体であるリムーバブルメディア６のドライブ６ａと、外部の他のコンピュータ１′，…と通信するためのネットワーク７に接続するためのネットワークインタフェース８と、処理経過や処理結果等をユーザに表示するディスプレイ９と、操作者がコンピュータ１に命令や情報等を入力するためのキーボード１０やマウス１１等の入力装置とから構成され、これらの間のデータ通信をバスコントローラ１２が調停して動作している。
【００５９】
なお、リムーバブルメディア６としては、フレキシブルディスク、ハードディスク、磁気テープ等のような磁気的な記憶媒体、ＭＯのような光磁気的な記憶媒体、ＣＤ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ等のような光学的な記憶媒体、半導体メモリ等、各種の記憶媒体が適用できる。
【００６０】
データ送信は、コンピュータ１のネットワークインタフェース８へとデータを送ることにより、ネットワークインタフェース８がネットワーク７へと信号を出力する。また、ネットワークインタフェース８が受け取った信号については、ネットワークインタフェース８において必要かどうかの判断がなされ、必要なデータであれば取り込み、不必要であれば破棄する、というような処理が行われる。すなわち、あらゆるデータの送受信は、すべてネットワークインタフェース８を経由して行われることになる。
【００６１】
一般的に、このようなコンピュータ１ではユーザが電源を投入すると、ＣＰＵ２はＲＯＭ３内のＢＩＯＳに含まれるローダーというプログラムを起動させ、ＨＤＤ５からオペレーティング・システムという当該コンピュータ１のハードウェアとソフトウェアとを管理するプログラムをＲＡＭ４に読み込む。オペレーティング・システムは起動すると、ユーザの操作に応じてアプリケーション・プログラムの起動、情報の読み込み、保存等をサポートする。代表的なオペレーティング・システムはＷｉｎｄｏｗｓ（登録商標）、ＵＮＩＸ（登録商標）等である。ユーザは、通常、このＯＳを通してユーザの目的とするプログラムを起動、必要なデータを編集、保存、消去等を行うために記憶装置に記録されているデジタル情報をファイルと言う単位で操作する。つまり、ユーザがコンピュータに対して各種の操作を行う場合はプログラムやデータは全て“ファイル”と言う単位で扱い、それらは記憶装置に保持されている。
【００６２】
次に、ＯＳが二次記憶装置等の記憶媒体に保持されているプログラムをユーザの指示により起動する場合について図２を参照して説明する。ユーザがＯＳに特定のプログラムの起動を指示すると、ＯＳはそのプログラムコードを記憶媒体より記憶装置のハードウェアを使用して読み込み、これをコンピュータ１の一次記憶装置（メモリ）であるＲＡＭ４にコードを展開し、展開された特定のアドレスよりＣＰＵ２が実行することでプログラムが実行される。通常、このような独立に実行されているプログラムのことを“プロセス”又は“タスク”と称し、記憶媒体に保持された“プログラムコード”と区別している。
【００６３】
現在の多くのＯＳは、このようなプロセス又はタスクを複数同時に走らせることのできるマルチタスク機能を有するものが一般的である。また、今日のＯＳはこのような複数のプロセスを同時に走らせるためにプロセス毎に独立してメモリを割り当て動作している。
【００６４】
また、このようなプロセス間でデータをやり取りするプロセス間通信のためにメモリ上にメタファイルと言う仮想的なファイルを形成し、ファイルアクセスを介して情報の送受信を行っている。
【００６５】
次に、本発明の背景となる本出願人既提案の文書のデータ構造（カプセル化文書構造）の概要について図３を参照して説明する。このカプセル化文書２１の特徴は、表示されるコンテンツ情報を保持するコンテンツ情報ファイル２２とそれをコンピュータに解釈、実行されることにより表示したり、加筆したりする複数の機能モジュールをモジュール毎にプログラムコードファイル２３として一つのファイル形式でカプセル化したものである。
【００６６】
ここで、このようなカプセル化文書２１の各機能モジュールの起動について図４を参照して説明する。図４に示すように、各機能モジュールとしてコンピュータに実行されるプログラムコードは大きく分けて二つに分類される。最初の一つの機能モジュールのプログラムコードは、ＯＳの指示に従いコンピュータによって最初に起動される“起動機能モジュールのプログラムコード”２３ａである。他の一つは、この起動機能モジュールにより読み出し起動される“機能モジュールのプログラムコード”２３ｂである。
【００６７】
コンピュータを利用してこのようなカプセル化文書２１を起動させ表示させるステップについて説明する。これは図５に示すように、まず、ユーザが特定のカプセル化文書の起動を行うためにＯＳを通じて指示する（ステップＳ１）。次に、ＯＳは文書内の起動機能モジュールのプログラムコード２３ａをメモリ内に展開し、展開されたプログラムコードを実行することで起動機能モジュールを実行する（Ｓ２）。次に、起動された起動機能モジュールはカプセル化文書２１内の機能モジュールのプログラムコード２３ｂを読み出して起動する（Ｓ３）。起動された機能モジュールはカプセル化文書２１内のコンテンツ情報ファイル２２を読み出し表示等の機能を実行する（Ｓ４）。
【００６８】
このようなステップの様子をブロック図に表したのが図６である。まず、ユーザが文書の起動を指示すると、ＯＳは記憶媒体上に保持されたカプセル化文書２１内の起動機能モジュールのプログラムコード２３ａをメモリ（ＲＡＭ４）内に展開し起動し、実行を開始する。次に、コンピュータにより実行中の起動機能モジュールは必要な機能モジュールをメモリ（ＲＡＭ４）内に展開し、起動させる。起動した機能モジュールは必要なコンテンツ情報をカプセル化文書２１内から読み込み、機能に応じてＯＳを通じてコンピュータに接続されたマウス、ディスプレイ等に入出力を行うことで文書を表示したり、編集したりする。
【００６９】
ここで、各機能モジュールは単独で動作する場合もあるが、多くの場合は、他の機能モジュールと情報を伝達し、協調して動作する。
【００７０】
そこで、本実施の形態では、この情報伝達に複数のコンピュータ１，１′，…間を接続するネットワーク７のネットワークプロトコルを使って他の機能モジュールと情報を送受信可能とし、協調して動作できるようにしたものである。その方法について図７を参照して説明する。図７はコンピュータ１により実行されている複数の機能モジュールＡ，Ｂがネットワークプロトコルにより相互に情報を送受信する例を示している。
【００７１】
ＯＳ３１はユーザのマウス操作が有るとマウスイベントを発生させる。そのマウスイベントを入出力ＡＰＩ３２を通じて機能モジュールＡに送信する。機能モジュールＡは受け取ったマウスイベントに対して動作を行い、その結果を他の機能モジュールに伝達する必要が有る場合はネットワークＡＰＩ３３を通じて情報を送信する。送信された情報をＯＳ３１はネットワーク７を通じて情報を送信する。また、送信アドレスが自分と同じ場合や特定のＩＰアドレス（１２７．０．０．１等）の場合は自分にも送信する。
【００７２】
つまり、図７に示すように同一のコンピュータ１中に、送信している機能モジュールＡと受信を待っている機能モジュールＢとがある場合は、機能モジュールＡからの送信情報をネットワークＡＰＩ３３は機能モジュールＢに送信し、機能モジュールＢはＯＳ３１から送られてきた情報をネットワークプロトコルを通じて受信することで機能モジュールＡからの情報を受け取る。そして、機能モジュールＢは必要な処理を行い、描画ＡＰＩ３４等を使って表示機器に表示する。
【００７３】
なお、図７中に示すＡＰＩはアプリケーションプログラムがＯＳ３１を通じて動作を行うためのインターフェースで、このＡＰＩを介することでコンピュータのハードウェア構成が異なっても共通の呼び出しで行うことができるようにハードウェアをラップするものである。
【００７４】
図８は異なるコンピュータ１，１′間で情報を送受信する例を示すもので、特定の機能モジュール２３がある情報を他の機能モジュール２３′又は２３に送信する場合に送信先を自分と他のコンピュータのアドレスや指定したり、マルチキャストアドレスやブロードキャストアドレスを指定したりすることで異なるコンピュータ１，１′上の機能モジュール２３，２３′に情報を送信できる。
【００７５】
図８の例は予め複数のコンピュータ１，１′において機能モジュールが動作している場合であるが、他のコンピュータ１′に機能モジュールを転送して動作させる場合について図９を参照して説明する。まず、図６に示したようにカプセル化文書２１内に保持されている起動機能モジュールのプログラムコード２３ａをコンピュータ１がＯＳ３１を使って起動して動作を開始する。次に、図９の起動機能モジュール２３ａはコンピュータ１に接続されているネットワーク７上の他のコンピュータ１′上で起動したい機能モジュール２３ｃを選択し、読み出す。そして、ＦＴＰ等のファイル転送サービスを使って機能モジュール２３ｃを起動したい他のコンピュータ１′に機能モジュール２３ｃのプログラムコードやその機能モジュール２３ｃに必要なコンテンツ情報等と共に転送する。転送後、起動機能モジュール２３ａは転送された他のコンピュータ１′上の機能モジュール２３ｃ′を他のコンピュータ１′上のＯＳ３１′に起動を指示する。
【００７６】
なお、ここでは転送させる機能モジュール２３ｃを一度読み出しているが、直接カプセル化文書２１から他のコンピュータ１′に転送するようにＯＳ３１に指示しても良い。また、転送先はコンピュータ１上の二次記憶装置上に転送して、他のコンピュータ１′のＯＳ３１′に読み出し、起動を指示しても良いし、直接メモリ上に転送しても良い。
【００７７】
このようにして転送、起動された機能モジュール２３ｃ′は、図８で説明したように機能モジュール間でネットワーク７を通じて情報を送受信できる。このように異なるコンピュータ１，１′間で情報をやり取りして動作するためには、異なるコンピュータ１，１′で独立して動作する必要があるので、各機能モジュールは独立したプロセスで動作する必要がある。
【００７８】
つまり、本実施の形態の特徴は、独立したプロセスとして動作し、情報を送受信することで協調して動作する複数の機能モジュールのプログラムコードを一つのカプセル化文書２１としてカプセル化し、カプセル化文書２１をユーザが起動を指示した場合にコンピュータ１によって複数の機能モジュールが起動、動作し、カプセル化文書２１内のコンテンツ情報を表示させ、このとき、各機能モジュール間はネットワークプロトコルを使って通信することで相互に情報を伝達できるようにしたことである。
【００７９】
また、独立したプロセスで動作し、ネットワークプロトコルにより情報を送受信することで、各機能モジュールは複数のコンピュータ１，１′，…に分散して相互に協調して動作することが可能となる。
【００８０】
つまり、文書を構成するコンテンツ情報ファイル２２とそれを表示させる等の機能モジュールのプログラムコードファイル２３とを一体にカプセル化することで容易に文書管理すると共に、実行時には複数のコンピュータ１，１′，…に分散して動作可能とすることでより柔軟な動作が可能となる。
【００８１】
具体的な例として、図１０に示すように、ネットワーク７としてローカルエリアネットワーク（ＬＡＮ）に複数のコンピュータ１ａ，１ｂ，１ｃ，…が接続されて文書閲覧システムとして構成されている例で説明する。コンピュータ１ａはカプセル化文書２１を保存しているデータ処理装置としてのストレージサーバ、コンピュータ１ｂはディスプレイＰＣ、コンピュータ１ｃはＰＤＡの例である。
【００８２】
まず、ユーザはＰＤＡ１ｃ等で無線機能を使ってＬＡＮ７に接続されているアクセスポイント４１を介してストレージサーバ１ａにアクセスし、ストレージサーバ１ａ内に保存されているカプセル化文書２１を起動するように指示する。ストレージサーバ１ａ内のＯＳはカプセル化文書２１の起動機能モジュールを起動する。起動されたモジュールはＬＡＮ７内の表示機能を有する大型ディスプレイを有するディスプレイＰＣ１ｂに表示機能を有する機能モジュールを転送し、表示機能を有する機能モジュールを起動する。また、同様にＰＤＡ１ｃにはマウス操作等を行う入出力機能を有する機能モジュールを転送し、起動する。つまり、ユーザ操作を司る機能モジュールをＰＤＡ１ｃで動作させ、表示機能を司る機能モジュールをディスプレイＰＣ１ｂで動作させ、その他の機能モジュールをストレージサーバ１ａ上で動作させる。そして、後は、図８に示した場合と同様に、各機能モジュール間はＬＡＮ７を通じてネットワークプロトコルにより情報を伝達することで協調して動作する。このようにすることで、ユーザはＰＤＡ１ｃさえ携帯すれば、近くのディスプレイＰＣ１ｂを見ながらカプセル化文書２１を閲覧したり編集したりすることができる。
【００８３】
ここでは起動機能モジュールをストレージサーバ１ａ上で動作させているが、ＰＤＡ１ｃ上で動作させても良い。また、起動機能モジュールが機能モジュールを転送する転送先を一意に決定するのに代えて、使用できるコンピュータの候補を表示し、ユーザが機器を指定しても良いし、各機器の環境を検出し、自動的に転送先を決定しても良い。
【００８４】
また、空間的な場所を各コンピュータに予め登録しておき、ユーザの操作しているコンピュータに空間的に近い物を選択しても良い。この場合は、ＰＤＡ１ｃ等は携帯されるのでＧＰＳ等の何らかの位置検出手段が必要となる。
【００８５】
このように、複数のコンピュータ間で協調して動作するシステムは幾つかあるが、本実施の形態の場合には起動時はカプセル化文書２１内の機能モジュールのみを転送しているので文書全体を転送する場合に比べて転送時間がかからない。また、動作時は必要な情報のみを転送することで同様に転送時間がかからない。ちなみに、同様の技術として特定のコンピュータ（ここでは、ＰＤＡ又はストレージサーバ）で全てのプログラムを動作させ、その表示結果（ビットマップ画像）をディスプレイＰＣに転送して同様の操作を行う試みがあるが、この場合は、画像データを転送するので転送時間がかかり、リアルタイムな操作が行いづらい。
【００８６】
つまり、本実施の形態にあっては、図１１に示すように、起動機能のためのプログラムコード２３ａａとその他の機能のためのコード２３ａｂとを有する起動機能を持つ機能モジュールのプログラムコード２３ａと、通信機能のためのコード２３ｂａとその他の機能のためのプログラムコード２３ｂｂとを持つ通信機能を持つ機能モジュールのプログラムコード２３ｂ等の複数の機能モジュールのプログラムコードを、コンテンツ情報ファイル２２と共に一体にカプセル化したカプセル化文書２１とすることで達成できる。
【００８７】
ちなみに、従来にあって、このような動作を行う場合は、サーバ上で特定の機能を行うサービスを予め動作させ、ＨＴＭＬ等を使ってクライアントの入力情報をサーバに伝達し、処理結果をクライアントに転送することで達成してきた。しかしながら、このようなシステムは、従来技術で前述したように、サーバに予めサービスを動作させておく必要があり、管理が難しい。この点、本実施の形態では、起動機能モジュールがカプセル化文書２１内の機能モジュールを起動させるのでこのような問題が生じない。
【００８８】
また、これらの機能モジュールは、複数のコンピュータ上で分散的に動作する必要が無い場合は単独のコンピュータ上で動作させても良い。つまり、文書ファイルとしては単独の一つのファイルで、コンテンツ情報とそれを表示したりする機能モジュールのプログラムコードファイルとを保持し、実際に動作する状況に合わせて動作形態を変化させることができる。
【００８９】
次に、より実際的な各機能モジュールの構成について説明する。ここでは、現在携帯電話から各種の携帯端末で広く動作するマルチプラットフォームのＪＡＶＡ（登録商標）を例に取って説明する。ＪＡＶＡの特徴は、ＶＭ（バーチャルマシン）と呼ばれるインタプリタを通して中間コードを実行することで異なるハードウェア構成でも同一のコードで動作することができる。
【００９０】
また、ＪＡＶＡは、基本的なコンピュータに接続されるネットワークやマウス等の機器のインターフェースを予め有している。つまり、或るコンピュータ上のＪＡＶＡ環境で動作するプログラムは異なるコンピュータで動作することが可能である。従って、図１２に示すようにＪＡＶＡ環境が走るコンピュータ上ではＪＡＶＡの中間コードはＪＡＶＡ　ＶＭにより解釈実行され、ＪＡＶＡのＡＰＩを通じてＯＳにアクセスし、ＯＳはハードウェアを制御する。つまり、複数のコンピュータ上でＪＡＶＡが動作すれば、ＪＡＶＡコードを転送するだけで転送先のコンピュータで動作させることができる。
【００９１】
このようなＪＡＶＡ技術を使ったカプセル化文書２１は図１３に示すようになる。ここで、新たに“マニフェストファイル”２４と言うものがカプセル化文書２１内に追加されている。これはＪＡＶＡがユーザに図１３に示すような複数のファイルをＺＩＰ形式で圧縮された圧縮ファイル内の特定のクラスファイルを実行する場合に実行されるクラスファイルを指示するものである。ここでは起動機能モジュールの中間コードである起動機能モジュールクラスファイル２３ａが指定されている。つまり、ＯＳを通じてユーザがカプセル化文書２１を起動するように指示すると、ＪＡＶＡのＶＭはカプセル化文書２１のマニフェストファイル２４に指定されている起動機能モジュールのクラスファイル２３ａを読込み起動機能モジュールを起動する。
【００９２】
次に、ＶＭにより起動される起動モジュールの動作について説明する。これは、複数の異なるコンピュータに機能モジュールを起動させるもので、単にユーザに各モジュールをどのコンピュータに起動させるか指定させて起動させても良いが、ここでは、ネットワーク７に繋がった各コンピュータ１，１′，…の環境に合わせて起動させる機能モジュールを自動的に選択する方法について図１４を参照して説明する。
【００９３】
まず、起動機能モジュール２３ａは現在起動機能モジュール２３ａが起動しているコンピュータの動作環境を取得するために動作環境取得機能モジュールを起動させる（Ｓ１１）。
【００９４】
この動作環境取得機能モジュールは図１５に示すように、まず、起動しているコンピュータの動作環境を取得する（Ｓ２１）。これにはＪＡＶＡで定義されている環境取得ＡＰＩを使うことでコンピュータの動作環境が取得できる。具体的に取得する情報としては表示デバイスの解像度や、表示ピクセル数、ＪＡＶＡの種類等、である。次に、取得された情報を起動した起動機能モジュールに転送するためにＩＰ（インターネットプロトコル）の中のマルチキャストパケット通信やブロードキャストアドレスにパケットを送る方法で情報を送信する（Ｓ２２）。また、より信頼性を求めるのであれば、起動機能モジュールに対してＴＣＰ／ＩＰプロトコルを使ってコネクション型で送信しても良い。
【００９５】
次に、図１４に示すように、送信されてきた取得機能モジュールからの情報をネットワーク７を通じて取得する（Ｓ１２）。この場合の情報は、取得機能モジュールが起動機能モジュール２３ａと同じコンピュータ上で実行されているので、起動したコンピュータの動作環境を取得することになる。次に、このコンピュータの動作環境がカプセル化文書２１を動作させる上で十分か判断する（Ｓ１３）。もし、起動中のコンピュータの環境では問題がある場合には（Ｓ１３のＮ）、ネットワーク７内の他のコンピュータに動作環境取得機能モジュールを転送し起動させる（Ｓ１４）。ここで動作環境取得機能モジュールのプログラムコードを転送させるには、通常のコンピュータに走っているＦＴＰサービス等のファイル転送サービスを利用し、他のコンピュータに動作環境取得機能モジュールを起動させるには、他のコンピュータ上でＪＡＶＡ　ＶＭをリモート実行サービスで起動させ、動作環境取得機能モジュールを起動すればよい。また、このようなサービスを使う以外に各コンピュータに予め機能モジュールを受け取り実行させるプログラムを走らせておいても良い。
【００９６】
そして、前述の図１５に示したように取得機能モジュールが他のコンピュータで動作し（Ｓ２１）、動作環境をネットワーク７を通じて送信してくる（Ｓ２２）。そこで、取得機能モジュールからの他のコンピュータの動作環境を取得する（Ｓ１５）。そして、この取得された動作環境を判断する（Ｓ１６）。この取得環境が特定の条件を満足するか判断し、満足できる場合は（Ｓ１６のＹ）、取得コンピュータのネットワークアドレスを登録する（Ｓ１７）。
【００９７】
具体的な例では、例えば、図１６に示すように表示動作環境、保存動作環境、入力動作環境のようにネットワーク７上に接続されたコンピュータ機器の種類に応じてコンピュータのアドレスを登録する。このようにして、複数のコンピュータの動作環境に基づいてどの機能をどのコンピュータで実行させるかを判断する。図１６のようなテーブル４５を作成するために複数のコンピュータで取得機能モジュールを動作させて環境を取得し、カプセル化文書を動作させるのに十分な複数のコンピュータを検出する（Ｓ１４〜Ｓ１６）。そして、全ての動作環境の条件が整ったならば（Ｓ１３のＹ）、現在起動中のコンピュータを含むネットワーク７上の複数のコンピュータ１，１′，…に登録情報に基づいて動作環境に対応する実際の表示や入力等を行う機能モジュールを転送して他のコンピュータ上で起動させる。
【００９８】
なお、このような機能モジュールの起動先コンピュータを動作環境のみで決定する方式について述べたが、各コンピュータの環境を取得する度にユーザに起動予定のコンピュータ名や環境情報を表示し、起動の有無を選択するようなユーザインターフェースをとったり、起動予定のコンピュータに音や画面表示を行うことで所在を示すような動作を行っても良い。
【００９９】
つまり、起動機能モジュールは単に機能モジュールを動作させるコンピュータを検出し、起動させるのが目的であってどのような方式でも良い。
【０１００】
次に、起動機能モジュール２３ａにより起動されるカプセル化文書２１を表示閲覧するための機能モジュールについて説明する。ここでは、代表的な例として、図１７に示すようにカプセル化文書２１内に、表示されるコンテンツ情報を有し、この表示されたコンテンツ情報（表示文書５１）の上にマウス（加筆マウス５２）操作により加筆情報５３を加筆する機能を持つ機能モジュールを有するカプセル化文書に本発明を適用した例について説明する。
【０１０１】
まず、具体的なカプセル化文書２１に含まれる機能モジュール２３ｂとしてコンピュータによって動作する機能モジュールのクラスファイルは図１８に示すようになる。ここでは前述で説明した動作環境取得機能モジュール５４ａを含む機能モジュール２３ｂに対して新たにコンテンツを表示するためにコンテンツ表示機能モジュール５４ｂと加筆のためのマウス５２操作を検出するためのマウス操作検出機能モジュール５４ｃと加筆情報５３を表示するための加筆情報表示機能モジュール５４ｄが必要である。また、ここでは説明の都合上、新たに追加する機能モジュールをこのように分けたが、より細かな複数のモジュールから構成しても良い。
【０１０２】
前述のように、ユーザがカプセル化文書２１の起動を指示すると、起動機能モジュール２３ａが起動し、動作環境取得機能モジュール５４ａが複数のコンピュータ１，１′，…に起動し、その他の機能モジュール５４ｂ〜５４ｄの起動先コンピュータを検出する。そして、その検出結果から各機能モジュール（ここでは、コンテンツ表示機能モジュール５４ｂとマウス操作検出機能モジュール５４ｃと加筆情報表示機能モジュール５４ｄ）が起動される。
【０１０３】
この例ではコンテンツ表示機能、加筆情報表示機能は双方とも表示に関わる機能モジュールなので同一のコンピュータで起動され、マウス操作検出機能モジュールは他のコンピュータで起動される場合がある。
【０１０４】
まず、コンテンツ表示機能モジュール５４ｂの動作から図１９を参照して説明する。コンテンツ情報を表示装置に表示するための表示ウインドウを形成する（Ｓ３１）。これは、現在多くのコンピュータのＯＳは画面を複数の表示領域に分けるマルチウインドウ機能を持っている。そこで、特定の情報を表示するためにはこのようなウインドウ形成が必要である。次に、このウインドウ上にコンテンツ情報を表示するコンポーネントを追加する（Ｓ３２）。これは、コンテンツ情報を表示するためのコンポーネントである。ここで、直接ウインドウに表示しないのは後述の加筆情報５３の表示と重ねて表示するためである。現在多くのグラフィカルプログラミングでは複数の情報を表示するためには一つのウインドウ上に全ての情報を表示するのではなく、ウインドウ上にコンテンツ毎に複数のコンポーネントを形成し、コンテンツ毎に各コンポーネントに描画し、それらの複数のコンポーネントを合成して表示する方法を採用することを行っている。このような階層的に描画することでより高度な表示を簡単に実現する表示ＡＰＩを現在のＪＡＶＡやＯＳは備えている。
【０１０５】
次に、コンテンツ情報ファイル２２をカプセル化文書２１のファイル内から読込む（Ｓ３３）。このとき、コンテンツ表示機能モジュール５４ｂはカプセル化文書２１が保存されている場所のＵＲＬを指定して読込む。つまり、コンテンツ表示機能モジュール５４ｂの動作コンピュータとカプセル化文書２１が保存されている記憶装置の接続されているコンピュータとが異なる場合はネットワーク７経由で読込まれる。次に、この読込まれた情報をウインドウ内の表示コンポーネントに表示する（Ｓ３４）。表示後は必要なジョブが発生するまで待機する。
【０１０６】
次に、マウス操作検出機能モジュール５４ｃについて図２０を参照して説明する。起動後、マウス操作検出機能モジュール５４ｃはマウス５２操作の検出を監視し（Ｓ４１）、マウス５２操作が有ったかどうか判断する（Ｓ４２）。操作の無い場合は（Ｓ４２のＮ）、操作が有るまでこれを繰り返す。次に、操作が有った場合は（Ｓ４２のＹ）、マウス５２操作をマルチキャストアドレスに送信し、マルチキャストする（Ｓ４３）。そして、再びマウス検出を繰り返す（Ｓ４１）。
【０１０７】
次に、加筆情報表示機能モジュール５４ｄについて図２１を参照して説明する。まず、加筆情報表示機能モジュール５４ｄは加筆情報５３を表示するためにコンテンツ表示機能モジュール５４ｂが作成したウインドウ５５上面に表示コンポーネント５６，５７を追加する（Ｓ５１）。実際のウインドウ５５と各コンポーネント５６，５７の関係は図２２に示すようになる。即ち、コンテンツ表示コンポーネント５６上に位置して加筆情報表示のための表示コンポーネント５７はコンテンツ情報を透過的に表示させるためにバックグランドカラーは透明色で描画する。次に、マルチキャスト情報の受信を監視し（Ｓ５２）、受信されたかを判断し（Ｓ５３）、受信されない場合は（Ｓ５３のＮ）、受信を繰り返す。受信された場合は（Ｓ５３のＹ）、受信情報を前述の加筆情報表示コンポーネント５７に描画することで加筆情報５３を表示する。
【０１０８】
このように各機能モジュールが取得した情報をネットワーク７を通じて他の機能モジュールに送信することで、複数のコンピュータ１，１′，…で動作している各機能モジュールは、協調して動作することで文書の閲覧表示等が行える。また、他の機能モジュールとして、記録機能モジュールや、通信機能モジュールについても同様に実現できる。
【０１０９】
まず、記録機能モジュールについて説明すると、記録部と再生部に分かれる。記録部は図２３に示すようになる。まず、レコード番号Ｒｎｏを１に初期化し（Ｓ６１）、マルチキャスト情報の受信を監視する（Ｓ６２）。そこで、受信が有ったかを判断し（Ｓ６３）、受信されたならば（Ｓ６３のＹ）、コンピュータに接続された記憶装置に受信したパケットを記録する（Ｓ６４）。そして、レコード番号Ｒｎｏをインクリメントする（Ｓ６５）。このようにすることで、図２４に示すように複数のパケットをレコード番号Ｒｎｏで管理された記憶情報ファイル６１が作成できる。
【０１１０】
次に、再生部について図２５を参照して説明する。まず、レコード番号Ｒｎｏを１に初期化し（Ｓ７１）、記憶装置から記録された記録情報を読込む（Ｓ７２）。読み取った情報をマルチキャスト送信し（Ｓ７３）、レコード番号Ｒｎｏをインクリメントする（Ｓ７４）。そして、このレコード番号Ｒｎｏが示す情報があるかどうか、つまりＥＯＦ（Ｅｎｄ　Ｏｆ　Ｆｉｌｅ）かどうか判断する（Ｓ７５）。ＥＯＦならば（Ｓ７５のＹ）、終了し、ＥＯＦでなければ（Ｓ７５のＮ）、上記操作を繰り返す。
【０１１１】
このようにして記録部はネットワーク７上に送信された情報を受信、記録し、再生部は記録された情報を読み出し送信することで達成できる。
【０１１２】
前述の例で述べれば、マウス操作検出機能モジュール５４ｃの送信した情報を記録部が記録し、再生部は記録されたマウス操作情報を送信し、加筆情報表示機能モジュール５４ｄがこれらの情報を受信、描画することで過去の加筆履歴が記録、再生できる。
【０１１３】
ここでは、記録された情報をコンピュータが自動的に最初から再生するようにレコード番号Ｒｎｏを変化させたが、もちろん、ユーザのコントロールでレコード番号Ｒｎｏを変化させても良い。またこの説明では記録中と再生中を分けて説明したが、記録部は絶えずネットワーク７上のパケットを記録していても良い。この場合は再生部が再生したパケットを記録部が再び記録しないような判断が必要であるが、ここでは本発明の本質に関わらない部分で有るので割愛する。
【０１１４】
つまり、ネットワーク７上のパケットを単に受信、記録、読み出し、送信することで簡単に履歴記録ができる。
【０１１５】
次に、通信機能について説明する。本出願人が既提案のカプセル化文書構造が備える通信機能モジュールは異なるコンピュータで動作している複数の文書間でネットワークを使って情報をやり取りするものであるが、本実施の形態では基本的に機能モジュールに通信機能が含まれているので、このような機能モジュールは必要ない。つまり、本実施の形態で例えばユーザＡ，Ｂが複数のカプセル化文書を開くとＡで起動された機能モジュールの送信情報はＡの機能モジュールにもＢの機能モジュールにも伝達されるのでわざわざ伝達メカニズムを有する通信機能モジュールは必要ない。しかしながら、例えばＡの機能モジュール、Ｂの機能モジュールを分けて処理したい場合には問題が発生する。これについては以下に説明するように、送受信されるパケット構造で解決できる。
【０１１６】
今までは、動作説明を簡便に説明するためにパケットの送受信やパケットの構造について言及していなかったが、ここでパケットに関して説明する。前述のように複数の機能モジュールがネットワーク７上で情報を送受信するので、色々な形式の情報がネットワーク７上で流れる。また、Ａ，Ｂ複数の異なるコンテンツ情報の文書がネットワーク７上で開かれた場合は、Ａ文書の加筆をＢ文書に加筆するのは適切でない。そこで、適切にこれらのパケットを処理するために、これらの各モジュールを単なるバイト列の並びから意味を持った情報として利用できるようにするために送受信パケットのフォーマットが必要である。また、各機能モジュールが受信するネットワークポートは少ないほうが良い。
【０１１７】
そこで、特定のネットワークポートで複数の種類の情報を送受信させるために、具体的な例の一つとして図２６に示すようなパケット７１のフォーマットをする。ここでは本発明に関するフォーマット部分のみ記述しているので下位のプロトコルには言及しないが、通常、一般的に広く普及しているＩＰ（インターネットプロトコル）を下位のプロトコルに採用しても良いし、マルチキャスト通信ではなくコネクション型通信の場合はＴＣＰ／ＩＰプロトコルを重層しても良い。
【０１１８】
最初のカプセル化文書マジックＮＯ７２は、カプセル化文書２１のパケット７１であることを表すバイト列で、適当なユニークなバイト列を定義し、全ての本発明のカプセル化文書２１が送信するパケット７１は同じバイト列を有する。これにより、カプセル化文書２１の機能モジュール間の情報伝達とは異なる情報のパケットを排除できる。これについてカプセル化文書２１の機能モジュールが接続するポートがユニークなポートに定義されている場合は不必要であるが、動的にポートを変化させる場合はこのようなヘッダがあった方が良い。
【０１１９】
文書ＩＤ７３は、文書毎に文書作成時に付けられるＩＤで、このバイト列の差異で文書間通信を行えるかどうかを判断する。つまり、異なるコンテンツ情報の異なるカプセル化文書２１間では文書間通信を行わないほうが良いからである。
【０１２０】
送信機能モジュールＩＤ７４は、このパケット７１を送信した機能モジュールの種類を表すＩＤで、このＩＤで送信情報を受け取る必要が有るかどうかを判断する。例えば、前述のマウス操作検出機能モジュール５４ｃの送信情報は加筆情報表示機能モジュール５４ｄは受け取る必要があるが起動機能モジュール２３ｂは受け取る必要がないからである。このように複数の種類の機能モジュールの送信パケットを選択的に受信するためにある。
【０１２１】
送信モジュールアドレス７５は、パケット７１を送信した機能モジュールが送信のために使用したネットワークアドレスである。つまり、送信先のコンピュータのネットワークアドレスを表す。これは、下位のＩＰプロトコルからも検出できるが、或る機能モジュールが遠隔の機能モジュールの情報を受信し再送信するような場合にはここに本当の送信元を記述することで情報の出所を明確にできるためにある。
【０１２２】
情報形式ＩＤ７６は、後述する送信情報７８のフォーマットの種類を表すＩＤで、このＩＤを利用して送信情報を解析する。
【０１２３】
パケットＮＯ７７は、送信したパケット７１の通し番号である。これはコネクションレス通信の場合は多くの場合パケットが消失してしまう。この場合に、この通し番号が不連続になり、不連続になった場合は必要であれば、再送を送信先に依頼するための番号である。
【０１２４】
送信情報７８は、実際の送受信する情報である。これは、前述の様に情報形式ＩＤで情報の形式を判断できる。また、これらの送信情報７８はＸＭＬ等で記述することでより情報の形式に柔軟性を与えることができる。
【０１２５】
ここで、図２６に示すような各種情報７２〜７８を共にＸＭＬで記述する方法もあるが、ＸＭＬ内の情報を取り出すときにＳＡＸ等のパーサを通す必要があり不要な情報までパーサを通していては無駄が多いので、本実施の形態では図２６に示すようなパケット７１のフォーマットを実際の送信情報の下位の階層に設ける。
【０１２６】
次に、このフォーマットでの送受信についての具体的な処理例を図２７及び図２８に示すフローチャートを参照して説明する。ここでは、説明を簡略化するために図２６に示した各情報のバイト列は現在一般的な整数フォーマットである４バイトに固定する。
【０１２７】
まず、機能モジュールがパケット送信を行う部分について図２７を参照して説明する。最初に、送信すべき送信情報のバイトサイズを取得する（Ｓ８１）。これは、単に送信する情報をバイト列化したサイズである。同時に、そのサイズに図２６のヘッダを付けるために取得したサイズ＋２４の送信用バッファをメモリ上に用意する（Ｓ８１）。
【０１２８】
次に、図２６に示したような各情報を取得し、バッファの先頭から代入する（Ｓ８２）。ここで、カプセル化文書マジックＮＯ７２はカプセル化文書２１に共通した番号なので容易に取得できる。また、文書ＩＤ７３はこの文書２１が作成されたときの番号でカプセル化文書２１内の特定のファイル、例えば、プロパティファイル等に記述しておけばよい。そして、起動機能モジュールが機能モジュールを起動する時にカプセル化文書２１内の文書ＩＤ情報を機能モジュールに渡して起動すればよい。送信機能モジュールＩＤ７４は現在動作中の機能モジュールのＩＤなので簡単に取得できる。送信モジュールアドレス７５は現在動作中の機能モジュールのネットワークアドレスなので容易に取得できる。また、情報形式ＩＤ７６もこの機能モジュールが作成した送信情報のフォーマットを表すものなので簡単に取得できる。パケットＮＯ７７は機能モジュールがパケット７１を送る度にインクリメントして生成すればよい。
【０１２９】
次に、バッファに実際に伝達したい情報である送信情報７８を代入する（Ｓ８３）。
【０１３０】
このように送信すべき情報がバッファにセットされたら、機能モジュールは機能モジュール間通信ポートに接続し（Ｓ８４）、接続待ちする（Ｓ８５）。この場合、他の機能モジュールが同一のポートを使用している可能性があるので、その他の機能モジュールが送信を終了するまで待つ。もし、一定期間接続を開始できない場合は、ネットワークに何らかの問題があるので、タイムアウト処理を行い、接続を中断する（Ｓ８８）。接続が確立したら（Ｓ８５のＹ）、実際にバッファのデータを送信し（Ｓ８６）、通信用ポートを切断する（Ｓ８７）。
【０１３１】
このようにして、新たに図２６に示すようなヘッダを追加した形で情報を送信できる。また、送信方式にマルチキャストやブロードキャスト送信を選択した場合はマルチキャストアドレスやブロードキャストアドレスに送信すればよいが、ＴＣＰ／ＩＰ等のコネクション型送信を行いたい場合は、マルチキャストできないので、複数のアドレスに送信するようにすれば良い。
【０１３２】
次に、機能モジュールが情報の受信を行う部分について図２８を参照して説明する。まず、送信されて来る送信情報に対して十分大きなバッファを作成する（Ｓ９１）。このバッファサイズは予め適当な大きさに規定しておけばよい。もし、このサイズに収まりきれない情報を伝達したい場合は複数回に分けて送信すればよい。このような方法については本発明の本質に関わらないので割愛する。次に、機能モジュール通信用に規定されたポートに接続する（Ｓ９２）。この場合は、情報を送信するのではないので、複数の機能モジュールは受信用に同一のポートに接続できる。そして、他の機能モジュールから情報が送信されてくるまで受信待ちする（Ｓ９３）。
【０１３３】
受信されたならば＜バッファＢｕｆのＢｕｆ［０〜２３］から各ヘッダ情報を取得する（Ｓ９４）。そして、取得された情報を元に現在動作中の機能モジュールがこの情報を処理すべきかを判断する（Ｓ９５）。もし、処理する必要が有る場合は（Ｓ９５のＹ）、通信ポートを切断し（Ｓ９６）、情報形式ＩＤを元にフォーマットを決定する（Ｓ９７）。そして、前述のように伝達された情報がＸＭＬ等で記述されたフォーマットの場合はＳＡＸ等のパーサにより構造を解析し、構造化されたデータを取得する（Ｓ９８）。このようにして図２６に示すような下位階層を持つプロトコルで機能モジュール間で情報を伝達することで各機能モジュールは協調して動作できる。
【０１３４】
ここまで複数の機能モジュールのプログラムコードとコンテンツ情報とを単一ファイルにカプセル化したカプセル化文書２１の構造を持ち、ユーザがカプセル化文書２１を起動指示した場合は起動機能モジュール２３ｂが起動し、各機能モジュール２３ａを複数のコンピュータ（単一のコンピュータでも可）１，１′，…で独立したプロセスとして起動させ、各機能モジュールが規定のヘッダを持ったネットワークプロトコルでネットワーク７を通じて情報を送受信し、協調して文書の閲覧表示等を行う仕組みを説明してきた。
【０１３５】
即ち、各々の機能モジュールは、独立したプロセスで起動し、ネットワークプロトコルによりプロセス間通信を行っているが、同一のコンピュータで起動している機能モジュール同士がネットワーク７を使ってプロセス間通信を行うのは効率的ではない。そこで、同一のコンピュータで複数の機能モジュールを起動する場合は同一のプロセス内で別スレッドで実行する方式について述べる。
【０１３６】
ここで、一般的なプロセスとスレッドの違いについて述べると、どちらの方式も異なるジョブを見掛け上、並行して実行する形態であるが、プロセス間ではメモリ上のデータを共有できないが、スレッド間ではメモリ上のデータを共有できる違いがある。
【０１３７】
プログラムコードをプロセスで起動するかスレッドで起動するかの起動方法は異なるが、ＪＡＶＡでは、基本的には同一のＶＭで起動されたプログラムは同じプロセスで、別スレッドで動作する。つまり、或るモジュールが動作しており、そのモジュールが他のモジュールのオブジェクトのインスタンスを形成することで、他のモジュールが別スレッドで動作する。
【０１３８】
そこで、図１４では各機能モジュールを起動機能モジュール２３ａで別プロセスとして起動させたが、独立して動作している環境取得機能モジュールに必要な機能モジュールのインスタンスを作成させればよい。つまり、各コンピュータに機能モジュールのきっかけとなる環境取得機能モジュールを動作させた後、この機能モジュールによって必要な機能モジュールのインスタンスを作成させる。そこで、図２９に示すフローチャートを参照して説明する。動作環境取得機能モジュール５４ａを起動機能モジュール２３ａで起動する方法は図１４で説明した方法と同様に、まず、動作環境取得機能モジュール５４ａを複数のコンピュータ１，１′，…で起動させ（Ｓ１０１）、各々動作環境を取得させ（Ｓ１０５）、取得した動作環境を起動機能モジュール２３ａに対して送信させることで（Ｓ１０６）、複数のコンピュータ１，１′，…の環境をネットワーク７を通じて取得する（Ｓ１０２）。次に、カプセル化文書２１内の各機能モジュールの起動先を起動機能モジュール２３ａは決定する（Ｓ１０３）。そして、起動先の動作環境取得機能モジュール５４ａにカプセル化文書２１内の機能モジュールのＵＲＬを前述のようなプロセス間通信を使って伝達する（Ｓ１０４）。動作環境取得機能モジュール５４ａは取得したＵＲＬを取得し（Ｓ１０７）、動作環境取得機能モジュール５４ａの走っているコンピュータのメモリ上に機能モジュールをロードし（Ｓ１０８）、機能モジュールのオブジェクトを生成させる（Ｓ１０９）。このように、同一の環境取得機能モジュールから別スレッドとして生成された複数の機能モジュールは同じプロセスとして動作する。このような同一プロセスの機能モジュールはプロセス間通信を行う必要が無いので直接メモリ（ＲＡＭ４）上でデータを送受信できる。
【０１３９】
今までの説明では、起動機能モジュールの機能モジュールの起動について文書構造ファイルを使わずに起動するように説明したが、より具体的な例として、起動機能モジュール２３ｂは起動すべき機能モジュール名や起動条件等を文書構造ファイルから読込んで起動する方法について述べる。
【０１４０】
まず、図３０に示すように、カプセル化文書２１内には、最初に起動する機能モジュールのクラスファイル（ここでは起動機能モジュール２３ａ）とそれの名前を定義したマニフェストファイル２４と、各機能モジュール２３ｂのクラスファイルとそれによって表示されるコンテンツ情報ファイル２２がある。そして、新たに起動機能モジュール２３ａに読込まれて各機能モジュール２２の起動を設定する文書構造ファイル２５がある。
【０１４１】
この文書構造ファイル２５には、図３１に示すように、前述で説明した文書作成時に割り振られた文書ＩＤ２５ａや起動機能モジュールによって起動すべき機能モジュールやその環境条件等の機能モジュール定義情報２５ｂやその他の情報２５ｃが記述されている。その他の情報２５ｃとして、文書作成者、作成日時、バージョン、閲覧権限等が記述しても良い。
【０１４２】
具体的には、このような情報を記述するため、ＸＭＬ等を使用し、図３２に示すように記述しても良い。具体的な例として、図３２を参照して説明すると、最初のタグである＜ＩＤ＞は文書ＩＤ２５ａが記述されている。次のタグの＜Ｍｏｄｕｌｅは起動機能モジュールによって起動される機能モジュールを記述したもので属性値として起動する機能モジュール名とを有する。また、この機能モジュールが動作するために必要な動作環境環境が＜ＥＮＶタグ内に記述する。また、＜Ｓｅｎｄタグはこのモジュールが情報を送信する相手の機能モジュールの名前が記述されている。
【０１４３】
このような文書構造ファイル２５を使った機能モジュールの起動について起動機能モジュール２３ａの動作について述べる。まず、図３３に示すように起動機能モジュール２３ａはカプセル化文書２１に格納されている文書構造ファイル２５を読込む（Ｓ１１１）。次に、読込まれた文書構造ファイルの情報から起動すべき機能モジュールとその機能モジュールが動作するのに必要な環境や、この機能モジュールが情報を送信する送信先等を取得する（Ｓ１１２）。そして、前述したように動作環境取得機能モジュール５４ａをネットワーク７上の複数のコンピュータ１，１′，…上で起動させ（Ｓ１１３）、動作環境取得機能モジュールから送信されてきた情報から複数のコンピュータ１，１′，…の環境を取得する（Ｓ１１４）。
【０１４４】
取得された複数のコンピュータ１，１′，…の環境と文書構造ファイル２５から取得した各機能モジュールの動作環境条件とから機能モジュールの起動先コンピュータを決定する（Ｓ１１５）が、ここで文書構造ファイル２５から取得した各機能モジュールの送信先のモジュールとできるだけ同じコンピュータになるように起動先コンピュータを決定する。これは、送信先が同じコンピュータ内の場合は同じプロセスの別スレッドで動作させたほうがメモリ上でデータを送受信できるからである。そして、起動先の環境取得機能モジュールに機能モジュールのＵＲＬと文書ＩＤを転送し、同一プロセスの別スレッドで機能モジュールを起動させる（Ｓ１１６）。つまり、ＪＡＶＡでは動作環境取得機能モジュール５４ａに機能モジュールのオブジェクトを生成させる。
【０１４５】
つまり、図３４に示すように起動機能モジュール２３ａは文書構造ファイル２５を読込み、各複数のコンピュータ１，１′，…に動作環境取得機能モジュール５４ａを起動し、適切な環境のコンピュータに適合した機能モジュールを起動すると共に適合する環境が複数ある場合はできるだけ機能モジュールの送信先の機能モジュールと同じコンピュータ上で同じプロセスで動作するように起動させる。また、動作環境取得機能モジュール５４ａはこれ以後は不必要なので、機能モジュールを起動していない動作環境取得機能モジュール５４ａはプロセスを終了させリソースを開放する。
【０１４６】
また、機能モジュールを起動している動作環境取得機能モジュール５４ａは機能モジュール同士のデータの橋渡しを行っても良いし、直接起動された機能モジュール同士がメモリ上でデータを送受信しても良い。
【０１４７】
このようにして同一プロセス内に複数の機能モジュールを動作させることで、ネットワーク７経由で情報を受け渡さずに直接機能モジュール間で情報を伝達できる。具体的な伝達方法は一般的なオブジェクト間のデータのやり取りなのでここでは詳しく言及しない。具体的には、ただ単に図２７で作成されたバッファのデータをネットワーク７に接続して送信せずに送信先のオブジェクトに送信バッファの参照を渡せばよい。また、受信側は渡された送信バッファの参照から情報を読み出せばよい。
【０１４８】
また、これまでの例では、説明の便宜上、一つの機能に対して一つの機能モジュールを起動するように述べたが、一つの機能に対して動作環境の違いに基づいて複数の機能モジュールを用意しても良い。例えば、表示解像度の違いにより異なる表示機能モジュールを用意しても良いし、入力機器の場合はキーボードのある場合はキーボードから情報を入力する機能モジュールとキーボードのない環境の場合はソフトウェアキーボードを表示し、マウスで入力するような機能モジュール等を複数用意し、前述の取得された動作環境に基づいて起動する機能モジュールを選択しても良い。また、複数の機能モジュールを起動して一つの機能モジュールとして達成しても良い。
【０１４９】
例えば、ソフトキーボードの場合はキーボードを表示する機能モジュールとマウス入力を司る機能モジュールでソフトキーボードの機能を実現しても良い。つまり、取得された動作環境でカプセル化文書２１を操作する上で最適な環境が見つからない場合は、これを代用するように動作する機能モジュールを用意してよく、また、取得された環境に基づいて複数の機能モジュールを組み合わせて機能を実現してもよい。
【０１５０】
例えば、カプセル化文書を操作する場合に、図３５に示すようにキーボードが必要な時に、そのときのネットワーク環境に、画面表示のコンピュータ１ｄと、マウスしか繋がっていないコンピュータ１ｅとしかない場合は画面表示のコンピュータ１ｄにソフトキーボードを表示する機能モジュールを動作させ、マウスのみしか繋がっていないコンピュータ１ｅにはマウス操作検出機能モジュールを動作させればよい。
【０１５１】
また、ここまでの例では、起動時に全ての機能モジュールが起動するように述べたが、当然のこととして、必要な機能が発生した時点で起動機能モジュールが必要な機能モジュールを起動させても良い。
【０１５２】
また、本発明は、カプセル化文書を動作させるために、説明の都合上、機能モジュールを通して説明してきたが、当然のこととしてネットワーク上で提供されている従来のサービス等を機能モジュール等が利用しても良いことは述べるまでもない。
【０１５３】
【発明の効果】
請求項１記載の発明の文書のデータ構造によれば、コンテンツ情報ファイルとともにカプセル化により一体化された起動機能モジュールと各機能モジュール中の通信機能モジュールとのプログラムコードを利用することで、起動時はそのネットワーク環境に即して機能モジュールを複数のコンピュータ上で動作させればよく、予めネットワーク上に特殊なサービスを走らせておく必要がなく、よって、予め特別なサービスがコンピュータ上で走っていない環境でも分散処理により動作するカプセル化された文書のデータ構造を提供することができる。
【０１５４】
請求項２記載の発明によれば、請求項１記載の文書のデータ構造において、機能モジュールのプログラムコードをＪＡＶＡ等の中間言語コードで記述することで、マルチプラットフォーム上で動作させることができる。
【０１５５】
請求項３記載の発明によれば、請求項１又は２記載の文書のデータ構造において、マルチキャスト又はブロードキャスト機能により情報を送受信させることで、複数の機能モジュールに情報を伝達する場合に、コネクション型の通信に比べてネットワークに負荷がかからないようにすることができる。
【０１５６】
請求項４記載の発明によれば、請求項１，２又は３記載の文書のデータ構造において、機能モジュールは独立したプロセスとして起動動作すると共に他の機能モジュールのプロセス内で動作可能であるので、複数のコンピュータ上で分散処理させることができ、かつ、メモリが要らなく同一プロセス内でのデータ交換の容易化を図ることができる。
【０１５７】
請求項５記載の発明によれば、請求項４記載の文書のデータ構造において、機能モジュール間で情報を送受信する場合に、異なるプロセス間ではネットワークプロトコルを使用し、同一プロセス内ではそのコンピュータにおけるメモリ上で情報を送受信させるように切換えることにより、同一プロセス内ではメモリ上で情報を転送することで高速にデータを送受信させることができる。
【０１５８】
請求項６記載の発明によれば、請求項４又は５記載の文書のデータ構造において、複数の機能モジュールのプログラムコードファイルは起動機能モジュールによってネットワークを通じて複数のコンピュータに転送され、各種の機能を行う機能モジュールとして起動動作することで機能モジュールを複数のコンピュータ上で分散させて動作させることができる。
【０１５９】
請求項７記載の発明によれば、請求項６記載の文書のデータ構造において、起動機能モジュールは同一のコンピュータ内で複数の機能モジュールを動作させる場合は一つのプロセス内で複数の機能モジュールを動作させることで、不要なメモリ空間を無くし、かつ、機能モジュール間の情報交換の容易化を図ることができる。
【０１６０】
請求項８記載の発明によれば、請求項１ないし７の何れか一記載の文書のデータ構造において、動作環境取得機能モジュールが起動されたコンピュータの動作環境を取得し、取得した動作環境情報をネットワークを通じて他の機能モジュールに転送することで複数のコンピュータの動作環境を取得することができ、起動先コンピュータの決定等に供することができる。
【０１６１】
請求項９記載の発明によれば、請求項８記載の文書のデータ構造において起動機能モジュールは動作環境取得機能モジュールから転送された動作環境情報に基づいて他の機能モジュールの起動先コンピュータを決定させるようにしたので、適切な動作環境のコンピュータで機能モジュールを起動させることができる。
【０１６２】
請求項１０記載の発明によれば、請求項８記載の文書のデータ構造において、カプセル化された文書内に、機能モジュールが動作する上で必要な動作環境情報や機能モジュールが情報を送信する送信先が記述された文書構造ファイルを有し、起動機能モジュールは動作環境取得機能モジュールから転送された動作環境情報とこの文書構造ファイルの情報に基づいて他の機能モジュールの起動先コンピュータを決定させるようにしたので、起動される機能モジュールの起動条件を容易に把握することができ、より適切な動作環境のコンピュータで機能モジュールを起動させることができる。
【０１６３】
請求項１１記載の発明によれば、請求項１ないし１０の何れか一記載の文書のデータ構造において、動作環境の違いに対しても容易に対処することができる文書のデータ構造を提供することができる。
【０１６４】
請求項１２記載の発明によれば、請求項１ないし１１の何れか一記載の文書のデータ構造において、複数の機能モジュールにより表示されたコンテンツ情報上に加筆する機能を行う加筆機能モジュールを具備するので、加筆機能を持つカプセル化された文書のデータ構造を提供することができる。
【０１６５】
請求項１３記載の発明によれば、請求項１ないし１２の何れか一記載の文書のデータ構造において機能モジュールは特定の機能モジュール間の通信の情報を受信し、記録すると共に、記録された通信情報を送信する機能を有する記録機能モジュールを具備するので、記録機能を有するカプセル化された文書のデータ構造を提供することができる。
【０１６６】
請求項１４記載の発明の記憶媒体によれば、請求項１記載の発明と同様の効果を奏することができる。
【０１６７】
請求項１５記載のデータ処理装置によれば、コンテンツ情報ファイルとともにカプセル化により一体化された起動機能モジュールと各機能モジュール中の通信機能モジュールとのプログラムコードを利用することで、予め特別なサービスがコンピュータ上で走っていない環境でも分散処理により動作するカプセル化された文書のデータ構造を備えるので、例えば、ユーザが非力な他のコンピュータから当該データ処理装置が備えるカプセル化された文書を閲覧操作する場合に、ユーザが意識しなくてもこのカプセル化された文書にアクセスして起動させることにより当該データ処理装置を含む複数のコンピュータの中から近くの適切なコンピュータを探し機能モジュールを転送、起動し、それらの機能モジュールを複数のコンピュータに分散的に動作させ、ネットワークを通じて情報を伝達することで協調的に動作させることで、能力の低いＰＤＡ等からも簡単にアクセスすることができる。
【０１６８】
請求項１６記載の発明の文書閲覧システムによれば、コンテンツ情報ファイルとともにカプセル化により一体化された起動機能モジュールと通信機能モジュールとのプログラムコードを利用することで、予め特別なサービスがコンピュータ上で走っていない環境でも分散処理により動作するカプセル化された文書のデータ構造を備えるので、例えば、ユーザが非力なコンピュータからカプセル化された文書を閲覧操作する場合に、ユーザが意識しなくても複数のコンピュータの中から近くの適切なコンピュータを探し機能モジュールを転送、起動し、それらの機能モジュールを複数のコンピュータに分散的に動作させ、ネットワークを通じて情報を伝達することで協調的に動作させることで、能力の低いＰＤＡ等からも簡単にアクセスすることができる。
【図面の簡単な説明】
【図１】本発明の一実施の形態のパーソナルコンピュータを示すハードウェア構成図である。
【図２】ＯＳの役割の概要を示す模式図である。
【図３】カプセル化文書のデータ構造の基本例を示す模式図である。
【図４】より実際的なカプセル化文書のデータ構造の基本例を示す模式図である。
【図５】その閲覧処理例を示す概略フローチャートである。
【図６】その処理の流れを判りやすく示す模式図である。
【図７】同一コンピュータ内でネットワークプロトコルを利用した送受信の様子を示す模式図である。
【図８】同一コンピュータ内でネットワークプロトコルを利用した送受信の様子を示す模式図である。
【図９】他のコンピュータに機能モジュールを転送して動作させる場合の様子を示す模式図である。
【図１０】具体例として文書閲覧システムのシステム構成例の一例を示す結線図である。
【図１１】カプセル化文書のデータ構造を示す模式図である。
【図１２】ＪＡＶＡ環境を示す説明図である。
【図１３】ＪＡＶＡ記述によるカプセル化文書のデータ構造を示す模式図である。
【図１４】起動機能モジュールの動作例を示す概略フローチャートである。
【図１５】動作環境取得機能モジュールの動作例の概要を示す概略フローチャートである。
【図１６】動作環境に応じて作成されたテーブルを示す説明図である。
【図１７】カプセル化文書が表示文書である場合の説明図である。
【図１８】加筆に関する機能モジュールを含むカプセル化文書のデータ構造を示す模式図である。
【図１９】コンテンツ表示機能モジュールの動作例の概要を示す概略フローチャートである。
【図２０】マウス操作検出機能モジュールの動作例の概要を示す概略フローチャートである。
【図２１】加筆情報表示機能モジュールの動作例の概要を示す概略フローチャートである。
【図２２】ウインドウと各コンポーネントとの関係を示す説明図である。
【図２３】記録機能モジュールにおける記録部の動作例の概要を示す概略フローチャートである。
【図２４】その記録情報ファイルを示す説明図である。
【図２５】記録機能モジュールにおける再生部の動作例の概要を示す概略フローチャートである。
【図２６】パケットのフォーマット例を示す模式図である。
【図２７】パケットフォーマットでの送信動作例を示す概略フローチャートである。
【図２８】パケットフォーマットでの受信動作例を示す概略フローチャートである。
【図２９】同一のプロセス内で別スレッドで動作する例を示す概略フローチャートである。
【図３０】文書構造ファイルを含むカプセル化文書のデータ構造を示す模式図である。
【図３１】その文書構造ファイルのデータ構造の一例を示す模式図である。
【図３２】ＸＭＬを使用した記述例を示す説明図である。
【図３３】文書構造ファイルを使用した機能モジュールの起動動作例を示す概略フローチャートである。
【図３４】その様子を判りやすく図示した模式図である。
【図３５】特殊なシステム構成例の一例を示す模式図である。
【符号の説明】
１　　　コンピュータ
７　　　ネットワーク
２１　　　カプセル化文書
２２　　　コンテンツ情報ファイル
２３　　　プログラムコードファイル
２３ａ　　起動機能モジュールのプログラムコード
２３ｂ　　その他の機能モジュールのプログラムコード
２３ｂａ　　　通信機能モジュール
２５　　　文書構造ファイル
５４ａ　　動作環境取得機能モジュール
５４ｄ　　加筆情報表示機能モジュール
【図１】
2004102821.tif 000003
【図２】
2004102821.tif 000004
【図３】
2004102821.tif 000005
【図４】
2004102821.tif 000006
【図５】
2004102821.tif 000007
【図６】
2004102821.tif 000008
【図７】
2004102821.tif 000009
【図８】
2004102821.tif 000010
【図９】
2004102821.tif 000011
【図１０】
2004102821.tif 000012
【図１１】
2004102821.tif 000013
【図１２】
2004102821.tif 000014
【図１３】
2004102821.tif 000015
【図１４】
2004102821.tif 000016
【図１５】
2004102821.tif 000017
【図１６】
2004102821.tif 000018
【図１７】
2004102821.tif 000019
【図１８】
2004102821.tif 000020
【図１９】
2004102821.tif 000021
【図２０】
2004102821.tif 000022
【図２１】
2004102821.tif 000023
【図２２】
2004102821.tif 000024
【図２３】
2004102821.tif 000025
【図２４】
2004102821.tif 000026
【図２５】
2004102821.tif 000027
【図２６】
2004102821.tif 000028
【図２７】
2004102821.tif 000029
【図２８】
2004102821.tif 000030
【図２９】
2004102821.tif 000031
【図３０】
2004102821.tif 000032
【図３１】
2004102821.tif 000033
【図３２】
2004102821.tif 000034
【図３３】
2004102821.tif 000035
【図３４】
2004102821.tif 000036
【図３５】
2004102821.tif 000037