(57)【要約】【課題】プログラムの開発を支援するためのシステムを提供すること。【解決手段】プログラムの開発を支援するためのシステムは、どのようなユーザ操作がなされたかを検出する手段と、ユーザ操作の意図を特定する手段と、ユーザ操作の意図に対応する中間コードを生成する手段とを含む。ユーザ操作の意図を特定する手段は、システムとユーザとの相互作用を介してユーザ操作の意図を特定する手段を含んでいてもよい。ユーザ操作の意図を特定する手段は、ユーザ操作の意図の解釈を提示する手段と、提示された解釈に対するユーザの意向を提示することを可能にする手段とを含んでいてもよい。【選択図】図１
2018120285.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの開発を支援するためのシステムであって、前記システムは、
どのようなユーザ操作がなされたかを検出する手段と、
前記ユーザ操作の意図を特定する手段と、
前記ユーザ操作の意図に対応する中間コードを生成する手段と
を含む、システム。
【請求項２】
前記ユーザ操作の意図を特定する手段は、前記システムとユーザとの相互作用を介して前記ユーザ操作の意図を特定する手段を含む、請求項１に記載のシステム。
【請求項３】
前記ユーザ操作の意図を特定する手段は、
前記ユーザ操作の意図の解釈を提示する手段と、
前記提示された解釈に対するユーザの意向を提示することを可能にする手段と
を含む、請求項１または請求項２に記載のシステム。
【請求項４】
前記ユーザ操作は、視覚的に行われる操作である、請求項１〜３のいずれか一項に記載のシステム。
【請求項５】
前記中間コードは、プログラム言語に非依存のコードである、請求項１〜４のいずれか一項に記載のシステム。
【請求項６】
前記中間コードを特定のプログラミング言語で記述されたコードに変換する手段をさらに含む、請求項１〜５のいずれか一項に記載のシステム。
【請求項７】
プログラムの開発を支援するためのシステムにおいて実行される方法であって、前記システムは、プロセッサ部を含み、前記方法は、
前記プロセッサ部が、どのようなユーザ操作がなされたかを検出することと、
前記プロセッサ部が、前記ユーザ操作の意図を特定することと、
前記プロセッサ部が、前記ユーザ操作の意図に対応する中間コードを生成することと
を含む、方法。
【請求項８】
プログラムの開発を支援するためのシステムにおいて実行されるプログラムであって、前記システムは、プロセッサ部を含み、前記プログラムは、
どのようなユーザ操作がなされたかを検出することと、
前記ユーザ操作の意図を特定することと、
前記ユーザ操作の意図に対応する中間コードを生成することと
を含む処理を前記プロセッサ部に行わせる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの開発を支援するためのシステム、そのシステムにおいて実行される方法およびプログラムに関する。
【背景技術】
【０００２】
図１０は、プログラムを開発するための従来のモデルを示す。プログラムを開発するための工程は、「要求分析」→「要件定義」→「基本設計」→「詳細設計」→「コーディング」→「コードレビュー」→「単体テスト」→「結合テスト」→「システムテスト」→「受け入れテスト」というように上流の工程から下流の工程に順序付けられている（例えば、非特許文献１を参照）。図１０に示されるモデルは、プログラムを開発するための工程をＶ字型に並べることによってプログラムを開発するための工程間の対応関係を示す。このため、図１０に示されるモデルは、Ｖ字型モデルとも呼ばれる。Ｖ字型モデルに示されるように、「要求分析」と「受け入れテスト」とが対応し、「要件定義」と「システムテスト」とが対応し、「基本設計」と「結合テスト」とが対応し、「詳細設計」と「単体テスト」とが対応し、「コーディング」と「コードレビュー」とが対応する。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Tech Fun Corporation、“開発プロセスと開発標準化”、［online］、Tech Fun Corporation、［平成２８年１２月７日］、インターネット<URL:http://techfun.cc/devbase/devbase2.html>
【発明の概要】
【発明が解決しようとする課題】
【０００４】
図１０に示されるモデルは、何十年もシステム化されておらず非効率なままである。特に、「詳細設計」→「コーディング」→「コードレビュー」→「単体テスト」という工程は、労力および時間がかかる一方で、いったん「単体テスト」で不具合が発見されると、再度「詳細設計」に戻って設計をやり直す必要があるため労力および時間が余計にかかる要因となっていた。
【０００５】
本発明は、プログラムを開発するための新しいモデルを実現するためのシステム、そのシステムにおいて実行される方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の１つの局面において、本発明のシステムは、プログラムの開発を支援するためのシステムであって、前記システムは、どのようなユーザ操作がなされたかを検出する手段と、前記ユーザ操作の意図を特定する手段と、前記ユーザ操作の意図に対応する中間コードを生成する手段とを含む。
【０００７】
本発明の１つの実施形態では、前記ユーザ操作の意図を特定する手段は、前記システムとユーザとの相互作用を介して前記ユーザ操作の意図を特定する手段を含んでいてもよい。
【０００８】
本発明の１つの実施形態では、前記ユーザ操作の意図を特定する手段は、前記ユーザ操作の意図の解釈を提示する手段と、前記提示された解釈に対するユーザの意向を提示することを可能にする手段とを含んでいてもよい。
【０００９】
本発明の１つの実施形態では、前記ユーザ操作は、視覚的に行われる操作であってもよい。
【００１０】
本発明の１つの実施形態では、前記中間コードは、プログラム言語に非依存のコードであってもよい。
【００１１】
本発明の１つの実施形態では、前記中間コードを特定のプログラミング言語で記述されたコードに変換する手段をさらに含んでいてもよい。
【００１２】
本発明の１つの局面において、本発明の方法は、プログラムの開発を支援するためのシステムにおいて実行される方法であって、前記システムは、プロセッサ部を含み、前記方法は、前記プロセッサ部が、どのようなユーザ操作がなされたかを検出することと、前記プロセッサ部が、前記ユーザ操作の意図を特定することと、前記プロセッサ部が、前記ユーザ操作の意図に対応する中間コードを生成することとを含む。
【００１３】
本発明の１つの局面において、本発明のプログラムは、プログラムの開発を支援するためのシステムにおいて実行されるプログラムであって、前記システムは、プロセッサ部を含み、前記プログラムは、どのようなユーザ操作がなされたかを検出することと、前記ユーザ操作の意図を特定することと、前記ユーザ操作の意図に対応する中間コードを生成することとを含む処理を前記プロセッサ部に行わせる。
【発明の効果】
【００１４】
プログラムを開発するための新しいモデルを実現するためのシステム、そのシステムにおいて実行される方法およびプログラムを提供することが可能である。
【図面の簡単な説明】
【００１５】
【図１】プログラムを開発するための新しいモデルを示す図
【図２Ａ】「ＩＮＰＵＴ定義」用の画面２００ａの一例を示す図
【図２Ｂ】「ＯＵＴＰＵＴ定義」用の画面２００ｂの一例を示す図
【図２Ｃ】「ＰＲＯＣＥＳＳ定義」用の画面２００ｃの一例を示す図
【図２Ｄ】「ＰＲＯＣＥＳＳ定義」用の画面２００ｄの一例を示す図
【図２Ｅ】「ＰＲＯＣＥＳＳ定義」用の画面２００ｅの一例を示す図
【図２Ｆ】「ＰＲＯＣＥＳＳ定義」用の画面２００ｆの一例を示す図
【図２Ｇ】「ＰＲＯＣＥＳＳ定義」用の画面２００ｇの一例を示す図
【図２Ｈ】「ＰＲＯＣＥＳＳ定義」用の画面２００ｈの一例を示す図
【図２Ｉ】「ＰＲＯＣＥＳＳ定義」用の画面２００ｉの一例を示す図
【図２Ｊ】「ＰＲＯＣＥＳＳ定義」用の画面２００ｊの一例を示す図
【図２Ｋ】「ＰＲＯＣＥＳＳ定義」用の画面２００ｋの一例を示す図
【図２Ｌ】「ＰＲＯＣＥＳＳ定義」用の画面２００ｌの一例を示す図
【図２Ｍ】「ＰＲＯＣＥＳＳ定義」用の画面２００ｍの一例を示す図
【図２Ｎ】「ＰＲＯＣＥＳＳ定義」用の画面２００ｎの一例を示す図
【図２Ｏ】「ＰＲＯＣＥＳＳ定義」用の画面２００ｏの一例を示す図
【図２Ｐ】「ＯＵＴＰＵＴ定義」用の画面２００ｐの一例を示す図
【図３Ａ】「ＩＮＰＵＴ定義」用の画面３００ａの一例を示す図
【図３Ｂ】「ＯＵＴＰＵＴ定義」用の画面３００ｂの一例を示す図
【図３Ｃ】「マッピング定義」用の画面３００ｃの一例を示す図
【図４】プログラムを開発するための新しいモデルを実現するためのシステム４００の構成の一例を示す図
【図５Ａ】Ｉ／Ｏデータベース部４４１に格納されている情報の構成の一例を示す図
【図５Ｂ】シーンデータベース部４４２に格納されている情報の構成の一例を示す図
【図５Ｃ】補助機能データベース部４４３に格納されている情報の構成の一例を示す図
【図６】親システム４１０において実行される処理のフローの一例を示す図
【図７】入力データをどのように加工するかを特定する処理のフローの一例を示す図
【図８Ａ】図２Ａ〜図２Ｐを参照して説明したユーザ操作に基づいて生成される中間コードの一例を示す図
【図８Ｂ】図２Ａ〜図２Ｐを参照して説明したユーザ操作に基づいて生成される中間コードの一例を示す図
【図９】図８Ａおよび図８Ｂに示される中間コードに基づいて生成されるコードの一例を示す図
【図１０】プログラムを開発するための従来のモデルを示す図
【発明を実施するための形態】
【００１６】
以下、図面を参照しながら、本発明の実施の形態を説明する。
【００１７】
１．プログラムを開発するための新しいモデル
図１は、プログラムを開発するための新しいモデルを示す。この新しいモデルは、出願人によって提案されているものである。この新しいモデルは、従来のＶ字型モデルの「詳細設計」という工程と「単体テスト」という工程とをシステム化するとともに、「コーディング」という工程を自動化することにより「コードレビュー」という工程を不要にすることによって、プログラムの開発に要するコストを大幅に低減するとともにプログラムの開発に要する期間を大幅に短縮することを企図するものである。特に、この新しいモデルによれば、ユーザが「コーディング」という作業を行う必要がなく、それに伴い、ユーザが「コードレビュー」という作業を行う必要がない。この新しいモデルは、ユーザが「詳細設計」という作業と「単体テスト」という作業との間を容易に行き来することを可能にするとともに、「単体テスト」が完了した時点で、プログラムコードが自動的に生成されることを可能にする点で画期的であるといえる。
【００１８】
「詳細設計」という工程のシステム化は、プログラム言語を用いることなくプログラムを定義することによって達成される。プログラムを定義することは、そのプログラムへの入力データを定義すること、そのプログラムからの出力データを定義すること、そのプログラムによって実行される処理のプロセスを定義することを含む。そのプログラムへの入力データを定義することは、例えば、「ＩＮＰＵＴ定義」において、そのプログラムによって加工されるべきデータがどのようなデータであるかをシステムに学習させることによって行われる。システムによる学習は、例えば、システムによって表示される「ＩＮＰＵＴ定義」用の画面を介してシステムとユーザとが相互作用することによって行われる。そのプログラムからの出力データを定義することは、例えば、「ＯＵＴＰＵＴ定義」において、そのプログラムによって加工されたデータがどのようなデータであるかをシステムに学習させることによって行われる。システムによる学習は、例えば、システムによって表示される「ＯＵＴＰＵＴ定義」用の画面を介してシステムとユーザとが相互作用することによって行われる。そのプログラムによって実行される処理のプロセスを定義することは、例えば、「ＰＲＯＣＥＳＳ定義」において、プログラムに入力されたデータをどのように加工するかをシステムに学習させることによって行われる。システムによる学習は、例えば、システムによって表示される「ＰＲＯＣＥＳＳ定義」用の画面を介してシステムとユーザとが相互作用することによって行われる。
【００１９】
システムとユーザとの相互作用は、例えば、システムが画面にデータを表示し、その画面に表示されたデータに対してユーザが操作（例えば、直接的な操作）を行うことによって達成される。これにより、ユーザは自分自身のユーザ操作の意図をシステムに伝えることが可能である。システムは、ユーザ操作の意図を解釈する。ユーザ操作の意図が複数通りに解釈することが可能である場合には、システムは、ユーザ操作の意図の複数通りの解釈をユーザに示しユーザに複数通りの解釈のうちの１つを選択させることによって、または、ユーザ操作の意図の解釈を提示しその提示された解釈に対するユーザの意向を提示させることによって、ユーザ操作の正確な意図を確認するようにしてもよい。このようにして、システムは、ユーザ操作の正確な意図を学習することが可能である。
【００２０】
「ＩＮＰＵＴ定義」用の画面、「ＯＵＴＰＵＴ定義」用の画面、「ＰＲＯＣＥＳＳ定義」用の画面のうちの少なくとも１つの画面に対するユーザ操作は、例えば、二次元のフォーマット（例えば、テーブル形式）を用いて視覚的に行われる。これにより、ユーザは、「ＩＮＰＵＴ定義」、「ＯＵＴＰＵＴ定義」、「ＰＲＯＣＥＳＳ定義」のうちの少なくとも１つの内容を視覚的に確認することが可能である。
【００２１】
「単体テスト」という工程のシステム化は、「詳細設計」という工程が完了したプログラムに対して単体テスト用のデータを入力することによって達成される。ここで、単体テスト用のデータは、仮想のデータであってもよいが実際のデータであってもよい。単体テスト用のデータがそのプログラムによって処理されていく様子は、システムによって表示される画面（例えば、「ＰＲＯＣＥＳＳ定義」用の画面）にリアルタイムに表示される。これにより、ユーザは、単体テスト用のデータがそのプログラムによって処理されていく様子を視覚的に確認することが可能である。そのプログラムが複数のシーンに分割されて定義されている場合には、ユーザは、単体テスト用のデータがそのプログラムによって処理されていく様子を１シーン毎に視覚的に確認することも可能である。また、単体テストの結果は、エビデンスとして保存することも可能である。これにより、後日、時間をかけて単体テストの結果を検証することも可能である。
【００２２】
単体テストの結果、ユーザがプログラムの不具合を発見した場合には、ユーザは、「詳細設計」という工程に戻って、プログラムを定義することをやり直せばよく、その後、定義をやり直したプログラムに対して単体テスト用のデータを再び入力するようにすればよい。なお、単体テスト用のデータを処理することは、例えば、「詳細設計」という工程においてプログラムを定義したことに応答してシステムが解釈実行可能な中間コードをシステムが自動的に生成し、その中間コードをシステムが解釈実行することによって達成される。この中間コードは、プログラム言語に非依存のコードである。
【００２３】
「コーディング」という工程の自動化は、「単体テスト」という工程が完了した時点で、システムが、上述した中間コードを特定のプログラム言語で記述されたコードに自動的に変換することによって達成される。これにより、ユーザが「コーディング」という作業を行う必要がなく、それに伴い、ユーザが「コードレビュー」という作業を行う必要がない。このように、「コーディング」という工程を自動化することにより、「コードレビュー」という工程を省略することが可能である。
【００２４】
このように、プログラムを開発するための新しいモデルによれば、従来のＶ字型モデルの「詳細設計」という工程と「単体テスト」という工程とをシステム化するとともに、「コーディング」という工程を自動化することにより「コードレビュー」という工程を不要にすることが可能である。これにより、プログラムの開発に要するコストを大幅に低減するとともにプログラムの開発に要する期間を大幅に短縮することが可能である。
【００２５】
２．ユーザによる操作の手順
以下、「詳細設計」という工程において、少なくとも１本のプログラムを定義するためにユーザが行う操作の手順を説明する。
【００２６】
はじめに、ユーザは、プロジェクトを定義する。プロジェクトを定義することは、例えば、システムによって表示される「ＰＲＯＪＥＣＴ定義」用の画面に対してユーザがプロジェクト名を入力することによって行われる。１つのプロジェクトは、少なくとも１本のプログラムを含む。
【００２７】
次に、ユーザは、少なくとも１本のプログラムを定義する。少なくとも１本のプログラムの各プログラムを定義することは、例えば、システムによって表示される「ＩＮＰＵＴ定義」用の画面、「ＯＵＴＰＵＴ定義」用の画面、「ＰＲＯＣＥＳＳ定義」用の画面に対してユーザが操作を行うことによって行われる。各プログラムを定義することは、そのプログラムへの入力データを定義すること、そのプログラムからの出力データを定義すること、そのプログラムによって実行される処理のプロセスを定義することを含む。これらをどのように定義するかは、上述したとおりである。
【００２８】
以下、図２Ａ〜図２Ｐを参照して、産地が「北海道」である商品の売上および営業利益を集計するためのプログラムを開発する場合を例にとり、そのプログラムを定義するために、「ＩＮＰＵＴ定義」、「ＯＵＴＰＵＴ定義」、「ＰＲＯＣＥＳＳ定義」をどのように定義するのかを具体的に説明する。
【００２９】
なお、図２Ａ〜図２Ｐに示される各画面には、メニューバー２１０が表示されるものとする。メニューバー２１０には、各種のコマンドが表示されている。図２Ａ〜図２Ｐに示される例では、メニューバー２１０に表示されているコマンドは、「ＩＮＰＵＴ定義」を開始するための「開始」コマンド２１１Ｓと、「ＩＮＰＵＴ定義」を終了するための「終了」コマンド２１１Ｅと、「ＯＵＴＰＵＴ定義」を開始するための「開始」コマンド２１２Ｓと、「ＯＵＴＰＵＴ定義」を終了するための「終了」コマンド２１２Ｅと、「ＰＲＯＣＥＳＳ定義」において、各シーンの定義を開始するための「開始」コマンド２１３Ｓと、「ＰＲＯＣＥＳＳ定義」において、各シーンの定義を終了するための「終了」コマンド２１３Ｅと、特定の処理をループさせるための「ループ」コマンド２１４と、特定の計算処理を実行するための「計算」コマンド２１５と、特定の集計処理を実行するための「集計」コマンド２１６と、追加の定義を行うための「追加定義」コマンド２１７とであるが、これらには限定されない。例えば、ユーザは、「ＰＲＯＣＥＳＳ定義」の「開始」コマンドを選択することによって「ＰＲＯＣＥＳＳ定義」を開始することが可能であり、「ＰＲＯＣＥＳＳ定義」の「終了」コマンドを選択することによって「ＰＲＯＣＥＳＳ定義」を終了することが可能である。
【００３０】
図２Ａは、「ＩＮＰＵＴ定義」用の画面２００ａの一例を示す。ユーザがメニューバー２１０の「ＩＮＰＵＴ定義」の「開始」コマンド２１１Ｓを選択することによって、「ＩＮＰＵＴ定義」が開始される。「ＩＮＰＵＴ定義」が開始されることにより、システムによって表示される画面が画面２００ａに遷移する。
【００３１】
「ＩＮＰＵＴ定義」では、入力データの項目数および型、ルール（例えば、キー項目など）が定義される。さらに、「ＩＮＰＵＴ定義」では、変数（パラメータ）や定数が定義されてもよい。複数の入力データのそれぞれに対してこれらを定義することが可能である。「ＩＮＰＵＴ定義」では、ユーザによって手動で入力されたデータを入力データとして定義することも可能であるが、データベース部に格納されたデータを画面２００ａに表示することによって、その表示されたデータを入力データとして定義することも可能である。あるいは、サンプルデータを投入することによってシステムが入力データを自動提案するようにしてもよい。
【００３２】
図２Ａに示される例では、品目マスタ２２０とレートマスタ２３０と販売データ２４０とが入力データとして定義されている。品目マスタ２２０は、各商品の個別情報が行ごとに示されるマスタデータである。レートマスタ２３０は、国際通貨の変換レートを示すマスタデータである。販売データ２４０は、各商品の識別コード（すなわち、品目コード）ごとに販売された数量と販売日付とを示すトランザクションデータである。品目マスタ２２０およびレートマスタ２３０は、例えば、データベース部に格納された複数のマスタデータの中からユーザによって選択されることにより、入力データとして定義される。販売データ２４０は、例えば、データベース部に格納された複数のトランザクションデータの中からユーザによって選択されることにより、入力データとして定義される。
【００３３】
品目マスタ２２０、レートマスタ２３０、販売データ２４０が入力データとして定義された後、各入力データの各項目における個別情報のデータ型が定義される。このような定義は、例えば、品目マスタ２２０の「品目コード」がテキストデータであること、品目マスタ２２０の「仕入単価」が数値データであること、レートマスタ２３０の「換算元通貨」がテキストデータであること、レートマスタ２３０の「レート」が数値データであること、販売データ２４０の「店舗名」がテキストデータであること、販売データ２４０の「販売日付」が日付データであることなどをユーザがシステムに入力することによって行われる。
【００３４】
ユーザがメニューバー２１０の「ＩＮＰＵＴ定義」の「終了」コマンド２１１Ｅを選択することによって、「ＩＮＰＵＴ定義」が終了する。
【００３５】
なお、図２Ａに示される品目マスタ２２０、レートマスタ２３０、販売データ２４０に含まれる個別情報は単なる一例であり、本発明はこれに限定されない。例えば、品目マスタ２２０は、図２Ａに示される品目名称以外の他の品目名称（例えば、キャベツ、食パン、マヨネーズ、醤油、サンドイッチ、〇〇弁当など）を含んでいてもよく、品目マスタ２２０の品目コードは、任意の半角の数字、英字、またはこれらの組み合わせであってもよい。例えば、レートマスタ２３０は、円（ＪＰＹ）およびユーロ（ＥＵＲ）だけでなく、ドル（ＵＳＤ）および／またはスイスフラン（ＣＨＦ）などを含んでいてもよい。例えば、販売データ３４０は、図２Ａに示される店舗名以外の他の店舗名（例えば、福岡店、北海道店など）を含んでいてもよい。
【００３６】
さらに、図２Ａに示される例では、ユーザが画面上のものを選択するためのポインタ２５０も画面２００ａに表示されている。例えば、コンピュータにマウスが接続されている場合、ユーザは、マウスを移動させることによってポインタ２５０を移動させ、クリックなどの選択操作をすることによって、画面上のものを選択することが可能である。例えば、コンピュータがタッチパネルディスプレイを有する場合、ユーザは、画面に触れた状態で画面上をなぞることによってポインタ２５０を移動させ、画面に軽くタッチすることによって画面上のものを選択することが可能である。
【００３７】
図２Ｂは、「ＯＵＴＰＵＴ定義」用の画面２００ｂの一例を示す。ユーザがメニューバー２１０の「ＯＵＴＰＵＴ定義」の「開始」コマンド２１２Ｓを選択することによって、「ＯＵＴＰＵＴ定義」が開始される。「ＯＵＴＰＵＴ定義」が開始されることにより、システムによって表示される画面が画面２００ｂに遷移する。
【００３８】
「ＯＵＴＰＵＴ定義」では、出力データの項目数および型、ルール（例えば、キー項目など）が定義される。複数の出力データのそれぞれに対してこれらを定義することが可能である。「ＯＵＴＰＵＴ定義」では、ユーザによって手動で入力されたデータを出力データとして定義することも可能であるが、データベース部に格納されたデータを画面２００ｂに表示することによって、その表示されたデータを出力データとして定義することも可能である。あるいは、サンプルデータを投入することによってシステムが出力データを自動提案するようにしてもよい。
【００３９】
図２Ｂに示される例では、出力項目２６０が出力データとして定義されている。出力項目２６０は、出力されるべき複数の項目（日付、品目コード、数量、売上、営業利益）を含む。これらの項目は、産地が「北海道」である商品の売上および営業利益を集計するという目的を達成するためにユーザによって設定される。これにより、日付、品目コード、数量、売上、営業利益を含むデータを出力データとして定義することが可能である。
【００４０】
ユーザがメニューバー２１０の「ＯＵＴＰＵＴ定義」の「終了」コマンド２１２Ｅを選択することによって、「ＯＵＴＰＵＴ定義」が終了する。
【００４１】
図２Ｃは、「ＰＲＯＣＥＳＳ定義」用の画面２００ｃの一例を示す。ユーザがメニューバー２１０の「シーン定義」の「開始」コマンド２１３Ｓを選択することによって、「ＰＲＯＣＥＳＳ定義」において、プログラムの第１のシーンの定義が開始される。
【００４２】
ユーザは、第１のシーンにおいて使用されるデータを選択する。図２Ｃに示される例では、ユーザが第１のシーンにおいて使用されるデータとして「ＩＮＰＵＴ定義」において定義された品目マスタ２２０を選択した結果として、品目マスタ２２０が画面２２０ｃに表示されている。
【００４３】
図２Ｃは、ユーザが品目マスタ２２０からいくつかの行を選択した状態を示している。ユーザによる品目マスタ２２０の行の選択は、例えば、ポインタ２５０を用いて行われる。図２Ｃに示される例では、品目マスタ２２０から、「品目コード」がＡ０００４、Ａ０００５、Ａ０００６、Ｂ０００１である行が選択されている。これは、品目マスタ２２０から「産地」が北海道である行を選択するというユーザの意図をユーザ操作を介してシステムに伝えるためである。図２Ｃでは、ユーザによって選択された行の範囲が強調表示されている。
【００４４】
図２Ｄは、「ＰＲＯＣＥＳＳ定義」用の画面２００ｄの一例を示す。画面２００ｄは、画面２００ｃにおいてユーザが品目マスタ２２０の行を選択するという操作を行ったことに応答して、画面２００ｃから遷移した画面である。画面２００ｄは、「ＰＲＯＣＥＳＳ定義」において、第１のシーンを定義するための画面である。
【００４５】
システムは、ユーザ操作の意図をユーザに確認するためにポップアップウィンドウ部２７０ｄを表示する。図２Ｄは、システムによってポップアップウィンドウ部２７０ｄが表示された状態を示している。図２Ｄに示される例では、ポップアップウィンドウ部２７０ｄの中にフィルタリング条件として「産地＝北海道」かつ「仕入通貨＝ＪＰＹ」かつ「販売通貨＝ＪＰＹ」という３つの条件が示されている。これは、品目マスタ２２０から４行を選択するという上述したユーザ操作の意図が「産地が北海道である行をフィルタリングすること」かつ「仕入通貨がＪＰＹである行をフィルタリングすること」かつ「販売通貨がＪＰＹである行をフィルタリングすること」であるか否かをシステムがユーザに問い合わせることによって、システムがユーザ操作の意図をユーザに確認するためである。
【００４６】
ユーザは、ポップアップウィンドウ部２７０ｄの中に表示されたフィルタリング条件を承認し、または、変更することによって、ユーザ操作の意図をシステムに正確に伝えることが可能である。図２Ｄに示される例では、ユーザは、ポップアップウィンドウ部２７０ｄの中にフィルタリング条件として示された「産地＝北海道」かつ「仕入通貨＝ＪＰＹ」かつ「販売通貨＝ＪＰＹ」という条件がユーザ操作の意図ではなかったことをシステムに伝えた上で、ユーザ操作の意図が「産地＝北海道」のみであったことをシステムに伝える。このようなユーザとシステムとの相互作用により、品目マスタ２２０から４行を選択するという上述したユーザ操作の意図が「産地が北海道の行をフィルタリングすること」であることをシステムに学習させることが可能である。
【００４７】
ポップアップウィンドウ部２７０ｄには、「ＯＫ」ボタン２７１ｄと「変更」ボタン２７２ｄとが表示されている。ユーザは、例えば、ポインタ２５０を用いて「ＯＫ」ボタン２７１ｄを選択することによって、ユーザ操作の意図を確定させることが可能である。あるいは、フィルタリング条件を変更する場合には、ユーザは、例えば、ポインタ２５０を用いて「変更」ボタン２７２ｄを選択すればよい。これにより、ユーザは、システムによって提示されたフィルタリング条件をユーザが意図する条件に変更することが可能である。
【００４８】
なお、図２Ｄでは、ポップアップウィンドウ部２７０ｄを表示することによってフィルタリング条件を提示する例を説明したが、フィルタリング条件を提示する態様はこれに限定されない。例えば、ポップアップウィンドウ部２７０ｄを表示することなく、フィルタリング条件を提示するようにしてもよい。例えば、表示されている品目マスタ２２０の項目において文字の色と背景の色とを反転させることによってフィルタリング条件を提示するようにしてもよい。
【００４９】
また、図２Ｄでは、フィルタリング条件を提示する例を説明したが、フィルタリング条件以外の条件を提示するようにしてもよい。例えば、検索条件、更新条件、削除条件などを提示するようにしてもよい。
【００５０】
図２Ｅは、「ＰＲＯＣＥＳＳ定義」用の画面２００ｅの一例を示す。画面２００ｅは、画面２００ｄにおいてユーザが「ＯＫ」ボタン２７１ｄを選択するという操作を行ったことに応答して、画面２００ｄから遷移した画面である。なお、画面２００ｅは、「ＰＲＯＣＥＳＳ定義」において、第１のシーンを定義するための画面である。
【００５１】
図２Ｅに示される例では、画面２００ｅには、「産地が北海道である行をフィルタリングする」というフィルタリング条件で品目マスタ２２０をフィルタリングした結果（すなわち、品目マスタ２２０ｅ）が表示されている。
【００５２】
ユーザがメニューバー２１０の「シーン定義」の「終了」コマンド２１３Ｅを選択することによって、「ＰＲＯＣＥＳＳ定義」において、プログラムの第１のシーンの定義が終了する。これにより、図２Ｃ〜図２Ｅを参照して説明した品目マスタ２２０に対する加工のプロセスが第１のシーンとして定義される。第１のシーンの成果物は、図２Ｅに示される品目マスタ２２０ｅである。
【００５３】
図２Ｆは、「ＰＲＯＣＥＳＳ定義」用の画面２００ｆの一例を示す。ユーザが第１のシーンを定義した後、ユーザがメニューバー２１０の「シーン定義」の「開始」コマンド２１３Ｓを選択することによって、「ＰＲＯＣＥＳＳ定義」において、第２のシーンの定義が開始される。
【００５４】
ユーザは、第２のシーンにおいて使用されるデータを選択する。図２Ｆに示される例では、ユーザが第２のシーンにおいて使用されるデータとして「ＰＲＯＣＥＳＳ定義」において定義された品目マスタ２２０ｅと「ＩＮＰＵＴ定義」において定義されたレートマスタ２３０とを選択した結果として、品目マスタ２２０ｅとレートマスタ２３０とが画面２００ｆに表示されている。
【００５５】
図２Ｆは、品目マスタ２２０ｅを選択した後、メニューバー２１０の「ループ」コマンド２１４を選択した状態を示している。これにより、ユーザは、第２のシーンにおいて、品目マスタ２２０ｅの全件に対してループ処理を実行することをシステムに伝えることが可能である。
【００５６】
図２Ｇは、「ＰＲＯＣＥＳＳ定義」用の画面２００ｇの一例を示す。画面２００ｇは、画面２００ｆから遷移した画面である。なお、画面２００ｇは、「ＰＲＯＣＥＳＳ定義」において、第２のシーンを定義するための画面である。
【００５７】
ユーザは、品目マスタ２２０の「仕入単価」とレートマスタ２３０の「レート」とを関連付ける操作を行う。この操作は、例えば、ポインタ２５０を用いて「仕入単価」をレートマスタ２３０までドラッグする操作である。図２Ｇでは、この操作が破線の矢印で示されている。
【００５８】
次に、ユーザが、ポインタ２５０を用いてメニューバー２１０の「計算」コマンド２１５を選択すると、システムは、その選択に応答して、数式を入力することを求める。ユーザは、その求めに応答して、「レート×仕入単価」という数式を入力する。これにより、システムは、換算後の仕入単価が「レート×仕入単価」という数式で計算できることを学習することが可能である。
【００５９】
なお、品目マスタ２２０の「仕入単価」に加えて、または、品目マスタ２２０の「仕入単価」に代えて、ユーザは、品目マスタ２２０の「仕入通貨」とレートマスタ２３０の「レート」とを関連付ける操作を行うようにしてもよい。この操作によっても、システムは、同様の学習を行うことが可能である。
【００６０】
さらに、ユーザは、品目マスタ２２０の「売価単価」とレートマスタ２３０の「レート」とを関連付ける操作を行う。この操作は、例えば、ポインタ２５０を用いて「売価単価」をレートマスタ２３０までドラッグする操作である。図２Ｇでは、この操作が破線の矢印で示されている。
【００６１】
次に、ユーザが、ポインタ２５０を用いてメニューバー２１０の「計算」コマンド２１５を選択すると、システムは、その選択に応答して、数式を入力することを求める。ユーザは、その求めに応答して、「レート×売価単価」という数式を入力する。これにより、システムは、換算後の売価単価が「レート×売価単価」という数式で計算できることを学習することが可能である。
【００６２】
なお、品目マスタ２２０の「売価単価」に加えて、または、品目マスタ２２０の「売価単価」に代えて、ユーザは、品目マスタ２２０の「販売通貨」とレートマスタ２３０の「レート」とを関連付ける操作を行うようにしてもよい。この操作によっても、システムは、同様の学習を行うことが可能である。
【００６３】
第２のシーンにおいて使用されるデータとしてレートマスタ２３０を選択することは、仕入通貨と販売通貨とが異なる単位であるときに特に有用である。なぜなら、仕入通貨と販売通貨とが異なる単位である場合（例えば、ある商品が、外国から輸入された商品である場合）であっても、仕入通貨の単位から販売通貨の単位に通貨の単位を変換することにより、ユーザは、販売する地域の通貨の単位で営業利益単価を容易に求めることが可能であるからである。
【００６４】
図２Ｈは、「ＰＲＯＣＥＳＳ定義」用の画面２００ｈの一例を示す。画面２００ｈは、画面２００ｇから遷移した画面である。なお、画面２００ｈは、「ＰＲＯＣＥＳＳ定義」において、第２のシーンを定義するための画面である。
【００６５】
ユーザは、品目マスタ２２０ｅを選択した後に、メニューバー２１０の「追加定義」コマンド２１７を選択する。これにより、ユーザは、品目マスタ２２０ｅに新しい列を追加することをシステムに伝えることが可能である。
【００６６】
システムは、その新しい列の変数が何であるか、その新しい列の変数の値をどのように計算するかをユーザに要求する。
【００６７】
ユーザは、その要求に応答して、新しい列の変数が「営業利益単価」であることをシステムに入力し、その「営業利益単価」という変数の値が「営業利益単価＝換算後の売価単価−換算後の仕入単価」という数式によって計算されることをシステムに入力する。これにより、ユーザは、品目マスタ２２０ｅに追加された新しい列がどのような列であるのかをシステムに伝えることが可能である。
【００６８】
ここで、ユーザがデータをシステムに入力する態様は問わない。例えば、ユーザは、「追加定義」コマンド２１７の選択に応答して表示されるポップアップウィンドウ部に「営業利益単価」という変数名および上述した数式を入力するようにしてもよいし、品目マスタ２２０ｅに追加された新しい列に「営業利益単価」という変数名および上述した数式を直接的に入力するようにしてもよい。
【００６９】
図２Ｈは、品目マスタ２２０ｅに対して「営業利益単価」という新しい列が追加されたことによって、品目マスタ２２０ｈが生成された状態を示す。品目マスタ２２０ｈでは、品目マスタ２２０ｈのそれぞれの行に対して、営業利益単価が計算される。その結果、図２Ｈに示される例では、「品目コード」がＡ０００４である商品の営業利益単価が１５０円であると計算され、「品目コード」がＡ０００５である商品の営業利益単価が１００円であると計算され、「品目コード」がＡ０００６である商品の営業利益単価が５０円であると計算され、「品目コード」がＢ０００１である商品の営業利益単価が５０円であると計算される。これらの計算結果が画面２００ｈに表示されている。
【００７０】
ユーザがメニューバー２１０の「シーン定義」の「終了」コマンド２１３Ｅを選択することによって、「ＰＲＯＣＥＳＳ定義」において、第２のシーンの定義が終了する。これにより、図２Ｆ〜図２Ｈを参照して説明した品目マスタ２２０に対する加工のプロセスが第２のシーンとして定義される。第２のシーンの成果物は、図２Ｈに示される品目マスタ２２０ｈである。
【００７１】
図２Ｉは、「ＰＲＯＣＥＳＳ定義」用の画面２００ｉの一例を示す。ユーザが第２のシーンを定義した後、ユーザがメニューバー２１０の「シーン定義」の「開始」コマンド２１３Ｓを選択することによって、「ＰＲＯＣＥＳＳ定義」において、第３のシーンの定義が開始される。
【００７２】
ユーザは、プログラムの第３のシーンにおいて使用されるデータを選択する。図２Ｉに示される例では、ユーザが第３のシーンにおいて使用されるデータとして「ＰＲＯＣＥＳＳ定義」において定義された品目マスタ２２０ｈと「ＩＮＰＵＴ定義」において定義された販売データ２４０とを選択した結果として、品目マスタ２２０ｈと販売データ２４０とが画面２００ｉに表示されている。
【００７３】
ユーザは、販売データ２４０を選択した後、メニューバー２１０の「ループ」コマンド２１４を選択する。これにより、ユーザは、第３のシーンにおいて、販売データ２４０の全件に対してループ処理を実行することをシステムに伝えることが可能である。図２Ｉでは、ユーザによって選択された販売データ２４０の全件が強調表示されている。
【００７４】
図２Ｊは、「ＰＲＯＣＥＳＳ定義」用の画面２００ｊの一例を示す。画面２００ｊは、画面２００ｉから遷移した画面である。なお、画面２００ｊは、「ＰＲＯＣＥＳＳ定義」において、第３のシーンを定義するための画面である。
【００７５】
ユーザは、販売データ２４０を選択した後に、メニューバー２１０の「集計」コマンド２１６を選択する。これにより、ユーザは、販売データ２４０の全件に対して集計処理を実行することをシステムに伝えることが可能である。
【００７６】
図２Ｊは、ユーザが、販売データ２４０を選択した後、メニューバー２１０の「集計」コマンド２１６を選択した状態を示す。図２Ｊでは、ユーザによって選択された販売データ２４０の全件が強調表示されている。
【００７７】
図２Ｋは、「ＰＲＯＣＥＳＳ定義」用の画面２００ｋの一例を示す。画面２００ｋは、画面２００ｊから遷移した画面である。なお、画面２００ｋは、「ＰＲＯＣＥＳＳ定義」において、第３のシーンを定義するための画面である。
【００７８】
システムは、集計処理を実行するための条件を特定するために、集計キーを選択することをユーザに求める。図２Ｋに示される例では、集計キーを選択することをユーザに求めるためのポップアップウィンドウ部２７０ｋが表示されている。
【００７９】
ユーザは、システムからの集計キーを選択することの求めに応答して、集計キーを選択する。このような選択は、例えば、ポインタ２５０を用いて集計キーを選択することによって行われる。ユーザが選択する集計キーの数は、１つであってもよいし２以上であってもよい。図２Ｋに示される例では、品目マスタ２２０ｈの「品目コード」および販売データ２４０の「販売日付」が集計キーとして選択されている。図２Ｋでは、ユーザによって選択された集計キーが強調表示されている。
【００８０】
ポップアップウィンドウ部２７０ｋには、「ＯＫ」ボタン２７３ｋが表示されている。ユーザが「ＯＫ」ボタン２７３ｋを選択することによって、ユーザによる集計キーの選択は終了する。
【００８１】
図２Ｌは、「ＰＲＯＣＥＳＳ定義」用の画面２００ｌの一例を示す。画面２００ｌは、画面２００ｋにおいてユーザが「ＯＫ」ボタン２７３ｋを選択する操作を行ったことに応答して、画面２００ｋから遷移した画面である。なお、画面２００ｌは、「ＰＲＯＣＥＳＳ定義」において、第３のシーンを定義するための画面である。
【００８２】
システムは、集計処理を実行するための条件を特定するために、集計対象を選択することをユーザに求める。図２Ｌに示される例では、集計対象を選択することをユーザに求めるためのポップアップウィンドウ部２７０ｌが表示されている。
【００８３】
ユーザは、システムからの集計対象を選択することの求めに応答して、集計対象を選択する。このような選択は、例えば、ポインタ２５０を用いて集計対象を選択することによって行われる。図２Ｌに示される例では、販売データ２４０における「数量」が集計対象として選択されている。図２Ｌでは、ユーザによって選択された集計対象が強調表示されている。
【００８４】
ポップアップウィンドウ部２７０ｌには、「ＯＫ」ボタン２７３ｌが表示されている。ユーザが「ＯＫ」ボタン２７３ｌを選択することによって、ユーザによる集計対象の選択は終了する。
【００８５】
その結果、システムは、販売データ２４０の「販売日付」および品目マスタ２２０ｈの「品目コード」を集計キーとし、販売データ２４０の「数量」を集計対象とする集計処理を実行する。
【００８６】
図２Ｍは、「ＰＲＯＣＥＳＳ定義」用の画面２００ｍの一例を示す。画面２００ｍは、画面２００ｍにおいてユーザが「ＯＫ」ボタン２７３ｌを選択する操作を行ったことに応答して、画面２００ｌから遷移した画面である。なお、画面２００ｍは、「ＰＲＯＣＥＳＳ定義」において、第３のシーンを定義するための画面である。
【００８７】
図２Ｍに示される例では、販売データ２４０ｍが画面２００ｍに表示されている。販売データ２４０ｍは、販売データ２４０の「販売日付」および品目マスタ２２０ｈの「品目コード」を集計キーとし、販売データ２４０の「数量」を集計対象とした集計処理が実行された結果としてシステムによって生成されたものである。販売データ２４０ｍを表示することにより、ユーザは、「販売日付」の順に「品目コード」ごとに集計された「数量」を確認することが可能である。
【００８８】
図２Ｍに示される例では、「品目コード」がＡ０００４、Ａ０００５、Ａ０００６、Ｂ０００１である各商品について、上述した集計処理が実行される。その結果、図２Ｍに示されるように、２０１６年１１月１日に販売された「品目コード」がＡ０００６である商品の数量が１０個であると集計され、２０１６年１１月１日に販売された「品目コード」がＡ０００５である商品の数量が５０個であると集計され、２０１６年１１月２日に販売された「品目コード」がＡ０００４である商品の数量が４０個であると集計され、２０１６年１１月２日に販売された「品目コード」がＢ０００１である商品の数量が６０個であると集計される。これらの集計結果が画面２００ｍに表示されている。
【００８９】
ユーザがメニューバー２１０の「シーン定義」の「終了」コマンド２１３Ｅを選択することによって、「ＰＲＯＣＥＳＳ定義」において、第３のシーンの定義が終了する。これにより、図２Ｉ〜図２Ｍを参照して説明した販売データ２４０に対する加工のプロセスが第３のシーンとして定義される。第３のシーンの成果物は、図２Ｍに示される販売データ２４０ｍである。
【００９０】
なお、「品目コード」という項目は、品目マスタ２２０ｈばかりでなく販売データ２４０にも含まれているため、図２Ｋを参照して説明したユーザ操作は、販売データ２４０における「品目コード」と販売データ２４０における「販売日付」とを集計キーとして選択する操作であってもよい。ただし、この場合には、これ以降のユーザ操作により品目マスタ２２０ｈの「品目コード」にフィルタリング処理することにより、販売データ２４０の個別情報を産地が「北海道」のものに限定することが必要である。図２Ｋを参照して説明したユーザ操作は、上述した商品の「数量」の集計処理と同時に、販売データ２４０の個別情報を産地が「北海道」のものに限定する処理を実行させることが可能である点で有利であるといえる。
【００９１】
図２Ｎは、「ＰＲＯＣＥＳＳ定義」用の画面２００ｎの一例を示す。ユーザが第３のシーンを定義した後、ユーザがメニューバー２１０の「シーン定義」の「開始」コマンド２１３Ｓを選択することによって、「ＰＲＯＣＥＳＳ定義」において、第４のシーンの定義が開始される。
【００９２】
ユーザは、第４のシーンにおいて使用されるデータを選択する。図２Ｎに示される例では、ユーザが第４のシーンにおいて使用されるデータとして「ＰＲＯＣＥＳＳ定義」において定義された品目マスタ２２０ｈと「ＰＲＯＣＥＳＳ定義」において定義された販売データ２４０ｍとを選択した結果として、品目マスタ２２０ｈと販売データ２４０ｍとが画面２００ｎに表示されている。
【００９３】
ユーザは、販売データ２４０ｍを選択した後、メニューバー２１０の「ループ」コマンド２１４を選択する。これにより、ユーザは、第４のシーンにおいて、販売データ２４０ｍの全件に対してループ処理を実行することをシステムに伝えることが可能である。
【００９４】
ユーザは、品目マスタ２２０ｈの「売価単価」と販売データ２４０ｍの「数量」とを関連付ける操作を行う。この操作は、例えば、ポインタ２５０を用いて「売価単価」を販売データ２４０ｍまでドラッグする操作である。図２Ｎでは、この操作が破線の矢印で示されている。この関連付けの操作に応答して、システムは、関連付けの内容を入力することをユーザに要求する。ユーザは、この要求に応答して、「売上」という変数が「売価単価」×「数量」で定義されることをシステムに入力する。これにより、ユーザは、「売上」という変数の値が「売上」＝「売価単価」×「数量」という数式で計算されることをシステムに伝えることが可能である。
【００９５】
ユーザは、品目マスタ２２０ｈの「営業利益単価」と販売データ２４０ｍの「数量」とを関連付ける操作を行う。この操作は、例えば、ポインタ２５０を用いて「営業利益単価」を販売データ２４０ｍまでドラッグする操作である。図２Ｎでは、この操作が破線の矢印で示されている。この関連付けの操作に応答して、システムは、関連付けの内容を入力することをユーザに要求する。ユーザは、この要求に応答して、「営業利益」という変数が「営業利益単価」×「数量」で定義されることをシステムに入力する。これにより、ユーザは、「営業利益」という変数の値が「営業利益」＝「営業利益単価」×「数量」という数式で計算されることをシステムに伝えることが可能である。
【００９６】
図２Ｏは、「ＰＲＯＣＥＳＳ定義」用の画面２００ｏの一例を示す。画面２００ｏは、画面２００ｎから遷移した画面である。なお、画面２００ｏは、「ＰＲＯＣＥＳＳ定義」において、第４のシーンを定義するための画面である。
【００９７】
ユーザは、販売データ２４０ｍを選択した後、メニューバー２１０の「追加定義」コマンドを２回選択する。これにより、ユーザは、販売データ２４０ｍに新しい２つの列を追加することをシステムに伝えることが可能である。
【００９８】
システムは、その新しい２つの列のそれぞれの変数が何であるか、その新しい２つの列のそれぞれの変数の値をどのように計算するかをユーザに要求する。
【００９９】
ユーザは、システムからの要求に応答して、新しい１つ目の列の変数が「売上」であることをシステムに入力する。これにより、ユーザは、販売データ２４０ｍに追加された新しい１つ目の列の変数がどのような変数であるのかをシステムに伝えることが可能である。
【０１００】
同様に、システムからの要求に応答して、新しい２つ目の列の変数が「営業利益」であることをシステムに入力する。これにより、ユーザは、販売データ２４０ｍに追加された新しい２つ目の列がどのような変数であるのかをシステムに伝えることが可能である。
【０１０１】
ここで、ユーザがデータをシステムに入力する態様は問わない。例えば、ユーザは、「追加定義」コマンド２１７の選択に応答して表示されるポップアップウィンドウ部に「売上」という変数名および「営業利益」という変数名を入力するようにしてもよいし、販売データ２４０ｍに追加された新しい１つ目の列に「売上」という変数名を直接的に入力し、販売データ２４０ｍに追加された新しい２つ目の列に「営業利益」という変数名を直接的に入力するようにしてもよい。
【０１０２】
図２Ｏは、販売データ２４０ｍに対して「売上」、「営業利益」という新しい２つの列が追加されたことによって、販売データ２４０ｏが生成された状態を示す。販売データ２４０ｏでは、「品目コード」がＡ０００４、Ａ０００５、Ａ０００６、Ｂ０００１である各商品について、上述した売上の計算および営業利益の計算が実行される。その結果、図２Ｏに示される例では、２０１６年１１月１日に販売された「品目コード」がＡ０００６である商品の売上が２５００円であると計算され、２０１６年１１月１日に販売された「品目コード」がＡ０００６である商品の営業利益が５００円であると計算され、２０１６年１１月１日に販売された「品目コード」がＡ０００５である商品の売上が１７５００円であると計算され、２０１６年１１月１日に販売された「品目コード」がＡ０００５である商品の営業利益が５０００円であると計算され、２０１６年１１月２日に販売された「品目コード」がＡ０００４である商品の売上が１２０００円であると計算され、２０１６年１１月２日に販売された「品目コード」がＡ０００４である商品の営業利益が６０００円であると計算され、２０１６年１１月２日に販売された「品目コード」がＢ０００１である商品の売上が１２０００円であると計算され、２０１６年１１月２日に販売された「品目コード」がＢ０００１である商品の営業利益が３０００円であることが計算される。これらの計算結果が画面２００ｏに表示されている。
【０１０３】
ユーザがメニューバー２１０の「シーン定義」の「終了」コマンド２１３Ｅを選択することによって、「ＰＲＯＣＥＳＳ定義」において、第４のシーンの定義が終了する。これにより、図２Ｎ、図２Ｏを参照して説明した品目マスタ２２０ｈおよび販売データ２４０に対する加工のプロセスが第４のシーンとして定義される。プログラムの第４のシーンの成果物は、図２Ｏに示される販売データ２４０ｏである。
【０１０４】
図２Ｐは、「ＯＵＴＰＵＴ定義」用の画面２００ｐの一例を示す。ユーザが第４のシーンを定義した後、メニューバー２１０の「ＯＵＴＰＵＴ定義」の「開始」コマンド２１２Ｓを選択することによって、「ＯＵＴＰＵＴ定義」が開始される。「ＯＵＴＰＵＴ定義」が開始されることにより、システムによって表示される画面が画面２００ｐに遷移する。
【０１０５】
ユーザは、第４のシーンの成果物である販売データ２４０ｏを選択する。これにより、販売データ２４０ｏを出力データとして定義することが可能である。
【０１０６】
ユーザがメニューバー２１０の「ＯＵＴＰＵＴ定義」の「終了」コマンド２１２Ｅを選択することによって、「ＯＵＴＰＵＴ定義」が終了する。
【０１０７】
このように、ユーザがデータを視覚的に操作することを可能にすることによって、開発対象のプログラムにおいてデータがどのように加工されていくかをユーザが視覚的に把握することが可能である。これにより、ユーザは、ユーザ自身の思い通りの処理を実行することが可能なプログラムを容易に生成することが可能である。
【０１０８】
なお、「ＰＲＯＣＥＳＳ定義」において、最後のシーンを定義した後に「ＯＵＴＰＵＴ定義」が行われることから、ユーザが「ＩＮＰＵＴ定義」の直後に図２Ｂに示されるような「ＯＵＴＰＵＴ定義」を行うことは必須ではない。ただし、後述されるマッピング定義を有効に機能させるためには、「ＩＮＰＵＴ定義」の直後に図２Ｂに示されるような「ＯＵＴＰＵＴ定義」を行うことが必要である。
【０１０９】
また、上述した実施形態では、対象項目などを選択するためにポインタ２５０用いる例を説明したが、本発明はこれに限定されない。ポインタ２５０以外の任意の手段を用いて対象項目などを選択するようにしてもよい。例えば、システムがタッチパネルディスプレイを実装している場合には、ユーザがタッチパネルディスプレイに直接タッチすることによって対象項目などを選択するようにしてもよい。
【０１１０】
さらに、上述した実施形態では、メニューバー２１０は、図２Ａ〜図２Ｐに示されるコマンドを含むものとして説明したが、本発明はこれに限定されない。メニューバー２１０は、図２Ａ〜図２Ｐに示されるコマンドに加えて、または、図２Ａ〜図２Ｐに示されるコマンドに代えて、任意のコマンドを含むことが可能である。例えば、メニューバー２１０は、重複している行を圧縮するための「重複圧縮」コマンドや、各データに含まれる各商品の個別情報を昇順または降順に並び替えるための「ソート」コマンドなどを含むことが可能である。あるいは、メニューバー２１０に含まれるコマンドのうちの少なくとも１つのコマンドをメニューバー２１０以外の形式で表示するようにしてもよい。また、メニューバー２１０の表示形式は、横に延びるバー形式に限定されない。例えば、メニューバー２１０の表示形式は、箱型のボックス形式であってもよいし、ユーザからの入力に応答してポップアップ表示される形式であってもよい。
【０１１１】
３．「詳細設計」を支援するための補助機能
以下、「詳細設計」を支援するための補助機能を説明する。補助機能の１つが「マッピング定義」である。ここで、「マッピング定義」とは、データとデータとの関係性を定義することをいう。
【０１１２】
以下、図３Ａ〜図３Ｃを参照して、企業ブランド単位および店舗単位で商品の売上および営業利益を集計するためのプログラムを開発する場合を例にとり、そのプログラムを定義するために、「ＩＮＰＵＴ定義」、「ＯＵＴＰＵＴ定義」、「マッピング定義」をどのように定義するのかを具体的に説明する。
【０１１３】
図３Ａは、「ＩＮＰＵＴ定義」用の画面３００ａの一例を示す。ユーザがメニューバー２１０の「ＩＮＰＵＴ定義」の「開始」コマンド２１１Ｓを選択することによって、「ＩＮＰＵＴ定義」が開始される。「ＩＮＰＵＴ定義」が開始されることにより、システムによって表示される画面が画面３００ａに遷移する。
【０１１４】
図３Ａに示される例では、品目マスタ２２０とレートマスタ２３０と販売データ２４０と店舗マスタ３８０とが入力データとして定義されている。品目マスタ２２０、レートマスタ２３０、販売データ２４０は、図２Ａを参照して上述したとおりである。店舗マスタ３８０は、各店舗の識別コード（すなわち、店舗コード）ごとに店舗名と、企業ブランドのブランド名と、ブランド名の識別コード（すなわち、ブランドコード）を示すマスタデータである。店舗マスタ３８０は、例えば、データベース部に格納された複数のマスタデータの中からユーザによって選択されることにより、入力データとして定義される。
【０１１５】
ユーザがメニューバー２１０の「ＩＮＰＵＴ定義」の「終了」コマンド２１１Ｅを選択することによって、「ＩＮＰＵＴ定義」が終了する。
【０１１６】
なお、図３Ａに示される店舗マスタ３８０に含まれる個別情報は単なる一例であり、本発明はこれに限定されない。例えば、店舗マスタ３８０の店舗コードおよびブランドコードは、任意の半角の数字、英字、またはこれらの組み合わせであってもよく、店舗マスタ３８０のブランド名は、ＡマートおよびＢマート以外の他のブランド名を含んでいてもよい。
【０１１７】
図３Ｂは、「ＯＵＴＰＵＴ定義」用の画面３００ｂの一例を示す。ユーザがメニューバー２１０の「ＯＵＴＰＵＴ定義」の「開始」コマンド２１２Ｓを選択することによって、「ＯＵＴＰＵＴ定義」が開始される。「ＯＵＴＰＵＴ定義」が開始されることにより、システムによって表示される画面が画面３００ｂに遷移する。
【０１１８】
図３Ｂに示される例では、出力項目３６０が出力データとして定義されている。出力項目３６０は、出力されるべき複数の項目（ブランド名、店舗名、売上、営業利益）を含む。これらの項目は、ブランド単位および店舗単位で商品の売上および営業利益を集計するという目的を達成するためにユーザによって設定される。これにより、ブランド名、店舗名、売上、営業利益を含むデータを出力データとして定義することが可能である。
【０１１９】
ユーザがメニューバー２１０の「ＯＵＴＰＵＴ定義」の「終了」コマンド２１２Ｅを選択することによって、「ＯＵＴＰＵＴ定義」が終了する。
【０１２０】
図３Ａを再び参照して、図３Ａに示される例では、図２Ａに示される例に比較して、店舗マスタ３８０が入力データとして追加的に定義されている。店舗マスタ３８０によると、店舗名が同一であるがブランド名が互いに異なる２つの個別情報が存在する。具体的には、店舗マスタ３８０には、「ブランド名」がＡマートである品川店と、「ブランド名」がＢマートである品川店とが存在する。このような状況は、企業合併などによって起こり得る。このような場合、システムは、店舗マスタ３８０の「店舗名」のみを参照しただけでは、店舗マスタ３８０の「店舗名」＝品川店がＡマートの品川店であるかＢマートの品川店であるかを識別することができない。従って、個々の店舗を識別するためには、店舗マスタ３８０の「店舗名」を参照するのではなく、店舗マスタ３８０の「店舗コード」を参照するか、または、店舗マスタ３８０の「ブランド名」および「店舗名」を参照するというルール（データとデータとの関係性）を予め設定しておくことが有用である。このようなルール（データとデータとの関係性）を定義するものが「マッピング定義」である。
【０１２１】
図３Ｃは、「マッピング定義」用の画面３００ｃの一例を示す。「マッピング定義」において、データとデータとの関係性を定義することが可能である。例えば、「マッピング定義」において、マスタデータとマスタデータとの間の関係性、マスタデータにおける項目と項目との間の関係性、マスタデータとトランザクションデータとの間の関係性などを定義することが可能である。
【０１２２】
図３Ｃに示される例では、マッピング定義マスタ３９０が画面３００ｃに表示されている。マッピング定義マスタ３９０では、店舗マスタ３８０の「店舗コード」が店舗マスタ３８０のユニークキーとして利用可能であること、店舗マスタ３８０の「ブランド名」および「店舗名」の組み合わせが店舗マスタ３８０のユニークキーとして利用可能であることが定義されている。マッピング定義マスタ３９０は、ユーザによって編集されることが可能である。
【０１２３】
このようなマッピング定義マスタ３９０を予め作成しておき、新規のプログラムを開発する際の「ＰＲＯＣＥＳＳ定義」においてマッピング定義マスタ３９０を参照させることにより、マッッピング定義マスタ３９０に定義されているユニークキー以外の項目をユニークキーとして利用する新規のプログラムを開発してしまうことを未然に防止することが可能である。例えば、「ＰＲＯＣＥＳＳ定義」において、店舗マスタ３８０の「店舗名」をユニークキーとして利用することが定義された場合には、「マッピング定義」において定義されたルールに違反する旨の警告を出すようにすればよい。
【０１２４】
このように、予め定義されたルールに違反するプログラムを開発することを未然に防止することにより、単体テストで不都合が生じる確率を低減することが可能であり、詳細設計をやり直す労力および時間を低減することが可能である。
【０１２５】
このような「マッピング定義」は、システムやプログラムを更新する際に特に有用である。例えば、Ａ社がＢ社を吸収合併した場合において、Ｂ社のデータを取り扱うことができるようにＡ社のシステムを更新する際に、マスタの変更がそのマスタを参照する各種のプログラムに与える影響を最小化することが可能である。
【０１２６】
「マッピング定義」以外の補助機能として、「共通定数定義」を実装することが好ましい。ここで、「共通定数定義」とは、プロジェクトに共通する定数を定義することをいう。ユーザが「共通定数定義」を予め定義しておくことによって、同じ内容にもかかわらず異なるファイル名であることを理由に別物と認識されてしまうといった事態を回避することが可能である。「共通定数定義」により、システム間の常識の相違を解消することが可能である。
【０１２７】
また、その他の補助機能として、単体テスト用のテストデータが「ＩＮＰＵＴ定義」において定義された入力データに整合するか否かを判定する機能を実装するようにしてもよい。例えば、単体テスト用のテストデータが「ＩＮＰＵＴ定義」において定義された入力データに整合しないと判定された場合には、エラーを表示することによってユーザに警告するようにしてもよい。
【０１２８】
さらに、その他の補助機能として、「ＩＮＰＵＴ定義」の仕様の変更が「ＯＵＴＰＵＴ定義」に影響を与えるか否かを判定する機能を実装するようにしてもよい。例えば、「ＩＮＰＵＴ定義」の仕様の変更が「ＯＵＴＰＵＴ定義」に影響を与えると判定された場合には、影響があるシーンとその箇所とを表示することによってユーザに警告するようにしてもよい。
【０１２９】
４．プログラムを開発するための新しいモデルを実現するためのシステムの構成
図４は、プログラムを開発するための新しいモデルを実現するためのシステム４００の構成の一例を示す。
【０１３０】
システム４００は、プログラムの開発を支援することが可能な親システム４１０と、インターネット４２０を介して親システム４１０と通信することが可能な少なくとも１つの子システム４３０１〜４３０Ｎとを備えている。少なくとも１つの子システム４３０１〜４３０Ｎは、少なくとも１人のユーザ（例えば、プログラム開発者）によって使用される。ここで、Ｎは、１以上の任意の整数である。
【０１３１】
親システム４１０は、インターフェース部４１１とプロセッサ部４１２とメモリ部４１３とを含む。
【０１３２】
インターフェース部４１１は、少なくとも１つの子システム４３０１〜４３０Ｎとの間の通信を制御する。
【０１３３】
メモリ部４１３には、処理を実行するために必要とされるプログラム（例えば、図６、図７に示される処理を表すプログラム）やそのプログラムを実行するために必要とされるデータ等が格納されている。ここで、プログラムをどのようにしてメモリ部４１３に格納するかは問わない。例えば、プログラムは、メモリ部４１３にプリインストールされていてもよい。あるいは、プログラムは、インターネット４２０などのネットワークを経由してダウンロードされることによってメモリ部４１３にインストールされるようにしてもよいし、光ディスクやＵＳＢなどの記憶媒体を介してメモリ部４１３にインストールされるようにしてもよい。
【０１３４】
プロセッサ部４１２は、メモリ部４１３に格納されているプログラムを読み出し、そのプログラムを実行する。これにより、親システム４１０をシステム４００の一部を構成する装置として機能させることが可能である。
【０１３５】
親システム４１０には、データベース部４４０が接続されている。データベース部４４０は、入力データおよび出力データを格納するためのＩ／Ｏデータベース部４４１と、プログラムの各シーンの入力データ、途中のデータ、出力データを格納するためのシーンデータベース部４４２と、補助機能を実行するために必要なデータを格納するための補助機能データベース部４４３とを含む。
【０１３６】
少なくとも１つの子システム４３０１〜４３０Ｎのそれぞれの構成は、親システム４１０の構成と同様である。少なくとも１つの子システム４３０１〜４３０Ｎのそれぞれは、携帯電話、スマートフォン、タブレット端末、スマートグラス、スマートウォッチ端末等の携帯無線端末であってもよいし、デスクトップＰＣ、ラップトップＰＣ、ノートＰＣ等のパーソナルコンピュータであってもよい。
【０１３７】
少なくとも１つの子システム４３０１〜４３０Ｎのそれぞれは、インターネット４２０を介して親システム４１０と通信することが可能なように構成されている。例えば、少なくとも１つの子システム４３０１〜４３０Ｎのそれぞれは、データベース部４４０内（より具体的には、データベース部４４０のＩ／Ｏデータベース部４４１内）の販売データ２４０を更新するために、更新後の販売データ２４０をインターネット４２０を介して親システム４１０に情報を送信する。
【０１３８】
なお、図４に示される実施形態では、少なくとも１つの子システム４３０１〜４３０Ｎがインターネット４２０を介して親システム４１０と通信可能であると説明したが、本発明はこれに限定されない。インターネット４２０の代わりに任意のタイプのネットワークを用いることも可能である。なお、インターネット４２０およびその代わりの任意のネットワークを介することなく、少なくとも１つの子システム４３０１〜４３０Ｎを親システム４１０に電気的に結合した構成もまた本発明の範囲内である。さらに、子システム４３０１の機能および親システム４１０の機能の両方を一体的に組み込んだシステム（すなわち、スタンドアロン型のシステム）をシステム４００として構築してもよい。このようなスタンドアロン型のシステム４００もまた本発明の範囲内である。
【０１３９】
また、図４に示される実施形態では、データベース部４４０は、親システム４１０の外部に設けられているが、本発明はこれに限定されない。データベース部４４０を親システム４１０の内部に設けることも可能である。データベース部４４０の構成は、特定のハードウェア構成には限定されない。例えば、データベース部４４０は、単一のハードウェア部品で構成されてもよいし、複数のハードウェア部品で構成されてもよい。例えば、データベース部４４０は、親システム４１０の単一の外付けハードディスク装置として構成されてもよいし、ネットワークを介して接続されるクラウド上のストレージとして構成されてもよい。さらに、Ｉ／Ｏデータベース部４４１、シーンデータベース部４４２、補助機能データベース部４４３のそれぞれの構成もまた特定のハードウェア構成には限定されない。例えば、Ｉ／Ｏデータベース部４４１、シーンデータベース部４４２、補助機能データベース部４４３のそれぞれもまた、単一のハードウェア部品で構成されてもよいし、複数のハードウェア部品で構成されてもよい。
【０１４０】
図５Ａは、Ｉ／Ｏデータベース部４４１に格納されている情報の構成の一例を示す。
【０１４１】
Ｉ／Ｏデータベース部４４１には、「ＩＮＰＵＴ定義」において使用されるデータおよび「ＯＵＴＰＵＴ定義」において定義されたデータが格納されている。「ＩＮＰＵＴ定義」において使用されるデータは、例えば、品目マスタ２２０、レートマスタ２３０、販売データ２４０、店舗マスタ３８０などである。ユーザは、「ＩＮＰＵＴ定義」において、Ｉ／Ｏデータベース部４４１に格納されたデータの中からいくつかのデータを選択することによって容易に入力データを定義することが可能である。なお、図７Ａに示される例では、「ＯＵＴＰＵＴ定義」において定義されたデータは、省略されている。
【０１４２】
なお、図５Ａに示される例では、「ＩＮＰＵＴ定義」において使用されるデータと「ＯＵＴＰＵＴ定義」において定義されたデータとが同一のデータベースであるＩ／Ｏデータベース部４４１に格納されているが、本発明はこれに限定されない。「ＩＮＰＵＴ定義」において使用されるデータと「ＯＵＴＰＵＴ定義」において定義されたデータとが、それぞれ別個のデータベース部に格納されるようにしてもよい。
【０１４３】
図５Ｂは、シーンデータベース部４４２に格納されている情報の構成の一例を示す。
【０１４４】
シーンデータベース部４４２には、プログラムの各シーンの入力データ、途中のデータ、出力データが格納されている。ユーザは、プログラムに不備があったことを理由にそのプログラムを検証したい場合において、そのプログラムの各シーンの入力データおよび出力データを検証することが可能である。これにより、ユーザは、どのシーンに不備の原因があるのかを容易に探究することが可能である。
【０１４５】
図５Ｃは、補助機能データベース部４４３に格納されている情報の構成の一例を示す。
【０１４６】
補助機能データベース部４４３には、例えば、マッピング定義マスタ３９０が格納されている。
【０１４７】
５．システムによる処理
図６は、親システム４１０において実行される処理のフローの一例を示す。この処理は、親システム４１０内のプロセッサ部４１２によって実行される。この処理は、プログラムの形式で表現されている。このプログラムは、親システム４１０内のメモリ部４１３に格納されている。以下、図６に示される各ステップを説明する。
【０１４８】
ステップＳ６０１：プロセッサ部４１２は、「ＩＮＰＵＴ定義」に関する処理を実行する。例えば、「ＩＮＰＵＴ定義」に関する処理は、Ｉ／Ｏデータベース部４４１に格納されている複数のデータのうちユーザによって選択された少なくとも１つのデータを入力データとして定義する処理を含む。あるいは、「ＩＮＰＵＴ定義」に関する処理は、ユーザによって入力されたデータを入力データとして定義する処理を含んでいてもよい。
【０１４９】
なお、「ＩＮＰＵＴ定義」に関する処理は、「マッピング定義」に従ってデータとデータとの関係性をチェックする処理を含んでいることが好ましい。これにより、入力データの項目や型などが「マッピング定義」に整合していないことを検出することが可能である。
【０１５０】
ステップＳ６０２：プロセッサ部４１２は、「ＯＵＴＰＵＴ定義」に関する処理を実行する。「ＯＵＴＰＵＴ定義」に関する処理は、出力データを定義する処理を含む。出力データは、Ｉ／Ｏデータベース部４４１に格納される。例えば、出力データを定義する処理は、Ｉ／Ｏデータベース部４４１に格納されている複数のデータのうちユーザによって選択されたデータを編集することにより、編集後のデータを出力データとして定義する処理を含む。あるいは、出力データを定義する処理は、ユーザによって入力されたデータを出力データとして定義する処理を含んでいてもよい。
【０１５１】
なお、「ＯＵＴＰＵＴ定義」に関する処理は、「マッピング定義」に従ってデータとデータとの関係性をチェックする処理を含んでいることが好ましい。これにより、出力データの項目や型などが「マッピング定義」に整合していないことを検出することが可能である。
【０１５２】
ステップＳ６０３：プロセッサ部４１２は、「ＰＲＯＣＥＳＳ定義」に関する処理を実行する。例えば、「ＰＲＯＣＥＳＳ定義」に関する処理は、Ｉ／Ｏデータベース部４４１に格納されている複数のデータのうちユーザによって選択された少なくとも１つのデータを入力データとして選択する処理と、選択された少なくとも１つの入力データをどのように加工するかを特定する処理とを含む。開発対象のプログラムが複数のシーンを含む場合には、１シーンごとに、Ｉ／Ｏデータベース部４４１に格納されている複数のデータのうちユーザによって選択された少なくとも１つのデータを入力データとして選択する処理と、選択された少なくとも１つの入力データをどのように加工するかを特定する処理とを実行するようにしてもよい。
【０１５３】
なお、「ＰＲＯＣＥＳＳ定義」に関する処理は、「マッピング定義」に従ってデータとデータとの関係性をチェックする処理を含んでいることが好ましい。これにより、入力データを加工することにより生成されるデータの項目や型などが「マッピング定義」に整合していないことを検出することが可能である。
【０１５４】
なお、ステップＳ６０２において、図２Ｂを参照して説明した例のように出力データを定義するとともに、ステップＳ６０３において、シーンデータベース部４４２に格納されている複数のデータのうちユーザによって選択されたデータを出力データとして定義するようにしてもよい。これにより、ステップＳ６０２において定義された出力データとステップＳ６０３において定義された出力データとが整合しているか否かを判定することが可能である。あるいは、ステップＳ６０２を省略して、ステップＳ６０３において、シーンデータベース部４４２に格納されている複数のデータのうちユーザによって選択されたデータを出力データとして定義するようにしてもよい。これにより、出力データを定義する工数を低減することが可能である。
【０１５５】
図７は、入力データをどのように加工するかを特定する処理のフローの一例を示す。この処理は、図６に示されるステップＳ６０３に示される処理に含まれている。この処理は、親システム４１０内のプロセッサ部４１２によって実行される。この処理は、プログラムの形式で表現されている。このプログラムは、親システム４１０内のメモリ部４１３に格納されている。以下、図７に示される各ステップを説明する。
【０１５６】
ステップＳ７０１：プロセッサ部４１２は、どのようなユーザ操作がなされたかを検出する。例えば、図２Ｃに示される例では、プロセッサ４１２は、品目マスタ２２０に含まれる複数の行のうち、「品目コード」がＡ０００４である行、「品目コード」がＡ０００５である行、「品目コード」がＡ０００６である行、「品目コード」がＢ０００１である行をユーザが選択する操作を行ったことを検出する。
【０１５７】
ステップＳ７０２：プロセッサ部４１２は、ユーザ操作の意図を特定する。例えば、図２Ｄに示される例では、プロセッサ部４１２は、品目マスタ２２０から上述した４行を選択するという上述したユーザ操作の意図が「産地が北海道である行をフィルタリングすること」かつ「仕入通貨がＪＰＹである行をフィルタリングすること」かつ「販売通貨がＪＰＹである行をフィルタリングすること」であるのか否かをユーザに問い合わせることを決定し、そのユーザ操作の意図をユーザに確認するためにポップアップウィンドウ部２７０ｄを表示する。プロセッサ部４１２は、フィルタリング条件が「産地＝北海道」という条件のみであることを示す信号を受信することによって、品目マスタ２２０から上述した４行を選択するという上述したユーザ操作の意図が、「産地＝北海道」というフィルタリング条件でフィルタリングすることであることを特定する。このように、プロセッサ部４１２は、ユーザとプロセッサ部４１２との相互作用（対話）を介して、ユーザ操作の意図を学習する。このようなユーザとプロセッサ部４１２との相互作用は、視覚的に行われる。
【０１５８】
ステップＳ７０３：プロセッサ部４１２は、ユーザ操作の意図に対応する中間コードを生成する。ここで、中間コードは、非言語依存のコードであることが好ましい。中間コードを非言語依存のコードとすることにより、中間コードを複数の種類のプログラム言語で記述されたコードに変換することが容易であるからである。
【０１５９】
なお、図７に示される処理は、ステップＳ６０３に含まれる処理として説明したが、本発明はこれに限定されない。図７に示される処理は、ステップＳ６０３に加えて、または、ステップＳ６０３に代えて、ステップＳ６０１および／またはステップＳ６０２に含まれていてもよい。例えば、図７に示される処理がステップＳ６０１に含まれる場合には、プロセッサ部４１２は、入力データを定義するためのユーザ操作の意図を学習することによって、そのユーザ操作に対応する中間コードを生成することが可能である。あるいは、図７に示される処理がステップＳ６０２に含まれる場合には、プロセッサ部４１２は、出力データを定義するためのユーザ操作の意図を学習することによって、そのユーザ操作に対応する中間コードを生成することが可能である。
【０１６０】
６．システムによる処理によって生成される中間コード
図８Ａおよび図８Ｂは、図２Ａ〜図２Ｐを参照して説明したユーザ操作に基づいて生成される中間コードの一例を示す。
【０１６１】
図８Ａおよび図８Ｂに示される例では、ＩＮＰＵＴテーブル８１０と、ＯＵＴＰＵＴテーブル８２０と、ＩＮＰＵＴ項目定義テーブル８３０と、ＯＵＴＰＵＴ項目定義テーブル８４０と、シーン定義テーブル８５０と、シーン詳細定義テーブル８６０とが中間コードとして示されている。
【０１６２】
ＩＮＰＵＴテーブル８１０は、「ＩＮＰＵＴ定義」において定義された入力データの形式（ＩＮＰＵＴ名、出力形式、固定長・可変長、区切り文字、文字コード、タイトルの有無など）を示す。
【０１６３】
ＯＵＴＰＵＴテーブル８２０は、「ＯＵＴＰＵＴ定義」において定義された出力データの形式（ＯＵＴＰＵＴ名、出力形式、固定長・可変長、区切り文字、文字コード、タイトルの有無、最終加工変数名など）を示す。
【０１６４】
ＩＮＰＵＴ項目定義テーブル８３０は、「ＩＮＰＵＴ定義」において定義された入力データに含まれる各項目の詳細（項目順、データ型、データ長など）を示す。
【０１６５】
ＯＵＴＰＵＴ項目定義テーブル８４０は、「ＯＵＴＰＵＴ定義」において定義される出力データに含まれる各項目の詳細（項目順、データ型、データ長など）を示す。
【０１６６】
シーン定義テーブル８５０は、「ＰＲＯＣＥＳＳ定義」において定義されるシーンの数を示す。
【０１６７】
シーン詳細定義テーブル８６０は、「ＰＲＯＣＥＳＳ定義」において定義される各シーンにおいて実行されるべき処理の詳細（処理順、ＩＮＰＵＴ、ＯＵＴＰＵＴ、メソッド、条件、追加項目、数式など）を示す。
【０１６８】
図８Ａに示される例では、ＩＮＰＵＴテーブル８１０は、品目マスタ、レートマスタ、販売データを含むものとして定義されている。ＩＮＰＵＴテーブル８１０という中間データは、入力データを定義するために行われたユーザ操作と実質的に対応している。従って、ＩＮＰＵＴテーブル８１０という中間データが図２Ａを参照して説明した「ＩＮＰＵＴ定義」におけるユーザ操作に基づいて生成されることは明らかである。例えば、ユーザが入力データの項目の情報を手動で入力する場合には、プロセッサ部４１２がそのように入力される情報に基づいてＩＮＰＵＴテーブル８１０という中間データを生成するようにすればよい。ＩＮＰＵＴ項目定義テーブル８３０についても同様である。
【０１６９】
なお、図８Ａに示される例では、品目マスタ、レートマスタ、販売データの出力形式が「ファイル」形式となっているが、これらの出力形式はこれに限定されない。出力形式は、「ファイル」形式以外に、「データベース」形式、「Ｗｅｂ」形式などであってもよい。出力形式が「Ｗｅｂ」形式である場合には、例えば、ＸＭＬデータの出力データを利用することにより、ＩＮＰＵＴテーブル８１０に含まれる項目の情報を手動で入力することを省略することが可能である。なぜなら、ＸＭＬデータの中には、ＩＮＰＵＴテーブル８１０に含まれる項目の情報のようなメタデータが既に入っているからである。
【０１７０】
図８Ａに示される例では、ＯＵＴＰＵＴテーブル８２０は、売上利益情報を含むものとして定義されている。ＯＵＴＰＵＴテーブル８２０という中間データは、出力データを定義するために行われたユーザ操作と実質的に対応している。従って、ＯＵＴＰＵＴテーブル８２０という中間データが図２Ｂ（または図２Ｐ）を参照して説明した「ＯＵＴＰＵＴ定義」におけるユーザ操作に基づいて生成されることは明らかである。例えば、ユーザが出力データの項目の情報を手動で入力する場合には、プロセッサ部４１２がそのように入力される情報に基づいてＯＵＴＰＵＴテーブル８２０という中間データを生成するようにすればよい。ＯＵＴＰＵＴ項目定義テーブル８４０についても同様である。
【０１７１】
なお、図８Ａに示される例では、ＯＵＴＰＵＴテーブル８２０は、最終加工変数名として「販売データ３」を含む。これは、「販売データ３」が開発対象のプログラムから最終的に出力される出力データとして定義されていることを示す。
【０１７２】
以下、図２Ｃ〜図２Ｏを参照して説明した「ＰＲＯＣＥＳＳ定義」におけるユーザ操作に基づいて図８Ａおよび図８Ｂに示されるシーン定義テーブル８５０およびシーン詳細定義テーブル８６０がどのようにして生成されるのかを説明する。このような生成処理は、プロセッサ部４１２によって実行される。
【０１７３】
図２Ｃ〜図２Ｅを参照して説明したように、第１のシーンにおいて、ユーザは、品目マスタ２２０から「品目コード」がＡ０００４である行、「品目コード」がＡ０００５である行、「品行コード」がＡ０００６である行、「品目コード」がＢ０００１である行を選択した後、ユーザは、「産地」＝「北海道」というフィルタリング条件を選択する。プロセッサ部４１２は、品目マスタ２２０から「品目コード」がＡ０００４である行、「品目コード」がＡ０００５である行、「品行コード」がＡ０００６である行、「品目コード」がＢ０００１である行を選択するというユーザ操作がなされたことを検出し（図７のステップＳ７０１）、そのユーザ操作の意図をユーザに確認することによって、ユーザ操作の意図が「産地」＝「北海道」というフィルタリング条件でフィルタリングを実行することであることを特定し（図７のステップＳ７０２）、そのユーザ操作の意図に対応する中間コードを生成する（図７のステップＳ７０３）。このようにして生成された中間コードが、シーン詳細定義テーブル８６０の１行目の中間コードである。なお、シーン詳細定義テーブル８６０では、品目マスタ２２０が「品目マスタ」という名称で示されており、品目マスタ２２０ｅが「品目マスタ２」という名称で示されている。
【０１７４】
図２Ｆを参照して説明したように、第２のシーンにおいて、ユーザは、品目マスタ２２０ｅを選択した後、メニューバー２１０の「ループ」コマンド２１４を選択する。プロセッサ部４１２は、品目マスタ２２０ｅを選択するというユーザ操作がなされたこと、メニューバー２１０の「ループ」コマンド２１４を選択するというユーザ操作がなされたことを検出し（図７のステップＳ７０１）、そのユーザ操作の意図が品目マスタ２２０ｅの全件に対してループ処理を実行することであることを特定し（図７のステップＳ７０２）、そのユーザ操作の意図に対応する中間コードを生成する（図７のステップＳ７０３）。このようにして生成された中間コードが、シーン詳細定義テーブル８６０の２行目の中間コードである。
【０１７５】
図２Ｇを参照して説明したように、第２のシーンにおいて、ユーザは、品目マスタ２２０の仕入単価および／または仕入通貨をレートマスタ２３０までドラッグする。プロセッサ部４１２は、品目マスタ２２０の仕入単価および／または仕入通貨をレートマスタ２３０までドラッグするというユーザ操作がなされたことを検出し（図７のステップＳ７０１）、そのユーザ操作の意図が品目マスタ２２０の仕入単価および／または仕入通貨とレートマスタ２３０のレートとを関連付けることであることを特定し（図７のステップＳ７０２）、そのユーザ操作の意図に対応する中間コードを生成する（図７のステップＳ７０３）。このようにして生成された中間コードが、シーン詳細定義テーブル８６０の３行目の中間コードである。なお、シーン詳細定義テーブル８６０では、レートマスタ２２０は、「レートマスタ」という名称で示されている。
【０１７６】
図２Ｇを参照して説明したように、第２のシーンにおいて、ユーザは、メニューバー２１０の「計算」コマンド２１５を選択し、「レート×仕入単価」という数式を入力する。プロセッサ部４１２は、メニューバー２１０の「計算」コマンド２１５を選択するというユーザ操作がなされたこと、「レート×仕入単価」という数式を入力するというユーザ操作がなされたことを検出し（図７のステップＳ７０１）、そのユーザ操作の意図が「レート×仕入単価」を計算することであることを特定し（図７のステップＳ７０２）、そのユーザ操作の意図に対応する中間コードを生成する（図７のステップＳ７０３）。このようにして生成された中間コードが、シーン詳細定義テーブル８６０の４行目の中間コードである。
【０１７７】
図２Ｇを参照して説明したように、第２のシーンにおいて、ユーザは、品目マスタ２２０の売価単価および／または販売通貨をレートマスタ２３０までドラッグする。プロセッサ部４１２は、品目マスタ２２０の売価単価および／または販売通貨をレートマスタ２３０までドラッグするというユーザ操作がなされたことを検出し（図７のステップＳ７０１）、そのユーザ操作の意図が品目マスタ２２０の売価単価および／または販売通貨とレートマスタ２３０のレートとを関連付けることであることを特定し（図７のステップＳ７０３）、そのユーザ操作の意図に対応する中間コードを生成する（図７のステップＳ７０３）。このようにして生成された中間コードが、シーン詳細定義テーブル８６０の５行目の中間コードである。
【０１７８】
図２Ｇを参照して説明したように、第２のシーンにおいて、ユーザは、メニューバー２１０の「計算」コマンド２１５を選択し、「レート×売価単価」という数式を入力する。プロセッサ部４１２は、メニューバー２１０の「計算」コマンド２１５を選択するというユーザ操作がなされたこと、「レート×売価単価」という数式を入力するというユーザ操作がなされたことを検出し（図７のステップＳ７０１）、そのユーザ操作の意図が「レート×売価単価」を計算することであることを特定し（図７のステップＳ７０２）、そのユーザ操作の意図に対応する中間コードを生成する（図７のステップＳ７０３）。このようにして生成された中間コードが、シーン詳細定義テーブル８６０の６行目の中間コードである。
【０１７９】
図２Ｈを参照して説明したように、第２のシーンにおいて、ユーザは、メニューバー２１０の「追加定義」コマンド２１７を選択し、品目マスタ２２０に「営業利益単価」という新しい項目を追加するとともに、その追加された項目に関連して「営業利益単価＝換算後の売価単価−換算後の仕入単価」という数式を入力する。プロセッサ部４１２は、メニューバー２１０の「追加定義」コマンド２１７を選択するというユーザ操作がなされたこと、品目マスタ２２０に「営業利益単価」という新しい項目を追加するというユーザ操作がなされたこと、その新しい項目に関連して「営業利益単価＝換算後の売価単価−換算後の仕入単価」という数式を入力するというユーザ操作がなされたことを検出し（図７のステップＳ７０１）、そのユーザ操作の意図が「営業利益単価＝換算後の売価単価−換算後の仕入単価」という数式によって定義される「営業利益単価」という新しい項目を品目マスタ２２０に追加することにより、新たな品目マスタ２２０ｈを定義することであることを特定し（図７のステップＳ７０２）、そのユーザ操作の意図に対応する中間コードを生成する（図７のステップＳ７０３）。このようにして生成された中間コードが、シーン詳細定義テーブル８６０の７行目の中間コードである。なお、シーン詳細定義テーブル８６０では、品目マスタ２２０ｈは、「品目マスタ２」という名称で示されている。
【０１８０】
図２Ｉを参照して説明したように、第３のシーンにおいて、ユーザは、販売データ２４０を選択した後、メニューバー２１０の「ループ」コマンド２１４を選択する。プロセッサ部４１２は、販売データ２４０を選択するというユーザ操作がなされたこと、メニューバー２１０の「ループ」コマンド２１４を選択するというユーザ操作がなされたことを検出し（図７のステップＳ７０１）、そのユーザ操作の意図が販売データ２４０の全件に対してループ処理を実行することであることを特定し（図７のステップＳ７０２）、そのユーザ操作の意図に対応する中間コードを生成する（図７のステップＳ７０３）。このようにして生成された中間コードが、シーン詳細定義テーブル８６０の８行目の中間コードである。なお、シーン詳細定義テーブル８６０では、販売データ２４０は、「販売データ」という名称で示されている。
【０１８１】
図２Ｊを参照して説明したように、第３のシーンにおいて、ユーザは、販売データ２４０を選択した後、メニューバー２１０の「集計」コマンド２１６を選択する。プロセッサ部４１２は、販売データ２４０を選択するというユーザ操作がなされたこと、メニューバー２１０の「集計」コマンド２１６を選択するというユーザ操作がなされたことを検出し（図７のステップＳ７０１）、そのユーザ操作の意図が販売データ２４０に対して集計処理を実行することであることを特定する（図７のステップＳ７０２）。プロセッサ部４１２は、その集計処理を実行するに際して、集計キーを選択することをユーザに求め、集計対象を選択することをユーザに求める。
【０１８２】
図２Ｋを参照して説明したように、ユーザは、集計キーとして販売データ２４０の「販売日付」および品目マスタ２２０ｈの「品目コード」を選択した後、ＯＫボタン２７３ｋを選択する。プロセッサ部４１２は、集計キーとして品目マスタ２２０ｈの「品目コード」および販売データ２４０の「販売日付」を選択するというユーザ操作がなされたこと、ＯＫボタン２７３ｋを選択するというユーザ操作がなされたことを検出し（図７のステップＳ７０１）、そのユーザ操作の意図が販売データ２４０の「販売日付」および品目マスタ２２０ｈの「品目コード」を集計キーとすることであることを特定する（図７のステップＳ７０２）。
【０１８３】
図２Ｌを参照して説明したように、ユーザは、集計対象として販売データ２４０の「数量」を選択した後、ＯＫボタン２７３ｌを選択する。プロセッサ部４１２は、集計対象として販売データ２４０の「数量」を選択するというユーザ操作がなされたこと、ＯＫボタン２７３ｌを選択するというユーザ操作がなされたことを検出し（図７のステップＳ７０１）、そのユーザ操作の意図が販売データ２４０の「数量」を集計対象とすることであることを特定する（図７のステップＳ７０２）。
【０１８４】
以上から、プロセッサ部４１２は、図２Ｊ〜図２Ｌを参照して説明したユーザ操作の意図が、販売データ２４０の「販売日付」および品目マスタ２２０ｈの「品目コード」を集計キーとし、販売データ２４０の「数量」を集計対象として、販売データ２４０に対して集計処理を実行することであることを特定し（図７のステップＳ７０２）、そのユーザ操作の意図に対応する中間コードを生成する（図７のステップＳ７０３）。このようにして生成された中間コードが、シーン詳細定義テーブル８６０の９行目の中間コードである。なお、シーン詳細定義テーブル８６０では、販売データ２４０ｍ（図２Ｍ）が「販売データ２」という名称で示されている。
【０１８５】
図２Ｎを参照して説明したように、第４のシーンにおいて、ユーザは、販売データ２４０ｍを選択した後、メニューバー２１０の「ループ」コマンド２１４を選択する。プロセッサ部４１２は、販売データ２４０ｍを選択するというユーザ操作がなされたこと、メニューバー２１０の「ループ」コマンド２１４を選択するというユーザ操作がなされたことを検出し（図７のステップＳ７０１）、そのユーザ操作の意図が販売データ２４０ｍの全件に対してループ処理を実行することであることを特定し（図７のステップＳ７０２）、そのユーザ操作の意図に対応する中間コードを生成する（図７のステップＳ７０３）。このようにして生成された中間コードが、シーン詳細定義テーブル８６０の１０行目の中間コードである。
【０１８６】
図２Ｎを参照して説明したように、第４のシーンにおいて、ユーザは、品目マスタ２２０ｈの「売価単価」を販売データ２４０ｍの「数量」までドラッグする。プロセッサ部４１２は、品目マスタ２２０ｈの「売価単価」を販売データ２４０ｍの「数量」までドラッグするというユーザ操作がなされたことを検出し（図７のステップＳ７０１）、そのユーザ操作の意図が品目マスタ２２０ｈの「売価単価」と販売データ２４０ｍの「数量」とを関連付けることであることを特定する（図７のステップＳ７０２）。プロセッサ部４１２は、その関連付けを実行するに際して、関連付けの内容を入力することをユーザに求める。
【０１８７】
ユーザは、その求めに応答して、「売上」＝「売価単価」×「数量」という数式を入力する。プロセッサ部４１２は、「売上」＝「売価単価」×「数量」という数式を入力するというユーザ操作がなされたことを検出し（図７のステップＳ７０１）、そのユーザ操作の意図が、「売上」という新たな変数の値が「売価単価」×「数量」という数式で求められることであることを特定し（図７のステップＳ７０２）、そのユーザ操作の意図に対応する中間コードを生成する（図７のステップＳ７０３）。このようにして生成された中間コードが、シーン詳細定義テーブル８６０の１１行目の中間コードである。
【０１８８】
図２Ｎを参照して説明したように、第４のシーンにおいて、ユーザは、品目マスタ２２０ｈの「営業利益単価」を販売データ２４０ｍの「数量」までドラッグする。プロセッサ部４１２は、品目マスタ２２０ｈの「営業利益単価」を販売データ２４０ｍの「数量」までドラッグするというユーザ操作がなされたことを検出し（図７のステップＳ７０１）、そのユーザ操作の意図が品目マスタ２２０ｈの「営業利益単価」と販売データ２４０ｍの「数量」とを関連付けることであることを特定する（図７のステップＳ７０２）。プロセッサ部４１２は、その関連付けを実行するに際して、関連付けの内容を入力することをユーザに求める。
【０１８９】
ユーザは、その求めに応答して、「営業利益」＝「営業利益単価」×「数量」という数式を入力する。プロセッサ部４１２は、「営業利益」＝「営業利益単価」×「数量」という数式を入力するというユーザ操作がなされたことを検出し（図７のステップＳ７０１）、そのユーザ操作の意図が、「営業利益」という新たな変数の値が「営業利益単価」×「数量」という数式で求められることであることを特定し（図７のステップＳ７０２）、そのユーザ操作の意図に対応する中間コードを生成する（図７のステップＳ７０３）。このようにして生成された中間コードが、シーン詳細定義テーブル８６０の１２行目の中間コードである。
【０１９０】
図２Ｏを参照して説明したように、第４のシーンにおいて、ユーザは、販売データ２４０ｍを選択した後、メニューバー２１０の「追加定義」コマンドを２回選択する。プロセッサ部４１２は、販売データ２４０ｍを選択するというユーザ操作がなされたこと、メニューバー２１０の「追加定義」コマンドを選択するというユーザ操作が２回なされたことを検出し（図７のステップＳ７０１）、そのユーザ操作の意図が販売データ２４０ｍの新しい２つの列を追加定義することであることを特定する（図７のテップＳ７０２）。プロセッサ部４１２は、その新しい２つの列を追加定義するに際して、その新しい２つの列のそれぞれの変数が何であるか、その２つの新しい列のそれぞれの変数の値をどのようにして求めるかをユーザに要求する。
【０１９１】
ユーザは、プロセッサ部４１２からの要求に応答して、新しい１つ目の列の変数が「売上」であることを入力する。プロセッサ部４１２は、新しい１つ目の列の変数が「売上」であるというユーザ操作がなされたことを検出し（図７のステップＳ７０１）、そのユーザ操作の意図が、追加定義された１つ目の列の変数が「売上」であることを特定し（図７のステップＳ７０２）、そのユーザ操作の意図に対応する中間コードを生成する（図７のステップＳ７０３）。このようにして生成された中間コードが、シーン詳細定義テーブル８６０の１３行目の中間コードである。
【０１９２】
同様に、ユーザは、プロセッサ部４１２からの要求に応答して、新しい２つ目の列の変数が「営業利益」であることを入力する。プロセッサ部４１２は、新しい２つ目の列の変数が「営業利益」であるというユーザ操作がなされたことを検出し（図７のステップＳ７０１）、そのユーザ操作の意図が、追加定義された２つ目の列の変数が「営業利益」であることを特定し（図７のステップＳ７０２）、そのユーザ操作の意図に対応する中間コードを生成する（図７のステップＳ７０３）。このようにして生成された中間コードが、シーン詳細定義テーブル８６０の１４行目の中間コードである。なお、シーン詳細定義テーブル８６０では、販売データ２４０ｏ（図２Ｏ）が「販売データ３」という名称で示されている。
【０１９３】
図９は、図８Ａおよび図８Ｂに示される中間コードに基づいて生成されるコードの一例を示す。図９に示されるコードは、コンピュータによって実行されることが可能である。プロセッサ部４１２は、図８Ａおよび図８Ｂに示される中間コードに基づいて図９に示されるコードを生成する処理を実行するように構成されている。なお、図９に示されるコードは、特定のプログラミング言語で記述されたものではないが、当業者であれば、図９に示されるコードを特定のプログラミング言語（例えば、Ｊａｖａ（登録商標））で記述されたコードに容易に変換することが可能である。従って、図８Ａおよび図８Ｂに示される中間コードを図９に示されるコードに変換する処理を実行することが可能であることは、図８Ａおよび図８Ｂに示される中間コードを特定のプログラミング言語（例えば、Ｊａｖａ（登録商標））で記述されたコードに変換する処理を実行することが可能であることを意味する。
【０１９４】
図９に示されるコード部分９１０は、図８Ａに示されるＩＮＰＵＴテーブル８１０およびＩＮＰＵＴ項目定義テーブル８３０に基づいて生成されたものである。図９に示されるコード部分９１０は、「品目マスタ」に関連するコード部分９１１と、「レートマスタ」に関連するコード部分９１２と、「販売データ」に関連するコード部分９１３とを含む。
【０１９５】
「品目マスタ」に関連するコード部分９１１は、図８Ａに示されるＩＮＰＵＴテーブル８１０およびＩＮＰＵＴ項目定義テーブル８３０に含まれる「品目マスタ」に関連する情報に基づいて生成されたものである。
【０１９６】
「レートマスタ」に関連するコード部分９１２は、図８Ａに示されるＩＮＰＵＴテーブル８１０およびＩＮＰＵＴ項目定義テーブル８３０に含まれる「レートマスタ」に関連する情報に基づいて生成されたものである。
【０１９７】
「販売データ」に関連するコード部分９１３は、図８Ａに示されるＩＮＰＵＴテーブル８１０およびＩＮＰＵＴ項目定義テーブル８３０に含まれる「販売データ」に関連する情報に基づいて生成されたものである。
【０１９８】
図９に示されるコード部分９２０、９２０’は、図８Ａに示されるＯＵＴＰＵＴテーブル８２０およびＯＵＴＰＵＴ項目定義テーブル８４０に基づいて生成されたものである。
【０１９９】
図９に示されるコード部分９３０は、図８Ａおよび図８Ｂに示されるシーン定義テーブル８５０およびシーン詳細定義テーブル８６０に基づいて生成されたものである。図９に示されるコード部分９３０は、「シーン１」に関連するコード部分９３１と、「シーン２」に関連するコード部分９３２と、「シーン３」に関連するコード部分９３３と、「シーン４」に関連するコード部分９３４とを含む。
【０２００】
「シーン１」に関連するコード部分９３１は、図８Ｂに示されるシーン詳細定義テーブル８６０の１行目の情報に基づいて生成されたものである。
【０２０１】
「シーン２」に関連するコード部分９３２は、図８Ｂに示されるシーン詳細定義テーブル８６０の２行目〜７行目の情報に基づいて生成されたものである。
【０２０２】
「シーン３」に関連するコード部分９３３は、図８Ｂに示されるシーン詳細定義テーブル８６０の８行目〜９行目の情報に基づいて生成されたものである。
【０２０３】
「シーン４」に関連するコード部分９３４は、図８Ｂに示されるシーン詳細定義テーブル８６０の１０行目〜１４行目の情報に基づいて生成されたものである。
【０２０４】
上述した実施形態では、品目マスタ２２０、レートマスタ２３０、販売データ２４０、店舗マスタ３８０、ＩＮＰＵＴテーブル８１０、ＯＵＴＰＵＴテーブル８２０、ＩＮＰＵＴ項目定義テーブル８３０、ＯＵＴＰＵＴ項目定義テーブル８４０、シーン定義テーブル８５０、シーン詳細定義テーブル８６０は、テーブル形式で示されているが、本発明はこれに限定されない。これらのデータは、本発明の目的が達成される限りにおいて、任意の他の形式であってもよい。
【０２０５】
上述した実施形態では、商品の売上や営業利益を集計するプログラムを開発する場合を例にとり、そのようなプログラムの開発をどのように支援するかを説明したが、本発明が開発を支援することが可能なプログラムは、上述したような集計プログラムには限定されない。本発明は、任意のプログラムの開発を支援することが可能である。なぜなら、本発明は、プログラムへの入力データを定義すること、そのプログラムからの出力データを定義すること、そのプログラムによって実行される処理のプロセスを定義することを含む限り、任意のプログラムを定義することを支援することが可能であるからである。
【０２０６】
以上のように、本発明の好ましい実施形態を用いて本発明を例示してきたが、本発明は、この実施形態に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。
【産業上の利用可能性】
【０２０７】
本発明は、プログラムを開発するための新しいモデルを実現するためのシステム、そのシステムにおいて実行される方法およびプログラム等を提供するものとして有用である。
【符号の説明】
【０２０８】
４１０    親システム
４１１    インターフェース部
４１２    プロセッサ部
４１３    メモリ部
４２０    インターネット
４３０１〜４３０Ｎ    子システム
４４０    データベース部
４４１    Ｉ／Ｏデータベース部
４４２    シーンデータベース部
４４３    補助機能データベース部
【図１】
2018120285.tif 000003
【図２Ａ】
2018120285.tif 000004
【図２Ｂ】
2018120285.tif 000005
【図２Ｃ】
2018120285.tif 000006
【図２Ｄ】
2018120285.tif 000007
【図２Ｅ】
2018120285.tif 000008
【図２Ｆ】
2018120285.tif 000009
【図２Ｇ】
2018120285.tif 000010
【図２Ｈ】
2018120285.tif 000011
【図２Ｉ】
2018120285.tif 000012
【図２Ｊ】
2018120285.tif 000013
【図２Ｋ】
2018120285.tif 000014
【図２Ｌ】
2018120285.tif 000015
【図２Ｍ】
2018120285.tif 000016
【図２Ｎ】
2018120285.tif 000017
【図２Ｏ】
2018120285.tif 000018
【図２Ｐ】
2018120285.tif 000019
【図３Ａ】
2018120285.tif 000020
【図３Ｂ】
2018120285.tif 000021
【図３Ｃ】
2018120285.tif 000022
【図４】
2018120285.tif 000023
【図５Ａ】
2018120285.tif 000024
【図５Ｂ】
2018120285.tif 000025
【図５Ｃ】
2018120285.tif 000026
【図６】
2018120285.tif 000027
【図７】
2018120285.tif 000028
【図８Ａ】
2018120285.tif 000029
【図８Ｂ】
2018120285.tif 000030
【図９】
2018120285.tif 000031
【図１０】
2018120285.tif 000032