(57)【要約】  例えばマルチタスクＯＳを用いる組み込みシステムで用いられるソフトウェアを、ターゲットにロードすることなく、最適化するとともに、プログラムソースの自動最適化を可能とするために、プログラムソース内のシステムコールを抽出する手段２と、システムコールの性能データを記憶する手段３と、手段３に性能データが記憶されているシステムコールのうちで、手段２によって抽出されたシステムコールと機能が類似し、かつ性能の良いシステムコールを検出する手段４と、プログラム内のシステムコールを手段４によって検出されたシステムコールに置換する手段５とを備える。
2008107936.tif 000002
【特許請求の範囲】
【請求項１】
複数のシステムコールに対応して、各システムコールの性能を示すデータを記憶する性能データ記憶手段と、
プログラムソース内に記述されているシステムコールを抽出するシステムコール抽出手段と、
前記性能データ記憶手段に性能を示すデータが記憶されているシステムコールのうちで、前記システムコール抽出手段によって抽出されたシステムコールと類似した機能を有し、該抽出されたシステムコールより性能の良いシステムコールを検出する類似システムコール検出手段とを備えることを特徴とするソフトウェア最適化装置。
【請求項２】
前記プログラムソース内に記述されているシステムコールを、前記類似システムコール検出手段によって検出されたシステムコールによって置換し、該置換結果として得られるプログラムソースを最適化されたプログラムソースとして出力するプログラムソース最適化手段をさらに備えることを特徴とする請求項１記載のソフトウェア最適化装置。
【請求項３】
前記システムコール抽出手段が、前記プログラムソース内に記述されているシステムコールに加えて、該システムコールのパラメータを抽出するとともに、
前記ソフトウェア最適化装置が、該抽出されたパラメータに対応する変数が前記類似システムコール検出手段によって検出されたシステムコール内で使用されている時、該パラメータと該変数との使用状況を分析し、前記抽出されたシステムコールの、前記検出されたシステムコールによる置換が可能か否かを判定する置換可能性判定手段をさらに備え、
該置換が可能であると判定された時、前記プログラムソース最適化手段がシステムコールの置換を行って、前記最適化されたプログラムソースを出力することを特徴とする請求項２記載のソフトウェア最適化装置。
【請求項４】
前記類似システムコール検出手段が複数のシステムコールを検出した時、該システムコールの一覧を表示する表示手段をさらに備えることを特徴とする請求項１記載のソフトウェア最適化装置。
【請求項５】
前記性能データ記憶手段に記憶されているシステムコールの性能を示すデータが該システムコールの消費電力量であり、
前記類似システムコール検出手段が、前記システムコール抽出手段によって抽出されたシステムコールより消費電力量の少ないシステムコールを検出することを特徴とする請求項１記載のソフトウェア最適化装置。
【請求項６】
前記性能データ記憶手段に記憶されているシステムコールの性能が該システムコールのメモリアクセス回数であり、
前記類似システムコール検出手段が、前記システムコール抽出手段によって抽出されたシステムコールよりメモリアクセス回数の少ないシステムコールを検出することを特徴とする請求項１記載のソフトウェア最適化装置。
【請求項７】
前記性能データ記憶手段に記憶されているシステムコールの性能が該システムコールの処理時間であり、
前記類似システムコール検出手段が、前記システムコール抽出手段によって抽出されたシステムコールより処理時間の短いシステムコールを検出することを特徴とする請求項１記載のソフトウェア最適化装置。
【請求項８】
プログラムソース内に記述されているシステムコールを抽出し、
複数のシステムコールに対応して各システムコールの性能を示すデータを記憶するメモリの記憶内容を用いて、該メモリに性能データが記憶されているシステムコールのうちで、前記プログラムソースから抽出されたシステムコールと類似した機能を有し、該抽出されたシステムコールより性能の良いシステムコールを検出し、
前記プログラムソース内に記述されているシステムコールを、該検出されたシステムコールによって置換し、該置換結果として得られるプログラムソースを最適化されたプログラムソースとして出力することを特徴とするソフトウェア最適化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はソフトウェアの最適化方式に係り、さらに詳しくは例えばマルチタスク・オペレーティング・システムを利用した組み込みシステムにおいて使用されるソフトウェアに対して、消費電力削減や処理性能向上を図るためのソフトウェア最適化装置、および最適化方法に関する。
【背景技術】
【０００２】
マルチタスク・オペレーティング・システム（ＯＳ）上で動くアプリケーションソフトウェアや、マルチタスクＯＳを利用した組み込みシステムで用いられるソフトウェアに対する省電力最適化作業では、プログラムソースをコンパイル・リンクした結果の実行可能オブジェクトをターゲットとなるハードウェア上にロードし、実際にソフトウェアとハードウェアを動かし、測定される電力量を削減するための作業が行われる。また組み込みシステムの処理性能の最適化作業についても同様の作業が行われている。このためオペレータや組み込みシステムの設計者がソフトウェアの最適化を行うためには、プログラムを作成し、それをデバッグし、ターゲットにロードして消費電力や処理性能を測定する必要があり、手間と時間のかかる作業が必要であった。【０００３】
このような計算機などの消費電力を最適化するための従来技術としての特許文献１では、グリッドコンピューティングシステムのような分散コンピューティングシステムにおいて、部分計算に要する電力や部分計算の重要性などの情報に基づいて、部分計算を実行すべき計算処理装置を選択することによって、電力消費量を削減することができる分散コンピューティングシステムが開示されている。【０００４】
しかしながらこの特許文献１は、分散コンピューティングシステムを構成する複数の計算処理装置の部分計算によって消費される電力量を最適化するものであり、例えばメモリへのアクセス回数は無視されている。例えば組み込みシステムでは、内蔵メモリへのアクセス回数も消費電力の指標として重要であるが、特許文献１ではメモリへのアクセス回数を考慮した最適化を行うことができないという問題点があった。【０００５】
また特許文献１では、省電力の指標を明らかにするためにプログラムソースをコンパイルし、リンクする必要があるが、組み込みシステム向けのアプリケーションソフトウェアにおいては、プログラムソースのコンパイルとリンクを行うだけでも膨大な時間がかかるものが多く、特許文献１の技術を組み込みシステムに適用することは困難であるという問題点があった。【０００６】
次に同様に電気機器の消費電力削減に関する従来技術としての特許文献２では、例えば電気機器が省電力モードへの切り替えを行っている最中に、通常モードに直ちに復帰させる必要が生じた場合などに、省電力モードで動作する時間が短く、省電力モードに切り替えることが逆に電力消費量を増大させるという問題点を解決するために、動作モードを切り替えるための移行処理、および復帰処理に伴う電力消費量を考慮した適切なモード切り替えを実現することができる技術が開示されている。【０００７】
しかしながら例えば組み込みシステムでは、プログラムソース内に記述されたシステムコールに対応して、電力消費量、メモリアクセス回数、処理時間などが消費電力や処理性能の指標として重要になり、動作モード切り替えによる消費電力削減の技術としての特許文献２の技術を適用することはできないという問題点があった。
【特許文献１】特開２００５−６３０６６号公報  「分散コンピューティングシステム」
【特許文献２】特開２００６−７２９９１号公報  「省電力処理装置、省電力処理方法、及び省電力処理プログラム」
【発明の開示】
【０００８】
本発明の目的は、上述の問題点に鑑み、例えばマルチタスクＯＳを用いる組み込みシステムなどの電力消費量の削減、および処理性能向上のために、プログラムソースに記述されているシステムコール毎に電力消費量、メモリアクセス回数、処理時間を最適化することによって、ターゲットにソフトウェアをロードすることなく、ソフトウェアの最適化を実現可能とすることである。また組み込みシステムの設計者などの手間をさらに削減させるために、プログラムソースの変更の自動化をも可能とすることである。
【０００９】
本発明のソフトウェア最適化装置は、少なくとも性能データ記憶手段、システムコール抽出手段、類似システムコール検出手段、およびプログラムソース最適化手段を備える。
性能データ記憶手段は、複数のシステムコールに対して各システムコールの性能を示すデータを記憶するものであり、システムコール抽出手段はプログラムソース内に記述されているシステムコールを抽出するものである。
【００１０】
類似システムコール検出手段は、性能データ記憶手段に性能を示すデータが記憶されているシステムコールのうちで、システムコール抽出手段によって抽出されたシステムコールと類似した機能を有し、抽出されたシステムコールより性能のよいシステムコールを検出するものであり、プログラムソース最適化手段はプログラムソース内に記述されているシステムコールを類似システムコール検出手段によって検出されたシステムコールによって置換し、その置換結果として得られるプログラムソースを最適化されたプログラムソースとして出力するものである。
【００１１】
本発明の実施の形態においては、システムコールの性能を示すデータは、例えばシステムコールの消費電力量、またはメモリアクセス回数、または処理時間であり、性能データが消費電力量である場合には類似システムコール検出手段によってより消費電力量の少ないシステムコールが検出され、システムコールのメモリアクセス回数であればよりメモリアクセス回数の少ないシステムコールが検出され、処理時間であればより処理時間の短いシステムコールが検出される。また本発明のソフトウェア最適化方法においては、ソフトウェア最適化装置の動作と同様の方法が用いられる。
【００１２】
以上のように本発明によれば、プログラムソース内に記述されているシステムコールが、同様の機能を持ち、より性能の良いシステムコールに置換され、置換結果として得られるプログラムソースが最適化されたプログラムソースとして出力される。
【００１３】
本発明によれば、最適化対象としてのソフトウェアを実際にターゲットにロードしたり、ソースコードをコンパイル、あるいはリンクする手間が不必要となり、プログラムソースの変更まで自動的に可能とすることによって、例えば組み込みシステムに用いられるソフトウェアの最適化作業の手間を大幅に削減し、例えば組み込みシステムの設計作業の大幅な効率化に寄与するところが大きい。
【図面の簡単な説明】
【００１４】
【図１】本発明のソフトウェア最適化装置の原理構成ブロック図である。
【図２】本実施形態におけるソフトウェア最適化装置の構成ブロック図である。
【図３】ソフトウェア最適化方式の第１の実施例における基本処理フローチャートである。
【図４】第１の実施例におけるソフトウェア最適化処理の詳細フローチャートである。
【図５】第１の実施例におけるデータテーブルのデータ格納例の説明図である。
【図６】プログラムソースからのシステムコール抽出例の説明図である。
【図７】システムコールの置換によるパラメータの影響の例の説明図である。
【図８】プログラムソース最適化処理方法（その１）の説明図である。
【図９】プログラムソース最適化処理方法（その２）の説明図である。
【図１０】ソフトウェア最適化方式の第２の実施例における基本処理フローチャートである。
【図１１】第２の実施例におけるソフトウェア最適化処理の詳細フローチャートである。
【図１２】第２の実施例におけるデータテーブルのデータ格納例の説明図である。
【図１３】ソフトウェア最適化方式の第３の実施例における基本処理フローチャートである。
【図１４】第３の実施例におけるソフトウェア最適化処理の詳細フローチャートである。
【図１５】第３の実施例におけるデータテーブルのデータ格納例の説明図である。
【発明を実施するための最良の形態】
【００１５】
図１は、本発明のソフトウェア最適化装置の原理構成ブロック図である。同図においてソフトウェア最適化装置１は、システムコール抽出手段２、性能データ記憶手段３、類似システムコール検出手段４、およびプログラムソース最適化手段５を備える。【００１６】
システムコール抽出手段２は、最適化の対象となるソフトウェアとしてのプログラムソース内に記述されているシステムコールを抽出するものであり、性能データ記憶手段３は複数のシステムコールに対応して、各システムコールの性能を示すデータを記憶するものである。【００１７】
類似システムコール検出手段４は、性能データ記憶手段３に性能を示すデータが記憶されたシステムコールのうちで、システムコール抽出手段２によって抽出されたシステムコールと類似した機能を有し、抽出されたシステムコールより性能の良いシステムコールを検出するものであり、プログラムソース最適化手段５はシステムコール抽出手段２によって抽出されたシステムコールを、類似システムコール検出手段４によって検出されたシステムコールによって置換し、その置換結果として得られるプログラムソースを最適化されたプログラムソースとして出力するものである。【００１８】
本実施形態においては、システムコール抽出手段２が、プログラムソース内に記述されているシステムコールに加えて、そのシステムコールにおけるパラメータを抽出するとともに、抽出されたパラメータに対応する変数が類似システムコール検出手段４によって検出されたシステムコール内で使用されている時、ソフトウェア最適化装置１がそのパラメータと変数との使用状況を分析し、プログラムソース内に記述されているシステムコールと類似システムコール検出手段４によって検出されたシステムコールとの置換が可能か否かを判定する置換可能性判定手段をさらに備え、置換が可能であると判定された時、プログラムソース最適化手段５がシステムコールの置換を行って、最適化されたプログラムソースを出力することもできる。【００１９】
本実施形態においては、システムコールの性能は、システムコールの消費電力量であることも、またシステムコールのメモリアクセス回数であることも、あるいはシステムコールの処理時間であることもできる。【００２０】
図２は、本実施形態におけるソフトウェア最適化装置の構成ブロック図である。同図において最適化処理部１０は、本実施形態におけるソフトウェアの最適化を行うものであり、例えば１つのパーソナルコンピュータと考えることもできる。【００２１】
最適化処理部１０に対しては、入力装置１１、メモリ１２、およびモニタ１３が接続され、最適化処理部１０は、リアル・タイム・オペレーティング。・システム（ＲＴＯＳ）１５を用いて、入力されるプログラムソース１６に対する最適化処理を実行し、その処理後のプログラムソースを最適化後のプログラムソース１７として出力する。ここで例えば組み込みシステムにおいてはユーザが、例えばあるボタンを押した時点でオペレーティング・システムが動き出すことが必要であり、そのためにＲＴＯＳ１５が用いられる。【００２２】
図３は、ソフトウェア最適化方式の第１の実施例における基本処理フローチャートである。同図において、ステップＳ１で最適化対象のプログラムソースが最適化装置に入力され、ステップＳ２でそのプログラムソース内に記述されているシステムコール、およびパラメータが抽出され、ステップＳ３でシステムコール毎の消費電力量が格納されたデータテーブルを用いて、最適化に使用可能なシステムコールが検出され、ステップＳ４で手動、または自動で最適化作業が行われ、最適化されたプログラムソースが出力される。なおここで最適化作業として実際には、プログラムソース内に記述されているシステムコールが、ステップＳ３で検出された最適化に使用可能なシステムコールに置換されて、最適化されたプログラムソースが出力される。すなわちこの第１の実施例においては、システムコールの性能はシステムコールの消費電力量を示すデータである。【００２３】
図４は、第１の実施例におけるソフトウェア最適化処理の詳細フローチャートである。同図において処理が開始されると、まずステップＳ１０でプログラムソースからシステムコールとパラメータが抽出され、ステップＳ１１で例えば図２のメモリ１２に格納されているデータテーブル、すなわちシステムコール毎の消費電力量を示すデータテーブルを用いて、プログラムソースから抽出されたシステムコールと類似した機能を持ち、かつ消費電力量が少ないシステムコールがあるか否かが判定され、無い場合には直ちに処理を終了する。【００２４】
図５は、第１の実施例におけるデータテーブルの格納内容の例である。同図において実質的に同一の機能、例えば機能Ａを持つシステムコールとしてはシステムコールＡ１とＡ２があり、システムコールＡ１の消費電力量を１００とするとシステムコールＡ２の消費電力量は５０であることを示す性能データが格納されている。【００２５】
図４のステップＳ１１で消費電力量が少ないシステムコールがあると判定されると、ステップＳ１２でプログラムソースから抽出されたパラメータに対応する変数やポインタ変数が、消費電力量が少ないシステムコールにおいて使用されているか否かが判定される。【００２６】
使用されている場合には、ステップＳ１３でプログラムソースの最適化のためにシステムコールを置換してもその動作に影響がないパラメータであるか否かが判定され、影響がある場合にはシステムコールの置換は困難であり、直ちに処理を終了する。【００２７】
図６は、プログラムソースから抽出されるシステムコールとパラメータの具体例である。同図において左側はプログラムソースを示し、右側はこのプログラムソースから抽出されたシステムコールとそのパラメータを示している。すなわちシステムコールとしてはタイムアウト付きのスリープタスク（ｔｓｌｐ＿ｔｓｋ）、およびタスクの終了を示すエクジットタスク（ｅｘｔ＿ｔｓｋ）が抽出され、それぞれの抽出回数が１回と２回であり、またシステムコールｔｓｌｐ＿ｔｓｋのパラメータが“−１”であることが示されている。【００２８】
図５の左側のプログラムソースの中でｔｓｌｐ＿ｔｓｋ（−１）のシステムコールの引数の“−１”は図５の右側で説明したパラメータであるが、このパラメータ“−１”はタイムアウト付きのスリープのシステムコールであるにもかかわらず無限にスリープするという意味を持っている。この引数が“−１”でなく、例えば“１０”とか“１００”という数値であれば、その数値に対応する時間でスリープ動作がタイムアウトすることになるが、無限にスリープするという意味では、同様の意味を持つｓｌｐ＿ｔｓｋ（）のシステムコールで置換することが可能となる。このシステムコールへの置換を行うことによりタイムアウト監視などの処理が不必要になるため、高速化、すなわち消費電力低減が実現される。【００２９】
図５のデータテーブルにおいて、例えば機能Ａがスリープ機能であり、システムコールＡ１がｔｓｌｐ＿ｔｓｋ（）のシステムコールであり、システムコールＡ２がｓｌｐ＿ｔｓｋ（）のシステムコールであるものとすれば、システムコールの置換によって消費電力量を半分とすることが可能となる。【００３０】
図７は、ステップＳ１３で判定されるパラメータの影響の説明図である。同図においてタスク１側のウェイト・フラグ（ｗａｉ＿ｆｌｇ）のシステムコールは、フラグのセットを待つシステムコールであり、タスク２側のセット・フラグ（ｓｅｔ＿ｆｌｇ）はフラグをセットするシステムコールである。この２つのシステムコールはタスク１とタスク２との動作の同期をとるためだけに使用されており、セットされるべきフラグを示すフラグＩＤがＦＬＧ１であることが示されている。このＦＬＧ１がパラメータに相当する変数であるが、このフラグが、例えばさらに他のタスクの動作との同期をとるためにも使用されているとすると、システムコールの置換に当たってこのフラグを省略することはできないが、ここではタスク１とタスク２との間での同期をとるだけに使用されているために、タスク１側のｗａｉ＿ｆｌｇのシステムコールをｓｌｐ＿ｔｓｋ（）のシステムコールで、またタスク２側のｓｅｔ＿ｆｌｇのシステムコールをスリープ状態から起きることを意味するウェイク・アップ・タスク、すなわちｗｕｐ＿ｔｓｋ（）に置換して、結果的に変数“ＦＬＧ１”を省略してもプログラムの動作には影響しないことになる。【００３１】
図４のステップＳ１２でパラメータに対応する変数やポインタ変数が使用されていない場合、あるいはステップＳ１３で、使用されていてもシステムコールの置換によってそのパラメータがプログラムソースの動作に影響しないと判定されたパラメータである場合には、ステップＳ１４で最適化可能なシステムコールの一覧が表示される。ここでシステムコールの一覧は、ステップＳ１０でプログラムソースから抽出されたシステムコールが複数であり、それぞれのシステムコールと置換可能であり、最適化に使用可能なシステムコールの一覧である。例えば同一の機能を持つシステムコールの中で消費電力量が少ないシステムコールが複数個存在する場合にも、最適化に使用可能なシステムコールは予め１つのシステムコールに決定されており、プログラムソースから抽出されたシステムコールと１対１の形式で、そのシステムコールと置換可能なシステムコールの一覧が表示されるものとする。【００３２】
その後ステップＳ１５でプログラムソースの最適化を自動的に行うか否かが判定され、自動的に行わず、例えば組み込みシステムの設計者が手動で最適化を行う場合には、最適化処理部としての処理を終了する。自動的に最適化する場合には、ステップＳ１６でプログラムソースの最適化が自動的に行われ処理を終了する。設計者が手動で最適化を行う場合には、ステップＳ１４で表示されるシステムコールの一覧を利用することができる。【００３３】
なお本発明の特許請求の範囲の請求項１における性能データ記憶手段は図２のメモリ１２に、請求項４における表示手段はモニタ１３に相当する。請求項１〜３におけるシステムコール抽出手段、類似システムコール検出手段、プログラムソース最適化手段、および置換可能性判定手段はすべて図２の最適化処理部１０に相当するが、システムコール抽出手段は例えば図４のステップＳ１０、類似システムコール検出手段はステップＳ１１、プログラムソース最適化手段はステップＳ１６、置換可能性判定手段はステップＳ１３の処理を行うものである。【００３４】
プログラムソースの自動的な最適化方法としては、例えばエディタを用いる方法と、コンパイラを用いる方法がある。図８は、エディタを用いたプログラムソース最適化処理の詳細フローチャートである。同図において処理が開始されると、ステップＳ２０でプログラムソースの中で特定の文字列を検索する処理が行われる。前述の例ではこの特定の文字列はｔｓｌｐ＿ｔｓｋ（）であり、ステップＳ２１でその文字列が検出されたか否かが判定され、検出された場合にはステップＳ２２でその特定の文字列が、例えばｓｌｐ＿ｔｓｋ（）で置換された後に、また検出されなかった場合にはステップＳ２３でプログラムソースのファイルの最終行に達したか否かが判定され、達していない場合にはステップＳ２０以降の処理が繰り返され、ファイルの最終行に達したと判定されると処理を終了する。【００３５】
図９は、コンパイラを用いた場合に作成されるファイルの例である。同図においては、システムコールｔｓｌｐ＿ｔｓｋ（ｔｍｏｕｔ）のシステムコールがｓｌｐ＿ｔｓｋ（）というシステムコールにデファインされる、すなわち置換されるべきことが示されている。またｗａｉ＿ｆｌｇのシステムコールがｓｌｐ＿ｔｓｋ（）のシステムコールにデファインされることも示されている。【００３６】
図１０は、ソフトウェア最適化方式の第２の実施例の基本処理フローチャートである。同図を第１の実施例における図３と比較すると、ステップＳ３１、Ｓ３２、およびＳ３４の処理は図３のステップＳ１、Ｓ２、およびＳ４と同様であるが、ステップＳ３３で、メモリアクセス回数がシステムコール毎に格納されたデータテーブルを用いて、最適化に使用可能なシステムコールが検出される点が異なっている。すなわちこの第２の実施例では、メモリアクセス回数を減らすことによって、プログラムソースの最適化を行うことになるが、組み込みシステムでは内臓メモリへのアクセス回数も重要な消費電力指標であり、メモリアクセス回数を減少させることによって、消費電力を削減させることが可能となる。【００３７】
図１１は、第２の実施例におけるソフトウェア最適化処理の詳細フローチャートである。同図を第１の実施例における図４と比較すると、図４のステップＳ１１に対応するステップＳ４１で、プログラムソースから抽出されたシステムコールと類似の機能を持ち、かつメモリアクセス回数が少ないシステムコールの有無が判定される点が基本的に異なっている。【００３８】
図１２は、図１１の処理フローチャートにおいてステップＳ４１の判定のために用いられるデータテーブルの格納内容の例である。それぞれの機能を持つ、一般に複数のシステムコール毎にメモリアクセス回数がデータテーブルに格納されている。【００３９】
図１３は、ソフトウェア最適化方式の第３の実施例の基本処理フローチャートである。同図を第１の実施例における図３と比較すると、図３のステップＳ３に相当するステップＳ５３でシステムコール毎の処理性能のデータ、例えば処理時間のデータが格納されたデータテーブルを用いて、最適化に使用可能なシステムコールが検出される点が基本的に異なっている。【００４０】
図１４は、第３の実施例におけるソフトウェア最適化処理の詳細フローチャートである。同図を第１の実施例における図４と比較すると、図４のステップＳ１１に相当するステップＳ６１で、プログラムソースから抽出されたシステムコールと類似した機能を持ち、かつ処理時間が短いシステムコールの有無が判定される点だけが基本的に異なっている。【００４１】
図１５は、図１４のステップＳ６１の判定に用いられるデータテーブルの格納内容の例である。一般に同一の機能をもつ複数のシステムコール毎に、そのシステムコールの処理に必要な処理時間が格納されている。【００４２】
以上において本発明の実施形態を詳細に説明したが、本発明によればシステムの省電力と処理性能向上のためのソフトウェア最適化を、例えばシステム設計者の技術レベルに依存することなく実現することが可能となる。また、最適化に使用可能なシステムコールが表示されるため、最適化作業効率を大幅に向上させることができる。
【図１】
2008107936.tif 000003
【図２】
2008107936.tif 000004
【図３】
2008107936.tif 000005
【図４】
2008107936.tif 000006
【図５】
2008107936.tif 000007
【図６】
2008107936.tif 000008
【図７】
2008107936.tif 000009
【図８】
2008107936.tif 000010
【図９】
2008107936.tif 000011
【図１０】
2008107936.tif 000012
【図１１】
2008107936.tif 000013
【図１２】
2008107936.tif 000014
【図１３】
2008107936.tif 000015
【図１４】
2008107936.tif 000016
【図１５】
2008107936.tif 000017
【国際調査報告】
2008107936.tif 000018
2008107936.tif 000019
2008107936.tif 000020
2008107936.tif 000021
2008107936.tif 000022
2008107936.tif 000023