(57)【特許請求の範囲】
【請求項１】
ウィザード画面を定義する複数の定義ユニットのうちの予め定められた定義ユニットに記載されているリード文及び選択肢をウィザードの表示部に表示する選択肢表示手順と、
前記表示部に表示されている選択肢のいずれかが選択されると、前記予め定められた定義ユニットに記載されているコード情報のうちの選択された選択肢に対応するコード情報をコード生成部に通知するコード通知手順と、
を順に有し、
前記コード通知手順において選択された選択肢に対応する遷移情報が前記予め定められた定義ユニットに記載されている場合、前記遷移情報に基づいて定義ユニットを選択し、前記選択肢表示手順及び前記コード通知手順を繰り返すことで前記コード生成部がプログラムコードを生成する、
プログラミング方法。
【請求項２】
前記定義ユニットは、すでに用意された機能の呼び出しを行うプログラムコードの生成を対象とするオブジェクト指向プログラミング言語を用いて記載されていることを特徴とする請求項１に記載のプログラミング方法。
【請求項３】
ウィザード画面を定義する複数の定義ユニットのうちの予め定められた定義ユニットに記載されているリード文及び選択肢をウィザードの表示部に表示し、前記表示部に表示されている選択肢のいずれかが選択されると、前記予め定められた定義ユニットに記載されているコード情報のうちの選択された選択肢に対応するコード情報を出力するウィザード管理部と、
前記ウィザード管理部の出力したコード情報を用いてプログラムコードを生成するコード生成部と、
を備えるプログラミング装置。
【請求項４】
前記定義ユニットは、すでに用意された機能の呼び出しを行うプログラムコードの生成を対象とするオブジェクト指向プログラミング言語を用いて記載されていることを特徴とする請求項３に記載のプログラミング装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はウィザードを利用してプログラミングを行うプログラミング方法及び装置に関する。
【背景技術】
【０００２】
一連の手順に従って手続きを行うソフトウェアの仕組みとしてウィザードが存在する。ウィザードは、ユーザと対話をしながら段階を通して作業を進めるユーザインタフェイスである。ウィザードは分かりやすいインターフェースであるため、ソフトウェアのインストール作業を始めとして、様々な用途で使われている（例えば、非特許文献１参照。）。
【０００３】
ウィザードはプログラミングの補助手段としても使われている。よく使われるプログラミングコードのパターンは雛形化して再利用することでプログラミングを効率化できるため、多くのＲＡＤ（計算機プログラミング環境）には、ウィザードを使って適切な雛形を作成中のコードに挿入する機能が搭載されている。挿入された雛形は、必要に合わせて書き換えることで、所望の機能が実装することができる。
【０００４】
プログラミング言語には様々な種類が存在するが、多くのプログラミング言語でオブジェクト指向が取り入れられている。オブジェクト指向では、プログラミングの操作対象ごとに、その対象を表現するデータとその対象に対する手続きを一つの物（オブジェクト）として管理する。操作対象には、人間が実態を認識する粒度に合わせてオブジェクトを対応させるのが基本であるため、オブジェクト指向プログラミング言語で作成されたコードの動作はより直感的に理解することができる。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】「ＭＦＣによるダイアログベースのアプリケーション（１）」ｈｔｔｐ：／／ｍａｒｉｎａ．ｓｙｓ．ｗａｋａｙａｍａ−ｕ．ａｃ．ｊｐ／〜ｔｏｋｏｉ／？ｄａｔｅ＝２０１００８２０
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来のプログラミング用途のウィザードは、雛形の挿入が目的であり、プログラミングの補助手段にすぎなかった。そのため、雛形挿入のウィザードを利用するにもユーザには高度なプログラミングスキルが必要であり、目的の機能を作り込むにはさらにその雛形を直接編集する必要があった。
【０００７】
また、従来のウィザードは、生成できる雛形コードのバリエーションが限られており、ウィザードを表示する仕組みもＲＡＤに静的に組み込まれていて、挿入できる雛形を差し替えることが難しかった。
【０００８】
このように、従来のプログラミング用のウィザードはプログラミングの補助手段にすぎず、ウィザードを利用しても高度なプログラミングスキルを持たないユーザがプログラミングを行うことは難しかった。
【０００９】
本発明は、プログラミングの知識を持たないユーザがプログラミングを行うことを可能にするプログラミング方法及びプログラミング装置の提供を目的とする。
【課題を解決するための手段】
【００１０】
本発明に係るプログラミング方法は、
ウィザード画面を定義する複数の定義ユニットのうちの予め定められた定義ユニットに記載されているリード文及び選択肢をウィザードの表示部に表示する選択肢表示手順と、
前記表示部に表示されている選択肢のいずれかが選択されると、前記予め定められた定義ユニットに記載されているコード情報のうちの選択された選択肢に対応するコード情報をコード生成部に通知するコード通知手順と、
を順に有し、
前記コード通知手順において選択された選択肢に対応する遷移情報が前記予め定められた定義ユニットに記載されている場合、前記遷移情報に基づいて定義ユニットを選択し、前記選択肢表示手順及び前記コード通知手順を繰り返すことで前記コード生成部がプログラムコードを生成する。
【００１１】
本発明に係るプログラミング方法では、前記定義ユニットは、すでに用意された機能の呼び出しを行うプログラムコードの生成を対象とするオブジェクト指向プログラミング言語を用いて記載されていてもよい。
【００１２】
本発明に係るプログラミング装置は、
ウィザード画面を定義する複数の定義ユニットのうちの予め定められた定義ユニットに記載されているリード文及び選択肢をウィザードの表示部に表示し、前記表示部に表示されている選択肢のいずれかが選択されると、前記予め定められた定義ユニットに記載されているコード情報のうちの選択された選択肢に対応するコード情報を出力するウィザード管理部と、
前記ウィザード管理部の出力したコード情報を用いてプログラムコードを生成するコード生成部と、
を備える。
【００１３】
本発明に係るプログラミング装置では、前記定義ユニットは、すでに用意された機能の呼び出しを行うプログラムコードの生成を対象とするオブジェクト指向プログラミング言語を用いて記載されていてもよい。
【発明の効果】
【００１４】
ユーザは自然言語で構成されたウィザードを利用することで、プログラムコードを直接編集しなくても、プログラムコードの作成が可能となる。そのため、本発明は、プログラミングの知識を持たないユーザであってもプログラミングを行うことができる。
【図面の簡単な説明】
【００１５】
【図１】本発明に係るプログラミング装置の構成の一例を示す。
【図２】ウィザード定義データの一例を示す。
【図３】本発明に係るプログラミング方法の一例を示す。
【図４】コード生成部１３で生成されるプログラムコードの第１例を示す。
【図５】プログラムコードの第１例を生成する際のウィザードの１ページ目の表示例を示す。
【図６】プログラムコードの第１例を生成する際のウィザードの１ページ目の定義ユニットの一例を示す。
【図７】プログラムコードの第１例を生成する際のウィザードの１ページ目終了時におけるプログラムコードの一例を示す。
【図８】プログラムコードの第１例を生成する際のウィザードの２ページ目の表示例を示す。
【図９】プログラムコードの第１例を生成する際のウィザードの２ページ目の定義ユニットの一例を示す。
【図１０】プログラムコードの第１例を生成する際のウィザードの２ページ目終了時におけるプログラムコードの一例を示す。
【図１１】プログラムコードの第１例を生成する際のウィザードの３ページ目の定義ユニットの一例を示す。
【図１２】コード生成部１３で生成されるプログラムコードの第２例を示す。
【図１３】プログラムコードの第２例を生成する際のウィザードの２ページ目の表示例を示す。
【図１４】プログラムコードの第２例を生成する際のウィザードの２ページ目終了時におけるプログラムコードの一例を示す。
【図１５】プログラムコードの第２例を生成する際のウィザードの３ページ目の表示例を示す。
【図１６】プログラムコードの第２例を生成する際のウィザードの３ページ目の定義ユニットの一例を示す。
【図１７】プログラムコードの第２例を生成する際のウィザードの３ページ目終了時におけるプログラムコードの一例を示す。
【図１８】プログラムコードの第２例を生成する際のウィザードの４ページ目の表示例を示す。
【図１９】フラグを用いて選択肢の表示／非表示を制御する場合の定義ユニットの一例を示す。
【図２０】フラグを使った場合のウィザードの１ページ目の表示例を示す。
【図２１】フラグを使った場合のウィザードの２ページ目の表示例を示す。
【図２２】フラグを使った場合のウィザードの３ページ目の表示例を示す。
【発明を実施するための形態】
【００１６】
添付の図面を参照して本発明の実施形態を説明する。以下に説明する実施形態は本発明の実施の例であり、本発明は、以下の実施形態に制限されるものではない。なお、本明細書及び図面において符号が同じ構成要素は、相互に同一のものを示すものとする。
【００１７】
本発明に係るプログラミング方法及び装置は、ウィザードを利用してプログラムコードを生成する。本発明では、ユーザはプログラムコードを直接見たり編集したりする必要はなく、ウィザードのみでプログラミングを行うことができる。
【００１８】
ただし、プログラミングは非常に汎用的な作業であるため、完全に汎用的なプログラミングをウィザードのみで行うことは、現在の技術では困難である。そのため、本発明の適用範囲としては、オブジェクト指向プログラミング言語を用いて、すでに用意された機能の呼び出しを行うプログラムコードの生成を対象とする。この適用範囲には、例えば作業自動化用のマクロなどが当てはまる。作業自動化用のマクロでは、マクロが搭載されたＯＳやアプリケーションの各部品・各機能がオブジェクトとして表現されており、そのオブジェクトのメソッドを呼び出したりプロパティを読み書きしたりすることにより、作業を自動化することができる。
【００１９】
本発明に係るプログラミング装置の構成の一例を図１に示す。本実施形態に係るプログラミング装置９１は、ウィザード管理部１１と、ウィザード表示部１２と、コード生成部１３を備える。プログラミング装置９１は、ウィザードの表示とプログラムコード（マクロ）の生成は、「ウィザード定義データ」の情報をもとに行う。このウィザード定義データは必要に応じて、差し替えを行うことができる。ウィザード定義データはウィザード管理部１１に読み込まれる。ウィザード管理部１１は、ウィザード定義データをもとに、ウィザード表示部１２及びコード生成部１３を制御する。これにより、ウィザードの表示およびマクロの生成が行われる。
【００２０】
ウィザード管理部１１は、ウィザードを構成し、ウィザード表示部１２に表示する。ウィザード管理部１１は、注目すべきオブジェクトの推移にしたがってウィザードを構成する。ウィザードのある段階で注目しているオブジェクト種別を「注目オブジェクト種別」と呼ぶ。ウィザードの初期段階では、どのオブジェクトも存在しないため、注目オブジェクト種別は「無」となる。ウィザードを進めるごとに、注目オブジェクト種別は推移する。ウィザードの各ページでは、ウィザード管理部１１は、注目オブジェクト種別に対応した内容を、ウィザード表示部１２に表示する。
【００２１】
ウィザード表示部１２に表示されたウィザードに基づいてユーザがプログラミング装置９１を操作すると、その結果がウィザード管理部１１に通知される。ここで、ユーザによる操作は、キーボードなどの操作用の構成を用いてもよいし、ウィザード表示部１２を用いてもよい。次に、ウィザード管理部１１はユーザの操作をもとにコード生成部１３に情報を通知する。コード生成部１３は、ウィザード管理部１１からの通知に対応したコードを出力する。その際、ウィザード管理部１１は、注目オブジェクト種別をユーザの操作結果に応じて変更する。
【００２２】
ウィザード定義データは、図２の情報で構成される。ウィザード定義データは、各オブジェクトに対応する定義ユニットの集まりとして構成される。定義ユニットは、オブジェクト指向プログラミング言語の構造に基づいて記載されている。ウィザード管理部１１は、内部で管理される注目オブジェクト種別に対応する定義ユニットを読み込み、その情報をウィザード表示部１２に通知する。
【００２３】
各定義ユニットは、対象オブジェクト情報と、リード文情報と、ヒント情報と、選択肢を含む。注目オブジェクト種別と各定義ユニットの対応関係は、定義ユニット内に定義された「対象オブジェクト」情報を基に行われる。ウィザードの各ページに表示されるリード文は、定義ユニット内に定義された「リード文」情報をもとに表示される。また、この対象オブジェクトに関するより詳細な説明をユーザに与えるため、「ヒント」情報も用意されている。ヒント情報は、例えば、ツールチップなどで表示することができる。
【００２４】
対象オブジェクト情報は、オブジェクトを識別する情報であるが、識別対象は実在のオブジェクトだけでなく、プリミティブ型あってもよいし、仮想的なオブジェクトを表していてもよい。仮想的なオブジェクトを使うメリットのある例としては、文字列オブジェクトが挙げられる。文字列オブジェクトは広く使われるオブジェクトであるが、その中に格納されている文字列の書式（例：日付、ＩＰアドレス、ＵＲＬ、…）によってプログラム上の意味が大きく変わることがある。そのため、同じ文字列であっても、「日付形式の文字列」「ＩＰアドレス形式の文字列」といったように、仮想的なオブジェクトを用意して対応することでより柔軟な対応が可能となる。
【００２５】
定義ユニット内には、ウィザードの各ページに表示される複数の選択肢が定義されている。選択肢内には、「選択肢文」情報、「ヒント」情報、「コード」情報、「変数・引数」情報、「対象オブジェクト遷移」情報、「フラグ」情報、が定義されている。
「選択肢文」情報は、ウィザード上に表示される選択肢の文を表している。
ヒント情報は、その選択肢に関するより詳細な説明をユーザに与えるための情報である。ヒント情報は、例えば、ユーザが選択肢をマウスオーバーした時にツールチップとして表示することができる。
「コード」情報は、該当の選択肢が選択された場合に生成されるコードを定義する。
「変数・引数」情報は、「コード」情報の使用する変数又は引数を定義する。
「対象オブジェクト遷移」情報は、この選択肢が選択された場合に次の注目オブジェクト種別となるオブジェクトの情報が定義される。
「フラグ」情報は、選択肢を細かく制御するための情報が定義される。
【００２６】
「コード」情報内に定義された情報では、変数やコードの動作を変える引数も利用可能である。コード内で使われる変数及び引数は「変数・引数」情報で規定される。変数に関してはその変数が、ウィザードの前段階・後段階とどのように関連するかの情報も含んでいる。前後段階との関係は次の４つの場合が考えられる。
関係１：選択肢内で閉じて利用される変数
関係２：ウィザードの前段階から引き継がれる変数
関係３：ウィザードの後段階へ引き継ぐ変数
関係４：ウィザードの前段階から引き継ぎ、さらに後段階へ引き継ぐ変数
【００２７】
関係１は、コード内で閉じているが、他の段階で使われる変数と名前が衝突しないように管理する必要がある。関係２で代表的なものが、現段階で生成するコードが、前段階（一段階以上前の段階でも構わない）で生成されたコード内でインスタンス化されたオブジェクトを利用する場合である。多くの場合では、新たにインスタンス化されたオブジェクトの種別が次の注目オブジェクト種別となり、そのインスタンスが次段階で生成されるコードで利用されるため、オブジェクトが格納された変数を引き継ぐ必要がある。関係３は、現段階でインスタンス化したオブジェクトを後段階へ引き継ぐように設定する。関係４は関係２及び関係３の複合的状況である。
【００２８】
図３に、本実施形態に係るプログラミング方法の一例を示す。このウィザード定義データは、ウィザード管理部１１で図３のフローによって処理されて、ウィザードの表示とコードの生成が行われる。本実施形態に係るプログラミング方法は、選択肢表示手順と、コード通知手順と、プログラムコード生成手順と、を有する。
【００２９】
選択肢表示手順では、図３に示すステップＳ１０２及びＳ１０３を実行し、ウィザード画面を定義する複数の定義ユニットのうちの予め定められた定義ユニットに記載されているリード文及び選択肢をウィザード表示部１２に表示する。
コード通知手順では、ステップＳ１０４からＳ１０７を実行し、ウィザード表示部１２に表示されている選択肢のいずれかが選択されると、予め定められた定義ユニットに記載されているコード情報のうちの選択された選択肢に対応するコード情報をコード生成部１３に通知する。
【００３０】
コード通知手順において選択された選択肢に対応する遷移情報が予め定められた定義ユニットに記載されている場合、遷移情報に基づいて定義ユニットを選択し、選択肢表示手順及びコード通知手順を繰り返す。
ステップＳ１０５においてＹｅｓとなったときに、プログラムコード生成手順を実行する。プログラムコード生成手順では、コード生成部１３がプログラムコードを生成する。
【００３１】
ステップＳ１０１：ウィザード管理部１１は、注目オブジェクト種別を「無」に設定する。
ステップＳ１０２：ウィザード管理部１１は、設定された注目オブジェクト種別に対応した定義ユニットをウィザード定義データから取得する。
ステップＳ１０３：ウィザード管理部１１は、ウィザード定義データから取得した情報をウィザード表示部１２に表示する。
ステップＳ１０４：ウィザード管理部１１は、ユーザの操作を待つ。ユーザが「終了」の操作を行った場合（ステップＳ１０５においてＹｅｓ）、ウィザード管理部１１は、ウィザードによるプログラミングを終了する。ユーザが「終了」ではないいずれかの選択肢を選択した場合（ステップＳ１０５においてＮｏ）、ステップＳ１０６に移行する。
ステップＳ１０６：ウィザード管理部１１は、選択肢に含まれる変数、引数及びフラグの処理を行う。
ステップＳ１０７：ウィザード管理部１１は、ステップＳ１０６で処理した変数、引数及びフラグの情報と共にコード情報を、コード生成部１３に通知する。
ステップＳ１０８：ウィザード管理部１１は、選択肢の「対象オブジェクト遷移」情報に基づいて、次の対象オブジェクト遷移が設定されているか否かを判定する。設定されていればステップＳ１０９へ移行し、設定されていなければステップＳ１０２へ移行する。
ステップＳ１０９：ウィザード管理部１１は、ステップＳ１０８で設定された対象オブジェクトに従って、注目オブジェクト種別を設定する。
【００３２】
具体的な例として、図４のＯＳをシャットダウンする仮想マクロの生成過程を考える。図４のマクロは、まず１行目で変数「ｃｏｎｔｒｏｌｌｅｒ」を宣言し、２行目でオブジェクト「ＳｙｓｔｅｍＣｏｎｔｒｏｌｌｅｒ」をインスタンス化し、変数「ｃｏｎｔｒｏｌｌｅｒ」に代入している。３行目では、変数「ｃｏｎｔｒｏｌｌｅｒ」に代入されたオブジェクトの「ｓｈｕｔｄｏｗｎ」メソッドを呼び出している。
【００３３】
このマクロを本発明により生成する場合は、例えば、次のようになる。図５が、ステップＳ１０３でウィザード表示部１２に表示されるウィザードの１ページ目である。ウィザードの１ページ目には、「何をしますか？」というリード文と、「システムのコントロールを行う」、「時刻を取得する」及び「ファイルを操作する」という選択肢と、決定ボタンと、終了ボタンと、が表示されている。
【００３４】
図５では、現在注目オブジェクト種別は「無」のため、現在注目オブジェクト種別が「無」の場合の対象オブジェクトの定義ユニットに従って、ウィザードが表示される。図５のページは、ウィザード定義データ内の、ステップＳ１０２においてウィザード管理部１１が取得した「対象オブジェクト情報」が「無」である定義ユニット情報に基づき生成される。「対象オブジェクト：無」に該当する定義ユニット情報の例が図６である。ただし、図６ではヒント情報は省略している。定義ユニット内の「リード文」情報と「選択肢文」情報が、ウィザードのページに表示される。
【００３５】
ステップＳ１０４において図５に示す選択肢「システムのコントロールを行う」をユーザが選択して決定ボタンを押下した場合、ステップＳ１０７を実行し、コード生成部１３が図７の途中段階のマクロを生成する。図７のマクロは、基本的に図６選択肢１の「コード」情報が出力されたものであるが、変数については置き換え処理が行われている。選択肢１の「変数・引数」情報から、「ｖａｒ１」という参照名の変数がコード内で利用されていることがわかる。この変数がコード上で利用されている位置は、「コード」情報内では「＄ｖａｒ１＄」と表現されている。ステップＳ１０６において、ウィザード管理部１１は参照名「ｖａｒ１」の変数に対応する実際の変数名を決定し、コード上の「＄ｖａｒ１＄」と置き換えを行う。図７の例では、「＄ｖａｒ１＄」が「ｃｏｎｔｒｏｌｌｅｒ」に置き換えられている。ウィザード管理部１１は変数名が衝突するような場合（既に変数「ｃｏｎｔｒｏｌｌｅｒ」が使われている場合）は、衝突しないように変数名（例えば、「ｃｏｎｔｒｏｌｌｅｒ１」）を決定する。
【００３６】
さらに、ユーザがウィザードを進める（各ページで決定ボタンを押す）と、ステップＳ１０８を実行し、ウィザード管理部１１は、管理している注目オブジェクト種別を、ユーザの選択した選択肢に対応する「対象オブジェクト遷移」情報に基づいて変更する。図５の場合、ウィザード管理部１１は、注目オブジェクト種別を、図６に示す選択肢１の「対象オブジェクト遷移」情報に指定された「ＳｙｓｔｅｍＣｏｎｔｒｏｌｌｅｒ」に変更する。この注目オブジェクト種別のインスタンスは、図６に記載された変数名「ｃｏｎｔｒｏｌｌｅｒ」の変数に格納されている。この場合、変数名「ｃｏｎｔｒｏｌｌｅｒ」は「変数・引数」情報の定義に従い次段階に引き継がれる。
【００３７】
２ページ目として図８が表示される。図８は、ウィザード定義データ内のオブジェクト種別「ＳｙｓｔｅｍＣｏｎｔｒｏｌｌｅｒ」に対応する定義ユニットの情報により表示される。ウィザードの２ページ目には、「システムに対して何をしますか？」というリード文と、「コマンドを実行する」、「シャットダウンする」、「再起動する」及び「スリープさせる」という選択肢と、決定ボタンと、終了ボタンと、が表示されている。
【００３８】
図８に対応する定義ユニットの例が図９である。オブジェクト種別が「ＳｙｓｔｅｍＣｏｎｔｒｏｌｌｅｒ」である定義ユニットは、「対象オブジェクト」情報と、「リード文」情報と、各選択肢の情報を含む。図９では、「再起動する」及び「スリープさせる」という選択肢の内容を省略してある。
【００３９】
図８に示すウィザードの２ページ目において、ユーザは「シャットダウンする」を選択し、決定ボタンを押下したとする。そうすると、コード生成部１３の生成するマクロの途中段階は図１０の状態になる。図１０のマクロは、図７のマクロに図９の選択肢２の「コード」情報が転記されたものである。ただし、「コード」情報内の「＄ｖａｒ１＄」の部分が「ｃｏｎｔｒｏｌｌｅｒ」に置き換えられている。これは、選択肢２の「変数・引数」情報とウィザード管理部１１が保持した変数情報をもとに置き換えが行われる。選択肢２の「変数・引数」情報にはコード情報内で「＄ｖａｒ１＄」が使われており、この変数が前段階から対象オブジェクトのインスタンスを引き継いでいる変数であることがわかる。ウィザード管理部１１には、注目オブジェクト種別「ＳｙｓｔｅｍＣｏｎｔｒｏｌｌｅｒ」のインスタンスを格納している変数として「ｃｏｎｔｒｏｌｌｅｒ」が設定されているので、「＄ｖａｒ１＄」は「ｃｏｎｔｒｏｌｌｅｒ」に置き換えられる。
【００４０】
図９の選択肢２には「対象オブジェクト遷移」情報は格納されていない。この場合、図８で選択肢２を選択した場合には、追記されたコードで新たなオブジェクトのインスタンス化は行われないため、ステップＳ１０９を行わず、注目オブジェクト種別は遷移せず、変数名「ｃｏｎｔｒｏｌｌｅｒ」もそのまま次段階に引き継がれる。
【００４１】
３ページ目として図１１が表示される。図１１の表示内容は、それが３ページ目であることを除いて、図８と全く同じである。これは、２ページ目から３ページ目で、注目オブジェクト種別が変化していないからである。図１１の段階で、システムをシャットダウンするという目的は達成されているため、このページでユーザは終了ボタンを押下して、ウィザードを終了させる。
【００４２】
次の具体的なマクロの生成例として、図１２のマクロの生成過程を考える。図１２のマクロは“ｄｉｒ  ．”コマンドを実行して、その結果をメッセージボックスで表示させている（ＭｓｇＢｏｘ関数は引数に指定された内容をメッセージボックスで表示させる関数とする）。
【００４３】
この例では、１ページ目は前述の例と全く同じであり、図５に示すウィザードの１ページにおいてユーザは「システムのコントロールを行う」を選択し、図７の途中段階のマクロをコード生成部１３が生成した状態から考える。
【００４４】
２ページ目の表示が図１３である。図１３は、選択肢の表示は図８と同じであるが、ユーザが「コマンドを実行する」の選択肢を選択することで、引数入力用のテキストボックスが表示された状態になっている。この引数の情報は、図９選択肢１の「変数・引数」情報に定義されている。「変数・引数」情報には、コード内に「＄ｐａｒａ１＄」という引数が埋め込まれており、この引数は「実行コマンド」という名前が付けられた文字列であることが定義されている。この情報に従い、図１３では引数入力用のテキストボックスが表示され、「実行コマンド」というラベルが付与されている。
【００４５】
図１３で、さらにユーザがテキストボックスに“ｄｉｒ  ．”を入力して決定ボタンを押下すると、マクロは図１４の途中段階となる。図１４のコードは、図７に、図９選択肢１の「コード」情報をもとに、「変数・引数」情報の内容に従って変数及び引数を置き換えた内容が追記されている。変数・引数は、コード内に「＄ｖａｒ１＄」「＄ｐａｒａ１＄」「＄ｖａｒ２＄」が使われている。「＄ｖａｒ１＄」は注目オブジェクト種別に対応するインスタンスが格納された変数なので、前段階から引き継がれた「ｃｏｎｔｒｏｌｌｅｒ」が置き換えられる。「＄ｐａｒａ１＄」は、ウィザード画面上でユーザがテキストボックスに入力した文字列に置き換えられる。「＄ｖａｒ２＄」はこの段階から新たに使われる変数なので、変数名が「ｒｅｔｓｔｒ」と決定されて置き換えられる。
【００４６】
図１３に示すウィザードの２ページ目で選択肢１を選んで引数を入力し決定ボタンを押下すると、注目オブジェクト種別は「Ｓｔｒｉｎｇ」に変化する。この遷移は、図９選択肢１の「対象オブジェクト遷移」情報に定義されている。「Ｓｔｒｉｎｇ」に対応するインスタンスは変数「＄ｖａｒ２＄（ｒｅｔｓｔｒ）」に格納されているので、ウィザード管理部１１は変数名「ｒｅｔｓｔｒ」を次段階に引き継ぐために記憶する。
【００４７】
ウィザードの３ページ目として、ウィザード表示部１２は、図１５の画面を表示する。図１５の画面は、ウィザード定義データ内のオブジェクト種別「Ｓｔｒｉｎｇ」に対応する定義ユニット（図１６）の情報をもとに表示される。図１６は、選択肢１以外は表示を省略してある。図１５の画面でユーザが最初の選択肢１「表示する（メッセージボックス）」を選択し決定ボタンを押下すると、コード生成部１３は、図１７のようにメッセージを表示するコードをマクロに追記する。選択肢１の「対象オブジェクト遷移」情報には遷移情報が設定されていないため、注目オブジェクト種別の設定（Ｓ１０９）を行うことなく、ステップＳ１０２へ移行する。
【００４８】
ウィザードの４ページ目として、ウィザード表示部１２は、図１８の画面を表示する。３ページ目から４ページ目で注目オブジェクト種別は遷移しないので、図１５の表示内容と図１８の表示内容は同じとなる。図１８では、ユーザは終了ボタンを押下してウィザードを終了する。
【００４９】
以上の２つの例では、注目オブジェクト種別は常に「無」か１つだけが設定されていたが、注目オブジェクト種別に複数のオブジェクトが設定されていてもよい。その場合は、定義ユニット内の「対象オブジェクト」情報や「対象オブジェクト遷移」情報にも複数のオブジェクトが定義される。つまり、ウィザード管理部１１内の注目オブジェクト種別に、オブジェクトＡとオブジェクトＢが設定されている場合は、「対象オブジェクト種別」情報にオブジェクトＡとオブジェクトＢが定義されている定義ユニットによって、ウィザードのページが表示される。また、注目オブジェクト種別が複数設定されている場合は、それぞれのオブジェクトのインスタンスを格納した変数も複数引き継がれる。
【００５０】
以上の例では定義ユニット内に定義された選択肢は常に全て表示されていたが、「フラグ」情報を使って選択肢の表示／非表示を制御することも可能である。「フラグ」情報は、次の条件の組み合わせにより選択肢の表示／非表示が指定される。
−特定のフラグが立っていれば該当の選択肢を表示する
−特定のフラグが立っていなければ該当の選択肢を表示する
【００５１】
これらの条件は、ＡＮＤやＯＲで組み合わされていてもよい。さらに、「フラグ」情報には、下記の、選択肢を選択したときにフラグを立てたり倒したりする設定も含まれている。
−該当の選択肢が選択された場合は特定のフラグを立てる
−該当の選択肢が選択された場合は特定のフラグを倒す
【００５２】
フラグを用いて選択肢の表示／非表示を制御する例として、可視化／不可視化の制御が可能なアプリケーション（ＳａｍｐｌｅＡｐｐｌｉｃａｔｉｏｎ）を考える。このアプリケーションの制御では、「アプリケーションを可視化する」という選択肢と、「アプリケーションを不可視化する」という選択肢は排他的に表示した方が分かりやすい。しかし、どちらの選択肢も同じオブジェクトに対する操作であるため、同じ定義ユニット内に含まれることになる。このような場合は、「フラグ」情報を用いて制御可能である。図１９は、「ＳａｍｐｌｅＡｐｐｌｉｃａｔｉｏｎ」オブジェクトに対する、「アプリケーションを可視化する」と「アプリケーションを不可視化する」の選択肢を排他的に表示する定義ユニットの例である。図１９では、「ＳａｍｐｌｅＡｐｐｌｉｃａｔｉｏｎ」は起動直後には不可視状態になっていることを前提としている。
【００５３】
フラグを使った場合のウィザードのページ遷移は次のようになる。
１ページ目（図２０）の画面で「サンプルアプリケーションを起動する」を選択すると、サンプルアプリケーションを起動させるコードがマクロに追記され、注目オブジェクト種別が「ＳａｍｐｌｅＡｐｐｌｉｃａｔｉｏｎ」に設定される。このとき、「ＳａｍｐｌｅＡｐｐｌｉｃａｔｉｏｎ」のインスタンスが格納される変数の変数名も引き継がれている。
【００５４】
２ページ目（図２１）は、図１９の定義ユニットによりページが表示される。２ページ目では、「ＳａｍｐｌｅＡｐｐＶｉｓｉｂｌｅ」フラグは立っていないので、「不可視化する」の選択肢は表示されない。２ページ目でユーザが「可視化する」の選択肢を選択し決定ボタンを押下した場合は、サンプルアプリケーションを可視化するコードがマクロに追記される。この選択の場合、ウィザード管理部１１内では、注目オブジェクト種別は遷移しないが、「ＳａｍｐｌｅＡｐｐＶｉｓｉｂｌｅ」フラグが立てられる。
【００５５】
注目オブジェクト種別は遷移しないため、３ページ目（図２２）も図１９の定義ユニットによりページが表示される。しかし、３ページ目では、「ＳａｍｐｌｅＡｐｐＶｉｓｉｂｌｅ」フラグが立っているため、「可視化する」が非表示となり、「不可視化する」が表示される。
【００５６】
本実施形態では、オブジェクト指向プログラミング言語の構造に基づいて記載されている例について説明したが、これに限定されない。本発明は、オブジェクト指向を含まない手続き型プログラミング言語にも適用可能である。また、オブジェクト指向プログラミング言語を利用する場合でも、オブジェクトを使わないコードは記述可能であり、同様に適用可能である。
【００５７】
プログラムコードにおいて、ある処理から次の処理への情報の引き継ぎは、オブジェクト指向の場合はオブジェクトにより引き継がれ、非オブジェクト指向の場合は一つまたは複数の基本的な値の組み合わせによって引き継がれる。例えば、ファイルを開いてから読み書きを行う処理を想定すると、開いたファイルはオブジェクト指向ではファイルオブジェクトにより管理されるが、非オブジェクト指向言語ではファイル記述子と呼ばれる整数により管理される。
【００５８】
非オブジェクト指向言語に対して本発明を適用する場合は、プログラムコードの各状態に合わせて仮想的なオブジェクトを設定し、その状態を表現する値が格納された変数の組を引き継ぐように設定すればよい。例えば、ファイルの例では、ファイルを開く処理によって仮想的なファイルオブジェクト（例：ＯｐｅｎｄＦｉｌｅ）が生成されたと考え、この仮想オブジェクトを「対象オブジェクト遷移」情報に設定し、ファイル記述子が格納された整数変数を引き継ぐように設定する。読み書き側の処理では、「対象オブジェクト」情報にこの仮想オブジェクトを設定し、引き継いだ整数変数の値を使って読み書きの処理を記述すればよい。
【産業上の利用可能性】
【００５９】
本発明は情報通信産業に適用することができる。
【符号の説明】
【００６０】
１１：ウェザード管理部
１２：ウィザード表示部
１３：コード生成部
９１：プログラミング装置
【図１】
0005856104.tif 000002
【図２】
0005856104.tif 000003
【図３】
0005856104.tif 000004
【図４】
0005856104.tif 000005
【図５】
0005856104.tif 000006
【図６】
0005856104.tif 000007
【図７】
0005856104.tif 000008
【図８】
0005856104.tif 000009
【図９】
0005856104.tif 000010
【図１０】
0005856104.tif 000011
【図１１】
0005856104.tif 000012
【図１２】
0005856104.tif 000013
【図１３】
0005856104.tif 000014
【図１４】
0005856104.tif 000015
【図１５】
0005856104.tif 000016
【図１６】
0005856104.tif 000017
【図１７】
0005856104.tif 000018
【図１８】
0005856104.tif 000019
【図１９】
0005856104.tif 000020
【図２０】
0005856104.tif 000021
【図２１】
0005856104.tif 000022
【図２２】
0005856104.tif 000023