(57)【要約】【課題】例えば、階層構造を持つ構造体群を受け取って動作するプログラムをテストするためのテストプログラムを作成するテストプログラム作成装置を提供する。【解決手段】単体テストプログラム作成システム１が入力するテストデータ定義データ２１は、ＸＭＬ（extensible markup language）によって記載され、予め定義したタグによって、テスト対象プログラムに供給する構造体群の階層構造が表されている。テストプログラム作成部１１は、このタグに基づき、テスト対象のメソッドが受け取る構造体群の階層構造と構造体群中のパラメータの各値とを認識し、それらの値を持つ当該構造体群を生成する手続きと、最上位に位置する構造体を引数としてテスト対象のメソッドを呼び出す手続きとを有するテストプログラム２２を作成して出力する。【選択図】図１
2011100420.tif 000002
【特許請求の範囲】
【請求項１】
階層構造を持つ構造体群の最上位に位置する構造体を引数として受け取って動作するプログラムをテストするためのテストプログラムを作成するテストプログラム作成装置であって、
前記階層構造を持つ構造体群の各値を定義するテストデータ定義データを入力する入力手段と、
前記入力手段により入力されたテストデータ定義データで定義される各値を持つ前記階層構造を持つ構造体群を生成する手続きと、当該生成した構造体群の最上位に位置する構造体を引数としてテスト対象の前記プログラムを呼び出す手続きとを有する前記テストプログラムを作成するテストプログラム作成手段と、
を具備することを特徴とするテストプログラム作成装置。
【請求項２】
前記テストデータ定義データは、ＸＭＬ（extensible markup language）によって記載され、階層構造をタグで表すことによって、前記階層構造を持つ構造体群の各値をその構造に沿って定義するテキストデータであり、
前記テストプログラム作成手段は、前記テキストデータ定義データ中に埋め込まれたタグに基づき階層構造を解釈し、前記テストデータ定義データで定義される各値を持つ前記階層構造を持つ構造体群を生成する手続きを作成する、
ことを特徴とする請求項１記載のテストプログラム作成装置。
【請求項３】
前記テストデータ定義データは、階層構造をインデントで表すことによって、前記階層構造を持つ構造体群の各値をその構造に沿って定義するテキストデータであり、
前記テストプログラム作成手段は、前記テキストデータ定義データ中で設定されたインデントに基づき階層構造を解釈し、当該テストデータ定義データで定義される各値を持つ前記階層構造を持つ構造体群を生成する手続きを作成する、
ことを特徴とする請求項１記載のテストプログラム作成装置。
【請求項４】
構造体を引数として受け取って動作する関数を呼び出す手続きを有するプログラムについて前記関数単位のテストを実行するためのテストプログラムを作成するテストプログラム作成装置であって、
テスト対象の前記プログラムのソースコードであって、前記構造体の各値を定義するテストデータ定義データが前記関数に対するコメント文として記載されたソースコードを入力する入力手段と、
前記入力手段により入力されたソースコードを解析し、当該ソースコード内に記載されたコメント文に基づき、テスト対象の関数を検出すると共に、当該検出した関数に対して前記構造体として供給すべきテストデータを作成するテストケース作成手段と、
前記構造体として前記テストケース作成手段により作成されたテストデータを生成する手続きと、当該生成した前記構造体を引数として前記テスト対象の関数を呼び出す手続きとを有する前記テストプログラムを作成するテストプログラム作成手段と、
を具備することを特徴とするテストプログラム作成装置。
【請求項５】
テスト対象のプログラムのソースコードであって、検査対象の変数を指定するためのコメント文が記載されたソースコードを入力する入力手段と、
前記入力手段により入力されたソースコードを解析し、当該ソースコード内に記載されたコメント文に基づき、検査対象の変数を検出すると共に、当該検出した変数を引数または戻り値とする関数を検出し、当該検出した関数が引数または戻り値とする前記検出した変数を検証するための手続きを有するテストプログラムを作成するテストプログラム作成手段と、
を具備することを特徴とするテストプログラム作成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、例えばプログラムの単体テストに用いるテストプログラムの作成作業を支援するためのシステム開発支援技術に関する。
【背景技術】
【０００２】
近年、様々な業種で作業の電子化が広く図られている。また、インターネットの利用が一般化した今日では、取引の形態が多様化し、かつ、その変貌も著しい。そのため、このような状況に即時に対応するためのシステム開発の効率化が、以前にも増して強く要求されてきている。そして、その方策の１つとして、プログラムのテストを効率的に行うための仕組みが、これまでも種々提案されている（例えば特許文献１，２等参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−３２１３３号公報
【特許文献２】特開２００８−１４０２６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここで、開発中のプログラムについて、メソッド（関数、サブルーチン等）単位のテストを行う場合を考える。そして、このメソッドの中に、階層構造を持つ構造体（オブジェクトやデータ）群を受け取って動作するものが存在するものと想定する。この場合、そのメソッドは、最上位に位置する構造体を引数として受け取って動作を開始する。
【０００５】
しかしながら、これまでは、メソッドに引数として直接的に引き渡す値を設定してテストを行うための支援ツールは種々存在したものの、階層構造を持つ構造体群を受け取って動作するメソッドについて、最上位に位置する構造体に加えて、次位層以下に位置する構造体の値をも設定してテストを行うための支援ツールは存在せず、意図したテストを簡単には行えないのが実情であった。
【０００６】
この発明は、このような事情を考慮してなされたものであり、例えば、階層構造を持つ構造体群を受け取って動作するプログラムをテストするためのテストプログラムを簡単に作成することを可能とするテストプログラム作成装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
前述の課題を解決するために、この発明のテストプログラム作成装置は、階層構造を持つ構造体群の最上位に位置する構造体を引数として受け取って動作するプログラムをテストするためのテストプログラムを作成するテストプログラム作成装置であって、前記階層構造を持つ構造体群の各値を定義するテストデータ定義データを入力する入力手段と、前記入力手段により入力されたテストデータ定義データで定義される各値を持つ前記階層構造を持つ構造体群を生成する手続きと、当該生成した構造体群の最上位に位置する構造体を引数としてテスト対象の前記プログラムを呼び出す手続きとを有する前記テストプログラムを作成するテストプログラム作成手段と、を具備することを特徴とする。
【発明の効果】
【０００８】
この発明によれば、例えば、階層構造を持つ構造体群を受け取って動作するプログラムをテストするためのテストプログラムを簡単に作成することが可能となる。
【図面の簡単な説明】
【０００９】
【図１】この発明の第１実施形態に係るテストプログラム作成装置（単体テストプログラム作成システム）の機能ブロック図。
【図２】同第１実施形態の単体テストプログラム作成システムにおける単体テスト対象プログラム（メソッド）の一例を示す図。
【図３】同第１実施形態の単体テストプログラム作成システムで用いられるテストデータ定義データの一例を示す第１の図。
【図４】同第１実施形態の単体テストプログラム作成システムによって作成されるテストプログラムの一例を示す第１の図。
【図５】同第１実施形態の単体テストプログラム作成システムで用いられるテストデータ定義データの一例を示す第２の図。
【図６】同第１実施形態の単体テストプログラム作成システムによって作成されるテストプログラムの一例を示す第２の図。
【図７】同第２実施形態の単体テストプログラム作成システムで用いられるテストデータ定義データの一例を示す図。
【図８】同第３実施形態に係るテストプログラム作成装置（単体テストプログラム作成システム）の機能ブロック図。
【図９】同第３実施形態の単体テストプログラム作成システムで用いられるソースコードの一部の一例を示す図。
【図１０】同第３実施形態の単体テストプログラム作成システムにおいてコメントとして用いるタグの一例を示す図。
【図１１】同第３実施形態の単体テストプログラム作成システムにおいてコメントとして用いる演算子の一例を示す図。
【図１２】同第４実施形態の単体テストプログラム作成システムで用いられるソースコードの一部の一例を示す図。
【図１３】同第４実施形態の単体テストプログラム作成システムによってテストプログラムが作成される原理を説明するための図。
【発明を実施するための形態】
【００１０】
以下、図面を参照して、この発明の実施形態を説明する。
【００１１】
（第１実施形態）
まず、この発明の第１実施形態について説明する。
【００１２】
図１は、第１実施形態に係るテストプログラム作成装置（単体テストプログラム作成システム１）の機能ブロック図である。この単体テストプログラム作成システム１は、例えば、ＣＤ（conpact disc）等のコンピュータ読取り可能な記憶メディアに記録されて頒布される単体テストプログラム作成プログラムが、パーソナルコンピュータのＨＤ（hard disc）にインストールされ、主メモリにロードされてＣＰＵ（central processing unit）によって実行されることによって、そのパーソナルコンピュータ上に構築されるものである。
【００１３】
この単体テストプログラム作成システム１は、例えば、階層的に構造化されたデータ群を受け取って動作するプログラム（メソッド等）について、引数として直接的に引き渡す最上位に位置するデータの値だけでなく、次位以下に位置するデータ群の値をも設定してテストを行うためのテストプログラムを作成するものであり、図１に示すように、テストプログラム作成部１１を有している。
【００１４】
テストプログラム作成部１１は、テストデータ定義データ２１を入力して、単体テスト対象のプログラムをテストするためのテストプログラム２２を作成する。図２に、単体テスト対象プログラムの一例を示す。
【００１５】
ここでは、"testMethod"というメソッドが、単体テスト対象プログラムであるものと想定する。図２に示すように、このメソッド"testMethod"は、引数として、"box"という構造体を受け取って動作する。この構造体"box"は、"num"、"id"、"area"という３つのパラメータで構成されている。そして、その３つのパラメータのうちのパラメータ"area"は、別途定義される、パラメータ"count"を有する構造体となっている。つまり、メソッド"testMethod"は、階層構造を持つ構造体群（"box"，"area"）を受け取って動作するメソッドであって、最上位に位置する構造体"box"のみを引数として直接的に受け取るメソッドである。そして、この単体テストプログラム作成システム１は、引数として直接的に受け渡しが行われる構造体"box"だけでなく、構造体"area"についても、目的の値を設定した上で、メソッド"testMethod"を動作させるテストプログラム２２を簡単に作成できるようにしたものであり、以下、この点について詳述する。
【００１６】
図３は、テストデータ定義データ２１の一例を示す図である。ここでは、図２に示したメソッド"testMethod"を、構造体"box"のパラメータ"num"，"id"に"10"，"A"を設定すると共に、（構造体"box"の一パラメータとして当該構造体"box"の下位層に位置づけられる）構造体"area"のパラメータ"count"に"1"を設定した上で動作させるためのテストプログラム２２を作成する場合を想定する。
【００１７】
図３に示すように、テストデータ定義データ２１は、ＸＭＬ（extensible markup language）によって記載されるテキストデータである。ＸＭＬは、タグをユーザが自由に定義することのできる記述言語である。そこで、この単体テストプログラム作成システム１では、予め定義したタグを使用することによって、テスト対象プログラムに供給する構造体群の階層構造をテストデータ定義データ２１上において表現する。なお、図３に示したテストデータ定義データ２１内に埋め込まれたタグの名称は、単なる一例であって、これに限定されるものではなく、任意に変更（定義）することが可能である。
【００１８】
より具体的に説明すると、図３に示したテストデータ定義データ２１を入力したテストプログラム作成部１１は、タグに基づき、まず、（1-1）構造体"box"が引数であること（図３のａ１）および（1-2）構造体"box"にはパラメータ"num","id"，"area"が存在し、かつ、パラメータ"area"は構造体であること（図３のａ１１，ａ１２，ａ１３）、つまり、構造体群の階層構造を認識する。
【００１９】
また、テストプログラム作成部１１は、タグに基づき、（2-1）パラメータ"num"に"10"を設定すること（図３のａ１１）、（2-2）パラメータ"id"に"A"を設定すること（図３のａ１１）および（2-3）パラメータ"area"（構造体）内のパラメータ"count"に"1"を設定すること（図３のａ１３）、つまり、構造体群中のパラメータの各値を認識する。
【００２０】
そして、テストプログラム作成部１１は、パラメータ"num"に"10"、パラメータ"id"に"A"が設定された構造体"box"とパラメータ"count"に"1"が設定された構造体"area"とからなる構造体群を生成する手続きと、構造体"box"を引数としてメソッド"testMethod"を呼び出す手続きとを有するテストプログラム２２を作成して出力する。図４は、この単体プログラム作成システム１によって作成されるテストプログラム２２の一例を示す図である。
【００２１】
単体テストプログラム作成システム１は、例えば、単体テスト対象のプログラム（メソッド）名とテストデータ定義データ２１のファイル名とを入力するための画面を提示するユーザインタフェース機能を有している。つまり、テスト担当者は、ＸＭＬによって記載するテキストデータであるテストデータ定義データ２１を作成するだけで、階層構造を持つ構造体群を受け取って動作するプログラムについて、引数として直接的に引き渡す最上位に位置する構造体の値だけでなく、次位層以下に位置する構造体群の値をも設定してテストするためのテストプログラム２２を簡単に作成することが可能となる。
【００２２】
なお、テストデータ定義データ２１の取得については、各々を外部ファイルとして指定することに代えて、テストプログラム作成部１１が、予め定められたデータベースにアクセスし、その時点で当該データベースに格納されたテストデータ定義データ２１を順次取得していくように構成することも可能である。この場合、データベースに格納されたテストデータ定義データ２１の数だけテストプログラム２２が自動作成される。
【００２３】
また、この手法は、オブジェクトを引数として受け取って動作するプログラム（メソッド）についても有用である。いま、"Test"というオブジェクトを引数として受け取って動作するメソッド"TestMethod"を単体テスト対象プログラムとし、かつ、オブジェクト"Test"は、３つのパラメータを受け取るものであって、第２パラメータが"Test2"というオブジェクトである場合を想定する。つまり、階層構造を持つ構造体群（オブジェクト"Test"，"Test2"）を引数とするメソッド"TestMethod"を単体テスト対象プログラムとする場合を想定する。
【００２４】
この場合も、テスト担当者は、タグによって、オブジェクト"Test"，"Test2"の階層構造を表しつつ各パラメータの値を設定するテストデータ定義データ２１を作成する。図５は、この場合のテストデータ定義データ２１の一例を示す図である。
【００２５】
図５に示すように、タグによって、(1-1)オブジェクト"Test"が引数であること（図５のｂ１）および（1-2）オブジェクト"Test"は３つのパラメータを受け取り、かつ、第２パラメータは"Test2"というオブジェクトであって、オブジェクト"Test2"は、１つのパラメータを受け取ること（図５のｂ１，ｂ１１，ｂ１２，ｂ１３，ｂ１２１）、を表すと共に、（2-1）オブジェクト"Test"の第１，第３パラメータに"10"，"test"を設定すること（図５のｂ１，ｂ２，ｂ３，）および（2-2）オブジェクト"Test2"に引き渡すパラメータを"0"に設定し、かつ、その内部状態について、パラメータ"name"に"name"、データとして"10"を設定すること（図５のｂ１２１）、を表す。
【００２６】
そして、この図５に示したテストデータ定義データ２１を入力したテストプログラム作成部１１は、各タグを解釈し、図６に示すテストプログラム２２を作成して出力する。図６に示すように、テストデータ定義データ２１は、設定された各値を持つオブジェクト群を生成する手続きと、生成したオブジェクト群を引数としてメソッドを呼び出す手続きとを有するテストプログラム２２を作成して出力する。
【００２７】
このように、この単体テストプログラム作成システム１によれば、テスト担当者は、ＸＭＬによって記載するテキストデータであるテストデータ定義データ２１を作成するだけで、オブジェクトを引数として受け取って動作するプログラムについても、引数として直接的に引き渡す最上位に位置するオブジェクトのみならず、次位層以下に位置するオブジェクトを目的の状態に設定してテストするためのテストプログラム２２を簡単に作成することが可能となる。
【００２８】
（第２実施形態）
次に、この発明の第２実施形態について説明する。
【００２９】
前述した第１実施形態の単体テストプログラム作成システム１では、テストデータ定義データ２１をＸＭＬによって記載し、その際、予め定義したタグによって、単体テスト対象プログラムに供給する構造体群の階層構造を表した。
【００３０】
これに代えて、この第２実施形態の単体テストプログラム作成システム１では、図７に示すように、インデント（字下げ）を利用して、単体テスト対象プログラムに供給する構造体群の階層構造を表す。
【００３１】
図７に示した例は、第１実施形態において説明した、階層構造を持つ構造体群（オブジェクト"Test"，"Test2"）を引数とするメソッド"TestMethod"を単体テスト対象プログラムとする場合を想定した際に作成されるテストデータ定義データ２１の一例を示す図である。
【００３２】
図７に示すように、インデントを用いることによって、（１）オブジェクト"Test"、（２）パラメータ"10"，"test2"，"test"、（３）"name"，"SetData"の階層構造を表現する。そして、このテストデータ定義データ２１を入力したテストプログラム作成部１１は、インデントに基づき、階層構造を認識して、第１実施形態と同様、図６に示したテストプログラム２２を作成して出力する。
【００３３】
このように、この第２実施形態の単体テストプログラム作成システム１においても、テスト担当者は、インデントを適所に用いたテキストデータであるテストデータ定義データ２１を作成するだけで、階層構造を持つ構造体群を受け取って動作するプログラムについて、引数として直接的に引き渡す最上位に位置する構造体の値だけでなく、次位層以下に位置する構造体群の値をも設定してテストするためのテストプログラム２２を簡単に作成することが可能となる。
【００３４】
（第３実施形態）
次に、この発明の第３実施形態について説明する。
【００３５】
図８は、第３実施形態に係るテストプログラム作成装置（単体テストプログラム作成システム１）の機能ブロック図である。
【００３６】
この単体テストプログラム作成システム１は、（第１，第２実施形態において）前述したテストプログラム作成部１１に加えて、ソースコード解析部１２およびテストケース生成部１３をさらに有している。そして、この単体テストプログラム作成システム１は、メソッド（関数，サブルーチン等）単位のテストを行おうとしているプログラムのソースコード２３を入力し、このソースコード２３を解析して、当該プログラム内の目的のメソッドをテストするためのテストプログラム２２を作成して出力する。
【００３７】
より具体的に説明すると、この単体テストプログラム作成システム１では、ソースコード２３内に、目的のメソッドに対するコメント（注釈）として、そのメソッドに与えるテストデータの範囲や値等を記載する。
【００３８】
図９は、ソースコード２３の一部分の一例を示す図である。また、図１０は、コメントとして用いるタグの一例を示す図であり、図１１は、コメントとして用いる演算子の一例を示す図である。
【００３９】
図９には、メソッド"RegistUser"（図９のｃ１）用のテストプログラム２２を作成するためのコメントの記載例が示されている。テスト担当者は、図１０に示すタグおよび図１１に示す演算子を用いて、メソッド"RegistUser"の各パラメータが取り得る値や設定したい値を、当該メソッド"RegistUser"の直前にコメントとして記載する。そして、このようなコメントが記載されたソースコード２３が入力されると、ソースコード解析部１２によって解析が施され、コメントに基づきテスト対象のメソッドが検出され、かつ、当該メソッドの各パラメータとして与えられるべきテストデータが作成される。また、各パラメータが取り得る値等がコメントとして記載されていた場合には（図１０のタグ"@param.range"等を用いた記載が存在した場合）、ソースコード解析部１２は、さらに、境界値試験を行うためのテストデータ（図１１の「生成される入力値」欄参照）等を自動作成する。
【００４０】
このソースコード解析部１２の処理結果は、テストケース作成部１３に転送され、ソースコード解析部１２によって検出されたメソッドについて、ソースコード解析部１２によって作成されたテストデータを全て網羅するテストケース２４が作成される。そして、この第３実施形態の単体テストプログラム作成システム１におけるテストプログラム作成部１１は、このテストケース２４を順次読み出して、目的の値をパラメータとして与えた状況下で目的のメソッドをテストするためのテストプログラム２２を作成して出力する。テストケース２４は、中間ファイルとして作成されるので、テストケースを追加し、当該追加したテストケース用のテストプログラム２２を併せて作成することも可能である。
【００４１】
なお、図９に示すように、メソッド"RegistUser"は、第３パラメータとしてオブジェクト"list"を受け取る（図９のｃ２）。そして、このオブジェクト"list"について、タグ"@param.mock"を用いることにより、当該オブジェクト"list"に与える値を設定することができる（図９のｃ３）。
【００４２】
つまり、この第３実施形態の単体テストプログラム作成システム１においても、テスト担当者は、ソースコード２３にコメントを記載するだけで、構造体を引数とするメソッドについて、その構造体を目的の値に設定した上でテストするためのテストプログラム２２を簡単に作成することが可能となる。加えて、この第３実施形態の単体テストプログラム作成システム１では、境界値試験を行うためのテストプログラム２２等を自動作成することが可能となる。
【００４３】
（第４実施形態）
次に、この発明の第４実施形態について説明する。
【００４４】
前述した第３実施形態の単体テストプログラム作成システム１では、ソースコード２３内に、目的のメソッドに対するコメントとして、そのメソッドに与えるテストデータの範囲や値等を記載した。
【００４５】
これに対して、この第４実施形態の単体テストプログラム作成システム１は、検査対象の変数に対して所定のコメントを記載することで、当該検査対象の変数についての検証を行うためのテストプログラム２２を作成するようにしたものである。図１２は、第４実施形態におけるソースコード２３の一部分の一例を示す図である。
【００４６】
図１２には、変数"num"について定義する箇所の記載例が示されている。そして、ここでは、この変数"num"が検査対象であるものと想定する（図１２のｄ１）。この場合、テスト担当者は、この変数"num"に対してコメント（"Verified data"）を記載する（図１２のｄ２）。
【００４７】
一方、このようなコメントが記載されたソースコード２３が入力されると、ソースコード解析部１２によって解析が施され、まず、コメントに基づき検査対象の変数が検出される。検査対象の変数を検出すると、ソースコード解析部１２は、続いて、この変数を引数や戻り値として含むオブジェクトが存在しないかを検索する。検出されたら、その変数と当該変数を引数や戻り値として含むオブジェクトとをテストプログラム作成部１１に転送する。
【００４８】
そして、ソースコード解析部１２の処理結果を受け取ったテストプログラム作成部１１は、この変数についての検証を行うためのテストプログラム２２を作成する。図１３は、テストプログラム作成部１１によってテストプログラム２２が作成される原理を説明するための図である。
【００４９】
図１３中のｅ１は、ソースコード解析部１２によって検出された、変数"num"を引数として含むオブジェクトに関するソースコード２３内における記載箇所である。一方、図１３中のｅ２は、このような記載箇所が検出された場合に、テストプログラム作成部１１によって作成されるテストプログラム２２を示す。
【００５０】
図１３に示すように、テストプログラム作成部１１は、変数"num"に対して"10"を与えたオブジェクトが存在した場合、その"10"を用いて変数"num"を検証するテストプログラム２２を作成して出力する。
【００５１】
このように、この単体テストプログラム作成システム１によれば、テスト担当者は、ソースコード２３のコメントを記載するだけで、検査対象の変数について検証するためのテストプログラム２２を簡単に作成することが可能となる。
【００５２】
なお、前述の第３実施形態において説明したソースコード２３に目的のメソッドに対してコメントを記載する手法と、この第４実施形態において説明したソースコード２３に検証対象の変数に対してコメントを記載する手法とは、組み合わせて実施することが可能である。
【００５３】
以上のように、本発明のテストプログラム作成装置（単体テストプログラム作成システム１）によれば、例えば、階層構造を持つ構造体群を受け取って動作するプログラムをテストするためのテストプログラムを簡単に作成することが可能となる。
【００５４】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に構成要素を適宜組み合わせてもよい。
【符号の説明】
【００５５】
１…単体テストプログラム作成システム、１１…テストプログラム作成部、１２…ソースコード解析部、１３…テストケース作成部、２１…テストデータ定義データ、２２…テストプログラム、２３…ソースコード、２４…テストケース。
【図１】
2011100420.tif 000003
【図２】
2011100420.tif 000004
【図３】
2011100420.tif 000005
【図４】
2011100420.tif 000006
【図５】
2011100420.tif 000007
【図６】
2011100420.tif 000008
【図７】
2011100420.tif 000009
【図８】
2011100420.tif 000010
【図９】
2011100420.tif 000011
【図１０】
2011100420.tif 000012
【図１１】
2011100420.tif 000013
【図１２】
2011100420.tif 000014
【図１３】
2011100420.tif 000015