(57)【要約】分散オブジェクトシステムを通じた呼び出しのコンテキストの伝播方法であって、前記システムは、アクティビティ管理用インターフェイスＡＰＩを有し、また各オブジェクトは、インターセプタおよび、前記オブジェクトの呼び出しの際にインターセプタが受信する、入力される要求のコンテキストの認証符号に結びついている。本発明によると、前記方法は、以下にあるオペレーションを含む：インターセプタ用のアクティビティマネージャを作成して、とりわけ、一方では、前記オブジェクトを呼び出す、入力される要求によって直接的に生じるオブジェクトのアクティビティと、コンテキストの認証符号によって識別されるような前記入力される要求のコンテキストとの間に結びつきを確立し、また他方では、前記アクティビティマネージャからコンテキストを回収し、それをオブジェクトの出力される要求に結びつけること、アクティビティマネージャからカレントコンテキストを回収することおよび、入力される要求によって間接的に生じるオブジェクトの任意のアクティビティにそのカレントコンテキストを結びつけることを目的としたメソッドを、前記アクティビティ管理用インターフェイスＡＰＩに付け加えること。分散オブジェクトシステムのセキュリティに応用できる。
2004513429.tif 000002
【特許請求の範囲】
【請求項１】
分散オブジェクトシステムを通じた呼び出しのコンテキストの伝播方法であって、前記システムが、アクティビティ管理用インターフェイスＡＰＩを有し、また各オブジェクトが、インターセプタ、および、前記オブジェクトの呼び出しの際にインターセプタが受信する、入力される要求のコンテキストの認証符号に結びついており、前記方法が以下にあるオペレーションを含むことを特徴とする伝播方法：
−インターセプタ用のアクティビティマネージャを作成して、とりわけ、一方では、前記オブジェクトを呼び出す、入力される要求によって直接的に生じるオブジェクトのアクティビティと、コンテキストの認証符号によって識別されるような、前記入力される要求のコンテキストとの間に結びつきを確立し、また他方では、前記アクティビティマネージャからコンテキストを回収し、それをオブジェクトの出力される要求に結びつけること、
−アクティビティマネージャからカレントコンテキストを回収することおよび、入力される要求によって間接的に生じるオブジェクトの任意のアクティビティにそのカレントコンテキストを結びつけることを目的としたメソッドを、前記アクティビティ管理用インターフェイスＡＰＩに付け加えること。
【請求項２】
メッセージキューの管理用インターフェイスＡＰＩを作成することにあるオペレーションも含む方法であって、該オペレーションは、二つのメソッドを提供し、該二つのメソッドはそれぞれ、キュー内にメッセージを預けて、カレントアクティビティのコンテキストをキュー内に預けられたメッセージに結びつけること、および、キュー内のメッセージを回収して、取り出されたメッセージのコンテキストをカレントアクティビティに結びつけることを可能にすることを特徴とする、請求項１に記載の方法。
【発明の詳細な説明】
【０００１】
【発明が属する技術分野】
本発明は、分散オブジェクトシステムを通じた呼び出しのコンテキストの伝播方法に関するものである。
【０００２】
本発明は、オブジェクト間の相互作用の因果順序を、とりわけそのコンテキストによって認識する、つまり、各呼び出しについて、それが生成した呼び出しがどれであるかを認識することが必要である全ての場合において、有利な応用を見出す。すなわち、このタイプの分散オブジェクトシステムによって提供されるサービスが、該システムを構成するオブジェクト間の相互作用によって実現されており、サービスの呼び出しが、このように、さまざまなオブジェクトのメソッドへのコールの連続を生成することができるのは既知である。
【０００３】
本発明は、より特徴的には、分散オブジェクトシステムのセキュリティに応用される。オブジェクトのメソッドへのアクセスが、大抵の場合ユーザであるイニシエータの識別子によって条件づけられることは頻繁に見られる。オブジェクトのメソッドへのアクセスを制御するためには、したがって、要求されたサービスの実現に関与する全てのオブジェクトに、クライアントの識別子を提示する必要がある。
【０００４】
異常の監視や監査のような他の応用において、識別子を認識すること、および、より一般的には、サービスの実現に関与したさまざまな中間のコンテキストを認識することもまた必要である。
【０００５】
【従来の技術及び発明が解決しようとする課題】
ＯＭＧ（Ｏｂｊｅｃｔ　Ｍａｎａｇｅｍｅｎｔ　Ｇｒｏｕｐ）の標準ＣＯＲＢＡ（Ｃｏｍｍｏｎ　Ｏｂｊｅｃｔ　Ｒｅｑｕｅｓｔ　Ｂｒｏｋｅｒ　Ａｒｃｈｉｔｅｃｔｕｒｅ）は、オブジェクト指向通信インフラストラクチャーの開発を目的とする、かなりの数の仕様を提案している。これらの仕様の中に、インターセプタの仕様がある。インターセプタは、通信インフラストラクチャーの中核であるＯＲＢ（Ｏｂｊｅｃｔ　Ｒｅｑｕｅｓｔ　Ｂｒｏｋｅｒ）と、アプリケーションオブジェクトとの間に割り込み、そして、アプリケーションオブジェクトに対して暗黙的な仕方で入力される、または出力される要求に基づいた処理を実現することを可能にする。したがって必然的に、アプリケーションオブジェクトに対して暗黙的であることが望まれるサービスを実装するために、インターセプタが利用される：監査、アクセス制御、異常の監視など。
【０００６】
これらＣＯＲＢＡ仕様の実装のうちかなりの数が、インターセプタのサービスを提案している。反面、これらの所産のいずれも、情報を暗黙的に伝播することはできない；伝播は、アプリケーションオブジェクトが明示的に関与することなしには実現されることができない。そうなると、特定の場合において、アプリケーションオブジェクトに対して完全に暗黙的なサービスの実装が不可能になる。
【０００７】
インターセプタは、したがって、ＣＯＲＢＡオブジェクトに対して暗黙的な仕方で入力される、または出力される要求に基づく動作を実現することを可能にする。このインターセプタの概念を実装しているＯＲＢの大部分は、反面、情報の暗黙的な伝播のメカニズムを提供していない。問題は、入力される要求と出力される要求の間の関係がどのようなものであるかをいずれにせよ知る手段が、インターセプタにはひとつもないということに存する。伝播の暗黙的なメカニズムを提供するためには、それぞれの出力される要求について、それが入力される要求によって生じるものなのか、そしてもしそうだとしたら、どの入力される要求か、あるいは、それがオブジェクトによって自発的に送信された要求であるのか、を知ることが、インターセプタにとって必要である。
【０００８】
既知のインターセプタ・システムにおけるアプリケーションオブジェクトの呼び出しのメカニズムを説明している図１で見ることができるように、アプリケーションオブジェクトが呼び出しを受信すると、この呼び出しの処理のための新しいアクティビティＡ１が、アクティビティ管理用アプリケーション・プログラミング・インターフェイス（ＡＰＩ、「Ａｐｐｌｉｃａｔｉｏｎ　Ｐｒｏｇｒａｍｍｉｎｇ　Ｉｎｔｅｒｆａｃｅ」の略語）によって作成される。認証符号は、呼び出しの、またしたがって、作成されたアクティビティの、コンテキストを識別する。もしオブジェクトが、この同じアクティビティＡ１を、別のオブジェクトの呼び出しを実現するために利用するとしたら、インターセプタは、入力される要求によって生じる、出力される要求であるかどうかを直接に確かめ、その出力される要求に、認証符号によって識別されたコンテキストを結びつけることができる。いかなるあいまいさも引き起こさないのは、この典型的な例だけである。すなわち、もし受信された要求が、別のオブジェクトの呼び出し専用の新しいアクティビティＡ２の作成を引き起こすなら、インターセプタは、この呼び出しが、入力される要求によって生じるものであるのか、あるいは、それが自発的な要求Ａ３であるのかを知ることはもはやできない。したがって、オブジェクトの呼び出しの、入力される要求に関するコンテキストを伝播することは不可能である。
【０００９】
この場合、コンテキストの伝播は、アプリケーションオブジェクトのコードの変更を必要とする。すなわち、作成された新しいアクティビティＡ２に、入力される要求のコンテキストを結びつけることを、アプリケーションに明示的に要求する必要がある。ところが、アプリケーションオブジェクトのコードは、一般的には、開発者がこの変更を行えるよう自由に使用できる状態にはなっていない。
【００１０】
現行の分散オブジェクトシステムによって提供されるインフラストラクチャーのサービスは、したがって、呼び出しの因果順序を暗黙的な仕方で明確にすることはできない。本発明は、これらのインフラストラクチャーによって提供されるサービスを充実させて、この暗黙的なトレーサビリティ特性を保証することを目的とする。
【００１１】
したがって、本発明の目的によって解決すべき技術的問題は、分散オブジェクトシステムを通じた呼び出しのコンテキストの伝播方法を提案することであり、前記システムは、アクティビティ管理用インターフェイスＡＰＩを有し、また各オブジェクトは、インターセプタおよび、前記オブジェクトの呼び出しの際にインターセプタが受信する、入力される要求のコンテキストの認証符号に結びついており、方法は、呼び出しの因果順序を暗黙的な仕方で明確にすることを、またしたがって、サービスの実現に関係するオブジェクトの識別子およびそれらオブジェクトが実行される順序を認識することを、可能にしうるものであるが、オブジェクトそれら自体がプロセスにおいて直接に介入する必要はなく、したがって、上質のアクセス制御方針を確立する機会をとりわけ提供するものである。
【００１２】
【課題を解決するための手段】
提示された技術的問題に対する解決策は、本発明によると、前記方法が、以下にあるオペレーションを含むことにある：
−インターセプタを目的としたアクティビティマネージャを作成して、とりわけ、一方では、前記オブジェクトを呼び出す、入力される要求によって直接的に生じるオブジェクトのアクティビティと、コンテキストの認証符号によって識別されるような、前記入力される要求のコンテキストとの間に結びつきを確立し、また他方では、前記アクティビティマネージャからコンテキストを回収し、それをオブジェクトの出力される要求に結びつけること、
−アクティビティマネージャからカレントコンテキストを回収すること、および、入力される要求によって間接的に生じるオブジェクトの任意のアクティビティに、そのカレントコンテキストを結びつけることを目的としたメソッドを、前記アクティビティ管理用インターフェイスＡＰＩに付け加えること。
【００１３】
このように、アクティビティマネージャを作成し、またアクティビティの管理（生成、同期、破棄など）のための開発言語によって提供されるＡＰＩを充実させることによって、本発明の方法は、全てのタイプのアクティビティと呼び出しのコンテキストとの間の結びつきを、最新に更新された状態に保つことを可能にする。これらの結びつきは、ついで、出力される要求に結びついたコンテキストを回収するために、インターセプタによって利用されることができる。
【００１４】
コンテキストの伝播は、このとき、アプリケーションオブジェクトの介入をもはや必要とせず、そのことは、完全に暗黙的なサービスの開発を可能にする。
【００１５】
本発明による方法は、次のように機能する。インターセプタは、要求を受信すると、そこからコンテキストを抜き出して、このコンテキストと、入力される要求によって直接的に生じるカレントアクティビティとの間に結びつきを作成するよう、アクティビティマネージャに要求する。呼び出しは、ついで、アプリケーションオブジェクトに伝達される。
【００１６】
アプリケーションオブジェクトが、別のオブジェクトを呼び出すために、この同じアクティビティを利用する場合、インターセプタは、アクティビティマネージャに問い合わせて、カレントアクティビティに関するコンテキストを直接に回収し、それを出力される要求に結びつけることが可能である。
【００１７】
アプリケーションオブジェクトは、別のオブジェクトを呼び出すために新しいアクティビティを作成したいとき、充実されたアクティビティ管理用ＡＰＩを利用しなければならない。このＡＰＩによって作成された新しいアクティビティは、入力される要求によって間接的に生じるものであり、親アクティビティのコンテキストを継承する。そのとき、インターセプタは、カレントアクティビティ、すなわち、子孫アクティビティのコンテキストを直接に回収し、またそれを出力される要求に結びつけるだけで十分である。
【００１８】
もしカレントアクティビティが、入力される要求によって直接的または間接的に生じていないならば、いかなるコンテキストもカレントアクティビティに結びついていない。それはとりわけ、アプリケーションオブジェクトが、別のオブジェクトを自発的に呼び出すときのケースである。この場合、アクティビティは、入力される要求を管理するために作成されたのではない。それは、入力される要求の管理専用のアクティビティの子孫でもない。それはしたがって、いかなるコンテキストにも結びついていない。
【００１９】
【発明の実施の形態】
非制限例として与えられる附属の図面と比較して続いていく説明は、本発明がどんなものなのか、そしてどのように実現することができるのかをよく理解させてくれるだろう。
【００２０】
図２は、本発明にかなった方法に従って機能する分散オブジェクトシステムの概要である。
【００２１】
図３は、図２の分散システムの変形例である。
【００２２】
図２および図３の分散オブジェクトシステムを安定させるために示される要求が、暗黙的な仕方で、サーバまで、且つアプリケーションオブジェクトを通じて、呼び出しのイニシエータであるクライアントの識別子に存する特定のコンテキストを伝播できることである場合を見ていこう。
【００２３】
既知の仕方で、図２および３において示される分散システムは、メソッドＴｈｒｅａｄ（）を含む標準のＴｈｒｅａｄクラスによって定義される、アクティビティ管理用インターフェイスＡＰＩを有する。
【００２４】
オブジェクト（クライアント、アプリケーションおよびサーバ）は、要求を変更して、そこに呼び出しのコンテキストを付け加え、また抜き出すのに適したインターセプタを有するが、呼び出しのコンテキストとは、とりわけ呼び出しの連鎖に組み込まれたオブジェクトの識別子のリストである。
【００２５】
別の面では、インターセプタがオブジェクト間に認証符号のメカニズム、例えばＳＳＬを含むことが予定されている。このメカニズムは、サーバオブジェクトが、クライアントオブジェクトによって呼び出された、入力される要求のコンテキストを認証することを可能にするために、インターセプタによって従来利用されている。
【００２６】
分散システムを通じて呼び出しのコンテキストを伝播することができるように、アクティビティマネージャＴｈｒｅａｄＭａｎａｇｅｒが作成されるが、これはインターセプタに以下を許可するＡＰＩを、インターセプタに提供するものである：
−カレントアクティビティと、入力される要求に対応する新しいコンテキスト（コンテキストパラメータ）との間に、新しい結びつきを付け加えること（ｓｅｔＣｏｎｔｅｘｔメソッド）、
−カレントアクティビティに結びついたコンテキストが存在する場合に、それを回収すること（ｇｅｔＣｏｎｔｅｘｔメソッド）、
−カレントアクティビティと、そのコンテキストとの間の結びつきを削除すること（ｄｅｌｅｔｅＣｏｎｔｅｘｔメソッド）。
ｖｏｉｄ　ｓｅｔＣｏｎｔｅｘｔ（Ｏｂｊｅｃｔ　ｃｏｎｔｅｘｔ）
Ｏｂｊｅｃｔ　ｇｅｔＣｏｎｔｅｘｔ（）
ｖｏｉｄ　ｄｅｌｅｔｅＣｏｎｔｅｘｔ（）
【００２７】
このオブジェクトは、唯一のインスタンスをもつクラスであって（またしたがって、同じプロセスの全てのオブジェクトによって、またしたがって、とくにインターセプタによって、共有される）、該インスタンスは以下のように回収することが可能である：
ｐｒｉｖａｔｅ　ｓｔａｔｉｃ　ＴｈｒｅａｄＭａｎａｇｅｒ　ｍａｎａｇｅｒ
＝　ＴｈｒｅａｄＭａｎａｇｅｒ．ｇｅｔＩｎｓｔａｎｃｅ（）；
【００２８】
同様に、コンテキストの暗黙的な伝播は、アプリケーションオブジェクトによって作成された新しいアクティビティにカレントコンテキストを結びつけるために、アクティビティ管理用ＡＰＩを充実させることを必要とする。
【００２９】
ＡＰＩを充実させるのに、二つの方法が考えられる：プログラミング言語によって提供されるＡＰＩを変更すること、または、標準ＡＰＩを継承し、かつ標準ＡＰＩが提案するメソッドを充実させる特定のＡＰＩを開発することである。第一のアプローチは、最大限の暗黙レベルを提供する。反面、この場合、開発言語のソースを自由に使えることが必要であり、これは常に可能なわけではない。ここに紹介される例は、第二のアプローチによる特定のＡＰＩを開発することにある。
【００３０】
ＦｔＴｈｒｅａｄクラスは、コンテキストを、そのインスタンスのそれぞれに結びつけることを可能にする。このクラスは、標準のＴｈｒｅａｄクラスを継承し、また同じコンストラクタ（すなわち同じ署名）を提供する。追加のメソッドｇｅｔＣｏｎｔｅｘｔは、アクティビティに結びついたコンテキストを回収することを可能にする。
ＦｔＴｈｒｅａｄ（）
ＦｔＴｈｒｅａｄ（Ｒｕｎｎａｂｌｅ　ｔａｒｇｅｔ）
ＦｔＴｈｒｅａｄ（Ｒｕｎｎａｂｌｅ　ｔａｒｇｅｔ，Ｓｔｒｉｎｇ　ｎａｍｅ）
ＦｔＴｈｒｅａｄ（Ｓｔｒｉｎｇ　ｎａｍｅ）
ＦｔＴｈｒｅａｄ（ＴｈｒｅａｄＧｒｏｕｐ　ｇｒｏｕｐ，Ｒｕｎｎａｂｌｅ
ｔａｒｇｅｔ）
ＦｔＴｈｒｅａｄ（ＴｈｒｅａｄＧｒｏｕｐ　ｇｒｏｕｐ，Ｒｕｎｎａｂｌｅ
ｔａｒｇｅｔ，Ｓｔｒｉｎｇ　ｎａｍｅ）
ＦｔＴｈｒｅａｄ（ＴｈｒｅａｄＧｒｏｕｐ　ｇｒｏｕｐ，Ｓｔｒｉｎｇ　ｎａｍｅ）
Ｏｂｊｅｃｔ　ｇｅｔＣｏｎｔｅｘｔ（）
【００３１】
情報の伝播を可能にするために、アプリケーションオブジェクトは、このクラスを利用してアクティビティを作成しなければならない。
【００３２】
例えばＪａｖａ（登録商標）では、アクティビティを作成するのに、二つの方法が考えられる。第一の方法は、ＦｔＴｈｒｅａｄクラスを継承するクラスを作成することにある。
ｐｕｂｌｉｃ　ｃｌａｓｓ　ＥｘｔｅｎｄＴｈｒｅａｄ　ｅｘｔｅｎｄｓ　ＦｔＴｈｒｅａｄ｛
ＥｘｔｅｎｄＴｈｒｅａｄ（）｛．．．｝
ｐｕｂｌｉｃ　ｖｏｉｄ　ｒｕｎ（）｛．．．｝
｝
【００３３】
アクティビティの作成および実行は、そのとき、次のように実現される：
ＥｘｔｅｎｄＴｈｒｅａｄ　ｔｈｒｅａｄ　＝　ｎｅｗ　ＥｘｔｅｎｄＴｈｒｅａｄ（ｔａｒｇｅｔ）；
ｔｈｒｅａｄ．ｓｔａｒｔ（）；
【００３４】
第二の方法は、インターフェイスＲｕｎｎａｂｌｅを実装するクラスを作成することにある。
ｐｕｂｌｉｃ　ｃｌａｓｓ　ＩｍｐｌｅｍｅｎｔＴｈｒｅａｄ　ｉｍｐｌｅｍｅｎｔｓ　Ｒｕｎｎａｂｌｅ｛
ＩｍｐｌｅｍｅｎｔＴｈｒｅａｄ（）｛．．．｝
ｐｕｂｌｉｃ　ｖｏｉｄ　ｒｕｎ（）｛．．．｝
｝
【００３５】
アクティビティの作成および実行は、そのとき、次のように実現される：
ＩｍｐｌｅｍｅｎｔＴｈｒｅａｄ　ｔｈｒｅａｄ　＝　ｎｅｗ　ＩｍｐｌｅｍｅｎｔＴｈｒｅａｄ（）；
ｎｅｗ　ＦｔＴｈｒｅａｄ（ｔｈｒｅａｄ）．ｓｔａｒｔ（）；
【００３６】
本発明にかなったコンテキストの伝播方法は、図２に示される以下のオペレーションにしたがって機能する：
１．アプリケーションオブジェクトのインターセプタは、要求を受信すると、クライアントを認証し、クライアントの識別子を含むコンテキストを作成し、そしてこのコンテキストを、入力される要求によって直接的に生じるカレントアクティビティＡｉ１に結びつけるが、その際、作成されたアクティビティマネージャＴｈｒｅａｄＭａｎａｇｅｒを利用する。
２．アプリケーションオブジェクトがこの同じアクティビティＡｉ１を利用してサーバを呼び出す場合、インターセプタは、このアクティビティに結びついたコンテキストを、アクティビティマネージャＴｈｒｅａｄＭａｎａｇｅｒを利用して回収し、そして、クライアントの識別子を、送信された要求に組み入れる。
３．入力される要求によって間接的に生じる新しいアクティビティＡｉ２を作成し、またそれを利用してサーバを呼び出すには、アプリケーションオブジェクトは、充実されたアクティビティ管理用ＡＰＩであるＦｔＴｈｒｅａｄを利用しなければならない。このように作成された新しいアクティビティＡｉ２は、そのとき、暗黙的な仕方で、アクティビティＡｉ１のコンテキストに結びついている。
４．アクティビティマネージャＴｈｒｅａｄＭａｎａｇｅｒは、インターセプタに、アクティビティＡｉ２に結びついたコンテキストを回収し、そしてクライアントの識別子を出力される要求に付け加えることを許可する。
５．アプリケーションオブジェクトが、自発的な仕方で、つまり、要求の受信によって生成されたのではないアクティビティＡｉ３を利用して、サーバを呼び出すとき、インターセプタは、そのとき、カレントアクティビティＡｉ３がいかなるコンテキストにも結びついていないことを確認できる。したがって、クライアントの識別子は出力される要求に付け加えられない。
６．サーバのインターセプタは、要求の受信時に、アプリケーションオブジェクトを認証し、また要求に結びついたコンテキストを抜き出す。インターセプタは、そのとき、受信した要求がたどった道がいかなるものかを明確にすることができる。
【００３７】
サーバはまた、アクティビティマネージャＴｈｒｅａｄＭａｎａｇｅｒを利用して、カレントアクティビティに結びついたコンテキストを回収し、またしたがって、要求が経た道を明確にすることができる。
【００３８】
図３は、本発明の方法の変形例を説明しており、そこにおいて、アプリケーションオブジェクトは、入力される要求をメッセージキューに蓄え、そして、受信した要求を適切な受け手に伝達することを目的としたアクティビティの集合（すなわち「プール」）を利用する。提供されたＡＰＩは、情報の暗黙的な伝播を可能にするにはもはや十分ではない。これらのアクティビティは、すなわち、いかなるコンテキストにも結びついていない。
【００３９】
その代わりに、これらのアクティビティは、セキュリティサービスの開発者が、この特定の場合のタイプを管理することを可能にするＡＰＩを提供することを許可する。図２と比較して提案される例において、開発者は、とりわけ二つのメソッド（ｐｕｔおよびｇｅｔ）を提供する、メッセージキューの管理用ＡＰＩを作成するだけで十分であり、該二つのメソッドはそれぞれ、キュー内にメッセージを預けること、および回収することを可能にするものである。ｐｕｔメソッドは、カレントアクティビティのコンテキストを、キュー内に預けられたメッセージに結びつけることを可能にする。ｇｅｔメソッドは、取り出されたメッセージのコンテキストをカレントアクティビティに結びつけることを可能にする。
【００４０】
図３の変形例は、次のように機能する：
１．インターセプタは、入力される要求のコンテキストを明確にし、そして、アクティビティマネージャＴｈｒｅａｄＭａｎａｇｅｒを利用して、そのコンテキストをカレントアクティビティＡｌに結びつける。
２．アプリケーションオブジェクトは、ｐｕｔメソッドを利用して、メッセージをメッセージキュー内に組み入れる。カレントアクティビティＡｌのコンテキストは、暗黙的な仕方でメッセージに結びつけられる。
３．アプリケーションオブジェクトは、ｇｅｔメソッドを利用して、メッセージキューからメッセージを取り出す。メッセージのコンテキストは、カレントアクティビティＡ２に結びつけられる。
４．インターセプタは、カレントアクティビティＡ２のコンテキストを回収する。
【図面の簡単な説明】
【図１】既知のインターセプタ・システムにおけるアプリケーションオブジェクトの呼び出しのメカニズム
【図２】本発明にかなった方法に従って機能する分散オブジェクトシステムの概要
【図３】図２の分散システムの変形例
【図１】
2004513429.tif 000003
【図２】
2004513429.tif 000004
【図３】
2004513429.tif 000005
【国際公開パンフレット】
2004513429.tif 000006
2004513429.tif 000007
2004513429.tif 000008
2004513429.tif 000009
2004513429.tif 000010
2004513429.tif 000011
2004513429.tif 000012
2004513429.tif 000013
2004513429.tif 000014
2004513429.tif 000015
2004513429.tif 000016
2004513429.tif 000017
2004513429.tif 000018
【国際調査報告】
2004513429.tif 000019
2004513429.tif 000020
2004513429.tif 000021
2004513429.tif 000022
2004513429.tif 000023
2004513429.tif 000024