(57)【要約】【課題】コメント挿入やレビューが困難であったコード自動生成型のシステム開発環境において、これらを容易にする。開発プロセスそのもの（入力系列）を事後的に参照・把握・編集しながら何度でもチューニングして再構築（インストール）しなおすことを可能とする。【解決手段】システム開発環境等へのすべての入力系列を、特に入力時刻とともに記録するコンピュータプログラムを提供する。また、入力系列の所定の単位ごとに、その入力単位の目的、機能ないしは注意点等のコメントを入力する機会を自動的に与えることができ、かつ、関連づけて記憶することができる。また、そのコメントを、自動生成コードに自動挿入するようにする。記録した入力系列をエクスポートしてカスタマイズし、同様の開発環境に入力しなおすことにより、別のハードウエアに類似のシステムをインストールないし構築することができる。縮約した入力系列を適用した効率化も可能である。【選択図】図１
2006004034.tif 000002
【特許請求の範囲】
【請求項１】
所定のシステムへのすべての入力系列を記録するコンピュータプログラム。
【請求項２】
前記システムの全部又は一部が、システム開発ツールであることを特徴とする、請求項１に記載のコンピュータプログラム。
【請求項３】
前記システム開発ツールが、コンピュータ画面へのコントロールボタン配置やデータベースオブジェクトの関連づけ等、手続き型言語以外のシステム要素の開発工程を対象としていることを特徴とする、請求項２に記載のコンピュータプログラム。
【請求項４】
前記システム開発ツールにおいて、前記手続き型言語以外のシステム要素が、関連する手続き型言語を自動生成することを特徴とする、請求項３に記載のコンピュータプログラム。
【請求項５】
前記入力系列の所定の単位ごとに、該入力単位の入力経路に関連づけられた個々の開発者等のエンティティに、該入力単位の入力目的、機能ないしは注意点等のコメントを入力する機会を与えることを特徴とする、請求項１又は２に記載のコンピュータプログラム。
【請求項６】
前記コメントを入力する機会を、ポップアップダイアログ等の画面表示、音声プロンプトないし光プロンプトによって、前記エンティティに自動的に与えることを特徴とする、請求項５に記載のコンピュータプログラム。
【請求項７】
前記記録した入力系列の所定の単位と、対応する前記コメントとを、関連づけて記憶する、請求項５又は６に記載のコンピュータプログラム。
【請求項８】
前記記録した入力系列の所定の各単位に対応するシステム要素の配置や関連づけに起因する手続き型言語の自動生成において、前記コメントを該手続き型言語のコメント文として自動挿入する、請求項５から７のいずれか一項に記載のコンピュータプログラム。
【請求項９】
前記記録した入力系列を、記録した順序で、前記システム開発ツールまたは該基盤となっているシステム全体に、キーボード入力、マウス入力ないしはファイルコピー等の通常の入力として、自動入力する、請求項１から８のいずれか一項に記載のコンピュータプログラム。
【請求項１０】
前記記録した入力系列およびコメントの系列を、前記入力単位と該入力単位に関連づけて記憶されたコメントとからなる組を単位として編集する、請求項５から８のいずれか一項に記載のコンピュータプログラム。
【請求項１１】
システムを開発する方法であって、システム開発ツールへの入力（ないしコピー）内容を該入力内容の時間的入力順序を演繹できる情報である順序情報と関連づけながら記録するステップと、該記録した入力内容および順序情報にしたがってコンピュータに同様のシステムを自動的に構築させるステップと、を含むシステム開発方法。
【請求項１２】
前記入力内容と順序情報とから、システムを構成するファイル集合等の、複数の入力内容を入力した後のシステム状態を推論して、ディスク等への出力回数の節約を行う、請求項１１に記載のシステム開発方法。
【請求項１３】
前記記録するステップ後に、さらに、前の入力系列（入力内容と入力順序の組み合わせ）の影響を消去する入力系列と当該前の入力系列とからなる連続的又は離散的な入力系列の記録を削除するステップをさらに含む、請求項１１に記載のシステム開発方法。
【請求項１４】
前記記録するステップ後に、さらに、顧客情報やシステム要件に応じて、入力系列（入力内容と入力順序の組み合わせ）の記録をカスタマイズないし編集するステップをさらに含む、請求項１１から１３のいずれか一項に記載のシステム開発方法。
【請求項１５】
開発ツールへの入力内容と、入力の少なくとも順序を演繹できる順序情報とを関連づけて記憶させた記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータプログラムやデジタルコンテンツ等を開発するためのシステム開発ツールに関する。また、かかるシステム開発ツールを構成するコンピュータプログラム、かかるシステム開発ツールを用いたシステム開発方法、および、かかるツール、プログラム、方法により作成された記憶媒体に関する。
【背景技術】
【０００２】
システム開発はますます複雑化しており、成果物のファイルやバージョンを管理するだけではメンテナンスが難しくなってきている。特に、VisualBasic（登録商標）に代表されるＧＵＩ開発環境では、画面設計に応じて手続き型プログラム言語のコードが自動で生成されており、従来からおこなわれた、冗長を許す手続き型言語のプログラムコードにコメントを埋め込むこと等が現実的でなくなったため、特に手続きによって表現されてきた処理ロジックの設計思想や設計後のデバッグないし改変の経緯等を記録したりトレースしたりすることがますます困難になりつつある。
【０００３】
またそもそもＣ言語など従来の手続き型言語のプログラミングにおいても、コーディングの入力順序を細かくトレースすることは行われておらず、熟練者の詳細なコーディング過程を参考にしたプログラミング教育やそれによるセミオーダーメード事業の水平展開は行われていなかった。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は、「プログラム＝成果物（静的実体）」という従来の概念から、「プログラム＝開発過程（動的実体）」という発想の転換を図ることにより、上記の問題を解決することを目的とする。
【課題を解決するための手段】
【０００５】
本発明は、かかる課題を解決するため、所定のシステムへのすべての入力系列を記録するコンピュータプログラム、を提供する。
これにより、システム開発に必要な入力をもれなく監視し、各開発工程における開発者の意図を任意のタイミングで記録することが可能となる。
これは、例えば、入力制御や通信制御における、すべての外部入力関係割込ハンドラーを本発明の入力検出用に独自に定義してそのルーチンの冒頭などで元あった割込ハンドラーを呼び出すようにする（いわゆる「フック」する）ことによって実現できる。また、マルチウィンドウ系のＯＳでは開発ツールへの入力メッセージ（イベント）キューなど、よりアプリケーションに近いバッファ等を監視するようにすることによって実現することもできる。
【０００６】
有利には、前記システムの全部又は一部が、システム開発ツールである。
これにより、システム開発ツールへの入力のみをもれなく監視することになり、監視のコストを節約することができる。
たとえば、システム開発ツールに対応するウィンドウに対するイベントのみをイベントキュー上で監視し、記録することにより実現することができる。
【０００７】
また、有利には、前記システム開発ツールが、コンピュータ画面へのコントロールボタン配置やデータベースオブジェクトの関連づけ等、手続き型言語以外のシステム要素の開発工程を対象としている。
これにより、手続き型言語以外のシステム要素の開発では十分に保証されなかった、（要素および要素間の設計思想、目的、留意点などを記載する）コメントの、自然なタイミングおよび自由なスコープでの（システム要素の括りを指定した）挿入が可能になる。
オブジェクトの配置操作の情報は、システム開発ツールが操作記録用のコードを出力するようにしてそれを記録してもよく、また、なんらかの入力があったときに元のリソースファイルの内容と入力後のリソースファイルの内容との差異を（ｄｉｆｆアルゴリズムなどにより）特定してその差異のみを記録するようにしてもよい。
【０００８】
また、有利には、前記システム開発ツールにおいて、前記手続き型言語以外のシステム要素が、関連する手続き型言語を自動生成している。
これにより、手続き型言語に許される冗長性により可能となっている行間へのコメントの挿入が（非手続き型）システム要素の編集ごとにクリアされてしまいやすい（手続き型言語）自動生成環境においても、特に一元的に、コメント等が挿入・管理できるようになり、システムの保守性が向上する。
なお、コードの自動生成自体は公知技術でありここでは詳述しない。
【０００９】
すなわち、また、本発明のコンピュータプログラムは、前記入力系列の所定の単位ごとに、該入力単位の入力経路に関連づけられた個々の開発者等のエンティティに、該入力単位の入力目的、機能ないしは注意点等のコメントを入力する機会を与えることができる。
これにより、モジュールや関数やステップの入力ないしボタンの追加など、所定の入力単位ごとに区別されかつ各単位に（後の編集などにおいても随伴性があるように）関連づけられたコメントを付することが容易となる。
たとえば、開発環境の操作メニューにおけるボタン等追加コマンドなど、あらかじめ予約されたコマンドの処理後に、コメント入力プロンプトを自動でプッシュしたりその後のＥＳＣボタンの押し下げを待ってコメント入力プロンプトを表示したりするようにプログラムすることができ、その上で、直前の処理とそのコメント入力結果と現在時刻等とを関連づけてメモリに記憶するようにプログラムすることにより実現できる。
【００１０】
すなわち、また、本発明のコンピュータプログラムでは、前記コメントを入力する機会を、ポップアップダイアログ等の画面表示、音声プロンプトないし光プロンプトによって、前記エンティティに自動的に与えることができる。
これにより、開発者の操作を簡略化し、かつ、コメントの挿入の必要を思い出させたりある程度強制させることが可能となり、初心者のプログラマーの操作を容易にトレースしたり順序指導したりすることも可能となる。
実現手段としては、先に示した予約語を用いるほか、例えば、入力内容を形態素解析、構文解析ないし意味解析したりすることにより、プロンプトするタイミングや結果コメントを関連づける入力内容の対象スコープを決定することができる。
なお、モジュールや大きな処理単位のコメントはモジュールや処理単位の先頭に書くのが普通であり、変数のインクリメントなど小さな処理単位のコメントは処理単位の直後に書くのが普通であり、本発明においてプロンプトを自動的に与えるタイミングおよび後述するコメント自動挿入の位置も、明らかに、この慣習に合わせるようプログラムすることができる。
【００１１】
すなわち、また、本発明のコンピュータプログラムは、前記記録した入力系列の所定の単位と、対応する前記コメントとを、関連づけて記憶することができる。
これにより、同様の開発環境があれば、システム開発における各入力の理由等を参照しながら、同一のシステムを別のハードウエア上に、自動又は半自動で容易に再現することができる。また、カスタマイズ等する際には、コメントを参照して入力系列そのものに必要な改変を施すことが可能になる。なお、いったん同様のシステムを別のハードウエアに導入してしまえば、開発環境および当該関連づけて記憶した入力系列とコメント自体は、そのハードウエアには不必要になり、従来のインストールと同様に記憶を節約できることは明らかである。
記憶すること自体は、公知技術により、当該ハードウエア（ないし遠隔のハードウエア上）のＲＡＭやＨＤＤに、ＲＤＢ形式（その他、ネスト形式（コメントの対象スコープがネストする場合）やＣＳＶ形式（コメントの対象スコープがネストしない場合））等で容易に記憶することができる。
【００１２】
また、本発明のコンピュータプログラムは、前記記録した入力系列の所定の各単位に対応するシステム要素の配置や関連づけに起因する手続き型言語の自動生成において、前記コメントを該手続き型言語のコメント文として自動挿入する、ことができる。
これにより、いったん自動挿入した後は、本発明で入力された「コメント」を、本発明が適用されない（開発）環境（本来はコメントの随伴性の保証が難しい）にもエクスポートすることが可能となる。
実現手段としては、例えば、記録された入力（たとえばボタンの追加）に対応する手続き型言語コード（Ｃ＋＋等）を自動生成する直前に、その「生成する箇所」に、前記関連づけて記録したコメントを「／／」などをつけて挿入するようにすればよい。
【００１３】
すなわち、また、本発明のコンピュータプログラムは、前記記録した入力系列を、記録した順序で、前記システム開発ツールまたは該基盤となっているシステム全体に、キーボード入力、マウス入力ないしはファイルコピー等の通常の入力として、自動入力する、ことができる。
これにより、当初開発したとは別のハードウエア上に当初開発したと同様の（ＯＳの設定、ファイル構成等も含む広い意味での）開発環境およびシステム（ないしは半製品）を構築することができる。
これは、例えば、前記フックした割り込みのハンドラーないしはイベントキューに、当該記録した入力系列を順序どおりに入力していくルーチンをプログラムすることにより実現することができる。又、ファイルコピー等（ｆｔｐ等も含みうる）に関しては、これらの入力とシェルコマンドとを協働させることにより再現することができる。
【００１４】
また、本発明のコンピュータプログラムは、前記記録した入力系列およびコメントの系列を、前記入力単位と該入力単位に関連づけて記憶されたコメントとからなる組を単位として編集することができる。
これにより、適切な単位で、上記インストールスクリプトないしレビュー対象としての入力系列を改良したり、カスタマイズしたり、その他のシステム要件にあわせて改変したりすることができる。
このような組を単位とした編集は、テキストエディタやアイディアプロセッサないしはマルチメディアオーサリングツールに関する公知の技術を用いることにより容易に実現することができる。
【００１５】
本発明はまた、システムを開発する方法であって、システム開発ツールへの入力（ないしコピー）内容を該入力内容の時間的入力順序を演繹できる情報である順序情報と関連づけながら記録するステップと、該記録した入力内容および順序情報にしたがってコンピュータに同様のシステムを自動的に構築させるステップと、を含むシステム開発方法を提供する。
これにより、開発環境全体（ツール、半製品、設定など）を手軽にエクスポートすることができる。また、（適当ディレイなどをいれて）スロー構築することにより、開発の過程（特に順序）を、当初開発者以外が、容易に理解することができる。また、上記のコメントとも関連づけて記憶し、再生時にこのコメントを表示ないし音声出力等することにより、さらに開発過程の理解が深まる。また、開発プロセスの評価や検査や基準化が容易となる。また、インストールスクリプトの手作業開発コストを削減できる。
【００１６】
また、本発明のシステム開発方法は、有利には、前記入力内容と順序情報とから、システムを構成するファイル集合等の、複数の入力内容を入力した後のシステム状態を推論して、ディスク等への出力回数の節約を行う、ことができる。
これにより、インストール時間を短くすることができ、当初の入力系列と比較することにより開発過程の冗長部分を解析すること等も容易になる。
【００１７】
実現手法については、実施例にふれた図５に関して後述するが、たとえば、前記記録するステップ後に、さらに、前の入力系列（入力内容と入力順序の組み合わせ）の影響を消去する入力系列と当該前の入力系列とからなる連続的又は離散的な入力系列の記録を削除するステップをさらに用意することができる。
これにより、開発過程でおきた一般的なミスなどが後のインストールプロセスやレビューに反映されないようにすることができる。
【００１８】
すなわち、また、本発明のシステム開発方法では、前記記録するステップ後に、さらに、顧客情報やシステム要件に応じて、入力系列（入力内容と入力順序の組み合わせ）の記録をカスタマイズ編集するステップをさらに含むことができる。
これにより、アプリケーションシステム等のカスタマイズ作業を効率化することができる。すなわち、設計思想を抽出しにくい（特に自動生成環境では抽出しにくい）ソースコード自体から改変が必要な箇所を動的に解析・抽出・改変（パッチあてなど）するのではなく、設計思想が反映されやすい動的な元の開発プロセス（入力系列）の全体を静的にすなわち一体として（しかも本発明による十分なコメントを伴って）把握しながら、これを（あるいは設計思想ごと）改変した上で、（カスタマイズされた新たな設計思想をもともなった）開発プロセス（入力系列）の全体として完結して（元の設計思想を別途参照したり推論したりする必要なく）レビュー、デバッグないし（アプリケーションとしての）一貫性の検証等をすることができる。
例えば、従来は、カスタマイズ用に「（１）ダイアログの表題を顧客Ｘから顧客Ｙにかえる、（２）顧客製品データベースを差し替える」といった項目が、ソースコードの解析、抽出によって得られ、そのための改変パッチを新たに定義したり、手作業でソースコードを書き換えたりした上で、元の設計書やソースコードなどと見比べてレビューをおこなっていた。
一方、本発明による方法を用いれば、オリジナル開発プロセスの「（１）第１２０５ステップにおいて顧客名をＸからＹに変える。（２）第１５２８ステップにおいて顧客製品データベースの初期ファイルは、ftp ftp.x.co.jpではなく、ftp fileserver.y.comによって取得する」という「入力系列記録の」改変項目を抽出し、「入力系列記録」を実際にそのように改変すれば、カスタマイズが完了し、以後は「改変された入力系列記録」１つのみに閉じたレビューを行えばすむ。
入力系列の記録（設計思想も含みうる）をテキストファイル（なお、必要に応じてＢａｓｅ６４コードなども用いることができる）で表現したときは、このカスタマイズ編集をテキストエディタのみで行うことができる。入力系列の記録を、スコープなどネスト構造も明記して管理したときは、それに応じたツリーエディタ等によりやはり設計思想ごと一括してカスタマイズすることが可能である。
「完結」していること（例えば一つのファイルで設計思想も含めた全体が表現されること）により、保守性・管理性が大幅に改善され、しかもその中の情報が「順序」をともなった（別の見方をすれば（自動生成でないソースコードと同様に）あえて順序（ストーリー、モジュラリティ（結束性）、ないし詳細なコメントや編集タイムスタンプ）を定義できる）情報であるため、人間の開発者による可読性の向上の他、勘違いによるバグの位置および影響を順序情報をもとに追跡したり、設計思想との矛盾を発見したり（編集タイムスタンプを記録した場合にはさらに個々の開発期間を割り出したり）することも容易となる。
【００１９】
本発明はまた、開発ツールへの入力内容と、入力の少なくとも順序を演繹できる順序情報とを関連づけて記憶させた記憶媒体を提供する。
これにより、異なる特に多数のハードウエア上で本発明による本発明の上記利点を生かしたインストール、レビュー、デバッグ、カスタマイズ、改変等を行うことが容易となる。
例えば、ＣＤ、ＣＤ−Ｒ、フレキシブルディスク（ＦＤ）、ＨＤＤ、ＤＶＤ、磁気テープ、ＭＯ媒体などを用いることができる。
【発明の効果】
【００２０】
設計思想や注意点などのコメントを挿入したり開発プロセスそのものに関するレビューが困難であったコード自動生成型のシステム開発環境において、必要なコメントを挿入したり、開発プロセスのレビューや改変を行うことが容易となる。また、開発プロセスそのもの（入力系列）を事後的に参照・把握・編集しながら何度でもチューニングして再構築（ないしインストール）しなおすことが可能であり、デバッグやチューニングが手軽で見通しのよいものになる。
【発明を実施するための最良の形態】
【００２１】
表示ボタン追加などのコード編集操作（コマンド）に対応するマクロを逐次的にエクスポートでき、かつ、エクスポートしたマクロをインストールのために逐次的にインポートできる、分散開発環境に対応した入力監視デーモンを中心に本発明を実現した。
【実施例１】
【００２２】
以下、添付の図面にしたがって、本発明の一実施の形態についての実施例を説明する。
【００２３】
図１は、本発明の一実施形態の全体構成１を示すものである。インターネットＮを介した分散開発環境が構築されており、ハードウエア端末Ｔ１およびＴ２に対応する開発者Ｐ１およびＰ２が協働して、さらに公開ソフトホストＨにより公開されたソフト（ライブラリ）を参照しながら、ＧＵＩを用いるあるビジネスシステムの開発を行っている。
【００２４】
端末Ｔ２の中には、入力装置Ｔ１１、入力制御装置Ｔ１２、ＣＰＵ（Ｔ１３）、表示制御装置Ｔ１４、ディスプレイＴ１５、通信制御装置Ｔ１６、記憶制御装置Ｔ１７、ＲＡＭ（Ｔ１８）、ＨＤＤ（Ｔ１９）、開発支援プログラムＲ１２、開発されているソフトＤ１２といった公知の構成のほか、本発明に特徴的な、入力監視デーモンＲ１１および開発過程を記録したデータＤ１１（入力系列＝入力内容＋入力順序＋コメント）が存在する。
【００２５】
入力監視デーモンＲ１１は、開発開始後に常駐プロセスとして起動され、入力制御装置Ｔ１２や通信制御装置Ｔ１６からの外部入力の図示しない割り込みハンドラー（ＲＡＭ（Ｔ１８）内のＯＳルーチン）をフックし、かつ、図示しないイベントキュー（ＲＡＭ（Ｔ１８内）の構造化されたバッファ）をリッスンして、開発支援プログラムＲ１２への入力およびＤ１２の直接編集コマンド（ｃｐ等）を二重に監視する。監視は、低レベルの入力シーケンス（本発明で問題とするシステム開発のための入力系列のスーパーセット）と、Ｔ１５内に別途格納された予約語や所定のパターン（正規表現等）を公知のパターンマッチングアルゴリズムでマッチングさせることにより行う。
【００２６】
一方、開発過程を記録したデータＤ１１には、システム開発に関する入力系列と、入力時刻、および関連するコメントのみが格納され、これによって開発プロセスひいてはシステムの仕様自体をより多面的にレビューしたり改変したりすることができる。
図２は、本発明による入力監視デーモンプログラムが統合開発環境への入力を検知した場合の各モジュールの動作を示すものである。
【００２７】
この場合、入力監視デーモン（Ｒ１１）は、画面のフォーカスが統合開発環境のウィンドウに移るイベントを検知したのち、開発者の統合開発環境への入力”ｍｄ３ｍｌ１ａｂｓ”を検出した。入力監視デーモン（Ｒ１１）がこれを統合開発環境（Ｒ１２）に送ると、本発明による開発操作記録機能に対応した統合開発環境（Ｒ１２）がその内部操作コード（マクロ）”ａｄｄ  Ｌｉｓｔ３１：：ｓｈｏｗ＿ｂｕｔｔｏｎ３１  ｔｏ  Ｄｉａｌｏｇ３”を入力監視デーモン（Ｒ１１）に返しながら、その内部操作コードに対応する処理を行う（ここでは、画面定義リソースファイル上でｓｈｏｗボタンが追加されるとともに、メソッドｓｈｏｗに関するコードがプログラムファイル上で自動生成されている）。一方、内部操作コードを返された入力監視デーモンは、この内部操作コード（マクロ）を開発環境への入力系列として認識し、開発過程を記録したデータＤ１１に記録する。
【００２８】
なお、別の実施形態では、統合開発環境（Ｒ１２）が本発明による開発操作記録機能に対応していないため、かかる内部操作コード（マクロ）は入力監視デーモンにはかえされず、上記”ｍｄ３ｍｌ１ａｂｓ”などが直接、開発過程を記録したデータＤ１１に記録される。この場合、Ｄ１１内の入力系列の意味的な可読性は低くなるが、記憶効率、インストールおよび開発再現のための再入力（いわばメタプログラミング）の効率は向上する。
【００２９】
また、開発過程を記録したデータＤ１１内には入力日時と入力内容（またはコメント）の組が記録されており、上述の入力により、その入力日時と関連づけられた入力内容（ただしマクロに翻訳されている）からなる最後のエントリー（下線）が追加される。
【００３０】
図３は、上記のボタン追加に対するコメントを挿入するために、開発者がＥＳＣキー＋ｃキーを入力した場合に、本発明による入力監視デーモンプログラムがこのコメント挿入要求を検知した場合の各モジュールの動作を示す図である。なお、別の実施形態では、ボタン追加などのコマンドが実行されるごとに、コメント入力用のダイアログなどプロンプトが表示され、開発者がコメントを入力することを促すようプログラムされている（この場合は、逆にＥＳＣキーによりダイアログを抜けることができ、この場合は対応するコメントがないものとして、開発過程を記録したデータＤ１１に記録される）。
【００３１】
入力監視デーモンＲ１１は、上記コメント挿入要求を受け付けると、ダイアログなどのコメント入力プロンプトを表示する。このプロンプトにより、ボタンを追加した同じ開発者が、例えば”表示ボタンをつける”といった（従来は不可能であった）コメントを挿入することができる。なお、この挿入は、本発明では、直接開発の対象とならない、システムコード（Ｄ１２）とは別のところ（Ｄ１１）に保存されることに注意されたい。
【００３２】
図４は、本発明による入力監視デーモンプログラムがインストール要求を検知した場合の各モジュールの動作を示すものである。なお、この動作により、本発明の手法は、いわばメタプログラミングということができる。
【００３３】
まず、入力監視デーモンプログラム（Ｒ１１）は、インストール命令（”ｉｎｓｔａｌｌ”）を検知すると、開発過程を記録したデータＤ１１の最初から読み出し、当初のシステム開発で入力された入力系列と同じ入力系列を統合開発環境に（あたかも人間の開発者が入力するかのように、同一のインターフェース）で入力することができ、当初開発したシステムと同じシステムを再現することができる。ただし、この実施形態では、可読性の向上等のため統合開発環境（Ｒ１２）に固有のマクロをＤ１１に記憶するようにしていたため、このマクロが統合開発環境Ｒ１２に入力されることになる。結局、いずれにしても同様の論理ファイル構成および統合開発環境を有する、異なるハードウエア上に当初開発したと同じシステムを再現することができる（たとえば、リソースファイルにはボタンが追加され、プログラムファイルにはｓｈｏｗメソッドが追加される）。
【００３４】
図５は、本発明により記録した入力系列（Ｄ１１）の一部を省略（相殺）して利用する際の連続的・離散的な対応関係（１）（２）および依存関係（３）を説明するものである。
【００３５】
最初の行は、２００４年５月２８日の１９時２１分１８秒にＡというオブジェクトをＹというオブジェクトに追加する操作が統合環境（Ｒ１２）で行われたことを示しており、次の行はそのコメントである。これらの行は、最後の２行と対応して省略できる場合（２）に相当し、相殺される。すなわち、同一のオブジェクトＡを対象とする追加と削除の対応関係にあり、その間の各コマンドにはＡを対象とするコマンド（操作）が存在しないからである（離散的な対応関係）。なお、設計上の翻意がある場合にはこのような対応関係が存在することが多いと考えられる。
【００３６】
同様に、５、６行目と７、８行目は、連続的な対応関係が存在し、相殺、省略することができる（省略できる場合（１））。これらは、連続的な追加と削除であり、通常は、統合開発環境への開発者の操作（コマンド）ミスと考えられ、省略することが可読性の向上のためにもよいと考えられる。
また、省略できる場合（３）として、追加や削除の基盤となるオブジェクト（例えばＹ）が後に削除される場合には、途中でＹがコピーされたりする場合をのぞき、Ｙに対する他のオブジェクトの追加コマンドや変更コマンド（および、（あれば）その追加に対応する削除コマンド（省略できる場合（１）および（２）にローカルなスコープで該当する場合））といったコマンドも、完成するシステムに影響をあたえないため省略することができる。
【００３７】
結局、本発明では、システム開発の過程をより重視した分析を行えるようにする一方、それによって生じた冗長性や非効率を減少させる仕組みをそなえて、このメタプログラミングのあたらしい枠組みを導入する際の問題点を解決している。
【００３８】
また、本実施例からも明らかなように、従来はファイル単位ないしリビジョン（バージョン）単位でしか容易にはトレースしえなかったコーディングないし画面配置の時間的順序を、本発明では、簡易にトレースして分析したり、コード間の依存関係を事後的に解析しながら入力の時間的順序を変更してインストールしたり仕様変更したりすることが可能となり、ソフトウエアの開発プロセスのみならず、要求定義、機能設計、詳細設計、試験、デバッグ、メンテナンス、仕様変更、バージョン管理、開発者の教育、プロセス標準化、およびセミオーダー開発事業の水平展開といったビジネスプロセスを大幅に改善するものである。
また、熟練した開発者の残した本発明により記録された入力系列（およびコメントないし時刻情報）は、セミオーダーメードの範囲を超えて、全く異なるシステムを構築する上でも、教育的、事業ノウハウ的価値の高いものとなる。
さらに、コード（入力内容）に関連づけて記録された時刻情報は、当初開発時の技術水準（ないし設計パラダイム）や利用する公開ライブラリの機能セットやバグ状態を把握するためにも利用することができ、その入力系列を参考にして新たな開発を行う場合に、コードのどこを改造したほうがよいかを測る上でも大きな手がかりとなる。
また、プログラムの編集ではなく、本発明によるプログラムの入力系列（メタプログラム）の編集に、従来のエディタソフトで実現されているＲＥＤＯ、ＵＮＤＯといった概念を導入したり、公知のバージョンコントロールの概念を導入したりすることができる。これにより、最終コードそのものを編集し維持する直接的な責任（複製してファイル名や日付やバージョンを管理する責任）からある程度解放されて、コードの改造が間接的な操作となるため、最終コードそのものを（自動）退避するタイミングも得やすく、編集のやりなおしや機能の試行錯誤もより気軽におこなえ、初心者でも安心して改造することができる。また、メタレベルの編集となるため仕様改造の記述能力や自由度も高くなり、より開かれたソフトウエアプロセスモデルが実現する。
【産業上の利用可能性】
【００３９】
本発明は、開発プロセスの記録、レビュー（教育）、改善もしくは標準化、または、セミオーダーメードシステムのカスタマイズ、または、システムの改訂等の用途に広く適用できる。
【図面の簡単な説明】
【００４０】
【図１】本発明の一実施形態の全体構成を示す図である。
【図２】本発明による入力監視デーモンプログラムが統合開発環境への入力を検知した場合の各モジュールの動作を示す図である。
【図３】本発明による入力監視デーモンプログラムがコメント挿入要求を検知した場合の各モジュールの動作を示す図である。
【図４】本発明による入力監視デーモンプログラムがインストール要求を検知した場合の各モジュールの動作を示す図である。
【図５】本発明により記録した入力系列の一部を省略（相殺）して利用する際の連続的・離散的な対応関係（（１）（２））および依存関係（（３））を説明する図である。
【符号の説明】
【００４１】
１  本発明の一実施例の全体環境
Ｄ１１  開発過程を記憶したデータ（入力内容、入力日時、プログラムコメント）
Ｄ１２  新たに開発されているソフト（システム）
Ｈ  インターネット等のサービスホスト
Ｎ  インターネット等
Ｐ１、Ｐ２  開発者
Ｒ１１  入力監視デーモン（インストール機能つき）
Ｒ１２  開発支援プログラム（操作マクロ逐次エクスポート機能つき分散統合開発環境）
Ｔ１、Ｔ２  システムを構築するハードウエア端末
Ｔ１１  キーボード、マウス、ＦＤドライブ等
Ｔ１２  入力制御装置（ＵＳＢ等）
Ｔ１３  処理装置（ＣＰＵ等）
Ｔ１４  表示制御装置（グラフィックカード、サウンドカード等）
Ｔ１５  表示装置（ディスプレイ、プリンタ、スピーカ等）
Ｔ１６  通信制御装置（ＮＩＣ等）
Ｔ１７  記憶制御装置（ディスク制御装置、ＤＭＡ等）
Ｔ１８  主記憶装置（各種ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ等）
Ｔ１９  不揮発性記憶装置（ＨＤＤ、コンパクトフラッシュ（登録商標）等）
【図１】
2006004034.tif 000003
【図２】
2006004034.tif 000004
【図３】
2006004034.tif 000005
【図４】
2006004034.tif 000006
【図５】
2006004034.tif 000007