(57)【要約】【課題】画面デザインを含むプログラムを自動的に生成すること。【解決手段】デザインツールで別途作成された画面モックアップ情報から、画面デザインに関する情報を保持しない属性情報を抽出し、処理プログラムと連携して動作するように属性情報を置換する。これにより、画面デザインに影響を与えることなく、画面プログラム及び処理プログラムを生成できる。【選択図】図１
2012063841.tif 000002
【特許請求の範囲】
【請求項１】
画面デザインに関する情報を保持する画面モックアップ情報から所定の条件に適合する画面部品の属性情報の組を第１の動的情報として抽出する動的情報抽出部と、
前記第１の動的情報から取得可能な属性情報を取得し、その取得できた前記属性情報を所定のプログラムを生成するための連携情報に変換し、前記第１の動的情報のうち取得できなかった前記属性情報を前記連携情報を用いて補完することにより、前記第１の動的情報を第２の動的情報に変換する動的情報補完部と、
前記画面モックアップ情報の前記第１の動的情報が保持する画面部品の属性情報を、前記第２の動的情報が保持する画面部品の属性情報で置換する画面モックアップ情報置換部と、
前記第２の動的情報に基づいて、前記置換された画面モックアップ情報と結合して動作する連携プログラムを生成する連携プログラム生成部と、
を具備するプログラム自動生成装置。
【請求項２】
前記第２の動的情報には当該第２の動的情報を一意に識別可能な識別情報を保持することが可能であり、業務ロジックに関する設計情報には当該設計情報を一意に識別可能な識別情報を保持することが可能であり、前記第２の動的情報の識別情報と、前記設計情報の識別情報とが同一の場合、前記第２の動的情報が保持する属性情報で前記設計情報を置換する業務ロジック情報修正部と、
前記置換された画面モックアップ情報及び前記連携プログラムと結合して動作するロジックプログラムを、前記置換された業務ロジックに関する設計情報に基づいて生成するロジックプログラム生成部と、
をさらに具備することを特徴とする請求項１に記載のプログラム自動生成装置。
【請求項３】
前記第１の動的情報から抽出された前記属性情報のうち、画面デザインに関する情報を含まない前記属性情報が前記連携情報に変換されることを特徴とする請求項１に記載のプログラム自動生成装置。
【請求項４】
前記画面モックアップ情報がＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）で記述されているとき、前記属性情報は要素名、属性名、又は属性値であり、前記動的情報抽出部における前記所定の条件とは、前記画面モックアップ情報が保持する前記動的情報における前記属性情報と、抽出条件とした属性情報とが１つ以上適合する場合、前記画面モックアップ情報が保持する前記動的情報を、前記第１の動的情報として抽出することを特徴とする請求項１に記載のプログラム自動生成装置。
【請求項５】
前記動的情報補完部は、前記抽出できた属性情報の文字列を所定のルールに従って変換することにより、前記連携情報を生成することを特徴とする請求項１に記載のプログラム自動生成装置。
【請求項６】
画面デザインに関する情報を保持する画面モックアップ情報から所定の条件に適合する画面部品の属性情報の組を第１の動的情報として抽出し、
前記動的情報から取得可能な属性情報を取得し、その取得できた前記属性情報を所定のプログラムを生成するための連携情報に変換し、前記動的情報のうち取得できなかった前記属性情報を前記連携情報を用いて補完することにより、前記第１の動的情報を第２の動的情報に変換し、
前記画面モックアップ情報の前記第１の動的情報が保持する画面部品の属性情報を、前記第２の動的情報が保持する画面部品の属性情報で置換し、
前記第２の動的情報に基づいて、前記置換された画面モックアップ情報と結合して動作する連携プログラムを生成する、
プログラム自動生成方法。
【請求項７】
コンピュータに実行されると、
画面デザインに関する情報を保持する画面モックアップ情報から所定の条件に適合する画面部品の属性情報の組を前記第１の動的情報として抽出し、
前記動的情報から取得可能な属性情報を取得し、その取得できた前記属性情報を所定のプログラムを生成するための連携情報に変換し、前記動的情報のうち取得できなかった前記属性情報を前記連携情報を用いて補完することにより、前記第１の動的情報を第２の動的情報に変換し、
前記画面モックアップ情報の前記第１の動的情報が保持する画面部品の属性情報を、前記第２の動的情報が保持する画面部品の属性情報で置換し、
前記第２の動的情報に基づいて、前記置換された画面モックアップ情報と結合して動作する連携プログラムを生成する、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム自動生成装置及びプログラム自動生成方法に関する。
【背景技術】
【０００２】
情報システムを構築する際、ソフトウェアを効率的に開発するために、ソースプログラムを自動生成するプログラム自動生成ツールを利用する。ここで、プログラム自動生成ツールは、ＧＵＩ画面デザインツールと連携する技術を備える。これにより、ＧＵＩ画面デザインツールを利用することによるＧＵＩ画面デザイン（以降、画面デザインと呼ぶ）の自由度及び創造性を確保しつつ、前述のプログラム自動生成ツールの恩恵を享受することができる。
【０００３】
例えば、第１の従来技術（特許文献１）では、まず、プログラム自動生成ツールで生成したソースプログラムを入力として、画面デザインの元となる雛型を作成する。次に、この雛型をＧＵＩ画面デザインツールで編集し、元のソースプログラムと結合することで、目的のソースプログラムを作成することができる。
【０００４】
また、第２の従来技術（特許文献２）では、まず、ＧＵＩ画面デザインツールで作成した画面仕様書から、画面デザインに関する情報と、画面項目及びイベントに関する情報を含む画面部品の属性情報とを抽出する。次に、抽出した画面部品の属性情報から、業務ロジックと接続するためのインターフェースとなるソースプログラムと、画面の振る舞いを実現するソースプログラムをプログラム自動生成ツールによって自動生成する。そして、画面の振る舞いを実現するソースプログラムと、画面仕様書から抽出した画面部品の属性情報とを結合することで、目的のソースプログラムを得ることができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２６５０１１号公報
【特許文献２】特開２００４−３０２５７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、従来の方法においては、次のような問題がある。
【０００７】
第１の従来技術において、開発者が画面デザインを作成した後に、ソースプログラムのみを修正した場合を検討する。この場合、プログラム自動生成ツールが、修正されたソースプログラムから画面デザインの雛形を再生成してしまうため、開発者は、ソースプログラム修正前に作成した画面デザインを再度作り直さなければならない。そのため、開発者の作業量が増加してしまう。これは、プログラム自動生成ツールで生成したプログラムから画面デザインの雛型を生成することに起因している。
【０００８】
また、第２の従来技術において、多くの画面又は複雑なデザインを持つ画面を作成した場合、プログラム自動生成ツールは、画面仕様書から画面部品の属性情報を全て抽出して解析する必要がある。従って、プログラム自動生成ツールの処理が複雑になる。さらに、入力された画面仕様書と、プログラム自動生成ツールにより生成された画面デザインとの間に差異がないことを保証することが困難である。これは、プログラム自動生成ツールが画面デザインを含むソースプログラムを生成する際、画面仕様書から必要な情報を全て抽出して解析することに起因する。
【０００９】
そこで、本発明の目的は、画面を含むプログラムを比較的効率よく作成することができるプログラム自動生成装置及びプログラム自動生成方法を提供することにある。
【課題を解決するための手段】
【００１０】
本発明のプログラム自動生成装置は、画面デザインに関する情報を保持する画面モックアップ情報から所定の条件に適合する画面部品の属性情報の組を第１の動的情報として抽出する動的情報抽出部と、前記第１の動的情報から取得可能な属性情報を取得し、その取得できた前記属性情報を所定のプログラムを生成するための連携情報に変換し、前記第１の動的情報のうち取得できなかった前記属性情報を前記連携情報を用いて補完することにより、前記第１の動的情報を第２の動的情報に変換する動的情報補完部と、前記画面モックアップ情報の前記第１の動的情報が保持する画面部品の属性情報を、前記第２の動的情報が保持する画面部品の属性情報で置換する画面モックアップ情報置換部と、前記第２の動的情報に基づいて、前記置換された画面モックアップ情報と結合して動作する連携プログラムを生成する連携プログラム生成部と、を備える。
【００１１】
好適な実施形態では、前記第２の動的情報は当該第２の動的情報を一意に識別可能な識別情報を保持することが可能であり、業務ロジックに関する設計情報は当該設計情報を一意に識別可能な識別情報を保持することが可能であり、前記第２の動的情報の識別情報と、前記設計情報の識別情報とが同一の場合、前記第２の動的情報が保持する属性情報で前記設計情報を置換する業務ロジック情報修正部と、前記置換された画面モックアップ情報及び前記連携プログラムと結合して動作するロジックプログラムを、前記置換された業務ロジックに関する設計情報に基づいて生成するロジックプログラム生成部と、をさらに備えてもよい。
【００１２】
好適な実施形態では、前記第１の動的情報から抽出された前記属性情報のうち、画面デザインに関する情報を含まない前記属性情報が前記連携情報に変換されること、としてもよい。
【００１３】
好適な実施形態では、前記画面モックアップ情報がＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）で記述されているとき、前記属性情報は要素名、属性名、又は属性値であり、前記動的情報抽出部における前記所定の条件とは、前記画面モックアップ情報が保持する前記動的情報における前記属性情報と、抽出条件とした属性情報とが１つ以上適合する場合、前記画面モックアップ情報が保持する前記動的情報を、前記第１の動的情報として抽出すること、としてもよい。
【００１４】
好適な実施形態では、前記動的情報補完部は、前記抽出できた属性情報の文字列を所定のルールに従って変換することにより、前記連携情報を生成すること、としてもよい。
【図面の簡単な説明】
【００１５】
【図１】実施例１におけるプログラム自動生成装置の構成図。
【図２】実施例１における処理手順を表すフローチャート。
【図３】実施例１における画面モックアップの表示例。
【図４】実施例１における画面モックアップ情報の例。
【図５】実施例１における動的情報（画面項目部品）の例。
【図６】実施例１における動的情報（イベント部品）の例。
【図７】実施例１における置換対象部品情報（画面項目部品）の例。
【図８】実施例１における置換対象部品情報（イベント部品）の例。
【図９】実施例１における動的情報（画面項目部品）を抽出する方法の例。
【図１０】実施例１における動的情報（イベント部品）を抽出する方法の例。
【図１１】実施例１における動的情報（画面項目部品）を補完する方法の例。
【図１２】実施例１における動的情報（イベント部品）を補完する方法の例。
【図１３】実施例１における画面モックアップ情報の置換に利用する置換ルールの例。
【図１４】実施例１における画面モックアップ情報の置換（画面項目部品）を行う方法の例。
【図１５】実施例１における画面モックアップ情報の置換（イベント部品）を行う方法の例。
【図１６】実施例１における画面モックアップ情報の置換（その他）を行う方法の例。
【図１７】実施例１における連携プログラムを生成する方法の例。
【図１８】実施例２におけるプログラム自動生成装置の構成図。
【図１９】実施例２における処理手順を表すフローチャート。
【図２０】実施例２における画面モックアップ情報の例。
【図２１】実施例２における動的情報（画面項目部品）の例。
【図２２】実施例２における画面モックアップ情報から動的情報及び識別情報を抽出する方法の例。
【図２３】実施例２における動的情報及び画面モックアップ情報の画面項目部品に識別情報を付与する方法の例。
【図２４】実施例２における業務ロジック情報の例。
【図２５】実施例２における業務ロジックの情報を修正する方法の例。
【図２６】実施例２における識別情報を反映する方法の例。
【図２７】実施例２におけるロジックプログラムを生成する方法の例。
【図２８】実施例２における修正箇所一覧表示の例。
【発明を実施するための形態】
【００１６】
画面モックアップのデザインを再現するプログラムを生成するという目的を、（１）画面モックアップ情報から画面部品の属性情報を抽出し、（２）抽出した属性情報を補完することによって動的情報を生成し、（３）動的情報を利用して画面モックアップ情報を置換することで画面プログラムを生成し、（４）動的情報を利用して画面プログラムと連携する連携プログラムを生成することにより実現した。
【００１７】
（実施例１）
図１は、本発明の実施例１におけるプログラム自動生成装置の構成図である。
【００１８】
同図に示すとおり、プログラム自動生成装置１００は、ＣＰＵ１０１、メモリ１０２、入力装置１０３、出力装置１０４、及び外部記憶装置１０５を備え、それら１０１，１０２，１０３，１０４，１０５はバスを介して互いに接続されている。さらに、外部記憶装置１０５は、動的情報抽出部１０６、動的情報補完部１０７、画面モックアップ情報置換部１０８、連携プログラム生成部１０９、置換対象部品情報記憶部１１０、画面モックアップ情報記憶部１１１、動的情報記憶部１１２、画面プログラム記憶部１１３、及び連携プログラム記憶部１１４を保持している。これらのうち、動的情報抽出部１０６、動的情報補完部１０７、画面モックアップ情報置換部１０８、及び連携プログラム生成部１０９は処理プログラムである。以下、全ての処理プログラムは実行時にメモリ１０２に読み込まれ、ＣＰＵ１０１によって実行されるものとする。
【００１９】
動的情報抽出部１０６は、動的情報を抽出する。動的情報の詳細については後述する。動的情報抽出部１０６は、画面モックアップ情報記憶部１１１から画面モックアップ情報を読み出す。また、動的情報抽出部１０６は、置換対象部品情報記憶部１１０から置換対象部品情報を読み出す。次に、動的情報抽出部１０６は、置換対象部品情報に適合する画面部品の属性情報を画面モックアップ情報から抽出し、動的情報として動的情報記憶部１１２に書き込む。
【００２０】
動的情報補完部１０７は、動的情報記憶部１１２から動的情報を読み出し、その動的情報において抽出できなかった属性情報を補完して、再度、動的情報記憶部１１２に書き込む。
【００２１】
画面モックアップ情報置換部１０８は、画面モックアップ情報の少なくとも一部を動的情報を利用して置換する。画面モックアップ情報置換部１０８は、画面モックアップ情報記憶部１１１から画面モックアップ情報を読み出し、さらに、動的情報記憶部１１２から動的情報を読み出す。次に、画面モックアップ情報置換部１０８は、画面モックアップ情報の一部を、補完した動的情報で置換し、画面プログラム記憶部１１３に書き込む。
【００２２】
連携プログラム生成部１０９は、動的情報記憶部１１２から読み出した動的情報に基づき、画面モックアップ情報と結合して動作する連携プログラムを生成し、その連携プログラムを連携プログラム記憶部１１４に書き込む。
【００２３】
置換対象部品情報記憶部１１０は、置換対象部品情報を保持する。置換対象部品情報の詳細については後述する。
【００２４】
画面モックアップ情報記憶部１１１は、入力装置１０３を介して外部から入力された画面モックアップ情報を保持する。画面モックアップ情報の詳細については後述する。
【００２５】
動的情報記憶部１１２は、動的情報を保持する。動的情報の詳細については後述する。
【００２６】
画面プログラム記憶部１１３は、画面プログラムを保持する。
【００２７】
連携プログラム記憶部１１４は、連携プログラムを保持する。
【００２８】
次に、図２のフローチャートに基づき、本実施例の処理を説明する。
【００２９】
ステップ２００は、開発者がデザインツール等で作成した画面デザインに関する情報を、画面モックアップ情報として画面モックアップ情報記憶部１１１に入力するステップである。ここで、画面モックアップ情報は、ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）などで記述されていてもよい。なお、画面モックアップ情報は、画面項目を識別するキー情報、及びイベントを識別するキー情報を、画面部品の属性情報として保持していることとする。ここで、画面項目を識別するキー情報を保持する画面部品を画面項目部品と呼び、イベントを識別するキー情報を保持する画面部品をイベント部品と呼ぶこととする。画面項目部品が保持する情報には、例えば、ユーザが画面上で文字等を入力するための画面項目、及びユーザに向けて文字等を画面上に表示させるための画面項目に関するキー情報が含まれる。イベント部品が保持する情報には、例えば、ボタンのクリック、テキストの入力などの、画面上で発生するユーザによる操作に関するキー情報が含まれる。
【００３０】
図３は、画面モックアップの表示例であり、デザインツール等で作成できるものである。なお、デザインツールには、ＦｌｅｘＢｕｉｌｄｅｒ（登録商標）、又はＦｉｒｅｗｏｒｋｓ（登録商標）など、様々なツールが選択可能である。
【００３１】
図４は、ＸＭＬで記述された画面モックアップ情報の例である。これは、デザインツール上で図３の画面モックアップを作成した際、対応する画面モックアップ情報として自動的に生成されるものである。なお、画面部品の属性値の一部がキー情報となる。具体的には、画面部品４０１のキー情報は、属性名「ｉｄ」の属性値である「ＥｍｐｌｏｙｅｅＮａｍｅ」となる。また、画面部品４０２のキー情報は、属性名「ｃｌｉｃｋ」の属性値である「ｔｒａｃｅ（’ＳｅａｒｃｈＥｍｐｌｏｙｅｅＥｖｅｎｔ’）」となる。ここで、画面部品が保持するキー情報を、画面デザインに影響を与えない属性値とすることで、後に、モックアップの画面と同じ画面プログラムを生成することができる。なお、キー情報用の属性名は、後述の置換対象部品情報によって定義する。
【００３２】
図２に戻る。ステップ２０１は、まず、動的情報抽出部１０６が、画面モックアップ情報記憶部１１１及び置換対象部品情報記憶部１１０から、それぞれ画面モックアップ情報及び置換対象部品情報を読み出す。次に、画面モックアップ情報から、置換対象部品情報に適合する画面部品を抽出し、その属性情報の組を動的情報として動的情報記憶部１１２に書き込む。動的情報は、ユーザからの入出力に関する情報、又はイベント発生に対してシステムが実行する処理内容及びタイミング等に関する情報などを保持しており、一つ以上の属性情報から構成される。
【００３３】
次に、図５及び図６を参照して、本実施例における動的情報の例を示す。
【００３４】
図５は、画面項目に関する動的情報の例である。本実施例において、画面項目に関する動的情報は、例えば、タグ名５０１、項目属性名５０２、項目属性値５０３、動的属性名５０４、動的属性値５０５、及び項目変数名５０６を保持できる。例えば、動的情報５０７は、タグ名５０１として「ＴｅｘｔＩｎｐｕｔ」を、項目属性名５０２として「ｉｄ」を、それぞれ保持している。なお、動的情報記憶部１１２は、画面項目に関する動的情報を複数保持できるものとする。
【００３５】
図６は、イベントに関する動的情報の例である。本実施例において、イベントに関する動的情報は、例えば、イベント属性名６０１、イベント属性値６０２、及びイベント定数名６０３を保持できる。例えば、動的情報６０４は、イベント属性名６０１として「ｃｌｉｃｋ」を、イベント属性値６０２として「ｔｒａｃｅ（’ＣｌｅａｒＩｎｐｕｔＥｖｅｎｔ’）」を、それぞれ保持している。なお、動的情報記憶部１１２は、イベントに関する動的情報を複数保持できるものとする。また、１つのイベント部品は、複数のイベントに関するキー情報を保持することができる。なお、画面項目部品でもあり、かつイベント部品でもある画面部品に関しては、画面項目に関する動的情報とイベントに関する動的情報の双方が動的情報記憶部１１２に書き込まれることになる。
【００３６】
次に、図７及び図８において、置換対象部品情報の例を示す。置換対象部品情報とは、画面モックアップ上に存在し得る画面部品の情報であって、画面モックアップ情報を画面プログラムに変換する際に置換が必要となる画面部品の情報である。置換対象部品情報は、画面項目部品及びイベント部品から各キー情報を抽出するための属性に関する情報を含む。例えば、画面モックアップ情報がＸＭＬ形式である場合、置換対象部品情報は、要素名、属性名、属性値等によって定義する。
【００３７】
図７では、置換が必要な画面項目部品のタグ名及び属性名を定義している。本実施例において、画面項目部品に対する置換対象部品情報は、タグ名７０１、項目属性名７０２及び動的属性名７０３を保持できる。具体的には、置換対象部品情報７０４は、タグ名７０１として「ＴｅｘｔＩｎｐｕｔ」を、項目属性名７０２として「ｉｄ」を、動的属性名として「ｔｅｘｔ」を保持している。なお、置換対象部品情報記憶部１１０は、画面項目部品に対する置換対象部品情報を複数保持できるものとする。
【００３８】
図８では、置換が必要なイベント部品のイベント属性名を定義している。本実施例において、イベント部品に対する置換対象部品情報は、イベント属性名８０１を保持できる。具体的には、置換対象部品情報８０２は、イベント属性名８０１として「ｃｌｉｃｋ」を保持している。なお、置換対象部品情報記憶部１１０は、イベント部品に対する置換対象部品情報を複数保持できるものとする。
【００３９】
次に、図９及び図１０において、動的情報の抽出方法の例を示す。動的情報の抽出において、動的情報抽出部１０６は、まず、置換対象部品情報記憶部１１０が保持する置換対象部品情報のうち一つを選択する。次に、動的情報抽出部１０６は、選択した置換対象部品情報が持つタグ名及び属性名を条件として、画面モックアップ情報から画面部品を抽出する。条件に適合する画面部品を複数抽出した場合、それら全てについて、画面部品の属性情報（すなわちタグ名、属性名及び属性値）を動的情報として動的情報記憶部１１２に書き込む。なお、本処理は、置換対象部品情報記憶部１１０が保持する全ての置換対象部品情報に対して画面部品の抽出及び動的情報の書き込みを行う。
【００４０】
図９は、画面項目に関する動的情報を抽出する例である。まず、動的情報抽出部１０６は、置換対象部品情報記憶部１１０が保持する置換対象部品情報から、置換対象部品情報９００を選択する。次に、選択した置換対象部品情報の条件に適合する画面項目部品を画面モックアップ情報９０３から検索する。置換対象部品情報９００を検索条件とした場合、タグ名７０１が「ＴｅｘｔＩｎｐｕｔ」であり、かつ項目属性名７０２が「ｉｄ」であり、かつ動的属性名７０３が「ｔｅｘｔ」である属性情報を保持する画面部品が検索対象となる。これにより、動的情報抽出部１０６は、画面モックアップ情報４００から画面項目部品９０１を検索結果として抽出する。次に、検索条件であった部品名７０１の「ＴｅｘｔＩｎｐｕｔ」、項目属性名７０２の「ｉｄ」、及び動的属性名７０３の「ｔｅｘｔ」を、それぞれ動的情報９０２のタグ名５０１、項目属性名５０２、及び動的属性名５０４として格納する。さらに、画面項目部品９０１から抽出した項目属性値「ＥｍｐｌｏｙｅｅＮａｍｅ」、及び動的属性値「山田太郎」を、それぞれ動的情報９０２の項目属性値５０３、及び動的属性値５０５として格納する。次に、属性情報を格納した動的情報９０２を動的情報記憶部１１２に記録する。なお、本処理においてはまだ、項目変数名５０６は格納されず空欄である。
【００４１】
図１０は、イベントに関する動的情報を抽出する例である。イベントに関する動的情報の抽出も、画面項目に関する動的情報の抽出と同様の方法により行う。まず、動的情報抽出部１０６は、置換対象部品情報記憶部１１０が保持する置換対象部品情報から、置換対象部品情報１０００を選択する。次に、選択した置換対象部品情報の条件に適合するイベント部品を画面モックアップ情報１００３から検索する。置換対象部品情報１０００を検索条件とした場合、イベント属性名８０１が「ｃｌｉｃｋ」である属性情報を保持するイベント部品が検索対象となる。これにより、動的情報抽出部１０６は、画面モックアップ情報１００３からイベント部品１００１を検索結果として抽出する。次に、検索条件であったイベント属性名８０１の「ｃｌｉｃｋ」を、動的情報１００２のイベント属性名６０１として格納する。さらに、イベント部品１００１から抽出したイベント属性値「ｔｒａｃｅ（’ＣｌｅａｒＩｎｐｕｔＥｖｅｎｔ’）」をイベント属性値６０２として格納する。次に、属性情報を格納した動的情報１００２を動的情報記憶部１１２に記録する。なお、本処理においてはまだ、イベント定数名６０３は格納されず空欄である。
【００４２】
図２に戻る。ステップ２０２では、動的情報補完部１０７が動的情報を補完する。動的情報補完部１０７は、動的情報記憶部１１２から動的情報を読み出し、予め決まった補完ルールに従って、動的情報が保持する属性情報のうちステップ２０１で空欄となっていた属性情報を補完した後、再度、動的情報記憶部１１２に書き込む。ここで、予め決まった補完方法とは、前述の動的情報に格納済みの属性情報等を元に、機械的な変換処理によって動的情報のうち空欄の箇所を埋める方法である。なお、本ステップは、動的情報記憶部１１２が保持する全ての動的情報の処理が完了するまで繰り返される。
【００４３】
次に、図１１及び図１２に動的情報の補完の例を示す。
【００４４】
図１１は、画面項目に関する動的情報の補完の例である。動的情報補完部１０７は、まず、動的情報記憶部１１２から動的情報１１００を読み出す。次に、項目属性値５０３「ＥｍｐｌｏｙｅｅＮａｍｅ」を、予め決まった補完ルールに従って「ｅｍｐｌｏｙｅｅＮａｍｅ」に文字列変換し、項目変数名５０６として格納する。
【００４５】
図１２は、イベントに関する動的情報の補完の例である。イベントに関する動的情報も、画面項目に関する動的情報の補完と同様、イベント属性値６０２「ｔｒａｃｅ（’ＣｌｅａｒＩｎｐｕｔＥｖｅｎｔ’）」を、予め決まった補完ルールに従って「ＣＬＥＡＲ＿ＩＮＰＵＴ＿ＥＶＥＮＴ」に文字列変換し、イベント定数名６０３として格納する。
【００４６】
図２に戻る。ステップ２０３では、まず、画面モックアップ情報置換部１０８が、画面モックアップ記憶部１１１及び動的情報記憶部１１２から、それぞれ画面モックアップ情報及び動的情報を読み出す。次に、画面モックアップ情報置換部１０８は、画面モックアップ情報から動的情報に適合する画面部品を抽出する。次に、画面モックアップ情報置換部１０８は、予め決まった置換ルールに従って画面モックアップ情報の画面部品の属性情報を置換する。次に、画面モックアップ情報置換部１０８は、置換した画面モックアップ情報を画面プログラム記憶部１１３に書き込む。なお、本ステップは、動的情報記憶部１１２が保持する全ての動的情報について処理が完了するまで繰り返される。
【００４７】
図１３に、置換ルールの定義の例を示す。置換ルールは、置換対象属性１３０１と置換後の属性値１３０２のペアで構成されており、各属性の属性値をどのように置換するかが記載されている。
【００４８】
図１４は、画面モックアップ情報における画面項目部品の置換例である。画面モックアップ情報置換部１０８は、まず、画面モックアップ記憶部１１１及び動的情報記憶部１１２から、それぞれ画面モックアップ情報及び画面項目に関する動的情報を読み出す。次に、画面モックアップ情報置換部１０８は、動的情報記憶部１１２から動的情報１４００を選択する。次に、画面モックアップ情報置換部１０８は、選択した動的情報が保持するタグ名、項目属性名、項目属性値、動的属性名、及び動的属性値を検索条件とし、画面モックアップ情報から置換対象の画面項目部品を抽出する。ここでは、タグ名が「ＴｅｘｔＩｎｐｕｔ」、項目属性名が「ｉｄ」、項目属性値が「ＥｍｐｌｏｙｅｅＮａｍｅ」、動的属性名が「ｔｅｘｔ」、及び動的属性値が「山田太郎」である画面項目部品が検索対象となり、検索結果として画面項目部品１４０１が抽出される。さらに、画面モックアップ情報置換部１０８は、抽出した画面部品の属性情報を図１３の置換ルール１３００に従って置換する。置換ルール１３００には、項目属性値「ＥｍｐｌｏｙｅｅＮａｍｅ」を項目変数名「ｅｍｐｌｏｙｅｅＮａｍｅ」に置換し、動的属性値「山田太郎」を削除すると記載されている。なお、画面項目に関する動的情報５００は、イベント属性名及びイベント属性値を保持していないため、イベント属性値に関する置換は行わない。
【００４９】
図１５は、画面モックアップ情報におけるイベント部品の置換例である。画面モックアップ情報置換部１０８は、まず、画面モックアップ記憶部１１１及び動的情報記憶部１１２から、それぞれ画面モックアップ情報及びイベントに関する動的情報を読み出す。次に、画面モックアップ情報置換部１０８は、動的情報記憶部１１２から動的情報１５００を選択する。次に、画面モックアップ情報置換部１０８は、選択した動的情報が保持するイベント属性名、及びイベント属性値を検索条件とし、画面モックアップ情報から置換対象のイベント部品を抽出する。ここでは、イベント属性名が「ｃｌｉｃｋ」、及びイベント属性値が「ｔｒａｃｅ（’ＣｌｅａｒＩｎｐｕｔＥｖｅｎｔ’）」であるイベント部品が検索対象となり、検索結果としてイベント部品１５０１が抽出される。さらに、画面モックアップ情報置換部１０８は、抽出したイベント部品の属性情報を図１３の置換ルール１３００に従って置換する。置換ルール１３００には、イベント属性値「ｔｒａｃｅ（’ＣｌｅａｒＩｎｐｕｔＥｖｅｎｔ’）」を、イベント定数名を代入して作成した値「ｄｉｓｐａｔｃｈＥｖｅｎｔ（ｎｅｗ  Ｅｖｅｎｔ（ＭｙＥｖｅｎｔ．ＣＬＥＡＲ＿ＩＮＰＵＴ＿ＥＶＥＮＴ））」に置換すると記載されている。
【００５０】
図１６は、動的情報とは無関係に必要となる置換の例である。ここでは、後述のステップ２０４で生成する連携プログラムとの関連を示す情報を、画面部品１６００として埋め込むことにより置換をおこなっている。なお、この画面部品１６００は、画面項目に関するキー情報及びイベントに関するキー情報を保持しない画面部品である。
【００５１】
図２に戻る。ステップ２０４は、連携プログラム生成部１０９が、動的情報記憶部１１２から動的情報を読み出し、これを元に連携プログラムを生成し、生成した連携プログラムを連携プログラム記憶部１１４に書き込む。なお、本ステップは、動的情報記憶部１１２が保持する全ての動的情報について処理が完了するまで繰り返される。ここで、本ステップで生成する連携プログラムは、画面プログラム記憶部１１３に格納された画面プログラムと結合して動作するプログラムである。なお、本ステップで生成する連携プログラムの処理内容は、生成対象のソフトウェアのアーキテクチャによって異なる。例えば、画面項目部品の表示データを、一時的な記憶領域に格納したデータと同期させる処理などがある。連携プログラム生成部１０９は、動的情報を参照し、予め連携プログラム生成部が保持している雛型における変数名、定数名、関数名、データ型名、変数の値、定数の値、又は関数の引数の値など、動的情報の属性情報を変数名等として利用することにより、連携プログラムを生成する。
【００５２】
図１７に、連携プログラム生成の例を示す。ここでは、連携プログラム生成部１０９は、動的情報１７００の項目変数名５０６「ｅｍｐｌｏｙｅｅＮａｍｅ」を参照し、連携プログラムの雛形に対して、関数名及び関数の引数の値として利用することにより、連携プログラム１７０１を生成している。
【００５３】
図２に戻る。ステップ２０５では、画面プログラム記憶部１１３及び連携プログラム記憶部１１４から、画面プログラム及び連携プログラムを読み出し、出力装置１０４に出力する。出力装置１０４は、計算機で扱えるようテキストデータ又はバイナリデータとして出力してもよいし、開発者が閲覧できるようモニタに文字又はグラフィックを表示してもよい。
【００５４】
本実施例によれば、画面モックアップ情報における画面デザインに関する情報を変更しないため、画面モックアップと同様の画面デザインを再現できるプログラムを生成することができる。
【００５５】
本実施例によれば、画面モックアップ情報がＸＭＬ等で記述されていれば適用可能なため、画面デザインの開発者は、ＸＭＬ等による出力が可能な好みのデザインツールを使用することができる。
【００５６】
（実施例２）
実施例１では、画面に付随するプログラムのみを生成したが、実施例２では、これに加えて、業務データの操作及び表示の変更を実現する業務ロジックのプログラムも生成可能とする。
【００５７】
図１８は、実施例２におけるプログラム自動生成装置の構成図である。図１８に示すように、外部記憶装置１０５は、例えば、動的情報及び識別情報抽出部１８００、動的情報補完部１０７、画面モックアップ情報置換部１０８、連携プログラム生成部１０９、識別情報付与部１８０１、業務ロジック情報修正部１８０２、識別情報反映部１８０３、ロジックプログラム生成部１８０４、置換対象部品情報記憶部１１０、画面モックアップ記憶部１１１、動的情報記憶部１１２、画面プログラム記憶部１１３、連携プログラム記憶部１１４、業務ロジック情報記憶部１８０５、ロジックプログラム記憶部１８０６、ロジック生成ログ記憶部１８０７、及びロジック雛型情報記憶部１８０８を保持している。なお、前記構成要素のうち、図１と同様の符号であるものは、実施例１と同様の処理を行うものとする。また、動的情報及び識別情報抽出部１８００、動的情報補完部１０７、画面モックアップ情報置換部１０８、連携プログラム生成部１０９、識別情報付与部１８０１、業務ロジック情報修正部１８０２、識別情報反映部１８０３、及びロジックプログラム生成部１８０４は処理プログラムであり、全ての処理プログラムは実行時にメモリ１０２に読み込まれ、ＣＰＵ１０１によって実行されるものとする。
【００５８】
動的情報及び識別情報抽出部１８００は、動的情報及び識別情報を抽出する。動的情報及び識別情報抽出部１８００は、まず、画面モックアップ情報記憶部１１１、及び置換対象部品情報記憶部１１０から、それぞれ画面モックアップ情報及び置換対象部品情報を読み出す。次に、動的情報及び識別情報抽出部１８００は、置換対象部品情報を検索条件とし、画面モックアップ情報から、画面部品の属性情報の組を抽出する。さらに、動的情報及び識別情報抽出部１８００は、画面項目及びイベントを一意に識別する識別情報も抽出し、抽出した画面部品の属性情報及び識別情報を、動的情報として動的情報記憶部１１２に書き込む。
【００５９】
識別情報付与部１８０１は、識別情報を付与する。識別情報付与部１８０１は、まず、動的情報記憶部１１２から識別情報が未定義のため空欄となっている動的情報を読み出す。次に、識別情報付与部１８０１は、画面モックアップ情報記憶部１１１から画面モックアップ情報を読み出す。次に、識別情報付与部１８０１は、読み出した動的情報に対応する画面部品を画面モックアップ情報から検索する。次に、識別情報付与部１８０１は、新たに生成した識別情報を前記動的情報及び画面部品に付与した後、それぞれ動的情報記憶部１１２、及び画面モックアップ記憶部１１２に書き込む。
【００６０】
業務ロジック情報修正部１８０２は、業務ロジック情報を修正する。業務ロジック情報修正部１８０２は、まず、業務ロジック情報記憶部１８０５から業務ロジック情報を読み出す。次に、業務ロジック情報修正部１８０２は、動的情報記憶部１１２から読み出した動的情報を参照し、業務ロジック情報の修正を行い、再度、業務ロジック情報記憶部１８０５に書き込む。
【００６１】
識別情報反映部１８０３は、識別情報を業務ロジック情報に反映させる。まず、識別情報反映部１８０３は、業務ロジック情報記憶部１８０５から業務ロジック情報を読み出す。次に、識別情報反映部１８０３は、動的情報記憶部１１２から読み出した動的情報を参照し、業務ロジック情報に対して識別情報を補完又は修正し、再度、業務ロジック情報記憶部１８０５に書き込む。
【００６２】
ロジックプログラム生成部１８０４は、ロジックプログラムを生成する。ロジックプログラム生成部１８０４は、まず、業務ロジック情報記憶部１８０５及びロジック雛型情報記憶部１８０８から、それぞれ業務ロジック情報及びロジック雛形情報を読み出す。次に、ロジックプログラム生成部１８０４は、ロジック雛型情報を参照し、ロジックプログラムを生成する。次に、ロジックプログラム生成部１８０４は、ロジックプログラム記憶部１８０６及びロジック生成ログ記憶部１８０７に、それぞれ生成したロジックプログラム及び未処理の業務ロジック情報を書き込む。
【００６３】
業務ロジック情報記憶部１８０５は、入力装置１０３を介して外部から入力された業務ロジック情報を保持する。業務ロジック情報については後述する。
【００６４】
ロジックプログラム記憶部１８０５は、ロジックプログラムを保持する。ロジックプログラムとは、業務ロジック情報から生成されるプログラムである。
【００６５】
ロジック生成ログ記憶部１８０７は、ロジックプログラム生成時に生成対象とならなかった業務ロジック情報を保持する。
【００６６】
ロジック雛型情報記憶部１８０８は、ロジック雛型情報を保持する。ロジック雛型情報の詳細については後述する。
【００６７】
次に、図１９のフローチャートに基づいて、本実施例の処理を説明する。なお、ステップ２０２、２０３、及び２０４は、実施例１における各ステップと同様の処理を行うものとする。
【００６８】
ステップ１９００は、開発者がデザインツール等で作成した画面デザインに関する情報を、画面モックアップ情報として画面モックアップ情報記憶部１１１に入力するステップである。ここで、実施例２における画面モックアップ情報が保持する画面部品は、画面項目及びイベントを一意に識別する識別情報を保持できる。
【００６９】
図２０に、画面部品が識別情報を保持する例を示す。画面部品２００１は、ｕｉｄ属性の属性値として識別情報「ＸＹＹ１−Ｓ１２４−３２」を保持している。また、画面部品２００２は、識別情報を保持していない。
【００７０】
図１９に戻る。ステップ１９０１は、まず、動的情報及び識別情報抽出部１８００が、画面モックアップ情報記憶部１１１及び置換対象部品情報記憶部１１０から、それぞれ画面モックアップ情報及び置換対象部品情報を読み出す。次に、画面モックアップ情報から、置換対象部品情報に適合する画面部品を抽出し、その属性情報の組を動的情報として動的情報記憶部１１２に書き込む。このとき、画面部品に識別情報が付与されている場合、その情報も合わせて抽出する。
【００７１】
図２１に、画面項目に関する動的情報の例を示す。本実施例において、画面項目に関する動的情報は、部品名２１０１、項目属性名２１０２、項目属性値２１０３、動的属性名２１０４、動的属性値２１０５、項目変数名２１０６、及び識別情報２１０７の値を保持できる。
【００７２】
図２２に、画面モックアップ情報から、画面項目に関する動的情報を抽出する例を示す。動的情報の抽出は、実施例１におけるステップ２０１と同様の方法で行う。ここで、識別情報の抽出は、抽出対象の画面部品２２００から、識別情報を保持する属性値を合わせて抽出することによって行う。図２２では、識別情報の属性値として、ｕｉｄ属性の属性値である「ＸＹＹ１−Ｓ１２４−３２」を抽出している。なお、抽出対象の画面部品が識別情報を保持していない場合は、動的情報２２０１中の識別情報２１０７の欄を空欄にしておく。
【００７３】
図１９に戻る。ステップ１９０２では、まず、識別情報付与部１８０１が、動的情報記憶部１１２から識別情報が空欄となっている動的情報を読み出す。次に、画面モックアップ情報記憶部１１１から画面モックアップ情報を読み出す。次に、読み出した動的情報に対応する画面部品を画面モックアップ情報から抽出する。次に、新たに作成した識別情報を前記動的情報に付与する。さらに、画面モックアップ情報の画面部品にも同一の識別情報を付与する。次に、識別情報を付与した動的情報及び画面モックアップ情報を、それぞれ動的情報記憶部１１２及び画面モックアップ情報記憶部１１２に書き込む。なお、本ステップは、識別情報が空欄となっている全ての動的情報に対して処理が完了するまで繰り返される。また、本ステップでは、既に識別情報が設定されている動的情報及び画面部品の情報に対して変更を加えない。
【００７４】
図２３に、識別情報を付与する例を示す。まず、識別情報付与部１８０１が、動的情報記憶部１１２から、識別情報が空欄になっている動的情報２３００を一つ取得する。次に、新たに識別情報「ＸＧＭＦ−Ｔ３５７−Ｋ３」を生成し、取得した前記動的情報２３００の識別情報として付与する。次に、取得した前記動的情報に対応する画面部品２３０２を画面モックアップ情報から読み出す。次に、取得した前記画面部品２３０２に対して前記動的情報２３００に付与したものと同一の識別情報を付与し、画面部品２３０３に変換する。
【００７５】
図１９に戻る。ステップ１９０３は、開発者からの指示により、動的情報記憶部１１２から動的情報を読み出し、出力装置１０４に出力する。このとき、識別情報は出力しなくても良い。
【００７６】
ステップ１９０４は、開発者から入力装置１０３を通じて入力された業務ロジック情報を、業務ロジック情報記憶部１８０５に書き込む。ここで、業務ロジック情報とは、業務データの変更又は表示の変更に関する操作、及びその操作の実行タイミングについて定義した情報である。業務ロジック情報は、動的情報を参照して編集する必要がある設計情報、及び動的情報を参照せずに編集できる設計情報を含む。これらのうち、動的情報を参照して編集する必要がある設計情報については、対応する識別情報も保持できるようにしておく。
【００７７】
図２４に、業務ロジック情報の例を示す。業務ロジック情報２４００は、動的情報を参照せずに編集できる設計情報として、ロジック名２４０１、及びロジック雛型２４０２を保持している。また、動的情報を参照して編集する必要がある設計情報として、トリガイベント定数名２４０３、変数名（１）２４０４、及び変数名（２）２４０５を保持している。動的情報を参照して編集する必要がある設計情報に対しては、識別情報２４０６を合わせて保持している。なお、ロジック雛型２４０２の設計情報は、ロジック雛型情報記憶部１８０８が保持するロジック雛型情報との関連を表す情報である。
【００７８】
図１９に戻る。ステップ１９０５では、まず、業務ロジック修正部１８０２が、業務ロジック情報記憶部１８０５から、業務ロジック情報を読み出す。次に、前記読み出した業務ロジック情報から、動的情報を参照して修正する必要がある設計情報を一つ選択する。次に、選択した設計情報に対応する識別情報を保持する動的情報を、動的情報記憶部１１２から抽出する。次に、抽出した動的情報により、前述で選択した設計情報の値を修正する。次に、修正した設計情報を反映した業務ロジック情報を業務ロジック情報記憶部に書き込む。なお、本ステップは、業務ロジック情報記憶部１８０５が保持する全ての業務ロジック情報の設計情報のうち、動的情報を参照して修正する必要がある全ての設計情報に対して処理を全て完了するまで繰り返される。
【００７９】
図２５に、業務ロジック修正の例を示す。まず、業務ロジック情報２４００から、変数名（２）２４０５を選択する。次に、選択した設計情報に対応する識別情報の値である「ＸＹＹ１−Ｓ１２４−３２」を識別情報として保持する動的情報を、動的情報記憶部１１２から抽出する。次に、前述で抽出した動的情報２５００の項目変数名の値「ｄｉｖｉｓｉｏｎ」により、変数名（２）２４０５の設計情報を上書きする。なお、図２８に示すように、開発者に対して修正した箇所を一覧表示してもよい。
【００８０】
図１９に戻る。ステップ１９０６では、開発者は入力装置１０３を介し、業務ロジック情報記憶部から取り出した業務ロジック情報を編集する。この際、識別情報反映部１８０３は、業務ロジック情報記憶部１８０５から業務ロジック情報を取得する。次に、取得した業務ロジック情報のうち、開発者が編集した設計情報を一つ選択する。次に、選択した設計情報に対応する動的情報を、動的情報記憶部１１２から取得する。次に、取得した動的情報が保持する識別情報により、前述で選択した設計情報に対して、識別情報を上書きする。なお、選択した設計情報に対応する動的情報が動的情報記憶部１１２に存在しなかった場合、選択した設計情報の識別情報を空欄で上書きする。なお、本ステップは、全ての業務ロジック情報に対して処理が完了するまで繰り返される。
【００８１】
図２６に、識別情報を反映する例を示す。まず、識別情報反映部１８０３は、開発者によって編集された業務ロジック情報２４００から、編集された設計情報である変数名（１）２４０４の「ｅｍｐｌｏｙｅｅＮｕｍｂｅｒ」を選択する。次に、選択した設計情報に対応する動的情報を、動的情報記憶部１１２から取得する。取得した動的情報２６００の識別情報は「ＯＲＢ０−１ＡＫＡ−ＴＳ」であるので、前述で選択した設計情報である変数名（１）２４０４の識別情報を「ＯＲＢ０−１ＡＫＡ−ＴＳ」に上書きする。
【００８２】
図１９に戻る。ステップ１９０７では、まず、ロジックプログラム生成部１８０４は、業務ロジック情報の設計情報を元に、ロジック雛型情報記憶部１８０８から、ロジック雛型情報を取得する。次に、ロジック雛型情報の、変数名、定数名、関数名、データ型名、変数の値、定数の値、もしくは関数の引数の値等として、業務ロジック情報の設計情報を利用することで、ロジックプログラムを生成する。なお、本ステップにおいて、識別情報を保持しない設計情報を含む業務ロジック情報については、対応するロジックプログラムの生成は実施せず、業務ロジック情報をロジック生成ログ記憶部１６０７に書き込む。これは、本ステップで識別情報を保持しない動的情報は、動的情報記憶部１１２に存在しない情報であるからである。また、本ステップは、業務ロジック情報記憶部１８０５が保持する全ての業務ロジック情報に対して処理が完了するまで繰り返される。ここで、ロジックプログラムとは、業務ロジック情報の内容をプログラムとして実現したものである。
【００８３】
図２７に、ロジックプログラムの生成例を示す。ロジックプログラム生成部１８０４が、まず、ロジック雛型２４０２の情報に対応するロジック雛形情報を、ロジック雛型情報記憶部１８０８から取得する。次に、取得したロジック雛型情報２７０１のイベント定数名、変数名（１）及び変数名（２）を、それぞれ業務ロジック情報２４００から取得したイベント定数名２４０３の「ＣＬＥＡＲ＿ＩＮＰＵＴ＿ＥＶＥＮＴ」、変数名（１）２４０４の「ｅｍｐｌｏｙｅｅＮｕｍｂｅｒ」、及び変数名（２）２４０５の「ｄｉｖｉｓｉｏｎ」によって補完することでロジックプログラムを生成する。
【００８４】
図１９に戻る。ステップ１９０８は、開発者が、プログラム自動生成ツールによって生成されたプログラムを、出力装置１０４を通じて取得するステップである。本ツールは、開発者の指示に従い、画面プログラム記憶部１１３、連携プログラム記憶部１１４、及びロジックプログラム記憶部１８０４から、それぞれ生成された画面プログラム、連携プログラム及び業務ロジックプログラムを読み出し、出力装置１０４に出力する。さらに、ロジック生成ログ記憶部１８０７に業務ロジック情報が記憶されている場合はこれも取得し、対応するロジックプログラムを生成しなかった旨と合わせ出力装置１０４に出力してもよい。なお、出力は、計算機で扱えるようテキストデータ又はバイナリデータとして出力してもよいし、開発者が閲覧できるようモニタに文字又はグラフィックを表示してもよい。
【００８５】
本実施例によれば、動的情報を参照しながら業務ロジック情報あるいはロジックプログラムを作成する場合において、動的情報の変更を自動的に業務ロジックおよびロジックプログラムに反映させることができる。
【符号の説明】
【００８６】
１００    プログラム自動生成装置
１０６    動的情報抽出部
１０７    動的情報補完部
１０８    画面モックアップ置換部
１０９    連携プログラム生成部
１１０    置換対象部品情報記憶部
１１１    画面モックアップ記憶部
１１２    動的情報記憶部
１１３    画面プログラム記憶部
１１４    連携プログラム記憶部
１８００    動的情報及び識別情報抽出部
１８０１    識別情報付与部
１８０２    業務ロジック情報修正部
１８０３    識別情報反映部
１８０４    ロジックプログラム生成部
１８０５    業務ロジック情報記憶部
１８０６    ロジックプログラム記憶部
１８０７    ロジック生成ログ記憶部
１８０８    ロジック雛型情報記憶部
【図１】
2012063841.tif 000003
【図２】
2012063841.tif 000004
【図３】
2012063841.tif 000005
【図４】
2012063841.tif 000006
【図５】
2012063841.tif 000007
【図６】
2012063841.tif 000008
【図７】
2012063841.tif 000009
【図８】
2012063841.tif 000010
【図９】
2012063841.tif 000011
【図１０】
2012063841.tif 000012
【図１１】
2012063841.tif 000013
【図１２】
2012063841.tif 000014
【図１３】
2012063841.tif 000015
【図１４】
2012063841.tif 000016
【図１５】
2012063841.tif 000017
【図１６】
2012063841.tif 000018
【図１７】
2012063841.tif 000019
【図１８】
2012063841.tif 000020
【図１９】
2012063841.tif 000021
【図２０】
2012063841.tif 000022
【図２１】
2012063841.tif 000023
【図２２】
2012063841.tif 000024
【図２３】
2012063841.tif 000025
【図２４】
2012063841.tif 000026
【図２５】
2012063841.tif 000027
【図２６】
2012063841.tif 000028
【図２７】
2012063841.tif 000029
【図２８】
2012063841.tif 000030