(57)【要約】【課題】効率的にソースコードの変更管理を行うソースコード管理サーバを提供する。【解決手段】ソースコード管理サーバ１は、クライアント端末機から受信したソースコードファイルを構文解析し、構文ツリーに分解する構文解析手段１２と、構文ツリーの要素毎に、ソースコードファイルの前のバージョンにおけるソースコードファイルとの変更差分を抽出するリポジトリ編集手段１３と、変更差分を保持するリポジトリ情報保持部２０とを備える。【選択図】図１
2005346660.tif 000002
【特許請求の範囲】
【請求項１】
クライアント端末機から受信したソースコードファイルを構文解析し、構文ツリーに分解する構文解析手段と、
前記構文ツリーの要素毎に、前記ソースコードファイルの前のバージョンにおけるソースコードファイルとの変更差分を抽出するリポジトリ編集手段と、
前記変更差分を保持するリポジトリ情報保持部と
を備えることを特徴とするソースコード管理サーバ。
【請求項２】
前記構文解析手段は、前記構文ツリーを各言語の最小要素毎に分解することを特徴とする請求項１に記載のソースコード管理サーバ。
【請求項３】
前記構文ツリーで表されたブロック毎に、当該ブロックを修正した際に影響が出る他のブロックを関連付ける修正ブロック管理手段と、
該修正ブロック管理手段によって関連付けられた前記ブロック毎の関連情報を保持する修正ブロック情報保持部と
を更に備えることを特徴とする請求項１又は２に記載のソースコード管理サーバ。
【請求項４】
コーディング規約と所定のコーディングスタイルとを含むコーディング情報を保持するコーディング情報保持部と、
前記コーディング情報に基づいて、前記構文ツリーに対してコーディングスタイルを調整し、前記構文ツリーをソースコードファイル形式に成型するフォーマット調整手段と
を更に備えることを特徴とする請求項１〜３のいずれか１項に記載のソースコード管理サーバ。
【請求項５】
ソースコード管理サーバに、
クライアント端末機から受信したソースコードファイルを構文解析し、構文ツリーに分解する手順と、
前記構文ツリーの要素毎に、前記ソースコードファイルの前のバージョンにおけるソースコードファイルとの変更差分を抽出する手順と
を実行させることを特徴とするソースコード管理プログラム。
【請求項６】
前記構文ツリーで表されたブロック毎に、当該ブロックを修正した際に影響が出る他のブロックを関連付ける手順と、
当該関連付けられた前記ブロック毎の関連情報を保持する手順と
を更に実行させることを特徴とする請求項５に記載のソースコード管理プログラム。
【請求項７】
コーディング規約と所定のコーディングスタイルとを含むコーディング情報を保持する手順と、
前記コーディング情報に基づいて、前記構文ツリーに対してコーディングスタイルを調整し、前記構文ツリーをソースコードファイル形式に成型する手順と
を更に実行させることを特徴とする請求項５又は６に記載のソースコード管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースコード管理サーバ及びソースコード管理プログラムに関する。
【背景技術】
【０００２】
従来、ソースコードの変更履歴管理システムとして、マイクロソフト社のVisual SourceSafeや、フリーソフトウェアのCVSなどが知られている。これらは、修正前のソースコードの情報と、それに対する変更差分情報をリポジトリと呼ばれるデータベースに蓄え、バージョン単位に修正のあった行を表示することができる（例えば、特許文献１参照）。
【０００３】
しかし、複数のファイルにわたって修正があった場合、従来の製品では、ファイル単位でしか差分を管理していなかったため、複数ファイルに対する修正を関連付けることができなかった。これに対し、BitKeeper、Perfoce、Subversionなどの製品では、複数のファイルに対する修正を個々に処理できるため、不整合が発生しない。
【特許文献１】特開平２−７９１２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した改良技術においても、依然として問題が残っており、例えば、バイナリ単位に差分情報を収集しているため、スペースや改行の挿入といった実際の修正には関係のない変更まで感知してしまう。即ち、図９に示すように、スペースや改行を挿入した箇所も修正があった箇所と認識し、反転して表示（図９の斜線部分）することが行われている。このような表示（ノイズ）が多くなれば、変更点を管理する作業者の効率が低下してしまう。
【０００５】
又、上述した改良技術では、複数のファイルに対する変更を関連付けて管理できる。このため、後のバージョンアップ時に、前回修正を施した箇所に対し、修正時の影響範囲を調査する際、前バージョンの修正時に関連付けたファイルを網羅的に調査することで修正漏れを防ぐことができる。しかし、修正が複数回によって行われた場合は、すべての修正を関連付けすることができないため、影響範囲を調査する際、修正漏れが発生する危険性がある。例えば、図１０（ａ）に示すように、修正Ａを行ったとする。修正Ａは、ファイル１、２、３のあるブロックに対する修正であり、これらの修正はお互いに依存関係にある。このため、ファイル１を再度修正する際は、ファイル２、ファイル３への影響を調査する必要がある。しかし、図１０（ｂ）、（ｃ）に示すように、修正Ａ１、修正Ａ２が行われた場合、複数回の修正を関連付けることはできないので、将来、ファイル１に対して修正が必要となったとき、ファイル２への影響調査が必要なことに気が付かないことがある。
【０００６】
更に、従来のソースコート管理システムでは、ソースコードの本質ではないコーディングスタイルについても管理している。このため、ソースコード管理システムを複数のメーカー、開発者で共用しようとした場合、図１１（ａ）及び図１１（ｂ）に示すように、各社、個人により、改行の位置、スペースの数、タブの文字数、コメントの位置など、コーディングスタイルの違いに戸惑うことがある。
【０００７】
そこで、上記の課題に鑑み、本発明は、効率的にソースコードの変更管理を行うソースコード管理サーバ及びソースコード管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明の第１の特徴は、（イ）クライアント端末機から受信したソースコードファイルを構文解析し、構文ツリーに分解する構文解析手段と、（ロ）構文ツリーの要素毎に、ソースコードファイルの前のバージョンにおけるソースコードファイルとの変更差分を抽出するリポジトリ編集手段と、（ハ）変更差分を保持するリポジトリ情報保持部とを備えるソースコード管理サーバであることを要旨とする。ここで、「構文」とは、if文やfor文など論理的意味を有する単位を指し、「構文ツリー」とは、これら構文をツリー形状にしたものをいう。
【０００９】
第１の特徴に係るソースコード管理サーバによると、構文ツリー毎に変更差分を管理することにより、効率的にソースコードの変更管理を行うことができる。
【００１０】
又、第１の特徴に係るソースコード管理サーバの構文解析手段は、構文ツリーを各言語の最小要素毎に分解してもよい。ここで、「最小要素」とは、ソースコードの一文を指し、例えば、；までを一文として扱う。このソースコード管理サーバによると、スペースや改行といった実際の修正とは意味のない変更があった場合、これらを表示することがなく（ノイズの除去）、変更点を管理する作業者の効率を向上することができる。
【００１１】
又、第１の特徴に係るソースコード管理サーバは、（ニ）構文ツリーで表されたブロック毎に、当該ブロックを修正した際に影響が出る他のブロックを関連付ける修正ブロック管理手段と、（ホ）修正ブロック管理手段によって関連付けられたブロック毎の関連情報を保持する修正ブロック情報保持部とを更に備えてもよい。このソースコード管理サーバによると、ソースコードの修正時に、影響範囲が確認しやすくなるため、修正漏れ等のミスを低減することができる。
【００１２】
又、第１の特徴に係るソースコード管理サーバは、（へ）コーディング規約と所定のコーディングスタイルとを含むコーディング情報を保持するコーディング情報保持部と、（ト）コーディング情報に基づいて、構文ツリーに対してコーディングスタイルを調整し、構文ツリーをソースコードファイル形式に成型するフォーマット調整手段とを更に備えてもよい。このソースコード管理サーバによると、異なるコーディング規約、コーディングスタイルを吸収し、複数のメーカー、開発者間で、ソースコードの共用が可能となる。
【００１３】
本発明の第２の特徴は、ソースコード管理サーバに、（イ）クライアント端末機から受信したソースコードファイルを構文解析し、構文ツリーに分解する手順と、（ロ）構文ツリーの要素毎に、ソースコードファイルの前のバージョンにおけるソースコードファイルとの変更差分を抽出する手順とを実行させるソースコード管理プログラムであることを要旨とする。
【００１４】
又、第２の特徴に係るソースコード管理プログラムは、（ハ）構文ツリーで表されたブロック毎に、当該ブロックを修正した際に影響が出る他のブロックを関連付ける手順と、（ニ）当該関連付けられたブロック毎の関連情報を保持する手順とを更に実行させてもよい。
【００１５】
又、第２の特徴に係るソースコード管理プログラムは、（ホ）コーディング規約と所定のコーディングスタイルとを含むコーディング情報を保持する手順と、（へ）コーディング情報に基づいて、構文ツリーに対してコーディングスタイルを調整し、構文ツリーをソースコードファイル形式に成型する手順とを更に実行させてもよい。
【００１６】
このソースコード管理プログラムを読み出すことにより、ソースコード管理サーバなどに上記の手順を実行させることができる。
【発明の効果】
【００１７】
本発明によると、効率的なソースコードの変更管理を行うソースコード管理サーバ及びソースコード管理プログラムを提供することができる。
【発明を実施するための最良の形態】
【００１８】
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面の記載において、同一または類似の部分には、同一または類似の符号を付している。ただし、図面は模式的なものであることに留意すべきである。
【００１９】
本発明の実施の形態では、ソースコードを論理的な構成ツリーとして分解し、構成ブロック毎に差分管理を行うソースコード管理サーバ、ソースコード管理方法及びソースコード管理プログラムについて説明する。
【００２０】
（ソースコード管理サーバ）
本発明の実施の形態に係るソースコード管理システムは、図１に示すように、ソースコード管理サーバ１と、複数のクライアント端末機３０ａ、３０ｂ、３０ｃとを備える。ソースコード管理サーバ１と、クライアント端末機機３０ａ、３０ｂ、３０ｃとは、通信ネットワーク（インターネット、無線ＬＡＮなど）を介して接続される。尚、接続方法は有線でも無線でも構わない。
【００２１】
クライアント端末機３０ａ、３０ｂ、３０ｃは、ソースコードの修正を行う端末装置であり、具体的には、パーソナルコンピュータ（ＰＣ）、ノートパソコン、携帯電話などが挙げられる。クライアント端末機３０ａ、３０ｂ、３０ｃは、ソースコードファイルをソースコード管理サーバ１から受信し、修正後のソースコードファイルをソースコード管理サーバ１へ送信する。又、クライアント端末機３０ａ、３０ｂ、３０ｃは、必要に応じて、ソースコード管理サーバ１から受信した変更差分情報を表示する。ここで、「変更差分情報」とは、所定のバージョンのソースコードファイルとその前のバージョンのソースコードファイルとの変更箇所をいう。通常、このような変更箇所は、その他の箇所と色や背景色を変更することにより明示される。
【００２２】
ソースコード管理サーバ１は、処理制御装置（ＣＰＵ）１０を備え、ＣＰＵ１０には、リポジトリ情報保持部２０、修正ブロック情報保持部２１、コーディング情報保持部２２、プログラム保持部２３、入力装置２４、出力装置２５が接続されている。又、ＣＰＵ１０は、通信手段１１、構文解析手段１２、リポジトリ編集手段１３、フォーマット調整手段１４、修正ブロック管理手段１５等のモジュールを内蔵している。これらのモジュールは、パーソナルコンピュータ等の汎用コンピュータにおいて、所定のプログラム言語を利用するための専用プログラムを実行することにより実現することができる。
【００２３】
通信手段１１は、クライアント端末機３０ａ、３０ｂ、２０ｃへソースコードファイルを送信し、クライアント端末機３０ａ、３０ｂ、２０ｃから修正後のソースコードファイルを受信する。又、通信手段１１は、必要に応じて、クライアント端末機３０ａ、３０ｂ、３０ｃへ変更差分情報を送信する。
【００２４】
構文解析手段１２は、ソースコードファイルを構文解析し、図３（ｂ）に示すように、構文ツリーに分解する。又、構文解析手段１２は、図４（ｂ）に示すように、構文ツリーを各言語の最小要素毎に分解する。
【００２５】
リポジトリ編集手段１３は、構文解析手段１２によって分解された構文ツリーの形状で、ソースコードファイルをリポジトリ情報保持部２０に保存する。又、リポジトリ編集手段１３は、構文ツリーの要素毎に、前バージョンとの変更差分を抽出し、リポジトリ情報保持部２０に保存する。更に、リポジトリ編集手段１３は、クライアント端末機３０ａ、３０ｂ、３０ｃから指定されたソースコードファイルのバージョン番号に基づいて、該当する構文ツリーをリポジトリ情報保持部２０から抽出する。
【００２６】
フォーマット調整手段１４は、コーディング情報に基づいて、構文ツリーに対してコーディングスタイルを調整し、構文ツリーをソースコードファイル形式に成型する。成型されたソースコードファイルは、通信手段１１によってクライアント端末機３０ａ、３０ｂ、３０ｃへ送信される。
【００２７】
修正ブロック管理手段１５は、構文ツリーで表されたブロック毎に、当該ブロックを修正した際に影響が出る他のブロックを関連付け、修正ブロック情報保持部２１に保存する。ここで「ブロック」とは、構文ツリーで表された枝（図５に示す斜線部分など）を指す。又、「他のブロック」とは、同じソースコードファイル内に限らず、異なるソースコードファイルに存在するブロックも含む。
【００２８】
リポジトリ情報保持部２０は、ソースコードファイルを構文ツリーの形状で、前バージョンとの変更差分を保持する。又、リポジトリ情報保持部２０は、各言語の最小要素毎に分解された構文ツリーを保持してもよい。
【００２９】
修正ブロック情報保持部２１は、修正ブロック管理手段１５によって関連付けられたブロック毎の関連情報を保持する。
【００３０】
コーディング情報保持部２２は、コーディング規約と所定のコーディングスタイルとを含むコーディング情報を保持する。「コーディング規約」とは、各開発環境によって定められるコーディングのルールのことであり、「所定のコーディングスタイル」とは、ユーザの嗜好などに応じたユーザ毎に異なるコーディングスタイルである。例えば、図１１に示すように、ユーザＡとユーザＢでは、改行の仕方など、そのコーディングスタイルが異なる。
【００３１】
プログラム保持部２３は、構文解析処理、リポジトリ編集処理などをＣＰＵ１０に実行させるためのソースコード管理プログラムを保持する。ソースコード管理プログラムを読み出すことにより、上述した構文解析手段１２（構文解析モジュール）やリポジトリ編集手段１３（リポジトリ編集モジュール）を形成することができる。プログラム保持部２３は、例えば、ＲＡＭ、ＲＯＭ、ハードディスク、フレキシブルディスク、コンパクトディスク、ＩＣチップ、カセットテープなどの記録媒体である。このような記録媒体によれば、ソースコード管理プログラムの保存、運搬、販売などを容易に行うことができる。
【００３２】
入力装置２４は、キーボード、マウス、タッチパネル等の機器を指す。入力装置２４から入力操作が行われると対応するキー情報や位置情報がＣＰＵ１０に伝達される。
【００３３】
出力装置２５は、モニタなどの画面を指し、液晶表示装置（ＬＣＤ）、発光ダイオード（ＬＥＤ）パネル、エレクトロルミネッセンス（ＥＬ）パネル等が使用可能である。
【００３４】
尚、リポジトリ情報保持部２０、修正ブロック情報保持部２１、コーディング情報保持部２２は、上述した情報を保存する記録媒体である。記録媒体は、例えば、ＲＡＭ、ＲＯＭ、ハードディスク、フレキシブルディスク、コンパクトディスク、ＩＣチップ、カセットテープなどが挙げられる。このような記録媒体によれば、データの保存、運搬、販売などを容易に行うことができる。
【００３５】
（ソースコード管理方法）
次に、本実施の形態に係るソースコード管理方法について、図２〜図７を用いて説明する。
【００３６】
まず、ソースコードの登録方法について、図２〜図４を用いて説明する。
【００３７】
（イ）図２のステップＳ１０１において、クライアント端末機３０ａは、ソースコードファイルの編集を行い、ステップＳ１０２において、ソースコード管理サーバ１へ修正後のソースコードファイルを送信する。
【００３８】
（ロ）次に、ステップＳ１０３において、構文解析手段１２は、ソースコードファイルを構文解析し、構文ツリーに分解する。例えば、図３（ａ）に示すソースコードファイルは、図３（ｂ）に示すような構文ツリーに分解される。又、構文解析手段１２は、構文ツリーを各言語の最小要素毎に分解してもよい。例えば、図４（ａ）に示すソースコードファイルは、図４（ｂ）に示すような構文ツリーに分解される。
【００３９】
（ハ）次に、ステップＳ１０４において、構文解析手段１２は、リポジトリ編集手段１３へ構文ツリーを送信する。ステップＳ１０５において、リポジトリ編集手段１３は、構文ツリーの要素毎に前バージョン（修正したソースコードファイルの前のバージョン）との変更があるか否かを確認し、変更差分をリポジトリ情報保持部２０へ保存する。
【００４０】
尚、この後、ソースコード管理サーバ１は、クライアント端末機３０ａ、３０ｂ、３０ｃからの要求に応じて、クライアント端末機３０ａ、３０ｂ、３０ｃに変更差分情報を送信し、クライアント端末機３０ａ、３０ｂ、３０ｃにおいて、変更差分表示が行われてもよい。
【００４１】
次に、修正ブロックの関連付け方法について図５を用いて説明する。
【００４２】
修正ブロック管理手段１５は、リポジトリ情報保持部２０に保持された構文ツリーを解析し、構文ツリーで表されたブロック（図５に示す斜線部分など）毎に、当該ブロックを修正した際に影響が出る他のブロックを関連付ける。具体的には、リポジトリ情報保持部２０に保持された変更差分情報から、同時期の修正は関連のある修正と判断し、それらのブロックを関連付ける。
【００４３】
このように関連付けられたブロックは、修正ブロック情報保持部２１に保持された関連情報に基づいて、ソースコード管理サーバ１の出力装置２５に表示される。あるいは、ソースコード管理サーバ１がソースコードファイルと共に関連情報をクライアント端末機３０ａ、３０ｂ、３０ｃへ送信することにより、関連付けられたブロックは、クライアント端末機３０ａ、３０ｂ、３０ｃに表示される。
【００４４】
又、関連ブロックの表示方法としては、特定のブロックを表示する際、関連するブロックを同時に表示してもよく、表示された特定のブロックの近辺に関連ブロックの名称（関連ブロックが存在するソースコードファイルのバージョン番号、関数名、行数など）を表示してもよい。
【００４５】
次に、コーディングスタイルの調整方法について図６及び図７を用いて説明する。
【００４６】
（イ）図６のステップＳ２０１において、クライアント端末機３０ａは、ソースコード管理サーバ１へ取得したいソースコードファイルのバージョン番号を通知する。そして、ステップＳ２０２において、リポジトリ編集手段１３は、指定されたバージョンの構文ツリーをリポジトリ情報保持部２０から抽出する。
【００４７】
（ロ）次に、ステップＳ２０３において、リポジトリ編集手段１３は、構文ツリー情報をフォーマット調整手段１４へ送信する（図７参照）。一方、ステップ２０４において、フォーマット調整手段１４は、コーディング情報保持部２２からコーディング情報を取得する（図７参照）。
【００４８】
（ハ）次に、ステップＳ２０５において、フォーマット調整手段１４は、コーディング情報に基づいて、構文ツリーの要素に対して、コーディングスタイルの調整を行う。そして、構文ツリーをソースコードファイルの形式に成型する。
【００４９】
（ニ）次に、ステップＳ２０６において、ソースコード管理サーバ１は、ソースコードファイルをクライアント端末機３０ａへ送信する。ステップＳ２０７において、クライアント端末機３０ａは、ソースコードファイルの編集を行う（図７参照）。
【００５０】
（作用及び効果）
本実施形態に係るソースコード管理サーバ１、ソースコード管理方法及びソースコード管理プログラムによると、構文ツリー毎に変更差分を管理することにより、効率的にソースコードの変更管理を行うことができる。
【００５１】
例えば、従来製品での変更差分表示は、図８（ａ）に示す表示であったが、本実施形態によると、図８（ｂ）に示す表示となる。即ち、変更箇所（i<sData.len();）のみが変更差分表示され（斜線部分）、修正箇所を容易に把握することができる。
【００５２】
又、本実施形態においては、構文ツリーを各言語の最小要素毎に分解することができる。このため、スペースや改行といった実際の修正とは意味のない変更があった場合、これらを表示することがなく（ノイズの除去）、変更点を管理する作業者の効率を向上することができる。
【００５３】
又、本実施形態においては、構文ツリーで表されたブロック毎に、当該ブロックを修正した際に影響が出る他のブロックを関連付けることができる。このような関連ブロック情報を表示することにより、ソースコードの修正時に、影響範囲が確認しやすくなるため、修正漏れ等のミスを低減することができる。
【００５４】
又、本実施形態においては、コーディング規約と所定のコーディングスタイルとを含むコーディング情報に基づいて、コーディングスタイルを調整し、構文ツリーをソースコードファイル形式に成型することができる。このため、異なるコーディング規約、コーディングスタイルを吸収し、複数のメーカー、開発者間で、ソースコードの共用が可能となる。
【００５５】
（その他の実施形態）
本発明は上記の実施形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施形態、実施例及び運用技術が明らかとなろう。
【００５６】
例えば、本実施形態において、ソースコード管理サーバ１は、クライアント端末機３０ａ、３０ｂ、３０ｃから修正後のソースコードファイルを受信すると説明したが、ソースコード管理サーバ１の入力装置２４からの入力やＦＤからの読み込みなどにより、ソースコードファイルを取得しても構わない。又、ソースコード管理サーバ１は、クライアント端末機３０ａ、３０ｂ、３０ｃに変更差分情報を送信し、クライアント端末機３０ａ、３０ｂ、３０ｃにおいて、変更差分表示が行われると説明したが、ソースコード管理サーバ１の出力装置２５に表示を行ってもよい。
【００５７】
又、ソースコード管理サーバ１について、構文解析手段１２、リポジトリ編集手段１３などをモジュールとして一つのＣＰＵに備えてもよいと説明したが、それぞれ異なるＣＰＵに備えられ、異なる装置としてもよい。その場合、複数の装置間をバスなどで接続するものとする。
【００５８】
又、ソースコード管理サーバ１について、リポジトリ情報保持部２１、修正ブロック情報保持部２１、コーディング情報保持部２２、プログラム保持部２３を分けて備えると説明したが、一つの保持部にこれらの情報を保持してもよい。
【００５９】
このように、本発明はここでは記載していない様々な実施形態等を含むことは勿論である。従って、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【図面の簡単な説明】
【００６０】
【図１】本発明の実施の形態に係るソースコード管理サーバの構成ブロック図である。
【図２】本発明の実施の形態に係るソースコードの登録方法を示すフローチャートである。
【図３】ソースコードファイルの構文ツリーへの分解を説明する図である（その１）。
【図４】ソースコードファイルの構文ツリーへの分解を説明する図である（その２）。
【図５】本発明の実施の形態に係る修正ブロックの関連付け方法を説明する図である。
【図６】本発明の実施の形態に係るコーディングスタイルの調整方法を示すフローチャートである。
【図７】本発明の実施の形態に係るコーディングスタイルの調整方法を説明する図である。
【図８】本発明の実施の形態に係るソースコード管理サーバの効果を説明する図である。
【図９】従来技術の問題点を説明する図である（その１）。
【図１０】従来技術の問題点を説明する図である（その２）。
【図１１】従来技術の問題点を説明する図である（その３）。
【符号の説明】
【００６１】
１…ソースコード管理サーバ
１０…ＣＰＵ
１１…通信手段
１２…構文解析手段
１３…リポジトリ編集手段
１４…フォーマット調整手段
１５…修正ブロック管理手段
２０…リポジトリ情報保持部
２１…修正ブロック情報保持部
２２…コーディング情報保持部
２３…プログラム保持部
２４…入力装置
２５…出力装置
３０ａ、３０ｂ、３０ｃ…クライアント端末機
【図１】
2005346660.tif 000003
【図２】
2005346660.tif 000004
【図３】
2005346660.tif 000005
【図４】
2005346660.tif 000006
【図５】
2005346660.tif 000007
【図６】
2005346660.tif 000008
【図７】
2005346660.tif 000009
【図８】
2005346660.tif 000010
【図９】
2005346660.tif 000011
【図１０】
2005346660.tif 000012
【図１１】
2005346660.tif 000013