(57)【要約】【課題】ソースコードと設計書との間の乖離を無くす情報処理装置を実現する。【解決手段】画面設計書自動生成装置５００は、中間形式情報１１３を用いて表示データのソースコード１１０ａを生成するソースコード生成部１０３と、ソースコード生成部１０３と共通の中間形式情報１１３を用いて画面設計書１１２を生成する設計書生成部１０２とを備える。画面設計書自動生成装置５００は、共通の情報からソースコード１１０ａと画面設計書１１２とを生成する為、ソースコード１１０ａと画面設計書１１２との間の乖離を無くす。【選択図】図１
2013050868.tif 000002
【特許請求の範囲】
【請求項１】
表示データの仕様が示される仕様情報を生成する仕様情報生成部と、
前記表示データのソースコードを生成するソースコード生成部と
を備え、
前記仕様情報生成部と前記ソースコード生成部は、
共通の情報を用いて仕様情報とソースコードとを生成することを特徴とする情報処理装置。
【請求項２】
前記情報処理装置は、更に、
前記ソースコードの生成に用いられるソースコード生成用情報が含まれる情報をベース情報として入力する入力部を備え、
前記仕様情報生成部は、
前記入力部により入力されたベース情報を用いて、前記仕様情報を生成し、
前記ソースコード生成部は、
前記ベース情報に含まれる前記ソースコード生成用情報を用いて、前記ソースコードを生成することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記入力部は、
複数の要素ブロックから構成される情報をベース情報として入力し、
前記ソースコード生成部は、
前記入力部により入力されたベース情報の複数の要素ブロックの内、ソースコード生成用情報を構成するソースコード要素ブロックを抽出し、抽出したソースコード要素ブロックを用いて、ソースコードを生成し、
前記情報処理装置は、更に、
前記ソースコード生成部により生成されたソースコードにおいて変更が生じた場合に、変更前のソースコードと変更後のソースコードとの間の差異を抽出し、抽出した差異に対応するソースコード要素ブロックを特定する要素ブロック特定部と、
前記要素ブロック特定部により特定されたソースコード要素ブロックを、前記変更前のソースコードと前記変更後のソースコードとの差異に基づいて変更する要素ブロック変更部と、
前記要素ブロック変更部により変更されたソースコード要素ブロックを用いてベース情報を変更するベース情報変更部と
を備え、
前記仕様情報生成部は、
前記ベース情報変更部により変更されたベース情報を用いて仕様情報を生成することを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記情報処理装置は、更に、
前記入力部により入力されたベース情報を最初のベース情報として記憶し、更に、前記ベース情報変更部によりベース情報が変更される度に、変更されたベース情報を変更された順番に対応付けて記憶するベース情報記憶部と、
所定の順番に対応するベース情報を前記ベース情報記憶部から抽出するベース情報抽出部と
を備え、
前記仕様情報生成部は、
前記ベース情報抽出部により抽出されたベース情報を用いて仕様情報を生成し、
前記ソースコード生成部は、
前記ベース情報抽出部により抽出されたベース情報に含まれるソースコード生成用情報を用いてソースコードを生成することを特徴とする請求項３記載の情報処理装置。
【請求項５】
前記入力部は、
複数種の仕様情報の生成に用いられる複数の仕様生成用情報が含まれるベース情報を入力し、
前記仕様情報生成部は、
前記複数種の仕様情報毎に、それぞれの仕様情報の生成に用いられる仕様生成用情報を用いて、それぞれの仕様情報を生成することを特徴とする請求項２〜４いずれか記載の情報処理装置。
【請求項６】
コンピュータが、表示データの仕様が示される仕様情報を生成する仕様情報生成ステップと、
前記コンピュータが、前記表示データのソースコードを生成するソースコード生成ステップと
を備え、
前記仕様情報生成ステップと前記ソースコード生成ステップにおいて、
前記コンピュータが、共通の情報を用いて仕様情報とソースコードとを生成することを特徴とする情報処理方法。
【請求項７】
表示データの仕様が示される仕様情報を生成する仕様情報生成ステップと、
前記表示データのソースコードを生成するソースコード生成ステップと
をコンピュータに実行させ、
前記仕様情報生成ステップと前記ソースコード生成ステップにおいて、
前記コンピュータに、共通の情報を用いて仕様情報とソースコードとを生成させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、表示データのソースコードに対応した表示データの設計書を生成する情報処理装置および情報処理方法およびプログラムに関する。
【背景技術】
【０００２】
例えばソフトウェアの表示データの設計情報から、表示データのソースコードを自動生成する方法が提案されている。（例えば、特許文献１）。ここで、例えば表示データの設計者は、表示データの設計書に基づいて、表示データの設計情報を入力する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−９９５４５号公報
【特許文献２】特開２００１−１５４９５９号公報
【特許文献３】特開平７−１２９３８２号公報
【特許文献４】特開平７−１７５６４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
前記のような表示データのソースコードの自動生成は、設計情報からソースコードを生成する一方向の処理となっている。
従って、自動生成されたソースコードを、例えば設計者が修正すると、その修正されたソースコードの内容は、設計者が入力した設計情報、すなわち表示データの設計書の内容と乖離が発生するという課題がある。
【０００５】
この発明は前記のような課題を解決することを主な目的とするもので、例えば、ソースコードと設計書との間の乖離を無くす情報処理装置を実現することを主な目的とする。
【課題を解決するための手段】
【０００６】
この発明に係る情報処理装置は、
表示データの仕様が示される仕様情報を生成する仕様情報生成部と、
前記表示データのソースコードを生成するソースコード生成部と
を備え、
前記仕様情報生成部と前記ソースコード生成部は、
共通の情報を用いて仕様情報とソースコードとを生成することを特徴とする。
【発明の効果】
【０００７】
この発明に係る情報処理装置は、例えば、表示データに関係する共通の情報からソースコードと設計書（仕様情報）とが生成される為、ソースコードと設計書との乖離を無くすことが可能である。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１を示す図で、画面設計書自動生成装置の構成の例を示す図。
【図２】実施の形態１を示す図で、中間形式情報が生成されるまでの処理の例を示すフローチャート。
【図３】実施の形態１を示す図で、設計情報入力ＧＵＩエディタの例を示す図。
【図４】実施の形態１を示す図で、中間形式情報（解析木）の例を示す図。
【図５】実施の形態１を示す図で、中間形式情報（ＸＭＬ）の例を示す図。
【図６】実施の形態１を示す図で、中間形式情報から画面一覧を生成する処理の例を示すフローチャート。
【図７】実施の形態１を示す図で、画面一覧の例を示す図。
【図８】実施の形態１を示す図で、中間形式情報から画面遷移図を生成する処理の例を示すフローチャート。
【図９】実施の形態１を示す図で、画面遷移図の例を示す図。
【図１０】実施の形態１を示す図で、中間形式情報から画面レイアウトを生成する処理の例を示すフローチャート。
【図１１】実施の形態１を示す図で、画面レイアウトの例を示す図。
【図１２】実施の形態１を示す図で、中間形式情報から画面入出力項目を生成する処理の例を示すフローチャート。
【図１３】実施の形態１を示す図で、画面入出力項目の例を示す図。
【図１４】実施の形態１を示す図で、中間形式情報からソースコードを生成する処理の例を示すフローチャート。
【図１５】実施の形態１を示す図で、ソースコードの例を示す図。
【図１６】実施の形態２を示す図で、画面設計書自動生成装置の構成の例を示す図。
【図１７】実施の形態２を示す図で、ソースコード変更部分の抽出処理の例を示すフローチャート。
【図１８】実施の形態２を示す図で、ソースコードの変更部分が抽出された例を示す図。
【図１９】実施の形態２を示す図で、ソースコードの追加部分が抽出された例を示す図。
【図２０】実施の形態２を示す図で、ソースコードの削除部分が抽出された例を示す図。
【図２１】実施の形態２を示す図で、ソースコード変更箇所を設計書に反映させる処理の例を示すフローチャート。
【図２２】実施の形態２を示す図で、修正後の中間形式情報を示す図。
【図２３】実施の形態３を示す図で、画面設計書自動生成装置の構成の例を示す図。
【図２４】実施の形態１〜３を示す図で、本実施の形態に示した画面設計書自動生成装置５００のハードウェア資源の例を示す図。
【発明を実施するための形態】
【０００９】
実施の形態１．
（画面設計書自動生成装置の構成）
図１は、画面設計書自動生成装置の構成の例を示す図である。
画面設計書自動生成装置５００は、例えばソフトウェアの表示データの設計書を生成する。なお、画面設計書自動生成装置５００は、情報処理装置に対応する。また、表示データとは、例えばソフトウェアの表示画面である。以降、表示データを表示画面とも称する。
なお、ソフトウェアの種類は限定されるものでは無いが、本実施の形態においては、ソフトウェアは例えばインターネットのホームページのような画面表示を行うソフトウェアを想定する。そして、表示データの設計書を以降「画面設計書」と称する。なお、この画面設計書については後述で説明する。
【００１０】
入力部１００は、表示画面の設計情報を入力する。この表示画面の設計情報は、表示画面の画面設計書（後述で説明）とソースコードとの基となるベース情報である。すなわち、このベース情報には、ソースコードの生成に用いられるソースコード生成用情報と、画面設計書の生成に用いられる仕様生成用情報とが含まれる。
中間形式変換部１０１は、入力部１００が入力した設計情報をコンピュータで処理可能な中間形式情報１１３（後述で説明）に変換する。ここで、中間形式情報１１３に含まれる情報は、入力部１００により入力されたベース情報である。言い換えれば、中間形式情報１１３は、ベース情報が後述で説明の所定の中間形式のフォーマットで記述されたものである。よって、中間形式情報１１３は、ベース情報に対応する。
【００１１】
リポジトリ１０７は、中間形式変換部１０１が変換した中間形式情報１１３を記憶する。ここで、リポジトリ１０７は、ベース情報記憶部に対応する。
【００１２】
設計書生成部１０２は、中間形式情報１１３を用いて、表示データの仕様が示される画面設計書１１２（後述で説明）を生成する。なお、前記の通り、中間形式情報１１３は仕様生成用情報を含んでいる。すなわち、設計書生成部１０２は、中間形式情報１１３に含まれる仕様生成用情報を用いて画面設計書１１２を生成する。ここで、画面設計書１１２は仕様情報に対応し、設計書生成部１０２は仕様情報生成部に対応する。
ソースコード生成部１０３は、中間形式情報１１３に含まれるソースコード生成用情報を用いて、表示データのソースコード１１０ａを生成する。
すなわち、設計書生成部１０２とソースコード生成部１０３は、共通の情報（中間形式情報１１３）を用いて画面設計書１１２とソースコード１１０とを生成する。
【００１３】
ソースコード記憶部１２１は、ソースコード生成部１０３で生成されたソースコード１１０ａを記憶する。
【００１４】
（画面設計書自動生成装置５００の動作説明）
画面設計書自動生成装置５００の動作について、設計情報入力から中間形式情報生成までの処理と、中間形式情報から画面設計書生成までの処理と、中間形式情報からソースコード生成までの処理との３つに分けて説明する。
【００１５】
（設計情報入力から中間形式情報生成までの処理）
図２、図３、図４、図５を用いて、設計情報入力から中間形式情報生成までの処理を説明する。
図２は、中間形式情報が生成されるまでの処理の例を示すフローチャートである。
図３は、設計情報入力ＧＵＩエディタの例を示す図である。
図４は、中間形式情報（解析木）の例を示す図である。
図５は、中間形式情報（ＸＭＬ）の例を示す図である。
【００１６】
図２のＳ５０１において、入力部１００は、表示画面毎に、「画面ＩＤ（Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）」、「画面名」、「ファイル名」、「説明」、「画面のサイズ」などの設計情報を入力する。
ここで、入力部１００は、図３に示す設計情報入力ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）エディタのようなユーザインタフェースを備える。この設計情報入力ＧＵＩエディタは、例えば画面設計書自動生成装置５００の表示装置に表示される。
【００１７】
ここで、設計情報入力ＧＵＩエディタの説明を行う。
設計情報入力ＧＵＩエディタは、例えば開発者が表示画面を開発する上での必要な設計情報を入力するためのエディタである。設計者は、設計情報入力ＧＵＩエディタを用いて、画面部品をキャンパス上に配置し、個々の画面部品にプロパティとして予め定義されている項目に対して値をセットすることで画面を生成する。
プロパティとしては、画面の外観（色、サイズ、字体など）に関するプロパティと表示画面のユーザのアクション（テキストを入力、ボタンをクリック、リンクをクリックなど）に関するプロパティからなる。
設計者は、画面部品、色などをパレットから選択して指定する。
そして、設計者が、対象の画面部品を選択し、マウスで右ボタンをクリックすると、設計情報入力ＧＵＩエディタは、設定可能なプロパティを表示する。
画面部品とは、例えば、図３にＢ００１として示した「ユーザＩＤ」の入力用のテキストボックスなどである。そして、図３にＢ００２として示した箇所がＢ００１のプロパティ表示である。
【００１８】
そして、図２のＳ５０２において、中間形式変換部１０１は、入力部１００が入力した設計情報を表示画面毎に区別し、表示画面毎のベース情報として取得する。
【００１９】
次に、中間形式変換部１０１は、表示画面毎に、図２のＳ５０３〜Ｓ５１０の間のループ処理を行う。すなわち、中間形式変換部１０１は、設計情報入力ＧＵＩエディタのキャンパス上に配置された全ての画面部品についてＳ５０３〜Ｓ５１０の処理を行う。
【００２０】
まず、中間形式変換部１０１は、図２のＳ５０４において、キャンパス上の画面部品の位置情報を取得し、位置情報から処理順番を決定する。
そして、中間形式変換部１０１は、図２のＳ５０５〜Ｓ５０８において、入力部１００が入力した各画面部品（テキストボックス、リストボックス、フォーム等）のプロパティ情報（画面の概観、表示画面のユーザのアクション等）を取得する。
そして、中間形式変換部１０１は、取得した各画面部品のプロパティ情報から中間形式情報１１３を生成する。そして、リポジトリ１０７は中間形式変換部１０１が生成した中間形式情報１１３を記憶する。
【００２１】
本実施の形態においては、入力部（設計情報入力ＧＵＩエディタ）で入力された情報を中間形式変換部１０１が中間形式情報１１３のフォーマットに変換しているが、中間形式情報１１３に含まれる情報は入力部で入力された情報となる。例えば、画面部品の位置情報や画面部品の属性も入力部で入力された情報である。
したがって、入力部は、予め中間形式情報１１３のフォーマットとなっている情報を入力することも可能である。そして、リポジトリ１０７は、入力部が入力した予め中間形式情報１１３のフォーマットとなっている情報を記憶することが可能である。この場合、中間形式変換部１０１における処理は不要となる。
【００２２】
中間形式情報１１３の具体例を説明する。
例えば、図４に示す解析木の場合の中間形式情報１１３は、「ＲＯＯＴ」ノードを最上位として、その下にアプリケーションを構成する各画面のノードが画面ＩＤ別に配置される。画面ＩＤノードが１つの表示画面に対応し、その下に画面部品に対応した各要素がプロパティと共に配置される。
例えば、図４のＴ１００１に示す「画面ＩＤ；Ｓ０１０１」から派生しているツリー構造が「画面ＩＤ；Ｓ０１０１」の表示画面に対応している。
そして、例えば、「ｂｏｄｙ」（図４のＴ１００２）から派生している部分が「ｂｏｄｙ」という要素であり、「ｂｏｄｙ」の要素の中には、例えば「ｔａｂｌｅ」（図４のＴ１００３）という要素が含まれている。
そして、「ｔａｂｌｅ」という要素は、図４のＴ１００４に示す属性が定義されている。
【００２３】
また、例えば、図５に示すＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）の場合の中間形式情報１１３は、「ｒｏｏｔ」要素を最上位として、その下に「ｓｃｒｅｅｎ」要素が配置される。「ｓｃｒｅｅｎ」要素は、１つの表示画面に対応し、その下に画面部品に対応した各要素が配置される。すなわち、ＸＭＬでは、対となるタグに囲まれた部分が１つの要素となる。例えば、「＜ｔｄ＞＜ｉｎｐｕｔ  ｔｙｐｅ＝“ｔｅｘｔ”（中略）＜／ｔｄ＞」（図５のＴ００２４）も「＜ｔｄ＞タグ」で囲まれた１つの要素である。
すなわち、要素とは、開始タグ（例えば＜ｔｄ＞）と終了タグ（例えば＜／ｔｄ＞）と、開始タグと終了タグとの間にある記述とを含めた部分であり、表示画面を構成する画面部品に対応して、画面部品の定義が記述されたものである。
なお、この「要素」を以降の説明では「要素ブロック」とも称する。
そして、開発者が設定した各プロパティは、属性として設定される。例えば「ｔａｂｅｌｅ  ｗｉｄｔｈ＝“５００”」（図５のＴ００２２）や、「ｔｙｐｅ＝“ｔｅｘｔ”」（図５のＴ００２４）などが属性を示す情報である。
そして、例えば、図５のＴ００１に示す部分が「ｉｄ＝“Ｓ０００１”」の表示画面の画面情報に対応し、Ｔ００２に示す部分が「ｉｄ＝“Ｓ０１０１”」の表示画面の画面情報に対応し、Ｔ００３に示す部分が「ｉｄ＝“Ｓ０２０１”」の表示画面の画面情報に対応する。
なお、中間形式情報１１３は、前記の解析木やＸＭＬなどで実現可能であるが、これらに限定されるものではない。
【００２４】
（中間形式情報から画面設計書生成までの処理）
次に、中間形式情報１１３から画面設計書１１２を生成する処理を説明する。
画面設計書は、例えば、「画面一覧」、「画面遷移図」、「画面レイアウト一覧」、「画面項目定義一覧」の４種類から成る。
すなわち、中間形式情報１１３には複数種の画面設計書１１２の生成に用いられる複数の情報（仕様生成用情報）が含まれる。そして、設計書生成部１０２は、複数種の画面設計書１１２毎に、それぞれの画面設計書１１２の生成に用いられる情報（仕様生成用情報）を用いて、それぞれの画面設計書１１２を生成する。
【００２５】
画面一覧は、画面の一覧と各画面の概要が記述される。画面遷移図は、利用者のアクションに応じて、画面がどの順番で遷移するかを示す。画面レイアウト一覧は、ソフトウェア実行時の画面の外観を表示する。画面項目定義一覧は、画面を構成する部品（テキストボックス、チェックボックス、ボタンなど）の詳細情報を示す。
【００２６】
（画面一覧の生成処理）
まず、ソフトウェアの画面一覧について説明する。
図６は、中間形式情報から画面一覧を生成する処理の例を示すフローチャートである。
図７は、画面一覧の例を示す図である。
【００２７】
まず、設計書生成部１０２は、画面一覧１１２１を生成する対象の中間形式情報１１３を読み込む（図６のＳ１７０１）。ここで、設計書生成部１０２は、図５に示す中間形式情報１１３を読み込むと想定する。
次に、設計書生成部１０２は、画面一覧１１２１を書き出す出力ファイルをオープンする（図６のＳ１７０２）。出力ファイルはテキストファイルでも表計算ソフトのファイル（ＣＳＶ（Ｃｏｍｍａ  Ｓｅｐａｒａｔｅｄ  Ｖａｌｕｅｓ）形式のファイル）などでもよい。図７の画面一覧の出力ファイルは、表計算ソフトのファイルの例を示している。
【００２８】
次に、設計書生成部１０２は、図６に示すＳ１７０３〜Ｓ１７１０の間のループ処理を全ての画面情報について行う。
設計書生成部１０２は、中間形式情報１１３から画面ＩＤを取得する（図６のＳ１７０４）。そして、設計書生成部１０２は、取得した画面ＩＤをＳ１７０２でオープンした出力ファイルに出力する（図６のＳ１７０５）。
例えば、設計書生成部１０２は、図５の中間形式情報１１３のＴ００１の部分が示す画面の情報の内「ｉｄ＝“Ｓ０００１”」から、画面ＩＤ「Ｓ０００１」を取得し、図７のＤ００１に示す行に画面ＩＤ「Ｓ０００１」を出力する。
すなわち、例えば画面ＩＤ「Ｓ０００１」などの情報が、画面設計書１１２の生成に用いられる仕様生成用情報である。
【００２９】
更に、設計書生成部１０２は、中間形式情報１１３から取得した画面ＩＤに対応する画面名を取得する（図６のＳ１７０６）。そして、設計書生成部１０２は、取得した画面名をＳ１７０２でオープンした出力ファイルに出力する（図６のＳ１７０７）。
例えば、設計書生成部１０２は、図５の中間形式情報１１３のＴ００１の部分が示す画面情報の内「ｎａｍｅ＝“トップ画面”」から、画面名「トップ画面」を取得し、図７のＤ００１に示す行に画面名「トップ画面」を出力する。
【００３０】
更に、設計書生成部１０２は、中間形式情報１１３から取得した画面ＩＤに対応する説明を取得する（図６のＳ１７０８）。そして、そして、設計書生成部１０２は、取得した説明をＳ１７０２でオープンした出力ファイルに出力する（図６のＳ１７０９）。
例えば、設計書生成部１０２は、図５の中間形式情報１１３のＴ００１の部分が示す画面情報の内「ｎｏｔｅ＝“ソフトウェアのトップ画面”」から、説明「ソフトウェアのトップ画面」を取得し、図７のＤ００１に示す行に説明「ソフトウェアのトップ画面」を出力する。
【００３１】
設計書生成部１０２は、一つの画面情報に対して、Ｓ１７０４〜Ｓ１７０９の処理を行った後、出力ファイル内で、画面情報毎に情報を区別出来るように、出力ファイルに改行を出力する。
そして、設計書生成部１０２は、次の画面情報（例えば、図５に示すＴ００２の部分）に対して、Ｓ１７０３〜Ｓ１７１０の処理を繰り返す。
【００３２】
設計書生成部１０２は、全ての画面情報に対して処理を完了したら、出力ファイルをクローズする。そして、設計書生成部１０２は、図７に示すような画面一覧１１２１を生成する。
【００３３】
（画面遷移図の生成処理）
次に、ソフトウェアの画面遷移図について説明する。
図８は、中間形式情報から画面遷移図を生成する処理の例を示すフローチャートである。
図９は、画面遷移図の例を示す図である。
【００３４】
まず、設計書生成部１０２は、画面遷移図１１２２を生成する対象の中間形式情報１１３を読み込む（図８のＳ１８０１）。ここで、設計書生成部１０２は、図５に示す中間形式情報１１３を読み込むと想定する。
次に、設計書生成部１０２は、画面遷移図１１２２を書き出す出力ファイルをオープンする（図８のＳ１８０２）。出力ファイルはテキストファイルでも表計算ソフトのファイル（ＣＳＶ形式のファイル）でも画像ファイルなどでもよい。図９の画面遷移図１１２２の出力ファイルは、画像ファイルの例を示している。
【００３５】
次に、設計書生成部１０２は、図８に示すＳ１８０３〜Ｓ１８０９の間のループ処理を全ての画面情報について行う。
設計書生成部１０２は、中間形式情報１１３から画面ＩＤを取得する（図８のＳ１８０４）。例えば、設計書生成部１０２は、図５の中間形式情報１１３のＴ００１の部分が示す画面の情報の内「ｉｄ＝“Ｓ０００１”」から、画面ＩＤ「Ｓ０００１」を取得する。
【００３６】
更に、設計書生成部１０２は、中間形式情報１１３から取得した画面ＩＤに対応する画面名を取得する（図８のＳ１８０５）。例えば、設計書生成部１０２は、図５の中間形式情報１１３のＴ００１の部分が示す画面の情報の内「ｎａｍｅ＝“トップ画面”」から、画面名「トップ画面」を取得する。
【００３７】
そして、設計書生成部１０２は、取得した画面ＩＤの全ての要素に対して図８に示すＳ１８０６〜Ｓ１８０８の処理を行う。例えば、設計書生成部１０２は、図５の中間形式情報１１３のＴ００１の部分が示す画面の情報から、ユーザのアクションに関する全ての属性を検索し、検索した属性が示すアクションと遷移先の画面ＩＤのペアを取り出す。
ここで、図５における図示は省略するが、例えば設計書生成部１０２は、図５の中間形式情報１１３のＴ００１の部分が示す画面の情報から、ユーザのアクション「Ｅｎｔｅｒを入力」と遷移先の画面ＩＤ「Ｓ０１０１」とのペアを取り出す。更に他のユーザのアクションが図５の中間形式情報１１３のＴ００１の部分に含まれているならば、設計書生成部１０２は、アクションと遷移先の画面ＩＤのペアを取り出すが、ここでは前記の１組しか無いものとする。
【００３８】
そして、設計書生成部１０２は、次の画面情報（例えば、図５に示すＴ００２の部分）に対して、Ｓ１８０４〜Ｓ１８０８の処理を繰り返す。
全ての画面情報に対してＳ１８０３〜Ｓ１８０９の処理が終了すれば、設計書生成部１０２は、画面遷移図１１２２の作成に必要な情報を全て抽出したことになる。
【００３９】
次に、設計書生成部１０２は、図８に示すＳ１８１０〜Ｓ１８１４の間のループ処理を全ての画面情報について行う。
まず設計書生成部１０２は、全ての画面情報の中からスタートページ属性を検索し、スタートページ属性が含まれる画面情報が対応する表示画面を開始ページとして決定する。ここで、Ｔ００１に示される部分にスタートページ属性が含まれているものとする。
【００４０】
そして、設計書生成部１０２は、スタートページ属性が含まれる画面情報の画面名をＳ１８０２でオープンした出力ファイルに出力する（図８のＳ１８１１）。例えば、設計書生成部１０２は、図９に示す画面名「トップ画面」を出力する。
【００４１】
更に、設計書生成部１０２は、スタートページ属性が含まれる画面情報の画面ＩＤをＳ１８０２でオープンした出力ファイルに出力する（図８のＳ１８１２）。例えば、設計書生成部１０２は、図９に示す画面ＩＤ「Ｓ０００１」を出力する。
【００４２】
そして、設計書生成部１０２は、スタートページ属性が含まれる画面情報（図５のＴ００１）から抽出されたユーザのアクション「Ｅｎｔｅｒを入力」と遷移先の画面ＩＤ「Ｓ０１０１」とのペアを図９のＧ００１に関連付ける。すなわち、設計書生成部１０２は、図９のＧ００１の画面において、アクション「Ｅｎｔｅｒを入力」（図９のＧ００２）が行われると画面ＩＤ「Ｓ０１０１」の画面（図９のＧ００３）に遷移することを示す情報を作成する。
【００４３】
以降、設計書生成部１０２は、全ての画面情報に対して、図８に示すＳ１８１０〜Ｓ１８１４の処理を行い、全ての画面情報に対して処理を完了したら、出力ファイルをクローズする（図８のＳ１８１５）。そして、設計書生成部１０２は、図９に示すような画面遷移図１１２２を生成する。
【００４４】
（画面レイアウトの生成処理）
次に、ソフトウェアの画面レイアウトについて説明する。
図１０は、中間形式情報から画面レイアウトを生成する処理の例を示すフローチャートである。
図１１は、画面レイアウトの例を示す図である。
【００４５】
まず、設計書生成部１０２は、画面レイアウト１１２３を生成する対象の中間形式情報１１３を読み込む（図１０のＳ１９０１）。ここで、設計書生成部１０２は、図５に示す中間形式情報１１３を読み込むと想定する。
【００４６】
次に、設計書生成部１０２は、図１０に示すＳ１９０２〜Ｓ１９１５の間のループ処理を「ｒｏｏｔ」に帰属する全ての画面情報について行う。
ここでは、図５に示すＴ００２の画面情報を例に説明し、他の画面情報についての説明は省略する。
【００４７】
まず、設計書生成部１０２は、中間形式情報１１３の画面情報が示す画面ＩＤに関連付けられているファイル名を抽出する（図１０のＳ１９０３）。そして、設計書生成部１０２は、抽出したファイル名のファイルを出力ファイルとしてオープンする（図１０のＳ１９０４）。ここで、図５に示すＴ００２の例では、ファイル名は「Ｌｏｇｉｎ」となる。そして、設計書生成部１０２は、画面レイアウト１１２３のファイルであることが区別可能な識別子（例えば拡張子）をファイル名に付加する。
【００４８】
そして、設計書生成部１０２は、出力ファイルに中間形式情報１１３の画面情報が示す画面名、画面ＩＤ、説明などの共通情報を出力する（図１０のＳ１９０５）。
【００４９】
そして、設計書生成部１０２は、選択された画面ＩＤ（ここでは、中間形式情報１１３のＴ００２の画面ＩＤ「Ｓ０１０１」）の全ての要素に対してＳ１９０６〜Ｓ１９１２の処理を行う。
【００５０】
まず、設計書生成部１０２は、画面情報に含まれる要素の内、レンダリングを行う要素であるか否かを判定する（図１０のＳ１９０９）。ここで、レンダリングとは、例えば中間形式情報１１３で記述された情報に基づき、画像化（可視化、グラフィック化）することである。
設計書生成部１０２は、レンダリング対応の要素でない場合（図１０のＳ１９０９の「ＮＯ」）、特に何も処理をしない。一方、設計書生成部１０２は、レンダリング対応の要素である場合（図１０のＳ１９０９の「ＹＥＳ」）、Ｓ１９０８〜Ｓ１９１１の処理を行う。
すなわち、設計書生成部１０２は、図５のＴ００２の画面情報の内、レンダリング対象の要素（例えば図５のＴ００２１の「ｆｏｒｍ」）の中から例えば図５のＴ００２２「ｔａｂｌｅ  ｗｉｄｔｈ＝“５００”  ｂｏｒｄｅｒ＝“１”」をレンダリング対象の属性と判定し（図１０のＳ１９０９の「ＹＥＳ」、レンダリングを行う（図１０のＳ１９１０）。
【００５１】
そして、設計書生成部１０２は、レンダリング結果を出力ファイルに出力する（図１０のＳ１９１３）。レンダリング結果の例を図１１に示す。
【００５２】
設計書生成部１０２は、レンダリング結果を出力ファイルに出力した後、出力ファイルをクローズする（図１０のＳ１９１４）。
そして、設計書生成部１０２は、全ての画面情報に関してＳ１９０２〜Ｓ１９１５の処理を行い、図１１に示すような画面レイアウト１１２３を生成する。
【００５３】
（画面入出力項目の生成処理）
次に、ソフトウェアの画面入出力項目について説明する。
図１２は、中間形式情報から画面入出力項目を生成する処理の例を示すフローチャートである。
図１３は、画面入出力項目の例を示す図である。
【００５４】
まず、設計書生成部１０２は、画面入出力項目１１２４を生成する対象の中間形式情報１１３を読み込む（図１２のＳ２００１）。ここで、設計書生成部１０２は、図５に示す中間形式情報１１３を読み込むと想定する。
【００５５】
次に、設計書生成部１０２は、図１２に示すＳ２００２〜Ｓ２０１６の間のループ処理を「ｒｏｏｔ」に帰属する全ての画面情報について行う。
ここでは、図５に示すＴ００２の画面情報を例に説明し、他の画面情報についての説明は省略する。
【００５６】
まず、設計書生成部１０２は、中間形式情報１１３の画面情報が示す画面ＩＤに関連付けられているファイル名を抽出する（図１２のＳ２００３）。そして、設計書生成部１０２は、抽出したファイル名のファイルを出力ファイルとしてオープンする（図１２のＳ２００４）。ここで、図５に示すＴ００２の例では、ファイル名は「Ｌｏｇｉｎ」となる。そして、設計書生成部１０２は、画面入出力項目１１２４のファイルであることが区別可能な識別子（例えば拡張子）をファイル名に付加する。
【００５７】
そして、設計書生成部１０２は、出力ファイルに中間形式情報１１３の画面情報が示す画面名、画面ＩＤ、説明などの共通情報を出力する（図１２のＳ２００５）。
【００５８】
更に、設計書生成部１０２は、出力ファイルに中間形式情報１１３の画面情報が示すテーブルヘッダ情報（部品の種別、表示桁数など）を出力する（図１２のＳ２００６）。ここでテーブルヘッダ情報は、例えば図５のＴ００２３に示す「ｔｙｐｅ（部品の種別）」、「ｓｉｚｅ（表示桁数）」などである。
ここで、図５における図示は省略するが、テーブルヘッダ情報の具体例として、図１３には「部品名」、「入力桁数」、「必須」を示す。
また、設計書生成部１０２は、例えば、図５の中間形式情報１１３の「ｔｙｐｅ」を、予め設定された変換規則に基づき、例えば、図１３の「部品の種別」というように変換して出力することも可能である。他の部分において、画面設計書１１２内で、中間形式情報１１３の表記と異なる表記がなされている部分も同様である。
【００５９】
そして、設計書生成部１０２は、選択された画面ＩＤ（ここでは、中間形式情報１１３のＴ００２の画面ＩＤ「Ｓ０１０１」）の全ての要素に対してＳ２００７〜Ｓ２０１４の処理を行う。
【００６０】
まず、設計書生成部１０２は、画面情報に含まれる要素の内、入出力項目に関する要素であるか否かを判定する（図１２のＳ２００８）。
設計書生成部１０２は、入出力項目に関する要素でない場合（図１２のＳ２００８の「ＮＯ」）、特に何も処理をしない。一方、設計書生成部１０２は、入出力項目に関する要素である場合（図１２のＳ２００８の「ＹＥＳ」）、Ｓ２００９〜Ｓ２０１３の処理を行う。
【００６１】
図１２のＳ２００８において「ＹＥＳ」と判定された場合、設計書生成部１０２は、要素に対応する部品名を出力ファイルに出力する（図１２のＳ２００９）。例えば設計書生成部１０２は、図５のＴ００２３に示す要素に対応する部品名「ユーザＩＤ」を出力する。
【００６２】
そして、設計書生成部１０２は、要素に含まれる全ての属性に対して、Ｓ２０１０〜Ｓ２０１３の処理を行う。
すなわち、設計書生成部１０２は、図５のＴ００２の画面情報の内、入出力項目に関する要素（例えば図５のＴ００２３）の中から、入出力項目に関する属性、例えば図５のＴ００２３「ｔｙｐｅ＝“ｔｅｘｔ”」、「ｓｉｚｅ＝“２５”」を抽出し、出力ファイルに出力する（図１２のＳ２０１２）。
出力結果の例を図１３に示す。図１３においては、「入力桁数」、「必須」も図示されているが、中間形式情報１１３から画面入出力項目１１２４に変換される処理は同様である為、説明を省略する。
【００６３】
設計書生成部１０２は、出力ファイルに出力した後、出力ファイルをクローズする（図１２のＳ２０１５）。
そして、設計書生成部１０２は、全ての画面情報に関してＳ２００２〜Ｓ２０１６の処理を行い、図１３に示すような画面入出力項目１１２４を生成する。
【００６４】
（中間形式情報からソースコード生成までの処理）
以上、中間形式情報から画面設計書を精製する処理を説明した。
次に、中間形式情報からソースコードを生成する処理を説明する。
図１４は、中間形式情報からソースコードを生成する処理の例を示すフローチャートである。
図１５は、ソースコードの例を示す図である。
図１５のソースコード１１０は、ＨＴＭＬ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）による記述の例を示しているが、これに限定されるものではない。
【００６５】
まず、ソースコード生成部１０３は、ソースコード１１０を生成する対象の中間形式情報１１３を読み込む（図１４のＳ１６０１）。ここで、ソースコード生成部１０３は、図５に示す中間形式情報１１３を読み込むと想定する。
【００６６】
次に、ソースコード生成部１０３は、図１４に示すＳ１６０２〜Ｓ１６１７の間のループ処理を「ｒｏｏｔ」に帰属する全ての画面情報について行う。
ここでは、図５に示すＴ００２の画面情報を例に説明し、他の画面情報についての説明は省略する。
【００６７】
まず、ソースコード生成部１０３は、中間形式情報１１３の画面情報が示す画面ＩＤに関連付けられているファイル名を抽出する（図１４のＳ１６０３）。そして、設計書生成部１０２は、抽出したファイル名のファイルを出力ファイルとしてオープンする（図１４のＳ１６０４）。ここで、図５に示すＴ００２の例では、ファイル名は「Ｌｏｇｉｎ」となる。そして、ソースコード生成部１０３は、ソースコード１１０のファイルであることが区別可能な識別子（例えば拡張子）をファイル名に付加する。
【００６８】
そして、ソースコード生成部１０３は、出力ファイルに中間形式情報１１３の画面情報が示す「ＤＯＣＴＹＰＥ」などの共通情報を出力する（図１４のＳ１６０５）。
【００６９】
そして、ソースコード生成部１０３は、選択された画面ＩＤ（ここでは、中間形式情報１１３のＴ００２の画面ＩＤ「Ｓ０１０１」）の全ての要素に対してＳ１６０６〜Ｓ１６１７の処理を行う。
ここで、ＨＴＭＬで記述された場合の要素は、ＸＭＬで記述された場合と同様にタグで囲まれた部分となる。
【００７０】
まず、ソースコード生成部１０３は、要素名（例えば中間形式情報１１３のＴ００２の「ｈｔｍｌ」）を開始タグとして出力ファイルに出力する（図１４のＳ１６０７）。出力例は図１５に示す「＜ｈｔｍｌ＞」である。
【００７１】
次に、ソースコード生成部１０３は、要素が属性を保持しているか否かを判定する。例えば、図５のＴ００２は、「ｈｔｍｌ」タグの直後に「ｈｅａｄ」タグが記述されており、属性を保持していないので、ソースコード生成部１０３は、図１４のＳ１６０８において、「ＮＯ」と判定する。
【００７２】
そして、ソースコード生成部１０３は、子要素の有無を判定する（図１４のＳ１６１３）。ここで、図５のＴ００２は、「ｈｔｍｌ」タグの直後に子要素の「ｈｅａｄ」タグが記述されているので、ソースコード生成部１０３は、図１４のＳ１６１３において「ＮＯ」と判定する。
そして、図１４のＳ１６０７において、ソースコード生成部１０３は、開始タグ「＜ｈｅａｄ＞」として出力ファイルに出力する。
【００７３】
もし、子要素が無い場合は、ソースコード生成部１０３は、図１４のＳ１６１３において「ＹＥＳ」と判定し、図１４のＳ１６１４において、要素名を終了タグとして出力ファイルに出力する（例えば「＜／ｈｔｍｌ＞」）。
【００７４】
そして、子要素「ｈｅａｄ」は、図５に示すように「ｍｅｔａ  ｈｔｔｐ−ｅｑｕｉｖ＝（以下省略）」という属性を保持しているので、ソースコード生成部１０３は、図１４のＳ１６０８において、「ＹＥＳ」と判定する。
【００７５】
図１４のＳ１６０８において、「ＹＥＳ」と判定された場合、ソースコード生成部１０３は、図１４のＳ１６０９〜Ｓ１６１２の処理を行う。
すなわち、ソースコード生成部１０３は、図５のＴ００２の画面情報の内、「ｈｅａｄ」の要素に関する全ての属性に対し、ソースコードに関連する属性か否かを判定する（図１４のＳ１６１０）。そして、ソースコードに関連する属性の場合（図１４のＳ１６１０の「ＹＥＳ」）、属性名と値とを出力ファイルに出力する（図１４のＳ１６１１）。
すなわち、ソースコードに関連する属性を備えた要素が、ソースコードの生成に用いられるソースコード生成用情報である。
【００７６】
例えば、ソースコード生成部１０３は、図５に示す「ｍｅｔａ  ｈｔｔｐ−ｅｑｕｉｖ＝（以下省略）」をソースコードに関連する属性と判定し、出力ファイルに出力する。
ここで、ソースコード生成部１０３は、ソースコードに関連する属性に関しては、「属性名＝“値”」の形式で出力する（例えば「ｍｅｔａ  ｈｔｔｐ−ｅｑｕｉｖ＝“Ｃｏｎｔｅｎｔ−Ｔｙｐｅ”」）。
なお、ソースコード生成部１０３は、例えば、図５のＴ００２１に示す「＜ｔｄ＞ユーザＩＤ：＜／ｔｄ＞」とタグに囲まれた「ユーザＩＤ：」もソースコードに関連する属性であると判断し、「ユーザＩＤ：」を出力する。
【００７７】
そして、ソースコード生成部１０３は、選択された画面情報（ここでは図５のＴ００２）に対する処理が終了したら、ソースコード生成部１０３は、出力ファイルをクローズする（図１４のＳ１６１６）。
そして、ソースコード生成部１０３は、全ての画面情報に関してＳ１６０２〜Ｓ１６１７の処理を行い、図１５に示すようなソースコード１１０を生成する。
【００７８】
（実施の形態１の効果）
実施の形態１に示す画面設計書自動生成装置５００は、表示画面の設計者が例えば設計情報入力ＧＵＩエディタのようなツールで入力した表示画面の設計情報から、表示画面のソースコード１１０と画面設計書１１２とを自動生成する。よって、表示画面の設計効率（開発効率）が向上する。
また、実施の形態１に示す画面設計書自動生成装置５００は、設計者が入力した表示画面の設計情報を中間形式情報１１３として記憶する。
そして、画面設計書自動生成装置５００は、同じ中間形式情報１１３のファイルから画面設計書１１２とソースコード１１０とを生成するので、画面設計書１１２とソースコード１１０との内容に乖離が生じることが無い。
また、例えば、設計者がプログラムの内容を変更したい場合も、設計者は例えば画面設計書自動生成装置５００の入力装置を用いて、中間形式情報１１３を変更することが可能である。そして、画面設計書自動生成装置５００は、変更された中間形式情報１１３から画面設計書１１２とソースコード１１０とを生成可能である。よって、設計者は、画面設計書１１２とソースコード１１０とを別々に変更する必要が無い。
【００７９】
まとめると、実施の形態１においては、開発者が表示画面（プログラム画面）に関する情報を入力する入力部１００（エディタ）と、入力された情報を中間形式情報１１３に変換する中間形式変換部１０１と、中間形式情報１１３から表示画面（プログラム画面）のソースコードを自動生成するソースコード生成部１０３と、中間形式情報１１３から表示画面の設計書を自動生成する設計書生成部１０２とを備えた画面設計書自動生成装置５００について説明した。
【００８０】
実施の形態２．
（画面設計書自動生成装置の構成）
図１６は、画面設計書自動生成装置の構成の例を示す図である。
実施の形態２の画面設計書自動生成装置５００は、実施の形態１の画面設計書自動生成装置５００の構成に加えて、ソースコード編集部１２０と変更情報生成部１２２とを備える。
実施の形態２においては、実施の形態１と異なる部分のみ説明する。
【００８１】
ソースコード編集部１２０は、実施の形態１で説明したソースコード生成部１０３で生成されたソースコード１１０ａを編集する。
ソースコード記憶部１２１は、ソースコード生成部１０３で生成されたソースコード１１０ａや、ソースコード編集部１２０で編集されたソースコード１１０ｂなどを記憶する。
【００８２】
変更情報生成部１２２は、差分抽出部１０９と中間形式反映部１０８とから構成される。
差分抽出部１０９は、ソースコード生成部１０３で生成されたソースコード１１０ａとソースコード編集部１２０で編集されたソースコード１１０ｂとの差分を抽出する。ここで、差分抽出部１０９は、要素ブロック特定部に対応する。
中間形式反映部１０８は、差分抽出部１０９で抽出された差分に対応する部分の中間形式情報１１３を変更する。ここで、中間形式反映部１０８は、要素ブロック変更部とベース情報変更部に対応する。
【００８３】
なお、詳細は後述するが、実施の形態２における画面設計書自動生成装置５００は、ソースコードが変更される度に、反復して画面設計書を生成する。よって、画面設計書自動生成装置５００は、反復型画面設計書自動生成装置（反復型画面自動生成装置）とも言える。
【００８４】
（画面設計書自動生成装置５００の動作説明）
画面設計書自動生成装置５００の動作について、ソースコード変更部分の抽出処理と、ソースコード変更箇所を設計書に反映させる処理との２つに分けて説明する。
【００８５】
（ソースコード変更部分の抽出処理）
図１７は、ソースコード変更部分の抽出処理の例を示すフローチャートである。
図１８は、ソースコードの変更部分が抽出された例を示す図である。
図１９は、ソースコードの追加部分が抽出された例を示す図である。
図２０は、ソースコードの削除部分が抽出された例を示す図である。
【００８６】
例えば、表示画面の設計者が、図１６に示すソースコード記憶部１２１に記憶されたソースコード１１０ａを変更したい場合を想定する。
その場合、表示画面の設計者は、例えば画面設計書自動生成装置５００の入力装置を用いて、ソースコード１１０ａの変更内容を入力する。
そして、ソースコード編集部１２０は、設計者の入力した変更内容に基づき、ソースコード１１０ａを変更し、ソースコード１１０ｂを生成する。ここで、ソースコード１１０ａは、変更前のソースコード１１０ａであり、ソースコード１１０ｂは、変更後のソースコード１１０ｂであると言える。ソースコード１１０ａは、オリジナルのソースコード１１０ａであるとも言える。
そして、ソースコード記憶部１２１は、変更後のソースコード１１０ｂを記憶する。
【００８７】
そして、図１６に示す差分抽出部１０９は、図１７に示す処理により、ソースコード生成部１０３により生成されたオリジナルのソースコード１１０ａにおいて変更が生じた場合に、変更前のソースコードと変更後のソースコード１１０ｂとの間の差異を抽出する。
【００８８】
まず、差分抽出部１０９は、変更後のソースコード１１０ｂを読み込む（図１７のＳ６０１）。
更に、差分抽出部１０９は、変更前のソースコード１１０ａを読み込む（図１７のＳ６０４）。
そして、差分抽出部１０９は、変更後のソースコード１１０ｂと変更前のソースコード１１０ａとの差分を行単位で抽出する（図１７のＳ６０５）。ここで差分とは、変更後のソースコード１１０ｂと変更前のソースコード１１０ａとの変更部分のことである。
【００８９】
ただし、変更後のソースコード１１０ｂは、ソースコード編集部１２０により編集されている為、不要な改行や空白文字などが存在する。よって、差分抽出部１０９は、変更後のソースコード１１０ｂと変更前のソースコード１１０ａとを行単位で比較することが出来ない場合がある。
よって、差分抽出部１０９は、変更後のソースコード１１０ｂを正規化（図１７のＳ６０２）した上で、変更後のソースコード１１０ｂと変更前のソースコード１１０ａとを行単位で比較する。ここで、正規化とは、例えば、前記の不要な改行や空白文字などを削除して、変更後のソースコード１１０ｂと変更前のソースコード１１０ａとを行単位で比較可能にすることである。もし、変更後のソースコード１１０ｂに行が追加もしくは削除された場合であっても差分抽出部１０９は、正規化を行い、変更後のソースコード１１０ｂと変更前のソースコード１１０ａとを行単位で比較することが可能である。
【００９０】
差分抽出部１０９が変更後のソースコード１１０ｂと変更前のソースコード１１０ａとを比較して、行単位で差分を抽出した例を説明する。
図１８は、変更前のソースコード１１０ａの１２行目の「＜ｔｄ＞＜ｉｎｐｕｔ  （中略）  ｓｉｚｅ＝“２５”  ／＞・・・＜／ｔｄ＞」が、変更後のソースコード１１０ｂの１７行目では「＜ｔｄ＞＜ｉｎｐｕｔ  （中略）  ｓｉｚｅ＝“３０”  ／＞・・・＜／ｔｄ＞」に変更されていることを示す例である。
図１９は、変更前のソースコード１１０ａの２４行目に、変更後のソースコード１１０ｂの２４行目〜２６行目には、図示の３行が追加されていることを示す例である。なお、図１９においては、ソースコードの記述例は省略し「＜ｔｄ＞タグ」のみを図示している。
図２０は、変更前のソースコード１１０ａの３行目の「＜ｔｄ＞  ・・・・・  ＜／ｔｄ＞」が、変更後のソースコード１１０ｂでは削除されていることを示す図である。なお、図２０においては、ソースコードの記述例は省略し「＜ｔｄ＞タグ」のみを図示している。
【００９１】
（ソースコード変更箇所を設計書に反映させる処理）
次に、差分抽出部１０９が抽出した変更後のソースコード１１０ｂと変更前のソースコード１１０ａとの差分を反映させた画面設計書１１２の生成処理を説明する。
図２１は、ソースコード変更箇所を設計書に反映させる処理の例を示すフローチャートである。
図２２は、修正後の中間形式情報１１３を示す図である。
【００９２】
まず、図１６に示す中間形式反映部１０８は、リポジトリ１０７に記憶された中間形式情報１１３を読み込む（図２１のＳ１００１）。
更に、中間形式反映部１０８は、差分抽出部１０９が抽出した変更後のソースコード１１０ｂと変更前のソースコード１１０ａとの差分の情報を読み込む（図２１のＳ１００２）。
そして、中間形式反映部１０８は、差分抽出部１０９が抽出した全ての差分情報に対して、図２１に示すＳ１００３〜Ｓ１０１７のループ処理を行う。
【００９３】
ここで、差分抽出部１０９は、図１８に示す差分情報を抽出したと想定して説明を進める。
【００９４】
中間形式反映部１０８は、差分抽出部１０９が抽出した差分情報の種別の判定を行う（図２１のＳ１００４）。
例えば、差分抽出部１０９が図１８に示すような修正情報を抽出した場合は、中間形式反映部１０８は、図２１のＳ１００９の処理を行う。そして、差分抽出部１０９が図１９に示すような追加情報を抽出した場合は、中間形式反映部１０８は、図２１のＳ１００５の処理を行う。そして、差分抽出部１０９が図２０に示すような削除情報を抽出した場合は、中間形式反映部１０８は、図２１のＳ１０１３の処理を行う。
【００９５】
ここでは、差分抽出部１０９は、図１８に示す差分情報を抽出したと想定しているので、中間形式反映部１０８は、図２１のＳ１００９の処理を行う。
図２１のＳ１００９において、中間形式反映部１０８は、中間形式情報１１３における変更箇所を特定する。
【００９６】
ここで、中間形式情報１１３は、複数の要素（要素ブロック）から構成されている。ここで、要素（要素ブロック）とは、前記で説明の通り、中間形式情報１１３のタグで囲まれた部分（例えば「＜ｔｄ＞＜ｉｎｐｕｔ  ｔｙｐｅ＝“ｔｅｘｔ”（中略）＜／ｔｄ＞」（図５のＴ００２４）である。
そして、ソースコード生成部１０３は、中間形式情報１１３に含まれる複数の要素（要素ブロック）の内、ソースコード１１０の生成に用いられるソースコード生成用情報を構成するソースコード要素ブロックを抽出している。例えばソースコード生成部１０３は、「＜ｔｄ＞＜ｉｎｐｕｔ  ｔｙｐｅ＝“ｔｅｘｔ”（中略）＜／ｔｄ＞」（図５のＴ００２４）をソースコード要素ブロックとして抽出している。
そして、ソースコード生成部１０３は、抽出したソースコード要素ブロックを用いて、ソースコードを生成している。例えばソースコード生成部１０３は、「＜ｔｄ＞＜ｉｎｐｕｔ  ｔｙｐｅ＝“ｔｅｘｔ”（中略）＜／ｔｄ＞」（図５のＴ００２４）を用いて、図１５のソースコード１１０の「＜ｔｄ＞＜ｉｎｐｕｔ  ｔｙｐｅ＝“ｔｅｘｔ”（中略）＜／ｔｄ＞」（図１５のＴ１５０１）を生成している。
【００９７】
そこで、中間形式反映部１０８は、差分抽出部１０９が抽出した差分（差異）に対応するソースコード要素ブロックを特定する。ここで、例えばソースコード１１０の行番号の情報と、ソースコード１１０が生成される元となった中間形式情報１１３におけるソースコード要素ブロックとは対応付けられている。
よって、中間形式反映部１０８は、差分抽出部１０９が抽出した図１８に示す差分情報の行番号「１２行目」から「＜ｔｄ＞＜ｉｎｐｕｔ  ｔｙｐｅ＝“ｔｅｘｔ”（中略）＜／ｔｄ＞」（図５のＴ００２４）を特定する。
なお、図２１のＳ１００５およびＳ１０１３における処理も同様である。
【００９８】
次に、中間形式反映部１０８は、特定されたソースコード要素ブロックを、変更前のソースコード１１０ａと変更後のソースコード１１０ｂとの差異（差分）に基づいて変更する（図２１のＳ１０１０〜Ｓ１０１２の処理）。
【００９９】
中間形式反映部１０８は、差分抽出部１０９が抽出した差分情報の対象が要素であるか否かを判定する（図２１のＳ１０１０）。なお、図２１のＳ１００６とＳ１０１４との処理も同様である。
図１８に示す例は、要素の修正では無く（図２１のＳ１０１０の「ＮＯ」）、属性の修正である為、中間形式反映部１０８は、ソースコード要素ブロック（図５のＴ００２４）の「ｓｉｚｅ＝“２５”」を「ｓｉｚｅ＝“３０”」に修正する（図２１のＳ１０１１）。
【０１００】
一方、要素の修正である場合（図２１のＳ１０１０の「ＹＥＳ」）、中間形式反映部１０８は、ソースコード要素ブロックそのものを修正する（図２１のＳ１０１２）。図示は省略するが、中間形式反映部１０８は、例えば、図５のＴ００２４の「＜ｔｄ＞＜ｉｎｐｕｔ  ｔｙｐｅ＝“ｔｅｘｔ”（中略）＜／ｔｄ＞」を「＜ｔｄ＞＜ｔｅｘｔａｒｅａ（中略）＞＜／ｔｅｘｔａｒｅａ＞＜／ｔｄ＞」などに修正する。
【０１０１】
もし、差分抽出部１０９が抽出した差分情報が図１９に示すような追加情報の場合は、中間形式反映部１０８は対象のソースコード要素ブロックに追加情報に示される属性もしくは要素を追加する（図２１のＳ１００７もしくはＳ１００８）。そして、もし、差分抽出部１０９が抽出した差分情報が図２０に示すような削除情報の場合は、中間形式反映部１０８は対象のソースコード要素ブロックにおいて、削除情報に示される属性もしくは要素を削除する。
【０１０２】
上記のように、中間形式反映部１０８は、Ｓ１００３〜Ｓ１０１７の処理によって変更されたソースコード要素ブロックを用いて中間形式情報１１３を変更する。
図１８の差分情報に基づき変更された中間形式情報１１３の例を図２２に示す。中間形式情報１１３は、図５のＴ００２４において「ｓｉｚｅ＝“２５”」であったが、図２２に示されるＴ２２０１においては「ｓｉｚｅ＝“３０”」に修正されている。
【０１０３】
そして、設計書生成部１０２は、中間形式反映部１０８より変更された中間形式情報１１３を用いて画面設計書１１２を生成する（図２１のＳ１０１８）。
【０１０４】
（実施の形態２の効果）
従来の設計情報や設計書に基づき、画面設計書を生成する装置は、設計情報や設計書から画面のソースコードへの一方向の自動生成となっている。（例えば、前記の特許文献１や特許文献２。）
従って、設計情報から自動生成されたソースコードを例えば設計者が手動で修正した場合、設計情報に反映できないという課題があった。例えば、ソースコードが手動で修正された後、その情報が設計書に反映されていない場合、再度設計情報からソースコードが自動生成されると、ソースコードの手動で修正した部分が、自動生成されたソースコードの内容に上書きされる課題が生じる。
このように、設計情報からソースコードを自動生成する場合には、常に、設計情報とソースコードとは、対応していなければならない。
【０１０５】
一方、スパイラル型のオブジェクト指向ソフトウェア開発を対象にした方法も前記の特許文献３には示されている。
この方法は、オブジェクト指向言語の特徴であるクラス、属性、メソッドをフレーム要素、コメント文をガイダンス要素、設計情報（ＵＭＬ（Ｕｎｉｆｉｅｄ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ）ダイヤグラム）の図形の位置、大きさ、線図の意味などを設計固有要素としてこれら三つを設計情報と定義している。そして、この方法は、フレーム要素、ガイダンス要素、メソッドや宣言をリーフ要素としてこれら三つを実装情報と定義している。更に、この方法は、オブジェクト指向言語固有の予約語や前処理文などをグルー要素としてこれを書式情報として定義している。
設計情報と実装情報では、差異（設計固有要素とリーフ要素）が存在するため、それぞれをデータベースに格納して、設計情報と実装情報をリンクしておくことで、片方に修正が入っても、もう一方を生成し、乖離をなくすことができる。
但し、オブジェクト指向開発の設計情報（ＵＭＬダイヤグラム）であるクラス図、アクティビティ図、シーケンス図は、スパイラル開発において順次詳細化していくが、ローカル変数やソースコードの一行単位での設計情報は記述しないため、完全な設計情報の生成を行うことができない。
なお、この方法は、オブジェクト指向プログラミング言語や一般のプログラミング言語に対して提案されたもので、表示画面については言及されていない。
【０１０６】
また、設計者の操作履歴を元に二つの設計支援ツールを連携させて設計書とソースコードとを生成する方法が、前記の特許文献４には示されている。
この方法は、ソースプログラム編集ツールとソフトウェア設計書（フローチャート）編集ツールを使用した設計者の操作履歴（「編集操作の種類」、「編集位置情報」、「フローチャートシンボルの種類」、「ソースプログラム構文の種類」）から、双方のツールを連携させてそれぞれの編集終了時に変更を反映する方式を提案している。
但し、二つのツールを連携させて動作させるためソースコードの修正とソフトウェア設計書の修正を並行して行えないという課題がある。
また、この方法で説明のプログラムのソースコードとソフトウェア設計書（フローチャート）の場合は、１対１に対応付けることが可能である。一方、本実施の形態で説明の表示画面のソースコードは、複数の設計書（画面一覧、画面遷移、画面項目定義）と関係するため、ソースコードの修正と設計書の修正を並行して行えないという課題がより顕著となる。
なお、この方法も、オブジェクト指向プログラミング言語や一般のプログラミング言語に対して提案されたもので、表示画面については言及されていない。
【０１０７】
上記の通り、４つの特許文献をあげて、従来の例を説明した。
一方、本実施の形態の画面設計書自動生成装置５００は、例えば設計者が変更（修正）したソースコード１１０ｂと変更前のソースコード１１０ａとの差分を差分抽出部１０９が抽出する。そして、中間形式反映部１０８が差分の内容を中間形式情報１１３に反映させる。その為、本実施の形態の画面設計書自動生成装置５００は、ソースコード１１０の変更に対応した画面設計書１１２が自動生成可能である。
すなわち、本実施の形態の画面設計書自動生成装置５００は、設計者がソースコード１１０を修正する度に、修正したソースコード１１０から画面設計書１１２を反復的に自動生成し、ソースコード１１０と画面設計書１１２の乖離を無くす。そして、表示画面の開発効率（生産性）を向上させる。
【０１０８】
まとめると、実施の形態２においては、開発者が修正した表示画面（プログラム画面）に関するソースコードとオリジナルの表示画面（プログラム画面）に関するソースコードとの差分を抽出する差分抽出部１０９と、差分を中間形式情報１１３に反映する中間形式反映部１０８とを備えた画面設計書自動生成装置５００について説明した。
【０１０９】
実施の形態３．
（画面設計書自動生成装置の構成および動作）
図２３は、画面設計書自動生成装置の構成の例を示す図である。
実施の形態３の画面設計書自動生成装置５００は、実施の形態２の画面設計書自動生成装置５００の構成に加えて、版管理部１０６を備える。
実施の形態３においては、実施の形態１および実施の形態２と異なる部分のみ説明する。
【０１１０】
リポジトリ１０７は、入力部１００に入力された設計情報（ベース情報）が例えばＸＭＬ形式で記述された中間形式情報１１３を最初の中間形式情報１１３として記憶する。更に、リポジトリ１０７は、中間形式反映部１０８により中間形式情報１１３が変更される度に、変更された中間形式情報１１３を変更された順番に対応付けて記憶する。
ここで、中間形式情報１１３が変更された順番は、中間形式情報１１３の版数に対応する。
そして、版管理部１０６は、例えば設計者が画面設計書自動生成装置５００の入力装置を用いて入力した所定の順番（版数）に対応する中間形式情報１１３をリポジトリ１０７から抽出する。ここで、版管理部１０６は、ベース情報抽出部に対応する。
【０１１１】
そして、設計書生成部１０２は、版管理部１０６により抽出された中間形式情報１１３を用いて画面設計書１１２を生成する。
更に、ソースコード生成部１０３は、版管理部１０６により抽出された中間形式情報１１３を用いてソースコード１１０を生成する。
【０１１２】
（実施の形態３の効果）
本実施の形態の画面設計書自動生成装置５００は、中間形式情報１１３を版管理することで、設計者の希望する版の中間形式情報１１３を抽出することが可能となる。そして、本実施の形態の画面設計書自動生成装置５００は、設計者の希望する版の中間形式情報１１３に対応した画面設計書１１２とソースコード１１０とを自動生成することが可能である。
【０１１３】
まとめると、実施の形態３においては、開発者が入力した表示画面（プログラム画面）に関する情報の中間形式情報１１３を版管理する版管理部１０６を備えた画面設計書自動生成装置５００について説明した。
【０１１４】
最後に、実施の形態１〜３に示した画面設計書自動生成装置５００のハードウェア構成例について説明する。
図２４は、本実施の形態に示した画面設計書自動生成装置５００のハードウェア資源の一例を示す図である。
なお、図２４の構成は、あくまでも画面設計書自動生成装置５００のハードウェア構成の一例を示すものであり、画面設計書自動生成装置５００のハードウェア構成は図２４に記載の構成に限らず、他の構成であってもよい。
【０１１５】
図２４において、画面設計書自動生成装置５００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。
ＣＰＵ９１１は、バス９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。
更に、ＣＰＵ９１１は、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）と接続していてもよい。また、磁気ディスク装置９２０の代わりに、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク装置、メモリカード（登録商標）読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
本実施の形態で説明したリポジトリ１０７、ソースコード記憶部１２１は、磁気ディスク装置９２０等により実現される。
通信ボード９１５、キーボード９０２、マウス９０３、ＦＤＤ９０４などは、入力装置の一例である。
本実施の形態で説明した画面設計書自動生成装置５００の入力装置は、例えばキーボード９０２やマウス９０３により実現される。
また、通信ボード９１５、表示装置９０１などは、出力装置の一例である。
本実施の形態で説明した画面設計書自動生成装置５００の表示装置は、例えば表示装置９０１により実現される。
【０１１６】
通信ボード９１５は、ネットワークに接続されている。
例えば、ネットワークは、ＬＡＮ、インターネットの他、ＷＡＮ（ワイドエリアネットワーク）、ＳＡＮ（ストレージエリアネットワーク）などでも構わない。
【０１１７】
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。
プログラム群９２３のプログラムは、ＣＰＵ９１１がオペレーティングシステム９２１、ウィンドウシステム９２２を利用しながら実行する。
【０１１８】
また、ＲＡＭ９１４には、ＣＰＵ９１１に実行させるオペレーティングシステム９２１のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、ＲＡＭ９１４には、ＣＰＵ９１１による処理に必要な各種データが格納される。
【０１１９】
また、ＲＯＭ９１３には、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）プログラムが格納され、磁気ディスク装置９２０にはブートプログラムが格納されている。
画面設計書自動生成装置５００の起動時には、ＲＯＭ９１３のＢＩＯＳプログラム及び磁気ディスク装置９２０のブートプログラムが実行され、ＢＩＯＳプログラム及びブートプログラムによりオペレーティングシステム９２１が起動される。
【０１２０】
上記プログラム群９２３には、本実施の形態の説明において「〜部」（「〜記憶部」以外、以下同様）として説明している機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
【０１２１】
ファイル群９２４には、本実施の形態の説明において、「〜の判断」、「〜の計算」、「〜の比較」、「〜の照合」、「〜の参照」、「〜の検索」、「〜の抽出」、「〜の検査」、「〜の生成」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の入力」、「〜の受信」、「〜の判定」、「〜の定義」、「〜の算出」、「〜の更新」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「ファイル」や「データベース」の各項目として記憶されている。
「ファイル」や「データベース」は、ディスクやメモリなどの記録媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示・制御・判定・識別・検知・判別・選択・算出・導出・更新・生成・取得・通知・指示・判断・区別などのＣＰＵの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示・制御・判定・識別・検知・判別・選択・算出・導出・更新・生成・取得・通知・指示・判断・区別などのＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、本実施の形態で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ等の記録媒体に記録される。
また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【０１２２】
また、本実施の形態の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、本実施の形態で説明したフローチャートに示すステップ、手順、処理により、本発明に係る情報処理方法を実現することができる。
また、「〜部」として説明しているものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。
プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。
すなわち、プログラムは、本実施の形態の「〜部」としてコンピュータを機能させるものである。あるいは、本実施の形態の「〜部」の手順や方法をコンピュータに実行させるものである。
【０１２３】
このように、本実施の形態に示す画面設計書自動生成装置５００は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【０１２４】
１００  入力部、１０１  中間形式変換部、１０２  設計書生成部、１０３  ソースコード生成部、１０６  版管理部、１０７  リポジトリ、１０８  中間形式反映部、１０９  差分抽出部、１１０  ソースコード、１１２  画面設計書、１１３  中間形式情報、１２０  ソースコード編集部、１２１  ソースコード記憶部、１２２  変更情報生成部、５００  画面設計書自動生成装置、９０１  表示装置、９０２  キーボード、９０３  マウス、９０４  ＦＤＤ、９０５  コンパクトディスク装置、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  磁気ディスク装置、９２１  オペレーティングシステム、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群、１１２１  画面一覧、１１２２  画面遷移図、１１２３  画面レイアウト、１１２４  画面入出力項目。
【図１】
2013050868.tif 000003
【図２】
2013050868.tif 000004
【図３】
2013050868.tif 000005
【図４】
2013050868.tif 000006
【図５】
2013050868.tif 000007
【図６】
2013050868.tif 000008
【図７】
2013050868.tif 000009
【図８】
2013050868.tif 000010
【図９】
2013050868.tif 000011
【図１０】
2013050868.tif 000012
【図１１】
2013050868.tif 000013
【図１２】
2013050868.tif 000014
【図１３】
2013050868.tif 000015
【図１４】
2013050868.tif 000016
【図１５】
2013050868.tif 000017
【図１６】
2013050868.tif 000018
【図１７】
2013050868.tif 000019
【図１８】
2013050868.tif 000020
【図１９】
2013050868.tif 000021
【図２０】
2013050868.tif 000022
【図２１】
2013050868.tif 000023
【図２２】
2013050868.tif 000024
【図２３】
2013050868.tif 000025
【図２４】
2013050868.tif 000026