(57)【要約】【課題】ユーザニーズに応じたサービスや性能を有する業務アプリケーションのプログラム作成作業の効率化を図るとともに、システムの信頼性を向上することができる。【解決手段】情報処理装置１００は、予めコードが定義されている複数の部品の連携構造１１０を取得する取得部１０２と、複数の部品を連携構造１１０に従って連携したときのコード１１４を、予め定義されているコード、及び今回生成するコードの設計原則１１２として選択された項目に対応する処理手順を用いて生成するコード生成部１０４とを備える。【選択図】図１
2019175310.tif 000002
【特許請求の範囲】
【請求項１】
予めコードが定義されている複数の部品の連携構造を取得する取得手段と、
複数の部品を連携構造に従って連携したときのコードを、予め定義されている前記コード、及び今回生成するコードの設計原則として選択された項目に対応する処理手順を用いて生成するコード生成手段と、を備える情報処理装置。
【請求項２】
請求項１に記載の情報処理装置において、
前記設計原則を選択可能に表示部に表示する表示手段をさらに備える情報処理装置。
【請求項３】
請求項１または２に記載の情報処理装置において、
前記設計原則は、前記部品単体または複数の前記部品の組み合わせから生成されるコードを用いて生成される少なくとも一つのプログラムの保守保全に関する機能項目を含む、情報処理装置。
【請求項４】
請求項３に記載の情報処理装置において、
前記機能項目は、下記の項目（ａ）〜（ｄ）のうちの少なくとも一つを含む、情報処理装置。
（ａ）前記部品単体に関する機能
（ｂ）複数の前記部品間の相互作用に関する機能
（ｃ）複数の前記部品について横断的に関係する機能
（ｄ）前記プログラムによって実現されるシステムを構成する少なくとも一つのノードに関する機能
【請求項５】
請求項１から４のいずれか一項に記載の情報処理装置において、
生成された前記コードを新たな部品として登録する登録手段をさらに備える情報処理装置。
【請求項６】
請求項５に記載の情報処理装置において、
前記取得手段は、さらに、前記新たな部品のインターフェースの定義を取得し、
前記コード生成手段は、前記インターフェースの定義をさらに用いる、情報処理装置。
【請求項７】
請求項１から６のいずれか一項に記載の情報処理装置において、
前記コード生成手段は、ユーザが入力すべき項目を含んだ状態で、コードを生成し、
前記表示処理手段は、生成した前記コードを表示し、前記入力すべき項目を前記ユーザに入力させる、情報処理装置。
【請求項８】
情報処理装置が、
予めコードが定義されている複数の部品の連携構造を取得し、
複数の部品を連携構造に従って連携したときのコードを、予め定義されている前記コード、及び今回生成するコードの設計原則として選択された項目に対応する処理手順を用いて生成する、情報処理方法。
【請求項９】
コンピュータに、
予めコードが定義されている複数の部品の連携構造を取得する手順、
複数の部品を連携構造に従って連携したときのコードを、予め定義されている前記コード、及び今回生成するコードの設計原則として選択された項目に対応する処理手順を用いて生成する手順、を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、およびプログラムに関する。
【背景技術】
【０００２】
近年、クラウド、ＩｏＴ（Internet of Things）、ＡＩ（Artificial Intelligence）に代表されるＩＣＴ（Information and Communication Technology）の進化により、ＳｏＲ（Systems of Record）に加え、ＳｏＥ（Systems of Engagement）という新しいＩＣＴモデルが登場してきている。ＳｏＲは計画主導型であり、システム要求が明確であり、安定性が重視される。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
それに対し、ＳｏＥモデルは、システム要求が不明、不確実で、運用中の各種フィードバックに基づいて頻繁に変更されるため、変更への対応柔軟性、機敏性が求められる。このような不確実性の高いビジネスゴールに対して、仮説検証プロセスを高速に繰り返し行う開発手法の一つであるＤｅｖＯｐｓ（Development and Operations）への取り組みが不可欠である。
【０００４】
本発明は上記事情に鑑みてなされたものであり、その目的とするところは、ユーザニーズに応じたサービスや性能を有する業務アプリケーションのプログラム作成作業の効率化を図るとともに、システムの信頼性を向上させることにある。
【課題を解決するための手段】
【０００５】
本発明の各側面では、上述した課題を解決するために、それぞれ以下の構成を採用する。
【０００６】
第一の側面は、情報処理装置に関する。第一の側面に係る情報処理装置は、
予めコードが定義されている複数の部品の連携構造を取得する取得手段と、
複数の部品を連携構造に従って連携したときのコードを、予め定義されている前記コード、及び今回生成するコードの設計原則として選択された項目に対応する処理手順を用いて生成するコード生成手段と、を有する。
【０００７】
第二の側面は、少なくとも１つのコンピュータにより実行される情報処理方法に関する。第二の側面に係る情報処理方法は、
情報処理装置が、
予めコードが定義されている複数の部品の連携構造を取得し、
複数の部品を連携構造に従って連携したときのコードを、予め定義されている前記コード、及び今回生成するコードの設計原則として選択された項目に対応する処理手順を用いて生成する、ことを含む。
【０００８】
なお、本発明の他の側面としては、上記第二の側面の方法を少なくとも１つのコンピュータに実行させるプログラムであってもよいし、このようなプログラムを記録したコンピュータが読み取り可能な記録媒体であってもよい。この記録媒体は、非一時的な有形の媒体を含む。
このコンピュータプログラムは、コンピュータにより実行されたとき、コンピュータに、情報処理装置上で、その制御方法を実施させるコンピュータプログラムコードを含む。
【０００９】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【００１０】
また、本発明の各種の構成要素は、必ずしも個々に独立した存在である必要はなく、複数の構成要素が一個の部材として形成されていること、一つの構成要素が複数の部材で形成されていること、ある構成要素が他の構成要素の一部であること、ある構成要素の一部と他の構成要素の一部とが重複していること、等でもよい。
【００１１】
また、本発明の方法およびコンピュータプログラムには複数の手順を順番に記載してあるが、その記載の順番は複数の手順を実行する順番を限定するものではない。このため、本発明の方法およびコンピュータプログラムを実施するときには、その複数の手順の順番は内容的に支障のない範囲で変更することができる。
【００１２】
さらに、本発明の方法およびコンピュータプログラムの複数の手順は個々に相違するタイミングで実行されることに限定されない。このため、ある手順の実行中に他の手順が発生すること、ある手順の実行タイミングと他の手順の実行タイミングとの一部ないし全部が重複していること、等でもよい。
【発明の効果】
【００１３】
上記各側面によれば、ユーザニーズに応じたサービスや性能を有する業務アプリケーションのプログラム作成作業の効率化を図るとともに、システムの信頼性を向上することができる。
【図面の簡単な説明】
【００１４】
【図１】本実施形態の情報処理装置の構成を論理的に示す機能ブロック図である。
【図２】本実施形態の情報処理装置によって構築される業務アプリケーションを説明するための図である。
【図３】本発明の実施の形態に係る情報処理装置を実現するコンピュータのハードウェア構成を示すブロック図である。
【図４】本実施形態の情報処理装置の動作の一例を示すフローチャートである。
【図５】設計原則の一例を示す図である。
【図６】本実施形態の情報処理装置の構成を論理的に示す機能ブロック図である。
【図７】設計原則設定画面の一例を示す図である。
【図８】本実施形態の情報処理装置の構成を論理的に示す機能ブロック図である。
【図９】コード表示部の一例を示す図である。
【図１０】本実施例の情報処理装置を含む情報処理システムのシステム構成例を概念的に示す図である。
【図１１】本実施例の情報処理装置を用いたアプリケーションの作成手順の一例を示すフローチャートである。
【図１２】フロー設計画面の一例を示す図である。
【図１３】ノード編集画面の例を示している。
【図１４】ノード編集画面の一例を示す図である。
【図１５】ノード編集画面の一例を示す図である。
【図１６】ノード編集画面の一例を示す図である。
【図１７】テンプレートの一例を示す図である。
【図１８】本実施例の情報処理システムの構成例の概要を概念的に示す図である。
【図１９】本発明の情報処理システムによって構築される業務アプリケーションを説明するための図である。
【図２０】比較例のシステムによって構築される業務アプリケーションを説明するための図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
【００１６】
（第１の実施の形態）
図１は、本実施形態の情報処理装置１００の構成を論理的に示す機能ブロック図である。
情報処理装置１００は、取得部１０２と、コード生成部１０４と、を備える。
取得部１０２は、予めコードが定義されている複数の部品の連携構造１１０を取得する。
コード生成部１０４は、複数の部品を連携構造１１０に従って連携したときのコード１１４を、予め定義されているコード、及び今回生成するコードの設計原則１１２として選択された項目に対応する処理手順を用いて生成する。
【００１７】
情報処理装置１００は、業務アプリケーションのプログラム設計および作成を支援する装置である。本実施形態の業務アプリケーションは、Ｗｅｂアプリケーションであり、ウェブサーバ上で動作する。情報処理装置１００を用いて、小規模および軽量なサービスを実現するプログラムを複数組み合わせ、連携させることで業務アプリケーションは構築される（図２）。図２では、業務アプリケーション（図中、「業務アプリ」と示す）４０は、複数のサービスを実現するプログラム（図中、「サービス」と示す）４２が、ＲＥＳＴ（REpresentational State Transfer）４４と呼ばれる設計原則によって連携されて構成されている。
【００１８】
各プログラム４２は、少なくとも一つの部品からなる。部品は、ＲＥＳＴ（RESTful）  ＡＰＩ（Application Programming Interface）と呼ばれる、呼び出しインターフェース（以下、ＡＰＩとも呼ぶ）である。部品は、外部の既存のインターフェースを指定して呼び出すこともできるし、当該プロジェクトで定義したインターフェースを指定して呼び出すこともできる。
【００１９】
取得部１０２は、設計用ツールによって実現される。
本実施形態では、プログラム開発者であるオペレータが、設計用ツールを用いて、新たな部品の定義を行い、定義済みの部品を含む複数の部品を組み合わせて、複数の部品の連携構造１１０の定義を行う。さらに、設計原則１１２の項目の選択も設計用ツールを用いて行う。
【００２０】
図３は、本発明の実施の形態に係る情報処理装置１００を実現するコンピュータ６０のハードウェア構成を示すブロック図である。
図１の情報処理装置１００の各構成要素は、図３に示される任意のコンピュータ６０のハードウェアとソフトウェアの任意の組合せによって実現される。コンピュータ６０は、ＣＰＵ（Central Processing Unit）６２、メモリ６４、メモリ６４にロードされた本図の構成要素を実現するプログラム８０、そのプログラム８０を格納するハードディスクなどの記憶ユニット（ストレージ６６：補助記憶装置）、Ｉ／Ｏ（Input/Output）６８、ネットワーク３接続用インターフェース（通信Ｉ／Ｆ（InterFace：インターフェース）７０）を備える。そして、その実現方法、装置にはいろいろな変形例があることは、当業者には理解されるところである。以下に説明する各図は、ハードウェア単位の構成ではなく、機能単位の論理的なブロックを示している。
また、本書の各図において、本発明の本質に関わらない部分の構成については省略してあり、図示されていない。
【００２１】
本実施形態において、情報処理装置１００は、たとえば、サーバコンピュータ、パーソナルコンピュータ、またはそれらに相当する少なくとも一つのコンピュータにより実現することができる。また、コンピュータは仮想サーバを組み合わせもよい。後述するように、情報処理装置１００は、サーバ装置と、ウェブサーバと、クライアント端末とから構成されてもよい。
【００２２】
さらに、情報処理装置１００を実現するコンピュータ６０は、たとえば、キーボードやマウス等の入力装置７２、ディスプレイ等の表示装置７４、入力装置７２と表示装置７４が一体となったタッチパネル（不図示）、マイクやスピーカ等の音声入出力装置（不図示）、または、プリンタ等の出力装置（不図示）とＩ／Ｏ６８を介して接続されてもよい。
【００２３】
コンピュータ６０の各要素は、バス６９を介して互いに接続され、ＣＰＵ６２により各要素とともに全体が制御される。ＣＰＵ６２が、ストレージ６６に記憶されるプログラム８０をメモリ６４に読み出して実行することにより、情報処理装置１００の図１の各ユニットの各機能を実現することができる。
【００２４】
本実施形態のコンピュータプログラム８０は、情報処理装置１００を実現させるためのコンピュータ６０に、予めコードが定義されている複数の部品の連携構造１１０を取得する手順、複数の部品を連携構造１１０に従って連携したときのコード１１４を、予め定義されているコード、及び今回生成するコードの設計原則１１２として選択された項目に対応する処理手順を用いて生成する手順、を実行させるように記述されている。
【００２５】
本実施形態のコンピュータプログラム８０は、コンピュータ６０で読み取り可能な記録媒体に記録されてもよい。記録媒体は特に限定されず、様々な形態のものが考えられる。また、プログラム８０は、記録媒体からコンピュータ６０のメモリ６４にロードされてもよいし、ネットワーク３を通じてコンピュータ６０にダウンロードされ、メモリ６４にロードされてもよい。または、プログラム８０は、記録媒体からコンピュータ６０のストレージ６６に読み込まれて格納された後、メモリ６４にロードされてもよい。
【００２６】
図４は、本実施形態の情報処理装置１００の動作の一例を示すフローチャートである。
本実施形態の情報処理装置１００の情報処理方法は、情報処理装置１００が、予めコードが定義されている複数の部品の連携構造１１０を取得し（ステップＳ１０１）、複数の部品を連携構造１１０に従って連携したときのコード１１４を、予め定義されているコード、及び今回生成するコードの設計原則１１２として選択された項目に対応する処理手順を用いて生成する（ステップＳ１０５〜ステップＳ１０９）。
【００２７】
具体的には、複数の部品の連携構造１１０を、プログラム開発者であるオペレータが設計用ツールを用いて定義し、取得部１０２は、その複数の部品の連携構造１１０を取得する（ステップＳ１０１）。そして、取得部１０２は、オペレータが設計用ツールを用いて部品ごとに定義した設計原則１１２として選択された項目を取得する（ステップＳ１０３）。
【００２８】
そして、コード生成部１０４は、ステップ１０１で取得部１０２が取得した連携構造１１０に含まれている各部品の定義済みのコードを取得する（ステップＳ１０５）。さらに、ステップ１０３で取得部１０２が取得した設計原則１１２として選択された項目に対応する処理手順を取得する（ステップＳ１０７）。そして、コード生成部１０４は、ステップ１０で取得したコードと、ステップ１０７で取得した項目に対応する処理手順を用いてコード１１４を生成する（ステップＳ１０９）。
【００２９】
設計原則１１２は、部品単体または複数の部品の組み合わせから生成されるコードを用いて生成される少なくとも一つのプログラムの保守保全に関する機能項目を含む。図５に、設計原則１１２の一例を示す。
【００３０】
機能項目は、下記の項目（ａ）〜（ｄ）のうちの少なくとも一つを含む。
（ａ）部品単体に関する機能
（ｂ）複数の部品間の相互作用に関する機能
（ｃ）複数の部品について横断的に関係する機能
（ｄ）プログラムによって実現されるシステムを構成する少なくとも一つのノードに関する機能（ここでは、ノードとはコンピュータ、又はサーバ装置を意味する。）
【００３１】
図５の設計原則１１２を例に説明すると、上記（ａ）は、単一サービスに関する原則であり、例えば、サービスをステートレスにする機能、機能拡張しやすい設計を行う機能、障害を隔離する機能、障害を回復する機能等を含む。上記（ｂ）は、インタラクションに関する原則、つまり、サービス相互の相互作用で検討すべき原則（結果整合性への対応）であり、例えば、非同期処理で結果一貫性を実現する機能、過負荷を回避する機能、複雑な処理を再利用可能な個別要素に分割する機能、待ち合わせ時間を削減する機能、およびサービス呼び出し回数を削減する機能を含む。
【００３２】
上記（ｃ）は、サービス横断的な原則、つまり、業務アプリケーション全体で検討すべき原則であり（分散アーキテクチャへの対応）、例えば、通信相手の物理的な絶対パスを意識させない機能、外部依存を動的に特定する仕組みを準備する機能、再デプロイや再起動をすることなく再構成可能にする機能、監視に優しい設計にする機能を含む。
【００３３】
上記（ｄ）は、ドメイン分割の原則、つまり、サービスを適切に疎結合および高凝集に分割するために検討すべき原則であり、例えば、疎結合および高凝集指向のモデリングを実施する機能、シェアードナッシングにする機能、スケールアウトを行う（サーバの数を増やす）機能を含む。
【００３４】
設計原則１１２は、図５に示すように、各機能を実現する手段として、各機能を実現する処理手順（パターン）が定められている。例えば、図５の障害を隔離する機能は、Circuit BreakerとBulkheadと名付けられている処理手順（パターン）であり、コード生成部１０４は、それらの処理手順に沿ったテンプレート１２０に従ってコード１１４が生成される。
機能項目毎の処理手順に沿ったテンプレート１２０がそれぞれ準備されていて、選択された項目に対応する処理手順に沿ったテンプレート１２０を用いてコード１１４が生成される。
【００３５】
以上説明したように、本実施形態によれば、小規模および軽量な複数の部品を組み合わせ、設計原則１１２として選択された機能項目に沿ったパターン（処理手順）のテンプレート１２０を用いてソースコード１１４を作成することができるので、業務アプリケーションを低負荷で効率よく作成することができる。また、設計原則１１２には、プログラムの保守保全に関する機能項目が含まれるので、ユーザニーズに応じたサービスや性能を有する業務アプリケーションの動作の健全性の監視や障害修復を可能にする機能の埋め込みを簡単に実現することができる。よってセキュリティ上の信頼性が高い業務アプリケーションを構築できる。
【００３６】
（第２の実施の形態）
図６は、本実施形態の情報処理装置１００の構成を論理的に示す機能ブロック図である。
本実施形態の情報処理装置１００は、設計原則１１２を選択可能に表示する構成を有する点以外は上記実施形態と同じである。
【００３７】
図６の情報処理装置１００は、図１の情報処理装置１００の構成に加え、さらに、表示処理部１３０を備える。表示処理部１３０は、設計原則１１２を選択可能に表示部（表示装置７４）に表示する。
【００３８】
図７は、設計原則設定画面２３０の一例を示す図である。表示処理部１３０は、設計原則設定画面２３０を、例えば、プログラム開発者のクライアント端末の表示部に表示する。
設計原則設定画面２３０は、設計原則１１２の各機能項目の説明とともに、機能項目を選択する選択部２３１が表示される。この例では、選択部２３１は、チェックボックスである。表示処理部１３０も設計用ツールによって実現される。
【００３９】
コード生成部１０４は、設計原則設定画面２３０で選択された機能項目に対応する処理手順に沿ったテンプレート１２０に従ってソースコード１１４の生成を行う。
【００４０】
以上説明したように、本実施形態によれば、表示処理部１３０が設計原則設定画面２３０を表示部に表示し、設計原則１１２の各機能の選択を受け付け、選択された機能項目に対応する処理手順を用いてソースコード１１４を生成できる。これにより、簡単な操作でアプリケーションの保守保全に関する機能を構築できる。よってプログラム開発の負荷を低減し、業務アプリケーションの信頼性を向上できる。
【００４１】
（第３の実施の形態）
図８は、本実施形態の情報処理装置１００の構成を論理的に示す機能ブロック図である。
本実施形態の情報処理装置１００は、生成されたコード１１４を新たな部品として登録する構成を有する点以外は上記実施形態と同じである。
【００４２】
図８の情報処理装置１００は、図１の情報処理装置１００の構成に加え、さらに、登録部１４０を備える。なお、本実施形態の構成は、図６の情報処理装置１００の構成と組み合わせることもできる。登録部１４０は、生成されたコード１１４を新たな部品として登録する。また、取得部１０２は、新たな部品のインターフェースの定義を取得する。コード生成部１０４は、部品のインターフェースの定義をさらに用いる。上記したように、インターフェースとは上記したＲＥＳＴ  ＡＰＩである。
【００４３】
また、コード生成部１０４は、ユーザが入力すべき項目を含んだ状態で、コード１１４を生成する。表示処理部１３０は、生成したコード１１４を表示し、入力すべき項目をユーザに入力させる。
【００４４】
表示処理部１３０は、図９（ａ）のコード表示部２４０をクライアント端末３０の表示部に表示する。コード表示部２４０は、コード生成部１０４によって生成されたコード１１４を表示し、この例では、サーキットブレーカ設定部２４１と、エラー処理部２４２と、を含む。
【００４５】
サーキットブレーカ設定部２４１に、@HystrixCommandアノテーションを付与することで対象メソッドに対してサーキットブレーカ機能を付与することができる。エラー処理部２４２には、対象メソッドがエラーとなった場合の代替処理を実装したメソッドが指定される。
【００４６】
そして、サーキットブレーカ設定部２４１は、入力すべき項目をユーザに入力させるための代替処理名入力部２４３を含む。例えば、代替処理名入力部２４３に、図９（ｂ）に示す、fallbackMethodプロパティに代替処理となるメソッドの名前「findFallback」を入力して設定できる。
【００４７】
コード生成部１０４は、代替処理名入力部２４３に入力された値を受け付けてコード１１４を書き換えることができる。
【００４８】
以上説明したように、本実施形態によれば、登録部１４０により生成したコード１１４を新たな部品として登録できるので、登録した部品を他のプロジェクトに流用することもできる。また、ユーザが入力すべき項目を含んだ状態でコード１１４を生成するので、ユーザ毎の要求に適宜対応したプログラムを柔軟に作成できる。また、入力すべき項目をユーザに分かりやすく提示するので、必要な項目の入力を間違えなく行えて作業効率も向上する。
【００４９】
本明細書において、「取得」とは、自装置が他の装置や記憶媒体に格納されているデータまたは情報を取りに行くこと（能動的な取得）、たとえば、他の装置にリクエストまたは問い合わせして受信すること、他の装置や記憶媒体にアクセスして読み出すこと等、および、自装置に他の装置から出力されるデータまたは情報を入力すること（受動的な取得）、たとえば、配信（または、送信、プッシュ通知等）されるデータまたは情報を受信すること等、の少なくともいずれか一方を含む。また、受信したデータまたは情報の中から選択して取得すること、または、配信されたデータまたは情報を選択して受信することも含む。
【００５０】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。
【実施例】
【００５１】
（実施例１）
図１０は、本実施例の情報処理装置１００を含む情報処理システム１のシステム構成例を概念的に示す図である。
上述した実施形態の情報処理装置１００は、本実施例では、サーバ装置１０と、ウェブサーバ２０と、クライアント端末３０と、の組み合わせによって実現される。
【００５２】
サーバ装置１０およびウェブサーバ２０は、いずれもサーバコンピュータ、パーソナルコンピュータ、またはそれらに相当する少なくとも一つのコンピュータにより実現することができる。また、サーバ装置１０およびウェブサーバ２０は、仮想マシンと組み合わせて実現されてもよい。また、クライアント端末３０は、パーソナルコンピュータ、携帯端末（例えば、スマートフォン、タブレット端末等）またはそれらに相当する少なくとも一つのコンピュータにより実現することができる。
【００５３】
サーバ装置１０は、設計情報リポジトリ１２、テンプレート記憶部１４、およびプログラム格納部１６を少なくとも含む記憶装置１８を備える。記憶装置１８は、複数の装置から構成されてもよいし、また、サーバ装置１０の内部装置であってもよいし、外部装置であってもよい。サーバ装置１０、ウェブサーバ２０およびクライアント端末３０は、図３のコンピュータ６０によってそれぞれ実現される。
【００５４】
図１１は、本実施例の情報処理装置１００を用いたアプリケーションの作成手順の一例を示すフローチャートである。
まず、オペレータはクライアント端末３０でブラウザ３２を用いてウェブサーバ２０にアクセスする。例えば、本情報処理システム１を利用するために予めユーザ登録された認識情報を用いて専用ウェブサイトにアクセスし、設計用のツールを起動する。
【００５５】
ウェブサーバ２０上でＷｅｂアプリケーションの一つである設計用ツールを動作させて、設計用ツールの各種画面をクライアント端末３０上に操作可能に表示するとともに、クライアント端末３０におけるユーザ操作を受け付ける。受け付けた情報は、ウェブサーバ２０経由でサーバ装置１０の記憶装置１８の設計情報リポジトリ１２に格納される。
【００５６】
設計用ツールが起動されると、表示処理部１３０は、図１２のフロー設計画面２１０をクライアント端末３０の表示部に表示する（ステップＳ１）。フロー設計画面２１０で、雛形リスト２１１からノード２１２（サービスの部品に相当する）を配置する（ステップＳ１）。雛形リスト２１１ａは、予め定義されている共有のノード２１２を含む。雛形リスト２１１ｂは、新たな部品を生成する空のノード２１２である。図１２（ａ）は、４つのノード２１２が配置されている様子を示している。雛形リスト２１１からノード２１２を選択して配置エリア２１３にドラッグすることでノード２１２を配置することができる。そして、図１２（ｂ）のように、各ノード２１２間を接続ライン２１５で接続することで、サービス間の連携を設計する（ステップＳ２）。
【００５７】
図１３は、ノード２１２のノード編集画面２１７の例を示している。配置エリア２１３内のノード２１２を選択し、例えば、右クリックでメニューリストを表示し、ノード編集画面２１７を開くメニューを選択する。ノード編集画面２１７は、ノード２１２の名前、および説明を表示し編集する入力部２１８を含む。完了ボタン２１９を受け付けるとノード編集画面２１７は閉じられる。ここでは、定義済みのノード２１２のプロパティが表示されている。
【００５８】
また、雛形リスト２１１ｂのノード２１２が選択された場合、表示処理部１３０は、図１４のノード編集画面２２０を表示する。このノード編集画面２２０を用いて、オペレータは、部品（サービス）毎にインターフェースの定義と、そのサービスで利用する設計原則１１２を設計する（ステップＳ３）。このノード編集画面２２０は、例えば、部品を選択すると表示される。
【００５９】
図１４のノード編集画面２２０は、ＩＤ情報表示部２２１と、ノード名入力部２２２と、説明入力部２２３と、アクション選択部２２４と、設計原則設定部２２５と、インターフェース定義部２２６と、完了ボタン２２７と、を含む。
【００６０】
ＩＤ情報表示部２２１には、作成中のフローの識別情報と、サービスの識別情報とが表示される。ノード名入力部２２２は、作成中のノードの名前の入力を受け付けるテキストボックスである。説明入力部２２３は、作成中のノードの説明の入力を受け付けるテキストボックスである。アクション選択部２２４は、作成中のノードが実現するサービスへのアクションを選択する項目リストである。アクション選択部２２４は、図１５のアクションリスト２２８を表示する。この例では、アクションリスト２２８は、ツール起動、ソース生成、ダウンロード、ビルド、デプロイ、実行等が含まれている。図１５では、アクションリスト２２８の中のダウンロードが選択されていて、その詳細内容が詳細表示部２２９に表示されている。
【００６１】
また、図１４の設計原則設定部２２５を選択すると、図７の設計原則設定画面２３０が表示される。上記したように、設計原則設定画面２３０で、設計原則１１２の機能項目に対応する選択部２３１のチェックボックスをチェックすることで、機能項目を選択することができる。
【００６２】
また、図１４のインターフェース定義部２２６を選択することで、図１６のインターフェース選択リスト２５１が表示される。インターフェース選択リスト２５１には、定義済みのインターフェースが含まれている。選択したインターフェースの詳細内容を詳細ボタン２５２により参照することもできる。また、追加ボタン２５３を押下すると、参照インターフェース定義部２５４がさらに表示される。参照インターフェース定義部２５４に、外部公開されているインターフェースを指定することができる。これが、図１１のステップＳ４であり、既存のＡＰＩ情報をインポートして、インターフェース設計に活用できる。
【００６３】
このようにして、設計用のツールを用いて設計された情報１１３は、サーバ装置１０の設計情報リポジトリ１２に格納される。そして、コード生成部１０４は、設計原則１１２で選択された項目に従って、図１７のテンプレート１２０に組み込み、コード１１４を生成する（ステップＳ５）。
【００６４】
このように、本実施例によれば、ユーザニーズに応じたサービスや性能を有する業務アプリケーションのプログラム作成作業の効率化を図ることができる。
【００６５】
（実施例２）
図１８は、本実施例の情報処理システム１の構成例の概要を概念的に示す図である。
この例では、クラウド３００ａ上に本情報処理システム１で作成されたサービスアーキテクチャ３１０が構築されている。サービスアーキテクチャ３１０は、複数のサービス３１２（各機能を実現するプログラムに相当）がＲＥＳＴ  ＡＰＩ３２０によって互いに連携している。これらは、本発明の情報処理装置１００の設計用ツールで設計される。
【００６６】
また、公開ＡＰＩのＵＲＩ（Uniform Resource Identifier）であるＡＰＩエンドポイント３５０を介して他のデバイス（例えば、パーソナルコンピュータやスマートフォン）３５２がサービスアーキテクチャ３１０を利用できる。
【００６７】
（実施例３）
図１９は、本発明の情報処理システム１によって構築される業務アプリケーション４００を説明するための図である。業務アプリケーション４００は、機能が異なる複数のサービス４１０は、それぞれソース管理と、ビルド工程、テスト工程、リリース工程を独立して行うことができる。そのため、あるサービス４１０の機能変更が行われても、そのサービス４１０で局所的に変更すればよい。そして、サービス４１０は単独でデプロイ、実行が可能であるため、個々のサービス４１０で自由にサーバ数を増やすことができるので、拡張可能性が高い。また、独立したランタイムにより、１つのサービス４１０に障害が発生して停止しても、サービス全体は継続稼働が可能である。
このように、本実施例３では、変化に強く、柔軟性の高いアプリケーションを実現可能であり、各サービス４１０は個別にデプロイかのであり、不具合が発生してもシステム全体に影響する可能性は少ない。
【００６８】
（比較例１）
図２０は、比較例のシステムによって構築される業務アプリケーション５００を説明するための図である。業務アプリケーション５００は、異なる機能を１つのアプリケーションで実現するため、１つのプログラムとしてソース管理を行うとともに、ビルド工程、テスト工程、リリース工程を行うので、小さな変更でもシステム全体のリビルドとデプロイが必要となる。アプリケーションが密結合になりやすいため、変更をモジュール内に限定しづらい。そのため、変更による影響調査と回帰テストに工数がかかってしまう。スケールアウトの単一が一つの大きなアプリケーションなので、スケールするためにリリースを必要とする部分だけでなく、アプリケーション全体のスケールが必要となる。また、ランタイムが１つであるため、ある障害がサービス全体に波及しやすい。
したがって、比較例では、システムが大きくなり複雑度が増すにつれ、ビジネス環境変化への俊敏な対応が難しくなる。
【００６９】
以上、実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
なお、本発明において利用者に関する情報を取得、利用する場合は、これを適法に行うものとする。
【００７０】
上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下に限られない。
１．  予めコードが定義されている複数の部品の連携構造を取得する取得手段と、
複数の部品を連携構造に従って連携したときのコードを、予め定義されている前記コード、及び今回生成するコードの設計原則として選択された項目に対応する処理手順を用いて生成するコード生成手段と、を備える情報処理装置。
２．  １．に記載の情報処理装置において、
前記設計原則を選択可能に表示部に表示する表示手段をさらに備える情報処理装置。
３．  １．または２．に記載の情報処理装置において、
前記設計原則は、前記部品単体または複数の前記部品の組み合わせから生成されるコードを用いて生成される少なくとも一つのプログラムの保守保全に関する機能項目を含む、情報処理装置。
４．  ３．に記載の情報処理装置において、
前記機能項目は、下記の項目（ａ）〜（ｄ）のうちの少なくとも一つを含む、情報処理装置。
（ａ）前記部品単体に関する機能
（ｂ）複数の前記部品間の相互作用に関する機能
（ｃ）複数の前記部品について横断的に関係する機能
（ｄ）前記プログラムによって実現されるシステムを構成する少なくとも一つのノードに関する機能
５．  １．から４．のいずれか一つに記載の情報処理装置において、
生成された前記コードを新たな部品として登録する登録手段をさらに備える情報処理装置。
６．  ５．に記載の情報処理装置において、
前記取得手段は、さらに、前記新たな部品のインターフェースの定義を取得し、
前記コード生成手段は、前記インターフェースの定義をさらに用いる、情報処理装置。
７．  １．から６．のいずれか一つに記載の情報処理装置において、
前記コード生成手段は、ユーザが入力すべき項目を含んだ状態で、コードを生成し、
前記表示処理手段は、生成した前記コードを表示し、前記入力すべき項目を前記ユーザに入力させる、情報処理装置。
【００７１】
８．  情報処理装置が、
予めコードが定義されている複数の部品の連携構造を取得し、
複数の部品を連携構造に従って連携したときのコードを、予め定義されている前記コード、及び今回生成するコードの設計原則として選択された項目に対応する処理手順を用いて生成する、情報処理方法。
９．  ８．に記載の情報処理方法において、
前記情報処理装置が、さらに、
前記設計原則を選択可能に表示部に表示する情報処理方法。
１０．  ８．または９．に記載の情報処理方法において、
前記設計原則は、前記部品単体または複数の前記部品の組み合わせから生成されるコードを用いて生成される少なくとも一つのプログラムの保守保全に関する機能項目を含む、情報処理方法。
１１．  １０．に記載の情報処理方法において、
前記機能項目は、下記の項目（ａ）〜（ｄ）のうちの少なくとも一つを含む、情報処理方法。
（ａ）前記部品単体に関する機能
（ｂ）複数の前記部品間の相互作用に関する機能
（ｃ）複数の前記部品について横断的に関係する機能
（ｄ）前記プログラムによって実現されるシステムを構成する少なくとも一つのノードに関する機能
１２．  ８．から１１．のいずれか一つに記載の情報処理方法において、
前記情報処理装置が、さらに、
生成された前記コードを新たな部品として登録する情報処理方法。
１３．  １２．に記載の情報処理方法において、
前記情報処理装置が、さらに、
前記新たな部品のインターフェースの定義を取得し、
前記インターフェースの定義をさらに用いて前記コードを生成する、情報処理方法。
１４．  ８．から１３．のいずれか一つに記載の情報処理方法において、
前記情報処理装置が、さらに、
ユーザが入力すべき項目を含んだ状態で、コードを生成し、
生成した前記コードを表示し、前記入力すべき項目を前記ユーザに入力させる、情報処理方法。
【００７２】
１５．  コンピュータに、
予めコードが定義されている複数の部品の連携構造を取得する手順、
複数の部品を連携構造に従って連携したときのコードを、予め定義されている前記コード、及び今回生成するコードの設計原則として選択された項目に対応する処理手順を用いて生成する手順、を実行させるためのプログラム。
１６．  １５．に記載のプログラムにおいて、
前記設計原則を選択可能に表示部に表示する手順をさらにコンピュータに実行させるためのプログラム。
１７．  １５．または１６．に記載のプログラムにおいて、
前記設計原則は、前記部品単体または複数の前記部品の組み合わせから生成されるコードを用いて生成される少なくとも一つのプログラムの保守保全に関する機能項目を含む、プログラム。
１８．  １７．に記載のプログラムにおいて、
前記機能項目は、下記の項目（ａ）〜（ｄ）のうちの少なくとも一つを含む、プログラム。
（ａ）前記部品単体に関する機能
（ｂ）複数の前記部品間の相互作用に関する機能
（ｃ）複数の前記部品について横断的に関係する機能
（ｄ）前記プログラムによって実現されるシステムを構成する少なくとも一つのノードに関する機能
１９．  １５．から１８．のいずれか一つに記載のプログラムにおいて、
生成された前記コードを新たな部品として登録する手順をさらにコンピュータに実行させるためのプログラム。
２０．  １９．に記載のプログラムにおいて、
前記新たな部品のインターフェースの定義を取得する手順、
前記インターフェースの定義をさらに用いて前記コードを生成する手順、をさらにコンピュータに実行させるためのプログラム。
２１．  １５．から２０．のいずれか一つに記載のプログラムにおいて、
ユーザが入力すべき項目を含んだ状態で、コードを生成する手順、
生成した前記コードを表示し、前記入力すべき項目を前記ユーザに入力させる手順、をさらにコンピュータに実行させるためのプログラム。
【符号の説明】
【００７３】
１  情報処理システム
３  ネットワーク
１０  サーバ装置
１２  設計情報リポジトリ
１４  テンプレート記憶部
１６  プログラム格納部
１８  記憶装置
２０  ウェブサーバ
３０  クライアント端末
３２  ブラウザ
４２  プログラム
６０  コンピュータ
６２  ＣＰＵ
６４  メモリ
６６  ストレージ
６８  Ｉ／Ｏ
６９  バス
７０  通信Ｉ／Ｆ
７２  入力装置
７４  表示装置
８０  プログラム
１００  情報処理装置
１０２  取得部
１０４  コード生成部
１１０  連携構造
１１２  設計原則
１１４  コード
１２０  テンプレート
１３０  表示処理部
１４０  登録部
２１０  フロー設計画面
２１１、２１１ａ、２１１ｂ  雛形リスト
２１２  ノード
２１３  配置エリア
２１７  ノード編集画面
２１８  入力部
２１９  完了ボタン
２２０  ノード編集画面
２２１  ＩＤ情報表示部
２２２  ノード名入力部
２２３  説明入力部
２２４  アクション選択部
２２５  設計原則設定部
２２６  インターフェース定義部
２２７  完了ボタン
２２８  アクションリスト
２２９  詳細表示部
２３０  設計原則設定画面
２３１  選択部
２４０  コード表示部
２４１  サーキットブレーカ設定部
２４２  エラー処理部
２４３  代替処理名入力部
２５１  インターフェース選択リスト
２５２  詳細ボタン
２５３  追加ボタン
２５４  参照インターフェース定義部
３００ａ、３００ｂ  クラウド
３１０  サービスアーキテクチャ
３１２  サービス
３２０  ＲＥＳＴ  ＡＰＩ
４００  業務アプリケーション
４１０  サービス
５００  業務アプリケーション
【図１】
2019175310.tif 000003
【図２】
2019175310.tif 000004
【図３】
2019175310.tif 000005
【図４】
2019175310.tif 000006
【図５】
2019175310.tif 000007
【図６】
2019175310.tif 000008
【図７】
2019175310.tif 000009
【図８】
2019175310.tif 000010
【図９】
2019175310.tif 000011
【図１０】
2019175310.tif 000012
【図１１】
2019175310.tif 000013
【図１２】
2019175310.tif 000014
【図１３】
2019175310.tif 000015
【図１４】
2019175310.tif 000016
【図１５】
2019175310.tif 000017
【図１６】
2019175310.tif 000018
【図１７】
2019175310.tif 000019
【図１８】
2019175310.tif 000020
【図１９】
2019175310.tif 000021
【図２０】
2019175310.tif 000022