(57)【特許請求の範囲】
【請求項１】
開発対象のアプリケーションプログラムのユーザに共通な基本プログラムを構成する複数のプログラム列を管理する基本プログラム管理テーブル、前記基本プログラムとは別に、前記ユーザ毎に定義できる個別要件を実現するプログラム列を管理する個別要件管理テーブル、および前記ユーザ毎に前記個別要件を関連付けて管理するユーザ管理テーブルを記憶するテーブル記憶装置と、
前記個別要件を実現するアスペクトを生成するためのひな型を記憶するひな型記憶装置と、
前記テーブル記憶装置を参照し、プログラム開発者に編集対象のプログラムを提示し、前記基本プログラムに、前記ユーザ毎に定義できる前記個別要件を挿入する編集操作を受け付け、受け付けた前記編集操作に従って前記プログラムを編集するプログラム編集手段と、
前記プログラム編集手段が受け付けた前記個別要件を対象のユーザ毎に、前記基本プログラムの対象のプログラム列に関連付けて、前記ユーザ管理テーブル、前記基本プログラム管理テーブル、および前記個別要件管理テーブルに登録し管理する個別要件管理手段と、
前記テーブル記憶装置および前記ひな型記憶装置を参照し、前記ユーザ管理テーブル、前記基本プログラム管理テーブル、および前記個別要件管理テーブルに従って、前記ひな型を用いて前記アスペクトを合成する合成手段と、を備える前記ユーザ毎の前記個別要件を前記基本プログラムとともに実現する前記アプリケーションプログラムを作成するプログラム作成支援装置。
【請求項２】
請求項１に記載のプログラム作成支援装置において、
前記プログラム編集手段は、
前記基本プログラムの複数の前記プログラム列を前記プログラム開発者に提示する提示部と、
対象の前記ユーザの前記個別要件を挿入する挿入位置として、前記提示部に提示された前記基本プログラムの複数の前記プログラム列の位置を前記プログラム開発者に指定させて受け付け、
前記個別要件管理手段は、前記ユーザ毎に、前記プログラム編集手段が受け付けた前記挿入位置と前記個別要件とを関連付けて、前記ユーザ管理テーブルおよび前記個別要件管理テーブルに登録し管理するプログラム作成支援装置。
【請求項３】
請求項１または２に記載のプログラム作成支援装置において、
前記個別要件管理テーブルは、前記個別要件の識別情報と、前記個別要件を実現する少なくとも１つの前記プログラム列を関連付けて記憶するプログラム作成支援装置。
【請求項４】
請求項１乃至３いずれかに記載のプログラム作成支援装置において、
前記ユーザ管理テーブルは、前記ユーザごとに、前記個別要件の識別情報と、前記個別要件を挿入する前記基本プログラム中の位置識別子の組を関連付けて記憶するプログラム作成支援装置。
【請求項５】
請求項１乃至４いずれかに記載のプログラム作成支援装置において、
前記基本プログラム管理テーブルは、前記基本プログラム中の複数の前記プログラム列の位置を示す位置識別子と、対応するプログラム列をそれぞれ関連付けて記憶するプログラム作成支援装置。
【請求項６】
請求項５に記載のプログラム作成支援装置において、
前記基本プログラム管理テーブルは、前記基本プログラムにおいて、連続する２つの前記プログラム列の間に空白があるとみなし、前記空白の位置を含む前記位置識別子と、対応する前記プログラム列をそれぞれ関連付けて記憶するプログラム作成支援装置。
【請求項７】
請求項６に記載のプログラム作成支援装置において、
前記ひな型記憶装置は、前記個別要件を挿入する挿入位置に対応する前記位置識別子が指す空白の位置の次のプログラム列の前に挿入するアスペクトを合成するための第１のひな型を記憶し、
前記合成手段は、前記基本プログラム管理テーブルを参照し、前記個別要件を挿入する前記挿入位置が、前記基本プログラム中の空白の位置か否かを判別し、前記空白の位置が指定された場合には、前記第１のひな型を用いて前記挿入位置に対応する前記位置識別子が指す前記空白の位置の次の前記プログラム列の前に挿入するアスペクトを合成するプログラム作成支援装置。
【請求項８】
請求項６または７に記載のプログラム作成支援装置において、
前記ひな型記憶装置は、前記個別要件を挿入する挿入位置に対応する前記位置識別子が指す位置のプログラム列を上書きして挿入するアスペクトを合成するための第２のひな型を記憶し、
前記合成手段は、前記基本プログラム管理テーブルを参照し、前記個別要件を挿入する前記挿入位置が、前記基本プログラム中の空白の位置か否かを判別し、前記空白の位置を指さない場合には、前記第２のひな型を用いて前記挿入位置に対応する前記位置識別子が指す位置の前記プログラム列を上書きして挿入するアスペクトを合成するプログラム作成支援装置。
【請求項９】
開発対象のアプリケーションプログラムのユーザに共通な基本プログラムを構成する複数のプログラム列を管理する基本プログラム管理テーブル、前記基本プログラムとは別に、前記ユーザ毎に定義できる個別要件を実現するプログラム列を管理する個別要件管理テーブル、および前記ユーザ毎に前記個別要件を関連付けて管理するユーザ管理テーブルを記憶するテーブル記憶装置と、
アプリケーションプログラムの前記基本プログラムの複数の前記プログラム列および前記個別要件を実現する前記プログラム列を記憶するプログラム記憶装置と、
前記個別要件を実現するアスペクトを生成するためのひな型を記憶するひな型記憶装置と、
前記テーブル記憶装置を参照し、プログラム開発者に編集対象のプログラムを提示し、前記基本プログラムに、前記ユーザ毎に定義できる前記個別要件を挿入する編集操作を受け付け、前記プログラムを編集するプログラム編集手段と、
前記プログラム編集手段が受け付けた前記個別要件を対象のユーザ毎に、前記基本プログラムの対象のプログラム列に関連付けて、前記ユーザ管理テーブル、前記基本プログラム管理テーブル、および前記個別要件管理テーブルに登録し管理する個別要件管理手段と、
前記テーブル記憶装置および前記ひな型記憶装置を参照し、前記ユーザ管理テーブル、前記基本プログラム管理テーブル、および前記個別要件管理テーブルに従って、前記ひな型を用いて前記アスペクトを合成する合成手段と、
前記合成手段で合成された前記アスペクトを織り込んで、前記ユーザ毎の前記個別要件を前記基本プログラムとともに実現する前記アプリケーションプログラムを実行するプログラム実行手段と、を備える情報システム。
【請求項１０】
コンピュータに、開発対象のアプリケーションプログラムを作成するプログラム作成支援装置を実現させるためのプログラムであって、
前記プログラム作成支援装置が、
前記アプリケーションプログラムのユーザに共通な基本プログラムを構成する複数のプログラム列を管理する基本プログラム管理テーブル、前記基本プログラムとは別に、前記ユーザ毎に定義できる個別要件を実現するプログラム列を管理する個別要件管理テーブル、および前記ユーザ毎に前記個別要件を関連付けて管理するユーザ管理テーブルを記憶するテーブル記憶装置と、
前記個別要件を実現するアスペクトを生成するためのひな型を記憶するひな型記憶装置と、
プログラム開発者に操作画面を表示して提示する表示部と、
前記プログラム開発者の操作を受け付ける操作部と、を備え、
前記コンピュータに、
前記テーブル記憶装置を参照し、前記プログラム開発者に編集対象のプログラムを編集するための編集画面を前記表示部に表示して提示する手順、
前記プログラム開発者による前記操作部を利用した、前記ユーザ毎に定義できる前記個別要件を前記基本プログラムに挿入する編集操作を受け付ける手順、
受け付けた前記編集操作に従って前記プログラムを編集する手順、
受け付けた前記個別要件を対象のユーザ毎に、前記基本プログラムの対象のプログラム列に関連付けて、前記ユーザ管理テーブル、前記基本プログラム管理テーブル、および前記個別要件管理テーブルに登録し管理する手順、
前記テーブル記憶装置および前記ひな型記憶装置を参照し、前記ユーザ管理テーブル、前記基本プログラム管理テーブル、および前記個別要件管理テーブルに従って、前記ひな型を用いて前記アスペクトを合成する手順、
前記ユーザ毎の前記個別要件を前記基本プログラムとともに実現する前記アプリケーションプログラムを実行する手順を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム作成支援装置、プログラム、および、情報システムに関し、特に、基本となるアプリケーションプログラムを元に異なるユーザのそれぞれのニーズに合ったプログラムの作成を支援するプログラム作成支援装置、プログラム、および、情報システムに関する。
【背景技術】
【０００２】
既存のアプリケーションを変更する作業を支援するシステムの一例が、特許文献１（特開２００８−１１７０６７号公報）に記載されている。アノテーションとはプログラムの個々の要素を意味付ける情報を指し、コメントとは異なりコンパイル時に消去されることはない。このような構成を有する特許文献１に記載のシステムはつぎのように動作する。すなわち、アノテーション検出部が個別の状況を識別し、入力インタフェース変換部が入力インタフェースを変更し、出力インタフェース変換部が出力インタフェースを変更し、新規モデル生成部が変更したインタフェースを呼び出す設計モデルを生成し、その結果を設計モデル記憶部に格納する。【０００３】
さらに、既存のアプリケーションを変更する作業を支援するシステムの他の例が、特許文献２（特開２００７−２１３４８７号公報）に記載されている。特許文献２に記載のシステムは、利用者インタフェース管理部、クラス情報解析部、アドバイス解析部、アスペクト生成部から構成されている。アスペクト指向プログラミングにおいて、アスペクトとは、ログ出力のようなアプリケーションの機能要件とは独立な処理を指す。プログラムの配備または実行時に、アスペクトをアプリケーションプログラムに織り込むことで、アプリケーションの機能要件とは独立な処理を実装する。アスペクトの具体的な処理の定義をアドバイスと呼ぶ。アスペクトを織り込むアプリケーションプログラムの中の位置をポイントカットと呼ぶ。アスペクトの記述には、アドバイスとポイントカットが含まれる。【０００４】
このような構成を有する特許文献２に記載のシステムはつぎのように動作する。すなわち、クラス情報解析部が、アスペクトに定義するクラスやメソッドの候補を生成する。アドバイス解析部が、アドバイスに含めるデータ構造の候補を生成する。利用者インタフェース管理部がこれらの候補を表示し、利用者が候補を選択する。選択の結果をもとに、アスペクト生成部がアスペクトを生成する。【０００５】
アスペクト指向プログラミングの技術で、プログラムの配備または実行時に、ユーザ識別子を参照して、ユーザごとに異なるプログラム列へ分岐する多重配備プログラムを用いて、ユーザ個別要件に対応したカスタマイズプログラムを作成することができる。多重配備を行うと、ユーザ識別子を参照してユーザごとに異なるプログラム列へ分岐する論理を表すフレームワークプログラムがアプリケーションプログラムに自動的に挿入される。アプリケーションプログラムの中で明示しなくても、ユーザごとに異なるプログラム列が実行される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−１１７０６７号公報
【特許文献２】特開２００７−２１３４８７号公報
【発明の概要】
【０００７】
上述した、アスペクト指向プログラミングの技術に従って開発者がアスペクトを作成する方法には、ユーザごとのカスタムプログラム（ユーザごとに異なる実効的なプログラム）を把握しにくいという問題点があった。その理由として、ひとつのアスペクトに多数のユーザ個別要件がまとめて実装されたり、ひとつのユーザの個別要件が複数のアスペクトに分かれて実装されたりするため、開発者がアスペクトとユーザという２つの観点を把握しなければならず煩雑になることが挙げられる。
【０００８】
本発明の目的は、上述した課題であるプログラム開発時の編集作業の煩雑さを解決するプログラム作成支援装置、プログラム、および、情報システムを提供することにある。
【０００９】
本発明のプログラム作成支援装置は、前記ユーザ毎の前記個別要件を前記基本プログラムとともに実現する前記アプリケーションプログラムを作成するプログラム作成支援装置である。
本発明のプログラム作成支援装置は、
開発対象のアプリケーションプログラムのユーザに共通な基本プログラムを構成する複数のプログラム列を管理する基本プログラム管理テーブル、前記基本プログラムとは別に、前記ユーザ毎に定義できる個別要件を実現するプログラム列を管理する個別要件管理テーブル、および前記ユーザ毎に前記個別要件を関連付けて管理するユーザ管理テーブルを記憶するテーブル記憶装置と、
前記個別要件を実現するアスペクトを生成するためのひな型を記憶するひな型記憶装置と、
前記テーブル記憶装置を参照し、プログラム開発者に編集対象のプログラムを提示し、前記基本プログラムに、前記ユーザ毎に定義できる前記個別要件を挿入する編集操作を受け付け、受け付けた前記編集操作に従って前記プログラムを編集するプログラム編集手段と、
前記プログラム編集手段が受け付けた前記個別要件を対象のユーザ毎に、前記基本プログラムの対象のプログラム列に関連付けて、前記ユーザ管理テーブル、前記基本プログラム管理テーブル、および前記個別要件管理テーブルに登録し管理する個別要件管理手段と、
前記テーブル記憶装置および前記ひな型記憶装置を参照し、前記ユーザ管理テーブル、前記基本プログラム管理テーブル、および前記個別要件管理テーブルに従って、前記ひな型を用いて前記アスペクトを合成する合成手段と、を備える。
【００１０】
本発明の情報システムは、
開発対象のアプリケーションプログラムのユーザに共通な基本プログラムを構成する複数のプログラム列を管理する基本プログラム管理テーブル、前記基本プログラムとは別に、前記ユーザ毎に定義できる個別要件を実現するプログラム列を管理する個別要件管理テーブル、および前記ユーザ毎に前記個別要件を関連付けて管理するユーザ管理テーブルを記憶するテーブル記憶装置と、
アプリケーションプログラムの前記基本プログラムの複数の前記プログラム列および前記個別要件を実現する前記プログラム列を記憶するプログラム記憶装置と、
前記個別要件を実現するアスペクトを生成するためのひな型を記憶するひな型記憶装置と、
前記テーブル記憶装置を参照し、プログラム開発者に編集対象のプログラムを提示し、前記基本プログラムに、前記ユーザ毎に定義できる前記個別要件を挿入する編集操作を受け付け、前記プログラムを編集するプログラム編集手段と、
前記プログラム編集手段が受け付けた前記個別要件を対象のユーザ毎に、前記基本プログラムの対象のプログラム列に関連付けて、前記ユーザ管理テーブル、前記基本プログラム管理テーブル、および前記個別要件管理テーブルに登録し管理する個別要件管理手段と、
前記テーブル記憶装置および前記ひな型記憶装置を参照し、前記ユーザ管理テーブル、前記基本プログラム管理テーブル、および前記個別要件管理テーブルに従って、前記ひな型を用いて前記アスペクトを合成する合成手段と、
前記合成手段で合成された前記アスペクトを織り込んで、前記ユーザ毎の前記個別要件を前記基本プログラムとともに実現する前記アプリケーションプログラムを実行するプログラム実行手段と、を備える。
【００１１】
本発明のプログラムは、
コンピュータに、開発対象のアプリケーションプログラムを作成するプログラム作成支援装置を実現させるためのプログラムであって、
前記プログラム作成支援装置が、
前記アプリケーションプログラムのユーザに共通な基本プログラムを構成する複数のプログラム列を管理する基本プログラム管理テーブル、前記基本プログラムとは別に、前記ユーザ毎に定義できる個別要件を実現するプログラム列を管理する個別要件管理テーブル、および前記ユーザ毎に前記個別要件を関連付けて管理するユーザ管理テーブルを記憶するテーブル記憶装置と、
前記個別要件を実現するアスペクトを生成するためのひな型を記憶するひな型記憶装置と、
プログラム開発者に操作画面を表示して提示する表示部と、
前記プログラム開発者の操作を受け付ける操作部と、を備え、
前記コンピュータに、
前記テーブル記憶装置を参照し、前記プログラム開発者に編集対象のプログラムを編集するための編集画面を前記表示部に表示して提示する手順、
前記プログラム開発者による前記操作部を利用した、前記ユーザ毎に定義できる前記個別要件を前記基本プログラムに挿入する編集操作を受け付ける手順、
受け付けた前記編集操作に従って前記プログラムを編集する手順、
受け付けた前記個別要件を対象のユーザ毎に、前記基本プログラムの対象のプログラム列に関連付けて、前記ユーザ管理テーブル、前記基本プログラム管理テーブル、および前記個別要件管理テーブルに登録し管理する手順、
前記テーブル記憶装置および前記ひな型記憶装置を参照し、前記ユーザ管理テーブル、前記基本プログラム管理テーブル、および前記個別要件管理テーブルに従って、前記ひな型を用いて前記アスペクトを合成する手順、
前記ユーザ毎の前記個別要件を前記基本プログラムとともに実現する前記アプリケーションプログラムを実行する手順を実行させるためのものである。
【００１２】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【００１３】
また、本発明の各種の構成要素は、必ずしも個々に独立した存在である必要はなく、複数の構成要素が一個の部材として形成されていること、一つの構成要素が複数の部材で形成されていること、ある構成要素が他の構成要素の一部であること、ある構成要素の一部と他の構成要素の一部とが重複していること、等でもよい。
【００１４】
また、本発明のデータ処理方法およびコンピュータプログラムには複数の手順を順番に記載してあるが、その記載の順番は複数の手順を実行する順番を限定するものではない。このため、本発明のデータ処理方法およびコンピュータプログラムを実施するときには、その複数の手順の順番は内容的に支障しない範囲で変更することができる。
【００１５】
さらに、本発明のデータ処理方法およびコンピュータプログラムの複数の手順は個々に相違するタイミングで実行されることに限定されない。このため、ある手順の実行中に他の手順が発生すること、ある手順の実行タイミングと他の手順の実行タイミングとの一部ないし全部が重複していること、等でもよい。
【００１６】
本発明によれば、プログラム開発時の編集作業の煩雑さを解決するプログラム作成支援装置、プログラム、および、情報システムが提供される。
【図面の簡単な説明】
【００１７】
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。【００１８】
【図１】本発明の実施の形態に係るプログラム作成支援装置の構成を示す機能ブロック図である。
【図２】本発明の実施の形態に係る情報システムの構成を示すブロック図である。
【図３】本発明の実施の形態に係るプログラム作成支援装置の基本プログラム管理テーブルの一例を示す図である。
【図４】本発明の実施の形態に係るプログラム作成支援装置の個別要件管理テーブルの一例を示す図である。
【図５】本発明の実施の形態に係るプログラム作成支援装置のユーザ管理テーブルの一例を示す図である。
【図６】本発明の実施の形態に係る情報システムのプログラム作成支援装置の動作の一例を示すフローチャートである。
【図７】本発明の実施の形態に係るプログラム作成支援装置におけるアスペクト合成処理の手順の一例を示すフローチャートである。
【図８】本発明の実施の形態に係るプログラム作成支援装置のユーザ指定画面の一例を示す図である。
【図９】本発明の実施の形態に係るプログラム作成支援装置の基本プログラムリストの一例を示す図である。
【図１０】本発明の実施の形態に係るプログラム作成支援装置のプログラムエディタ画面の一例を示す図である。
【図１１】本発明の実施の形態に係るプログラム作成支援装置のプログラムエディタ画面における個別要件編集時の一例を示す図である。
【図１２】本発明の実施の形態に係るプログラム作成支援装置のプログラムエディタ画面における個別要件編集時の他の例を示す図である。
【図１３】本発明の実施の形態に係るプログラム作成支援装置のプログラムエディタ画面における個別要件編集時の他の例を示す図である。
【図１４】本発明の実施の形態に係るプログラム作成支援装置のひな型の一例を示す図である。
【図１５】本発明の実施の形態に係るプログラム作成支援装置のひな型の他の例を示す図である。
【図１６】本発明の実施の形態に係るプログラム作成支援装置で作成されたアスペクトの一例を示す図である。
【図１７】本発明の実施の形態に係るプログラム作成支援装置で作成されたアスペクトの他の例を示す図である。
【図１８】本発明の実施の形態に係るプログラム作成支援装置で合成されたユーザ個別のプログラムリストの一例を示す図である。
【図１９】本発明の実施の形態に係るプログラム作成支援装置で合成されたユーザ個別のプログラムリストの他の例を示す図である。
【発明を実施するための形態】
【００１９】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
【００２０】
本実施形態の情報システムは、開発済みのアプリケーションプログラムを利用して、たくさんのテナント企業にオンラインサービスを提供するものである。本実施形態において、ユーザとは、たとえば、テナント企業などであり、開発済みのアプリケーションプログラムを利用して、オンラインサービスを提供する情報システムのユーザを指すものとする。各ユーザは、予め本情報システムの利用について契約を結び、たとえば、ユーザアカウントを取得し、ユーザＩＤとパスワードを用いて本システムにログインして、サービスを利用することができる。
【００２１】
本実施形態の情報システムは、各ユーザ（テナント企業）に独自の個別要件、たとえば、異なるデータや処理の要件を満たすため、基本プログラムであるアプリケーションプログラムに処理を追加したカスタムプログラムを作成し、実行して、ユーザにサービスを提供するものである。
【００２２】
本実施形態の情報システムにおいて、プログラムの配備または実行時に、アスペクトをアプリケーションプログラムに織り込むことで、アプリケーションの機能要件とは独立な処理を実装する。アスペクトの具体的な処理の定義をアドバイスと呼ぶ。また、アスペクトを織り込むアプリケーションプログラムの中の位置をポイントカットと呼ぶ。アスペクトの記述には、アドバイスとポイントカットが含まれる。
【００２３】
図１は、本発明の実施の形態に係るプログラム作成支援装置１００の構成を示す機能ブロック図である。本実施形態のプログラム作成支援装置１００は、プログラム開発者がテナント個別要件に対応したテナントごとのカスタムプログラムを容易に開発し、保守できるよう、ユーザ毎の個別要件を基本プログラムとともに実現するアプリケーションプログラムの作成を支援するものである。なお、本実施形態では、プログラム開発者とユーザは別の利用者となっているが、これに限定されない。ユーザ自身がプログラム作成支援装置１００を用いて、プログラムをカスタマイズすることもできる。
【００２４】
本発明の実施の形態に係るプログラム作成支援装置１００は、開発対象のアプリケーションプログラムのユーザに共通な基本プログラムを構成する複数のプログラム列を管理する基本プログラム管理テーブル１１２、基本プログラムとは別に、ユーザ毎に定義できる個別要件を実現するプログラム列を管理する個別要件管理テーブル１１４、およびユーザ毎に個別要件を関連付けて管理するユーザ管理テーブル１１６を記憶するテーブル記憶部１１０と、個別要件を実現するアスペクトを生成するためのひな型を記憶するひな型記憶部１２２と、テーブル記憶部１１０を参照し、プログラム開発者に編集対象のプログラムを提示し、基本プログラムに、ユーザ毎に定義できる個別要件を挿入する編集操作を受け付け、受け付けた編集操作に従ってプログラムを編集するプログラム編集部１３０と、プログラム編集部１３０が受け付けた個別要件を対象のユーザ毎に、基本プログラムの対象のプログラム列に関連付けて、ユーザ管理テーブル１１６、基本プログラム管理テーブル１１２、および個別要件管理テーブル１１４に登録し管理する個別要件管理部１２８と、テーブル記憶部１１０およびひな型記憶部１２２を参照し、ユーザ管理テーブル１１６、基本プログラム管理テーブル１１２、および個別要件管理テーブル１１４に登録された定義に従って、ひな型を用いてアスペクトを合成するアスペクト合成部１４０と、を備える。
【００２５】
本実施形態において、プログラム作成支援装置１００は、たとえば、図示しないＣＰＵ（Central Processing Unit）やメモリ、ハードディスク、および通信装置を備え、キーボードやマウス等の入力装置やディスプレイやプリンタ等の出力装置と接続されるサーバコンピュータやパーソナルコンピュータ、またはそれらに相当する装置により実現することができる。そして、ＣＰＵが、ハードディスクに記憶されるプログラムをメモリに読み出して実行することにより、上記各ユニットの各機能を実現することができる。
なお、以下の各図において、本発明の本質に関わらない部分の構成については省略してあり、図示されていない。
【００２６】
本実施形態のプログラム作成支援装置１００によって作成されたユーザ（テナント企業）ごとにカスタマイズされたアプリケーションプログラムは、図２に示す情報システム１によって実行され、各ユーザのユーザ端末２０にサービスが提供される。
【００２７】
情報システムの各構成要素は、任意のコンピュータのＣＰＵ、メモリ、メモリにロードされた本図の構成要素を実現するプログラム、そのプログラムを格納するハードディスクなどの記憶ユニット、ネットワーク接続用インタフェースを中心にハードウェアとソフトウェアの任意の組合せによって実現される。そして、その実現方法、装置にはいろいろな変形例があることは、当業者には理解されるところである。以下説明する各図は、ハードウェア単位の構成ではなく、機能単位のブロックを示している。
【００２８】
本実施形態において、情報システム１は、提供プログラム記憶装置１０と、プログラム提供サーバ１２と、プログラム作成支援装置１００と、複数のテナント企業のユーザ端末２０（ユーザ端末Ｕ１、ユーザ端末Ｕ２、．．．、ユーザ端末Ｕｎ、（ｎは自然数））と、を備え、これらはネットワーク３を介して接続されている。
【００２９】
提供プログラム記憶装置１０は、カスタムプログラムを実行できるように、基本プログラムおよび個別要件を条件するプログラム列、およびプログラム作成支援装置１００のテーブル記憶部１１０に登録された基本プログラム管理テーブル１１２、個別要件管理テーブル１１４、およびユーザ管理テーブル１１６がコピーされて記憶されている。そして、プログラム提供サーバ１２が、基本プログラム管理テーブル１１２、個別要件管理テーブル１１４、およびユーザ管理テーブル１１６に記憶されている情報に基づいて、基本プログラムにアスペクトを織り込んで実行し、各テナント企業のユーザ端末２０にサービスを提供することができる。または、プログラム作成支援装置１００によって開発されたユーザごとの要求に沿ってカスタマイズされたカスタムプログラムを提供プログラム記憶装置１０に記憶し、ユーザの要求に応じてプログラム提供サーバ１２が実行してもよい。
【００３０】
プログラム提供サーバ１２に、プログラム作成支援装置１００のテーブル記憶部１１０と同様な記憶部を備えてもよいし、テーブル記憶部１１０をプログラム作成支援装置１００およびプログラム提供サーバ１２から共有できる構成としてもよい。また、提供プログラム記憶装置１０と開発プログラム記憶部１２０は、同じ記憶装置に含まれてもよい。
【００３１】
また、プログラム作成支援装置１００は、必ずしもネットワーク３に接続される必要はなく、ネットワーク３から独立した構成でもよい。その場合、プログラム作成支援装置１００で作成されたカスタマイズプログラムは、記録媒体を介して、提供プログラム記憶装置１０に格納すればよい。また、本実施形態では、プログラム提供サーバ１２は、テナント企業のユーザ端末２０にオンラインでアプリケーションプログラムを利用したサービスを提供する構成としているが、これに限定されない。プログラム提供サーバ１２は、基本プログラムを元に、各ユーザの要求に沿ってカスタマイズされたプログラムを作成し、各テナント企業のユーザ端末２０にオフラインまたはオンラインで提供した後、各ユーザ端末２０が、オフラインでも実行可能とするシステムであってもよい。
【００３２】
図２に示すように、本発明の実施の形態に係る情報システム１は、図１のプログラム作成支援装置１００と、アプリケーションプログラムの基本プログラムの複数のプログラム列および個別要件を実現するプログラム列を記憶する開発プログラム記憶部１２０と、プログラム作成支援装置１００のアスペクト合成部１４０で合成されたアスペクトを織り込んで、ユーザ毎の個別要件を基本プログラムとともに実現するアプリケーションプログラムを実行するプログラム実行部（プログラム提供サーバ１２またはプログラム作成支援装置１００）と、を備える。
【００３３】
図１に戻り、本実施形態のプログラム作成支援装置１００は、テーブル記憶部１１０と、テーブル管理部１１８と、開発プログラム記憶部１２０と、ひな型記憶部１２２と、個別要件管理部１２８と、プログラム編集部１３０と、操作部１３２と、表示部１３４と、アスペクト合成部１４０と、アスペクト記憶部１４２と、を備える。
【００３４】
操作部１３２は、プログラム作成支援装置１００を実現するコンピュータに接続されたキーボードやマウス等の入力装置を含み、プログラム開発者が利用した操作を受け付ける。表示部１３４は、各種情報を提示してプログラム開発者が参照できるように、プログラム作成支援装置１００を実現するコンピュータに接続されたディスプレイ等に各種画面を表示する。
【００３５】
開発プログラム記憶部１２０は、開発対象のアプリケーションプログラムの基本プログラム、および各ユーザ固有の個別要件を実現するプログラム列を含むプログラムなどが記憶される。
【００３６】
テーブル記憶部１１０は、基本プログラム管理テーブル１１２と、個別要件管理テーブル１１４と、ユーザ管理テーブル１１６と、を記憶する。なお、本実施形態において、開発プログラム記憶部１２０は、プログラム作成支援装置１００に含まれる構成としているが、必ずしもプログラム作成支援装置１００に含まれる必要はなく、プログラム作成支援装置１００の外部のプログラム記憶部から、プログラム記憶部に記憶されているプログラムを読み込める構成であればよい。
【００３７】
テーブル管理部１１８は、テーブル記憶部１１０に記憶される基本プログラム管理テーブル１１２、個別要件管理テーブル１１４、およびユーザ管理テーブル１１６を管理する。ここで、管理とは、これらの管理テーブルをテーブル記憶部１１０に永続的に保持するための機構を備え、テーブル記憶部１１０にアクセスと、各管理テーブルの作成、登録、更新、および参照ができることである。なお、各管理テーブルは、表示部１３４に各管理テーブルの閲覧画面を表示させて、プログラム開発者に提示することができる。
【００３８】
また、テーブル管理部１１８は、本実施形態のプログラム作成支援装置１００における開発対象のアプリケーションプログラムに係る管理情報が、テーブル記憶部１１０に存在するか否かを判別し、存在しない場合は、開発対象のアプリケーションプログラムにしたがって、必要なテーブルを新規に作成し、テーブル記憶部１１０にアプリケーションプログラムに対応付けて記憶する。
【００３９】
基本プログラム管理テーブル１１２は、本実施形態のプログラム作成支援装置１００における開発対象のアプリケーションプログラムの基本プログラムの管理情報を記憶している。本実施形態の基本プログラムは、図９の基本プログラムリスト３００に示されるように、プログラム列Ａからプログラム列Ｉの９つのプログラム列を含む。ここで、基本プログラムは、Ｊａｖａ（登録商標）やＣ＋＋といったプログラミング言語で記述されたプログラム列が複数並んだものである。
【００４０】
上述したように、テーブル管理部１１８は、開発対象のアプリケーションプログラムの基本プログラム管理テーブル１１２がテーブル記憶部１１０に存在するか否かを判別し、存在しない場合、開発対象のアプリケーションプログラムに基づいて、基本プログラム管理テーブル１１２を新規に作成し、テーブル記憶部１１０に記憶する。
【００４１】
本実施形態の基本プログラム管理テーブル１１２は、図３に示すように、開発プログラム記憶部１２０に記憶されている開発対象のアプリケーションプログラムの基本プログラムに含まれる複数のプログラム列の行番号と、対応するプログラム列を関連付けて記憶する。基本プログラム管理テーブル１１２には、基本プログラムのすべてのプログラム列に関する情報がそれぞれ保持される。なお、本実施形態では、基本プログラムの実体、すなわち、プログラムコードは、開発プログラム記憶部１２０に記憶されているものとする。
【００４２】
また、本実施形態の基本プログラムにおいて、連続する２つのプログラム列の間には、空白の行（空行）があるとみなし、テーブル管理部１１８は、プログラム列の間の空白の行の位置も指し示せるよう行番号を付けて基本プログラム管理テーブル１１２を作成する。本実施形態では、基本プログラム管理テーブル１１２は、各プログラム列を各行番号に対応付けて、１列に順に並べ、各プログラム列の間に空白の行を挿入し、各行に行番号を振り、行番号をプログラム列の位置識別子として用いて管理する。
たとえば、プログラム列Ａとプログラム列Ｂの間の空白の行には、行番号♯２が振られ、プログラム列Ａの行番号は♯１、プログラム列Ｂの行番号は♯３となる。
【００４３】
図３のように、基本プログラムの中の位置を指定する位置識別子として行番号を用いる行単位の管理がもっともベーシックであるが、他の例では、複数行にわたるプログラム列をひとつのブロックと定義し、ブロック単位で、ブロック番号と対応するプログラム列の組で管理することもできる。この場合も、連続する２つのブロックの間には、空白のブロック（空ブロック）があるとみなし、テーブル管理部１１８は、ブロックの間の位置も指し示せるようブロック番号を付けて基本プログラム管理テーブル１１２を作成することもできる。
【００４４】
個別要件管理テーブル１１４は、図４に示すように、個別要件の識別情報（個別要件名）と、個別要件を表すプログラム列の組を関連付けて少なくとも一つ保存する。たとえば、個別要件１０はプログラム列Ａ１０とプログラム列Ｂ１０などを含むことが、管理情報として記憶されている。なお、本実施形態では、各プログラム列の実体、すなわち、プログラムコードは、開発プログラム記憶部１２０に記憶されているものとする。
【００４５】
なお、他の実施形態において、基本プログラムのプログラム列および個別要件のプログラム列は、基本プログラム管理テーブル１１２および個別要件管理テーブル１１４にそれぞれプログラム列の実体、すなわち、プログラムコード自体も格納してしまい、開発プログラム記憶部１２０は不要とする構成とすることもできる。
【００４６】
ユーザ管理テーブル１１６は、図５に示すように、ユーザ（テナント）ごとに、ユーザ固有の個別要件を関連付けて記憶する。たとえば、ユーザ管理テーブル１１６は、ユーザ（テナント）の識別情報（ユーザＩＤ（ＴＩＤ））と、個別要件を実行する基本プログラム中の行番号と、その行番号で実行する必要があるユーザ固有の個別要件の識別情報（個別要件名）の組を複数保存する。たとえば、ユーザＩＤがＴＩＤ０００１のユーザ固有の個別要件１０と個別要件１１は、それぞれ行番号♯６と行番号♯１１に関連付けて記憶されている。
【００４７】
ひな型記憶部１２２は、後述するアスペクト合成部１４０がアスペクトを合成する際に使用するひな型を少なくとも一つ格納する。図１４および図１５に示すように、本実施形態のプログラム作成支援装置１００のひな型記憶部１２２は、第１アスペクトひな型４００と、第２アスペクトひな型４２０と、をそれぞれひな型として記憶する。なお、これらのひな型は、基本的には予め準備されたものを用いるが、後述するプログラム編集部１３０で、必要に応じて、新規作成、登録、削除および更新などができてもよい。
【００４８】
図１４において、第１アスペクトひな型４００は、基本プログラム管理テーブル１１２で管理されている基本プログラムの空行に対応する行番号の位置に、個別要件を挿入した場合に用いられる。ひな型は一種のテンプレートで、図中、「＊＊＊」で示された挿入部に具体的な値や文字列のプログラムコードを挿入することで、後述するアスペクト合成部１４０によりアスペクトを合成することができるようになっている。
【００４９】
「Ａｓｐｅｃｔ  ＊＊＊」の挿入部４０２は、アスペクト固有の識別子であるアスペクト名（アスペクトＩＤ）を表し、他のアスペクト名と重複しなければ任意の文字列でよく、たとえば、通し番号などでよい。「Ｂｅｆｏｒｅ  ＊＊＊」の挿入部４０４は、個別要件の挿入が指定された基本プログラム中の空行に対応する行番号の次の行番号に対応するプログラム列が記載される。ここでは、たとえば、空白の行の♯６に個別要件が挿入された場合、挿入部４０４には、その次の行の行番号♯７に対応する「プログラム列Ｄ」が記載されることとなる。
【００５０】
その後に続く、アドバイスには、ユーザＩＤ（ユーザ固有の識別子）の取得を表すプログラム列と、その取得したユーザＩＤごとに実行すべき異なる個別要件を表すプログラム列が記載される。
【００５１】
すなわち、ユーザＩＤごとに実行すべき異なる個別要件を実行するために、条件分岐の「ｉｆ（ＴＩＤ＝＝＊＊＊）」の挿入部４０６は、ユーザＩＤ（ＴＩＤ）を表し、ユーザ管理テーブル１１６に記載されているユーザＩＤのなかで、「Ｂｅｆｏｒｅ  ＊＊＊」の挿入部４０４のところで述べた空行に対応する行番号と同一の行番号が関連付けて記憶されているものを記載する。
【００５２】
そして、ユーザＩＤ（ユーザ固有の識別子）ごとに実行すべき異なる個別要件を表すプログラム列である「ｄｏ  ＊＊＊」の挿入部４０８には、「ｉｆ（ＴＩＤ＝＝＊＊＊）」の挿入部４０６のところで述べた行番号に対応する個別要件を表すプログラム列を記載する。
ひな型の中で記述されるプログラム列は、ユーザＩＤの取得のプログラム列とユーザＩＤごとにどの個別要件を実行すべきか振り分ける分岐のプログラム列である。
【００５３】
たとえば、図５のユーザ管理テーブル１１６では、個別要件が挿入された行番号♯６を含むテナントは、ユーザＩＤが「ＴＩＤ０００１」と「ＴＩＤ０００２」の２つある。ＴＩＤ０００１のユーザＩＤを挿入部４０６に記載し、対応する個別要件名、ここでは「個別要件１０」を、対応する「ｄｏ  ＊＊＊」の挿入部４０８に記載する。さらに、ＴＩＤ０００２のユーザＩＤを「ｅｌｓｅ  ｉｆ（ＴＩＤ＝＝＊＊＊）」の挿入部４１０に記載し、対応する個別要件名、ここでは、「個別要件２０」を、対応する「ｄｏ  ＊＊＊」の挿入部４１２に記載することとなる。
【００５４】
図１５において、第２アスペクトひな型４２０は、基本プログラム管理テーブル１１２で管理されている基本プログラムの空行ではないプログラム列に対応する行番号の位置に、個別要件を挿入した場合に用いられる。「Ａｒｏｕｎｄ  ＊＊＊」の挿入部４２４には、空行ではないプログラム列を指定する。他の挿入部の扱いは、図１４のひな型と同じである。たとえば、空行ではないプログラム列Ｆに個別要件が挿入された場合、挿入部４２４には、その行に対応する「プログラム列Ｆ」が記載されることとなる。
【００５５】
図１に戻り、個別要件管理部１２８は、ユーザごとに定義できるユーザ固有の個別要件を実現するプログラム列を管理する。プログラム列自体は、後述するプログラム編集部１３０により編集でき、個別要件単独で行ってもよいし、ユーザのアプリケーションプログラム作成時に行ってもよい。個別要件は、開発プログラム記憶部１２０に個別要件の識別情報（個別要件名など）を付して記憶することができる。個別要件管理部１２８によって新たな個別要件を登録することができ、新たな個別要件が登録された時、個別要件管理部１２８は、基本プログラム管理テーブル１１２、個別要件管理テーブル１１４、およびユーザ管理テーブル１１６を更新するようテーブル管理部１１８に通知する。
【００５６】
プログラム編集部１３０は、基本プログラムをもとに開発者がプログラムを編集するエディタの機能を提供する。エディタの機能は一般的なものであり、プログラム作成支援装置１００を実現するコンピュータのディスプレイなどの表示部１３４に後述する図１０〜図１３に示すプログラムエディタ画面を表示させて、プログラム開発者に編集対象のプログラムを提示し、プログラム開発者によるキーボードとマウスなどの入力装置を用いた操作を操作部１３２が受け付けて、プログラム列の作成、修正、または削除などを行うことができる。
【００５７】
プログラム編集部１３０は、編集の作業と並行して、基本プログラム管理テーブル１１２、個別要件管理テーブル１１４、およびユーザ管理テーブル１１６の作成および更新を行うようテーブル管理部１１８や個別要件管理部１２８に通知する。本実施形態において、プログラム編集部１３０は、たとえば、開発対象のユーザ（テナント）を指定し、その対象のユーザ専用の利用者画面として編集画面を表示させることができる。または、ユーザを指定する代わりに、プログラム作成支援装置１００を利用するために、ユーザ毎に設定されたユーザ情報、たとえば、ユーザＩＤとパスワードにより、システムにログインすることで、認証されたユーザ専用の利用者画面を利用することを可能としてもよい。
【００５８】
アスペクト合成部１４０は、テーブル管理部１１８が管理する基本プログラム管理テーブル１１２、個別要件管理テーブル１１４、およびユーザ管理テーブル１１６をもとに、ひな型記憶部１２２に記憶されているひな型に従って、ユーザごとの個別要件を実装したアスペクトを合成する。本実施形態では、アスペクト合成部１４０によって合成されたアスペクトは、図２のプログラム提供サーバ１２によって、基本プログラムに織り込まれ、実行され、ネットワーク３を介してユーザのユーザ端末２０にサービスが提供されることとなる。あるいは、プログラム作成支援装置１００によって合成されたアスペクトと、基本プログラムは、ユーザごとにカスタムプログラムとして図２の提供プログラム記憶装置１０に格納され、ユーザの要求に応じて、プログラム提供サーバ１２が、ユーザごとにカスタムプログラムを実行して、ユーザ端末２０にサービスを提供することもできる。
【００５９】
アスペクト合成部１４０で合成されたアスペクトは、アスペクト記憶部１４２に記憶することができる。または、アスペクトは、開発プログラム記憶部１２０に記憶されてもよい。
【００６０】
本実施形態のプログラムは、コンピュータに、開発対象のアプリケーションプログラムを作成するプログラム作成支援装置を実現させるためのプログラムであって、プログラム作成支援装置１００を実現させるためのコンピュータに、テーブル記憶装置を参照し、プログラム開発者に編集対象のプログラムを編集するための編集画面（図１０のプログラムエディタ画面２１０）を表示部１３４（図１）に表示して提示する手順、プログラム開発者による操作部１３２（図１）を利用した、ユーザ毎に定義できる個別要件を基本プログラムに挿入する編集操作を受け付ける手順、受け付けた編集操作に従ってプログラムを編集する手順、受け付けた個別要件を対象のユーザ毎に、基本プログラムの対象のプログラム列に関連付けて、ユーザ管理テーブル１１６、基本プログラム管理テーブル１１２、および個別要件管理テーブル１１４に登録し管理する手順、テーブル記憶部１１０およびひな型記憶部１２２を参照し、ユーザ管理テーブル１１６、基本プログラム管理テーブル１１２、および個別要件管理テーブル１１４に登録された定義に従って、ひな型を用いてアスペクトを合成する手順、ユーザ毎の個別要件を基本プログラムとともに実現するアプリケーションプログラムを実行する手順、を実行させるように記述されている。
【００６１】
本実施形態のコンピュータプログラムは、コンピュータで読み取り可能な記憶媒体に記録されてもよい。記録媒体は特に限定されず、様々な形態のものが考えられる。また、プログラムは、記録媒体からコンピュータのメモリにロードされてもよいし、ネットワークを通じてコンピュータにダウンロードされ、メモリにロードされてもよい。
【００６２】
上述のような構成において、本実施の形態のデータ処理装置１００によるデータ処理方法を以下に説明する。図６は、本実施形態のプログラム作成支援装置１００の動作の一例を示すフローチャートである。
【００６３】
本実施形態のデータ処理方法は、プログラム作成支援装置１００（図１）が、テーブル記憶部１１０を参照し、プログラム開発者に編集対象のプログラムを編集するための編集画面（図１０のプログラムエディタ画面２１０）を表示部１３４（図１）に表示して提示し、プログラム開発者による操作部１３２（図１）を利用した、ユーザ毎に定義できる個別要件を基本プログラムに挿入する編集操作を受け付け、受け付けた編集操作に従ってプログラムを編集し、受け付けた個別要件を対象のユーザ毎に、基本プログラムの対象のプログラム列に関連付けて、ユーザ管理テーブル１１６（図１）、基本プログラム管理テーブル１１２（図１）、および個別要件管理テーブル１１４（図１）に登録し、テーブル記憶部１１０（図１）およびひな型記憶部１２２（図１）を参照し、ユーザ管理テーブル１１６、基本プログラム管理テーブル１１２、および個別要件管理テーブル１１４に登録された定義に従って、ひな型を用いてアスペクトを合成し、ユーザ毎の個別要件を基本プログラムとともに実現するアプリケーションプログラムを実行する。
【００６４】
以下、本実施形態のプログラム作成支援装置１００の動作について、図１乃至図６を用いて説明する。
具体的には、図６に示すように、本実施形態のプログラム作成支援装置１００（図１）において、まず、プログラム編集部１３０（図１）が、開発プログラム記憶部１２０（図１）から基本プログラムを読み込む（ステップＳ１０１）。プログラム編集部１３０が、読み込んだ基本プログラムに該当する基本プログラム管理テーブル１１２（図１）、個別要件管理テーブル１１４（図１）、およびユーザ管理テーブル１１６（図１）がテーブル記憶部１１０（図１）にそれぞれ登録されているかどうか、テーブル管理部１１８（図１）に問い合わせる。テーブル管理部１１８は、テーブル記憶部１１０を参照し、各テーブルが存在するか否かを判別する。
【００６５】
テーブルが登録されていない場合には（ステップＳ１０３のＮＯ）、テーブル管理部１１８は、読み込んだ基本プログラムのための基本プログラム管理テーブル１１２、個別要件管理テーブル１１４、およびユーザ管理テーブル１１６をそれぞれ新規に作成し、テーブル記憶部１１０に格納する（ステップＳ１２１）。そして、ステップＳ１０５に進む。一方、テーブルが登録されている場合には（ステップＳ１０３のＹＥＳ）、プログラム編集部１３０が、テーブル記憶部１１０を参照し、基本プログラム管理テーブル１１２、個別要件管理テーブル１１４、およびユーザ管理テーブル１１６をテーブル記憶部１１０から読み出す（ステップＳ１０５）。
【００６６】
次に、プログラム作成支援装置１００の表示部１３４（図１）には、プログラム編集部１３０により、図１０のプログラムエディタ画面２１０が表示される。なお、本実施形態において、ステップＳ１０１またはステップＳ１０７の前に、図８のユーザ指定画面２００がプログラム作成支援装置１００の表示部１３４に表示されてもよい。図８に示すように、ユーザ指定画面２００は、ユーザＩＤ指定欄２０２と、ＯＫボタン２０４と、を含む。プログラム開発者に操作部１３２を利用して、編集対象のプログラムのユーザ、すなわち、テナントのＩＤをユーザＩＤ指定欄２０２に入力または、プルダウンメニューなどで選択させる。ＯＫボタン２０４の操作に呼応して、ユーザＩＤ指定欄２０２で指定されたユーザＩＤを受け付ける。
【００６７】
この図８のユーザ指定画面２００で指定されたユーザのカスタムプログラムを編集するための画面の一例が、図１０のプログラムエディタ画面２１０である。プログラムエディタ画面２１０は、図９の基本プログラムリスト３００が編集対象として表示される。基本プログラムの各プログラム列には、行番号２１２が振られている。図１０に示すように、連続するプログラム列の間には、それぞれ空白の行があるとみなし、空白行にも行番号２１２が振られている。
【００６８】
プログラムエディタ画面２１０のユーザＩＤ表示欄２１４には、上述した図８のユーザ指定画面２００で指定された編集対象のユーザ（テナント）の識別情報、図１０では、「ＴＩＤ０００１」が表示されている。プログラムエディタ画面２１０には、カーソル２１６位置が反転表示されている。また、プログラム開発者は、操作部１３２を利用して、ポインタ２１８を移動させて編集位置を指定することもできる。このようにして、プログラム開発者は、キーボード等を用いてカーソル２１６で示された文字やマウスポインタ２１８で示された位置を編集することができる。このように、プログラム開発者は、ユーザ毎に個別要件を編集および管理できる。
【００６９】
図６に戻り、プログラム編集部１３０が、プログラム開発者がプログラムエディタ画面２１０で操作部１３２を利用して作成したユーザごとの個別要件を記述するプログラム列を受け付ける（ステップＳ１０７）。そして、プログラム編集部１３０によって受け付けられたプログラム列は、個別要件管理部１２８により、開発プログラム記憶部１２０に登録されるとともに、個別要件管理テーブル１１４およびユーザ管理テーブル１１６を更新するようにテーブル管理部１１８に通知される。
【００７０】
すなわち、プログラム編集部１３０は、基本プログラムの複数のプログラム列をプログラム開発者に提示する提示部（図１０のプログラムエディタ画面２１０）と、対象のユーザの個別要件を挿入する挿入位置として、提示部に提示された基本プログラムの複数のプログラム列の位置をプログラム開発者に指定させて受け付け、個別要件管理部１２８は、ユーザ毎に、プログラム編集部１３０が受け付けた挿入位置と個別要件とを関連付けて、ユーザ管理テーブル１１６および個別要件管理テーブル１１４に登録し管理するよう１１８に通知する。
この構成により、プログラム開発者は、提示された基本プログラムの複数のプログラム列を参照しながらユーザ毎の個別要件を挿入してプログラムを編集できることとなる。
【００７１】
そして、テーブル管理部１１８が、個別要件管理部１２８からの通知を受けて、テーブル記憶部１１０の個別要件管理テーブル１１４およびユーザ管理テーブル１１６を更新する（ステップＳ１０９）。
【００７２】
そして、アスペクト合成部１４０が、ひな型記憶部１２２とテーブル記憶部１１０を参照し、ひな型と、基本プログラム管理テーブル１１２、個別要件管理テーブル１１４、およびユーザ管理テーブル１１６を読み出す（ステップＳ１１１）。そして、アスペクト合成部１４０が、これらの情報をもとに、ポイントカットごとに該当するアスペクトの記述を合成する（ステップＳ１１３）。合成されたアスペクトは、開発プログラム記憶部１２０に格納される。アスペクト合成処理の詳細については、後述する。
【００７３】
そして、プログラム実行部であるプログラム提供サーバ１２（図２）が、基本プログラムと合成したアスペクトを読み込み、アスペクト指向プログラミングの手法に従ってアスペクトを基本プログラムに織り込みながらプログラムを実行する（ステップＳ１１５）。これにより、ユーザごとに異なる個別要件を満たすアプリケーションプログラムを利用したサービスを、各ユーザのユーザ端末２０に提供できることとなる。
【００７４】
以下、プログラム作成支援装置１００におけるユーザ毎の個別要件の編集処理について、プログラム開発者の編集操作に沿って、具体例を示しながら説明する。以下、図１、図５、図１０〜図１３を用いて説明する。
たとえば、図１０に示すように、プログラムエディタ画面２１０において、基本プログラムのプログラム列Ｃとプログラム列Ｄの間の６行目の空白行の位置にプログラム開発者は操作部１３２（図１）を利用してポインタ２１８を移動し、選択する。すると、図１１に示すように、個別要件編集欄２２０が展開され、ＴＩＤ０００１のユーザの個別要件を記述するプログラム列を編集することができるようになる。なお、図１１の例では、プログラムエディタ画面２１０に個別要件編集欄２２０が展開されるように構成されているが、これに限定されるものではなく、別のウインドウを開いて編集できるようにしてもよい。
【００７５】
そして、プログラム開発者は、操作部１３２を利用して個別要件編集欄２２０に、ＴＩＤ０００１のユーザの個別要件１０に対応するプログラム列を記述していく。図１１では、「個別要件１０」と記載されているが、この個別要件１０は、図４の個別要件管理テーブル１１４に示されるように、複数のプログラム列、たとえば、Ａ１０、Ｂ１０、．．．といった内容とすることができる。
【００７６】
図１１に戻り、さらに、６行目の個別要件１０の編集を終了した後、プログラム開発者は、さらに、１１行目に相当するプログラム列Ｆの位置に操作部１３２を利用してポインタ２１８を移動し、選択する。すると、図１２に示すように、１１行目の位置に個別要件編集欄２２０が展開され、そこに、ＴＩＤ０００１のユーザの個別要件１１に対応するプログラム列をさらに記述していくことができる。この個別要件１１は、図４の個別要件管理テーブル１１４に示すように、複数のプログラム列、たとえば、Ａ１１、Ｂ１１、．．．といった内容とすることができる。図１２では、先に編集した個別要件１０が行番号♯６に挿入され、編集済み個別要件欄２２２としてプログラムエディタ画面２１０上に提示されている。
【００７７】
次に、プログラム開発者は、ＴＩＤ０００１のユーザのプログラムの編集を終了し、ＴＩＤ０００２のユーザのプログラムの編集を行うとする。プログラム編集部１３０は、開発プログラム記憶部１２０から基本プログラムを読み込み、図１３に示すように、ＴＩＤ０００２のユーザ用のプログラムエディタ画面２１０が表示部１３４に表示される。ＴＩＤ０００１のユーザのときと同様に、プログラムを編集することができる。
【００７８】
ここでは、たとえば、プログラムエディタ画面２１０において、基本プログラムのプログラム列Ｃとプログラム列Ｄの間の６行目の空白行の位置にプログラム開発者は操作部１３２を利用してポインタ２１８を移動し、選択する。すると、個別要件編集欄２２０が展開され、ＴＩＤ０００２のユーザの個別要件を記述するプログラム列を編集することができるようになる。そして、プログラム開発者は、操作部１３２を利用して個別要件編集欄２２０に、ＴＩＤ０００２のユーザの個別要件２０に対応するプログラム列を記述していく。この個別要件２０は、図４の個別要件管理テーブル１１４に示されるように、複数のプログラム列、たとえば、Ａ２０、Ｂ２０、．．．といった内容とすることができる。
【００７９】
プログラム開発者によるＴＩＤ０００２のユーザのプログラムの編集も終了したとき、プログラム編集部１３０は、これらのプログラムの編集内容を受け付ける。個別要件管理部１２８は、受け付けた各個別要件を記述するプログラム列を開発プログラム記憶部１２０に記憶するとともに、テーブル管理部１１８および個別要件管理部１２８に、テーブル記憶部１１０の個別要件管理テーブル１１４およびユーザ管理テーブル１１６を更新するよう通知する。なお、プログラム編集部１３０がテーブル管理部１１８および個別要件管理部１２８に各テーブルの更新を指示するタイミングは、これに限定されない。たとえば、途中でプログラム開発者の指示を受け付け更新してもよいし、定期的に更新してもよいし、ユーザ毎の定義が終了したときでもよい。
【００８０】
テーブル記憶部１１０の個別要件管理テーブル１１４は、図４に示すように更新され、テーブル記憶部１１０のユーザ管理テーブル１１６は、図５に示すように更新される。
【００８１】
なお、本実施形態では、個別要件をプログラムエディタ画面２１０上で、新規に入力する例について説明したが、これに限定されず、たとえば、プログラムエディタ画面２１０で、既にテーブル記憶部１１０の個別要件管理テーブル１１４に登録されている個別要件を読み出し、プログラム開発者に提示し、基本プログラムの指定した行の位置に、選択した個別要件を挿入することもできる。また、既に登録されている個別要件を記述するプログラム列をプログラムエディタ画面２１０の個別要件編集欄２２０上で、変更することもできる。
【００８２】
そして、プログラムの編集が終了した後、アスペクト合成部１４０が、テーブル記憶部１１０から基本プログラム管理テーブル１１２、個別要件管理テーブル１１４、およびユーザ管理テーブル１１６を読み出すとともに、ひな型記憶部１２２からひな型を読み出す。本実施形態では、上述した図１４および図１５の２種類のひな型が予め準備されており、これらが読み出される。
【００８３】
以下、図７を用いて、アスペクト合成処理の詳細について、具体例を示しながら説明する。以下、図１、図３〜図５、図７、図１４〜図１７を用いて説明する。このフローチャートに示す処理は、図６のステップＳ１１３の詳細処理である。
【００８４】
アスペクト合成部１４０（図１）が、以下の処理を行う。図５のユーザ管理テーブル１１６を参照し、ユーザ管理テーブル１１６から、６行目と１１行目に挿入すべき個別要件があることを検出する（ステップＳ２０１）。そこで、まず、６行目に織り込むアスペクトを合成する。以下、ステップＳ２０１で検出された各行について、ステップＳ２０５〜ステップＳ２２５を繰り返す（ステップＳ２０３）。なお、すべての行について処理が終了したら（ステップＳ２２７）、本処理を終了する。
【００８５】
そして、図３の基本プログラム管理テーブル１１２を参照し、個別要件が挿入されている行が空白行か否かを判別する（ステップＳ２０５）。ここで、６行目は空白行であるため（ステップＳ２０５のＹＥＳ）、空行に対応した図１４の第１アスペクトひな型４００を選択して用いる（ステップＳ２０７）。
【００８６】
第１アスペクトひな型４００において、「Ａｓｐｅｃｔ  ＊＊＊」の挿入部４０２は、アスペクト名（アスペクトＩＤ）、たとえば、「ＸＸＸ」が記載される（ステップＳ２１１）。ここで、第１アスペクトひな型４００を用いているので（ステップＳ２１３のＹＥＳ）、個別要件の挿入が指定された基本プログラム中の空行に対応する行番号の次の行番号に対応するプログラム列、ここでは、空白の行の♯６の次の行の行番号♯７に対応する「プログラム列Ｄ」が取得され、「Ｂｅｆｏｒｅ  ＊＊＊」の挿入部４０４に記載される（ステップＳ２１５）。
【００８７】
そして、ユーザ管理テーブル１１６を参照し、該当行、ここでは行番号♯６に個別要件が記載されているユーザＩＤ（ＴＩＤ）と個別要件の組を取得する（ステップＳ２１９）。この例では、ＴＩＤ０００１と個別要件１０、ＴＩＤ０００２と個別要件２０の２つの組が取得される。
【００８８】
そして、各ユーザＩＤごとに、以下のステップＳ２２３の処理を繰り返す（ステップＳ２２１）。ステップＳ２１９で取得したすべてのユーザＩＤについて処理が終了するまで繰り返し（ステップＳ２２５）、すべてのユーザＩＤについて終了したら、ステップＳ２２７に進む。
ステップＳ２２３では、条件分岐の「ｉｆ（ＴＩＤ＝＝＊＊＊）」の挿入部４０６に、ステップＳ２１９で取得したユーザＩＤであるＴＩＤの０００１が記載される。そして、「ｄｏ  ＊＊＊」の挿入部４０８には、ユーザＩＤがＴＩＤ０００１の６行目に対応する個別要件１０を表すプログラム列（Ａ１０、Ｂ１０、．．．といった内容）が記載される。
【００８９】
次に、次のユーザＩＤについて、ステップＳ２２３の処理を繰り返す。すなわち、条件分岐の「ｅｌｓｅ  ｉｆ（ＴＩＤ＝＝＊＊＊）」の挿入部４１０に、ステップＳ２１９で取得したユーザＩＤであるＴＩＤの０００２が記載される。そして、「ｄｏ  ＊＊＊」の挿入部４１２には、ユーザＩＤがＴＩＤ０００２の６行目に対応する個別要件２０を表すプログラム列（Ａ２０、Ｂ２０、．．．といった内容）が記載される。ここまでの処理で、第１アスペクトひな型４００を用いたアスペクトの合成が終了する。この結果得られたアスペクト４４０を図１６に示す。
【００９０】
次に、ステップＳ２０１で検出された行のうち、まだ処理が済んでいない行番号♯１１について、処理を繰り返す。すなわち、ステップＳ２０５に戻り、ユーザ管理テーブル１１６の１１行目に織り込むアスペクトを合成する。基本プログラム管理テーブル１１２を参照し、個別要件が挿入されている行が空白行か否かを判別し、１１行目は空白行でないため（ステップＳ２０５のＮＯ）、図１５の第２アスペクトひな型４２０を選択して用いる（ステップＳ２０９）。
【００９１】
第２アスペクトひな型４２０において、「Ａｓｐｅｃｔ  ＊＊＊」の挿入部４０２は、アスペクト名（アスペクトＩＤ）、たとえば、「ＹＹＹ」が記載される（ステップＳ２１１）。ここで、第２アスペクトひな型４２０を用いているので（ステップＳ２１３のＮＯ）、個別要件の挿入が指定された基本プログラム中のプログラム列、ここでは、「プログラム列Ｆ」が取得され、「Ａｒｏｕｎｄ  ＊＊＊」の挿入部４２４に記載される（ステップＳ２１７）。
【００９２】
そして、ユーザ管理テーブル１１６を参照し、該当行、ここでは行番号♯１１に個別要件が記載されているユーザＩＤ（ＴＩＤ）と個別要件の組を取得する（ステップＳ２１９）。この例では、ＴＩＤ０００１と個別要件１１の１組が取得される。そして、条件分岐の「ｉｆ（ＴＩＤ＝＝＊＊＊）」の挿入部４０６に、ステップＳ２１９で取得したユーザＩＤであるＴＩＤの０００１が記載される。そして、「ｄｏ  ＊＊＊」の挿入部４０８には、ユーザＩＤがＴＩＤ０００１の１１行目に対応する個別要件１１を表すプログラム列（Ａ１１、Ｂ１１、．．．といった内容）が記載される（ステップＳ２２３）。
【００９３】
ここでは、ユーザＩＤはＴＩＤ０００１のみなので、ステップＳ２２７に進み、ここまでの処理で、第２アスペクトひな型４２０を用いたアスペクトの合成が終了する。この結果得られたアスペクト４６０を図１７に示す。ここで、ステップＳ２０１で検出されたすべての行について処理が終了したので、本処理を終了する。
このようにして各ユーザのプログラムに織り込む各アスペクトが合成され、アスペクト記憶部１４２に記憶される。
【００９４】
次に、これらのプログラムを利用したサービスを各ユーザに提供する場合について、説明する。図１および図２に示すように、プログラム作成支援装置１００で開発されたプログラムは、開発プログラム記憶部１２０およびアスペクト記憶部１４２から提供プログラム記憶装置１０にコピーされ、格納される。プログラム提供サーバ１２が提供プログラム記憶装置１０にアクセスし、基本プログラムとプログラム作成支援装置１００によって合成された２つのアスペクトを読み込み、アスペクト指向プログラミングの手法に従ってアスペクトを基本プログラムに織り込みながらプログラムを実行する。
【００９５】
プログラム提供サーバ１２が、ＴＩＤ０００１のユーザ向けに実行する実効的なプログラム３１０の例を図１８に示す。このように、プログラム提供サーバ１２は、プログラム列Ｄの前で個別要件１０（符号３１２）を実行し、プログラム列Ｆの代わりに個別要件１１（符号３１４）を実行することとなる。また、プログラム提供サーバ１２が、ＴＩＤ０００２のユーザ向けに実行する実効的なプログラム３３０の例を図１９に示す。このように、プログラム提供サーバ１２は、プログラム列Ｄの前で個別要件２０（符号３３２）を実行することとなる。
【００９６】
以上説明したように、本実施形態のプログラム作成支援装置１００によれば、ユーザ毎に設けられた編集画面で基本プログラムに個別要件を挿入するだけで、自動的に対応するアスペクトを合成できるので、プログラム開発者がアスペクトを意識することなく、ユーザ（テナント）を単位として編集作業ができるようになる。そのため、プログラム開発者がユーザ個別要件に対応したユーザ（テナント）ごとのカスタムプログラムを容易に開発し保守できるようになり、ユーザ個別要件に対応する際の作業効率やプログラム開発者の負担を改善することができる。
【００９７】
これにより、プログラムの実装、実行の際のアスペクトを単位としたプログラムの管理において、プログラム開発者がプログラムの開発やバグ解析を行う際にはユーザ（テナント）を単位として編集作業が行えるようになり、開発者の視点での編集、解析に適したプログラムの作成を支援することができることとなる。
【００９８】
すなわち、ひとつのアスペクトに多数のテナント個別要件がまとめて実装されたり、ひとつのテナントの個別要件が複数のアスペクトに分かれて実装されたりすると、プログラム開発者がアスペクトとユーザ（テナント）という２つの観点を把握しなければならず煩雑になり、プログラム開発者が、ユーザ（テナント）ごとに実行される実効的なプログラムを把握しにくいとう問題点を解決できる。
【００９９】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。
【０１００】
以上、実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１０１】
以上、本発明の構成について説明したが、本発明は、これに限られず様々な態様を含む。以下はその例示である。
(i)  本発明のプログラム作成支援装置は、開発対象のアプリケーションプログラムのユーザに共通な基本プログラムを構成する複数のプログラム列を管理する基本プログラム管理テーブル、前記基本プログラムとは別に、前記ユーザ毎に定義できる個別要件を実現するプログラム列を管理する個別要件管理テーブル、および前記ユーザ毎に前記個別要件を関連付けて管理するユーザ管理テーブルを記憶するテーブル記憶装置と、
前記個別要件を実現するアスペクトを生成するためのひな型を記憶するひな型記憶装置と、
前記テーブル記憶装置を参照し、プログラム開発者に編集対象のプログラムを提示し、前記基本プログラムに、前記ユーザ毎に定義できる前記個別要件を挿入する編集操作を受け付け、受け付けた前記編集操作に従って前記プログラムを編集するプログラム編集手段と、
前記プログラム編集手段が受け付けた前記個別要件を対象のユーザ毎に、前記基本プログラムの対象のプログラム列に関連付けて、前記ユーザ管理テーブル、前記基本プログラム管理テーブル、および前記個別要件管理テーブルに登録し管理する個別要件管理手段と、
前記テーブル記憶装置および前記ひな型記憶装置を参照し、前記ユーザ管理テーブル、前記基本プログラム管理テーブル、および前記個別要件管理テーブルに従って、前記ひな型を用いて前記アスペクトを合成する合成手段と、を備える前記ユーザ毎の前記個別要件を前記基本プログラムとともに実現する前記アプリケーションプログラムを作成し、
前記基本プログラム管理テーブルは、前記基本プログラム中の複数の前記プログラム列の位置を示す位置識別子と、対応するプログラム列をそれぞれ関連付けて記憶し、
さらに、
前記位置識別子は、前記基本プログラムの各プログラム列に振られた行番号であるプログラム作成支援装置。
(ii)  上記(i)に記載のプログラム作成支援装置において、
前記位置識別子は、前記基本プログラムの複数のプログラム列を表すブロックの番号であるプログラム作成支援装置。
(iii)  上記(ii)に記載のプログラム作成支援装置において、
前記プログラム列は、連続する２つのプログラム列の間に空ブロック列が定義され、前記ブロックの番号は、前記空ブロック列を含めた番号であるプログラム作成支援装置。
(iv)  本発明のプログラム作成支援装置のデータ処理方法は、
開発対象のアプリケーションプログラムを作成するプログラム作成支援装置のデータ処理方法であって、
前記プログラム作成支援装置が、
前記アプリケーションプログラムのユーザに共通な基本プログラムを構成する複数のプログラム列を管理する基本プログラム管理テーブル、前記基本プログラムとは別に、前記ユーザ毎に定義できる個別要件を実現するプログラム列を管理する個別要件管理テーブル、および前記ユーザ毎に前記個別要件を関連付けて管理するユーザ管理テーブルを記憶するテーブル記憶装置と、
前記個別要件を実現するアスペクトを生成するためのひな型を記憶するひな型記憶装置と、
プログラム開発者に操作画面を表示して提示する表示部と、
前記プログラム開発者の操作を受け付ける操作部と、を備え、
前記プログラム作成支援装置が、
前記テーブル記憶装置を参照し、前記プログラム開発者に編集対象のプログラムを編集するための編集画面を前記表示部に表示して提示し、
前記プログラム開発者による前記操作部を利用した、前記ユーザ毎に定義できる前記個別要件を前記基本プログラムに挿入する編集操作を受け付け、
受け付けた前記編集操作に従って前記プログラムを編集し、
受け付けた前記個別要件を対象のユーザ毎に、前記基本プログラムの対象のプログラム列に関連付けて、前記ユーザ管理テーブル、前記基本プログラム管理テーブル、および前記個別要件管理テーブルに登録し、
前記テーブル記憶装置および前記ひな型記憶装置を参照し、前記ユーザ管理テーブル、前記基本プログラム管理テーブル、および前記個別要件管理テーブルに従って、前記ひな型を用いて前記アスペクトを合成し、
前記ユーザ毎の前記個別要件を前記基本プログラムとともに実現する前記アプリケーションプログラムを実行するプログラム作成支援装置のデータ処理方法である。
【０１０２】
この出願は、２０１０年３月５日に出願された日本出願特願２０１０−０４９３３３号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
0005626333.tif 000002
【図２】
0005626333.tif 000003
【図３】
0005626333.tif 000004
【図４】
0005626333.tif 000005
【図５】
0005626333.tif 000006
【図６】
0005626333.tif 000007
【図７】
0005626333.tif 000008
【図８】
0005626333.tif 000009
【図９】
0005626333.tif 000010
【図１０】
0005626333.tif 000011
【図１１】
0005626333.tif 000012
【図１２】
0005626333.tif 000013
【図１３】
0005626333.tif 000014
【図１４】
0005626333.tif 000015
【図１５】
0005626333.tif 000016
【図１６】
0005626333.tif 000017
【図１７】
0005626333.tif 000018
【図１８】
0005626333.tif 000019
【図１９】
0005626333.tif 000020