IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社ニューロベイスの特許一覧

特開2024-166397プログラム、情報処理方法、及び情報処理装置
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024166397
(43)【公開日】2024-11-28
(54)【発明の名称】プログラム、情報処理方法、及び情報処理装置
(51)【国際特許分類】
   G06F 8/20 20180101AFI20241121BHJP
   G06F 8/30 20180101ALI20241121BHJP
   G06F 8/38 20180101ALI20241121BHJP
   G06F 8/60 20180101ALI20241121BHJP
【FI】
G06F8/20
G06F8/30
G06F8/38
G06F8/60
【審査請求】未請求
【請求項の数】21
【出願形態】OL
(21)【出願番号】P 2024162276
(22)【出願日】2024-09-19
(62)【分割の表示】P 2024508989の分割
【原出願日】2023-10-26
(31)【優先権主張番号】P 2023070344
(32)【優先日】2023-04-21
(33)【優先権主張国・地域又は機関】JP
(71)【出願人】
【識別番号】517341711
【氏名又は名称】株式会社ニューロベイス
(74)【代理人】
【識別番号】100114557
【弁理士】
【氏名又は名称】河野 英仁
(74)【代理人】
【識別番号】100078868
【弁理士】
【氏名又は名称】河野 登夫
(72)【発明者】
【氏名】井沼 安広
(57)【要約】
【課題】ソフトウェアの設計スキル又は開発スキルを必要とせずにソフトウェアの設計及び開発を行うことを可能にするプログラム等を提供する。
【解決手段】コンピュータは、プログラムに従って、生成対象のプログラムコードに関する概要を示す概要プロンプトを受け付ける。またコンピュータは、受け付けた概要プロンプトを自然言語処理モデルに入力して、前記プログラムコードに関する詳細な仕様内容を示す詳細プロンプトを取得する。そしてコンピュータは、取得した詳細プロンプトを前記自然言語処理モデルに入力して、プログラムコードを取得する。
【選択図】図1
【特許請求の範囲】
【請求項1】
生成対象のプログラムコードに関する詳細な仕様内容を示す詳細プロンプトを取得し、
取得した詳細プロンプトを自然言語処理モデルに入力して、前記プログラムコードを取得する
処理をコンピュータに実行させるプログラム。
【請求項2】
前記プログラムコードに関する概要を示す概要プロンプトを取得し、
取得した概要プロンプトを自然言語処理モデルに入力して、前記詳細プロンプトを取得する
処理を前記コンピュータに実行させる請求項1に記載のプログラム。
【請求項3】
取得した前記プログラムコードに対するビルド処理を
前記コンピュータに実行させる請求項1又は2に記載のプログラム。
【請求項4】
前記ビルド処理によって生成された実行可能形式ファイルに対するデプロイ処理を
前記コンピュータに実行させる請求項3に記載のプログラム。
【請求項5】
概要プロンプトに関する対話情報を表示し、
表示した前記対話情報に対する回答として前記概要プロンプトを取得する
処理を前記コンピュータに実行させる請求項2に記載のプログラム。
【請求項6】
前記自然言語処理モデルは、入力されたデータに基づいて画像データを生成する構成を有しており、
前記概要プロンプトを前記自然言語処理モデルに入力して、画像データを含む前記詳細プロンプトを取得する
処理を前記コンピュータに実行させる請求項2に記載のプログラム。
【請求項7】
前記ビルド処理によって前記プログラムコードに含まれるエラーの内容を示すエラー情報が生成された場合、前記プログラムコード及び生成された前記エラー情報を自然言語処理モデルに入力して、前記エラーが解消されたプログラムコードを取得する
処理を前記コンピュータに実行させる請求項3に記載のプログラム。
【請求項8】
前記概要プロンプトは、テキストデータ、画像データ、音声データ、動画ファイル、pdf(Portable Document Format)ファイル、及びバイナリファイルのうちの少なくとも1つを含む
請求項2に記載のプログラム。
【請求項9】
前記詳細プロンプトは、テキストデータ、画像データ、音声データ、動画ファイル、pdfファイル、及びバイナリファイルのうちの少なくとも1つを含む
請求項1又は2に記載のプログラム。
【請求項10】
取得した前記詳細プロンプトをプレビュー欄に出力し、
前記プレビュー欄に表示された詳細プロンプトに対する編集を受け付け、
編集後の前記詳細プロンプトを自然言語処理モデルに入力して前記プログラムコードを取得する
処理を前記コンピュータに実行させる請求項1又は2に記載のプログラム。
【請求項11】
前記詳細プロンプトに対して受け付けた編集に関する編集履歴情報を出力する
処理を前記コンピュータに実行させる請求項10に記載のプログラム。
【請求項12】
前記編集履歴情報に基づいて、前記詳細プロンプトに行った編集処理の実行前又は実行後の状態に戻す指示を受け付けた場合、前記編集処理の実行前又は実行後の状態に前記詳細プロンプト及び前記プログラムコードを戻す
処理を前記コンピュータに実行させる請求項11に記載のプログラム。
【請求項13】
編集後の前記詳細プロンプトと、編集前の前記詳細プロンプトに対応するプログラムコードとを自然言語処理モデルに入力し、前記編集後の詳細プロンプトに対応するプログラムコードを取得する
処理を前記コンピュータに実行させる請求項10に記載のプログラム。
【請求項14】
編集前の前記詳細プロンプトと前記編集後の詳細プロンプトとの差分を抽出し、
抽出した差分と、前記編集前の詳細プロンプトに対応するプログラムコードとを自然言語処理モデルに入力し、前記編集後の詳細プロンプトに対応するプログラムコードを取得する
処理を前記コンピュータに実行させる請求項10に記載のプログラム。
【請求項15】
前記プログラムコードをプレビュー欄に出力し、
前記プレビュー欄に表示されたプログラムコードに対する編集を受け付ける
処理を前記コンピュータに実行させる請求項1又は2に記載のプログラム。
【請求項16】
編集後のプログラムコードに基づいて、前記編集後のプログラムコードに対応する詳細プロンプトを生成する
処理を前記コンピュータに実行させる請求項15に記載のプログラム。
【請求項17】
前記プログラムコードの生成に用いるGUI(Graphical User Interface)が設けられた画面を出力し、
前記画面に設けられたGUIを介して前記プログラムコードに係る設定情報を受け付け、
受け付けた設定情報に基づいて前記プログラムコードを生成する
処理を前記コンピュータに実行させる請求項1又は2に記載のプログラム。
【請求項18】
前記設定情報に基づいて生成された前記プログラムコードに基づいて、前記プログラムコードに対応する詳細プロンプトを生成する
処理を前記コンピュータに実行させる請求項17に記載のプログラム。
【請求項19】
前記概要プロンプトの入力を受け付ける入力欄を介して、前記コンピュータに対する処理の実行指示を受け付ける
処理を前記コンピュータに実行させる請求項2に記載のプログラム。
【請求項20】
生成対象のプログラムコードに関する詳細な仕様内容を示す詳細プロンプトを取得し、
取得した詳細プロンプトを自然言語処理モデルに入力して、前記プログラムコードを取得する
処理をコンピュータが実行する情報処理方法。
【請求項21】
制御部を有する情報処理装置において、
前記制御部が、
生成対象のプログラムコードに関する詳細な仕様内容を示す詳細プロンプトを取得し、
取得した詳細プロンプトを自然言語処理モデルに入力して、前記プログラムコードを取得する
情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、プログラム、情報処理方法、及び情報処理装置に関する。
【背景技術】
【0002】
特許文献1では、グラフィカルユーザインタフェース(GUI)を有するソフトウェアの画面設計を行う際に、予め用意されたパーツの選択、選択されたパーツの配置情報、属性情報及び設定項目の設定をグラフィカルなインタフェースを介して行う技術が開示されている。このような技術を用いることにより、画面設計に関する高度な設計スキルを有しないエンジニアであっても、ソフトウェアにおける実行画面の設計を手軽に行うことが可能となる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特許第6570436号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
近年では、ソフトウェアのバージョンアップ又は仕様変更のスピードが速く、ソフトウェアの設計スピード及び開発スピードの高速化が求められている。よって、ソフトウェアの設計スキル又は開発スキルをより必要とせずにソフトウェアの設計及び開発を行えるシステムが要望されている。
【0005】
一つの側面では、ソフトウェアの設計スキル又は開発スキルを必要とせずにソフトウェアの設計及び開発を行うことを可能にするプログラム等を提供することを目的とする。
【課題を解決するための手段】
【0006】
一つの側面に係るプログラムは、生成対象のプログラムコードに関する概要を示す概要プロンプトを受け付け、受け付けた概要プロンプトを自然言語処理モデルに入力して、前記プログラムコードに関する詳細な仕様内容を示す詳細プロンプトを取得し、取得した詳細プロンプトを前記自然言語処理モデルに入力して、前記プログラムコードを取得する処理をコンピュータに実行させる。
【発明の効果】
【0007】
一つの側面では、ソフトウェアの設計スキル又は開発スキルを必要とせずにソフトウェアの設計及び開発を行うことが可能となる。
【図面の簡単な説明】
【0008】
図1】情報処理装置の構成例を示すブロック図である。
図2】プログラムコードの生成処理手順の一例を示すフローチャートである。
図3】プログラムコードの生成処理手順の一例を示すフローチャートである。
図4】プログラムコードの生成処理手順の一例を示すフローチャートである。
図5】プログラムコードの生成処理手順の一例を示すフローチャートである。
図6】プログラムコードの生成処理手順の一例を示すフローチャートである。
図7A】画面例を示す説明図である。
図7B】画面例を示す説明図である。
図8】画面例を示す説明図である。
図9】画面例を示す説明図である。
図10A】画面例を示す説明図である。
図10B】画面例を示す説明図である。
図11】画面例を示す説明図である。
図12】画面例を示す説明図である。
図13】画面例を示す説明図である。
図14】実施形態2のプログラムコードの生成処理手順の一例を示すフローチャートである。
図15】アプリ設計画面の変形例を示す説明図である。
図16】実施形態3のプログラムコードの生成処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0009】
以下に、本開示のプログラム、情報処理方法、及び情報処理装置について、その実施形態を示す図面に基づいて詳述する。
【0010】
(実施形態1)
本実施形態では、自然言語(テキストデータ)及び画像等による指示(プロンプト)によってアプリケーションプログラム(ソフトウェア、以下では単にアプリケーションと記載する)の設計及び開発を行う情報処理装置について説明する。本実施形態の情報処理装置では、ユーザがアプリケーションを設計する際の作業だけでなく、アプリケーションを開発する際の作業を支援することができる。以下では、アプリケーションの設計及び開発をまとめてアプリケーションの設計と記載する。本実施形態では、自然言語として日本語を用いる例で説明するが、自然言語は日本語に限定されず、英語、フランス語、ベトナム語、中国語等、日本語以外の言語を用いてもよい。図1は情報処理装置の構成例を示すブロック図である。
【0011】
情報処理装置10は、種々の情報処理及び情報の送受信が可能なコンピュータであり、サーバコンピュータ又はパーソナルコンピュータ等である。情報処理装置10は、制御部11、記憶部12、通信部13、入力部14、表示部15、読取部16等を含み、これらの各部はバスを介して相互に接続されている。制御部11は、CPU(Central Processing Unit)、MPU(Micro-Processing Unit)、GPU(Graphics Processing Unit)、GPGPU(General-purpose computing on graphics processing units)、TPU(Tensor Processing Unit)、又はAIチップ(AI用半導体)等の1又は複数のプロセッサを用いて構成されている。制御部11は、記憶部12に記憶してあるプログラムPを適宜実行することにより、情報処理装置10が行うべき種々の情報処理及び制御処理を実行する。なお、制御部11が複数のプロセッサを含む場合、制御部11は、各処理を異なるプロセッサによって実行してもよい。
【0012】
記憶部12は、RAM(Random Access Memory)、フラッシュメモリ、ハードディスク、SSD(Solid State Drive)等を含む。記憶部12は、制御部11が実行するプログラムP(プログラム製品)及びプログラムPの実行に必要な各種のデータを記憶している。また記憶部12は、アプリケーションの設計(プログラムコードの生成)を支援する処理を実現するためのアプリケーション(以下では設計支援アプリAPと記載する)を記憶している。また記憶部12は、制御部11がプログラムP及び設計支援アプリAPを実行する際に発生するデータ等を一時的に記憶する。更に記憶部12は、自然言語処理モデルMを記憶している。自然言語処理モデルMは、大規模な文章群等による教師なし事前学習を行うことにより構築された汎用の大規模言語モデル(LLM:Large Language Models)である。自然言語処理モデルMは、例えば自然言語で記述されたテキストデータ及び/又は画像データを含む入力データが入力された場合に、入力データに基づいて、入力データの内容に応じた出力データを生成する演算を行い、生成した出力データを出力するように学習してある。自然言語処理モデルMは、例えば、GPT(Generative Pre-trained Transformer)-3、GPT-3.5、GPT-4、RWKV等のアルゴリズムを用いて構成することができ、複数のアルゴリズムを組み合わせて構成してもよい。なお、自然言語処理モデルMは、上述したようなトランスフォーマベースのモデル、及びRNN(Recurrent Neural Network)ベースのモデルに限定されない。自然言語処理モデルMは、人工知能ソフトウェアを構成するプログラムモジュールとしての利用が想定される。自然言語処理モデルMは、入力データに対して所定の演算を行い、演算結果を出力するものであり、記憶部12には、この演算を規定する関数の係数や閾値等のデータが自然言語処理モデルMとして記憶される。自然言語処理モデルMは、記憶部12に記憶する構成の代わりに、情報処理装置10が、自然言語処理モデルMを記憶する言語処理サーバにアクセスして読み出すようにしてもよい。
【0013】
通信部13は、有線通信又は無線通信に関する処理を行うための通信モジュールであり、ネットワークを介して他の装置との間で情報の送受信を行う。ネットワークは、インターネット又は公衆電話回線網であってもよく、情報処理装置10が設けられている施設内に構築されたLAN(Local Area Network)であってもよい。入力部14は、ユーザによる操作入力を受け付け、操作内容に対応した制御信号を制御部11へ送出する。入力部14は、例えばキーボード及びマウス、音声入力用のマイク等を含む。表示部15は、液晶ディスプレイ又は有機ELディスプレイ等であり、制御部11からの指示に従って各種の情報を表示する。入力部14の一部及び表示部15は一体として構成されたタッチパネルであってもよい。
【0014】
読取部16は、CD(Compact Disc)、DVD(Digital Versatile Disc)、USB(Universal Serial Bus)メモリ、SD(Secure Digital)カード等を含む可搬型記憶媒体10aに記憶された情報を読み取る。記憶部12に記憶されるプログラムP及び設計支援アプリAPは、制御部11が読取部16を介して可搬型記憶媒体10aから読み取って記憶部12に記憶してもよい。また、プログラムP及び設計支援アプリAPは、情報処理装置10の製造段階において記憶部12に書き込まれてもよく、制御部11が通信部13を介して他の装置からダウンロードして記憶部12に記憶してもよい。
【0015】
本実施形態において、情報処理装置10は複数のコンピュータからなるマルチコンピュータであってもよく、1台の装置内にソフトウェアによって仮想的に構築された仮想マシンであってもよい。また情報処理装置10をサーバコンピュータで構成する場合、情報処理装置10は、情報処理装置10が設けられている施設内に設置されたローカルサーバであってもよく、インターネット等のネットワークを介して通信接続されたクラウドサーバであってもよい。以下では、情報処理装置10が1台のコンピュータであるものとして説明する。また、プログラムP及び設計支援アプリAPは単一のコンピュータ上で実行されてもよく、ネットワークを介して相互に接続された複数のコンピュータ上で分散されて実行されてもよい。更に、情報処理装置10は、入力部14及び表示部15は必須ではなく、接続されたコンピュータを通じて操作を受け付ける構成でもよく、表示すべき情報を外部の表示装置へ出力する構成でもよい。
【0016】
上述した構成の情報処理装置10は、コンピュータプログラム(プログラムコード)を生成する際に、生成対象のプログラムコードに関する概要を、自然言語で記述したテキストデータ、自然言語で発話した音声データから変換されたテキストデータ、及び画像データの少なくとも1つによって受け付ける。情報処理装置10が受け付けた概要のデータは、以下では概要プロンプトと記載する。情報処理装置10は、自然言語処理モデルMを用いて、受け付けた概要プロンプトから、生成対象のプログラムコードに関する詳細な仕様内容を自然言語で記載した詳細プロンプト(以下では中間プロンプトと記載する)を生成する処理を実行する。そして、情報処理装置10は、自然言語処理モデルMを用いて、中間プロンプトからプログラムコードを生成する処理を実行する。このように、本実施形態の情報処理装置10は、概要プロンプトから中間プロンプトを生成する際に、及び、中間プロンプトからプログラムコードを生成する際に自然言語処理モデルMを使用する。なお、情報処理装置10は、中間プロンプトに対する編集を、自然言語で記述したテキストデータ、自然言語で発話した音声データから変換されたテキストデータ、及び画像データの少なくとも1つによって受け付けるように構成されており、編集後の中間プロンプトを自然言語処理モデルMに入力することによりプログラムコードの更新(修正)を実行する。また、本実施形態の情報処理装置10は、中間プロンプトの入力を受け付け、受け付けた中間プロンプトからプログラムコードを生成する処理、生成対象のプログラムコードにおける設定内容等をGUIを介して受け付け、受け付けた設定内容等に基づいてプログラムコードを生成する処理等を行う。
【0017】
以下に、本実施形態の情報処理装置10がプログラムコードを生成する処理について説明する。図2図6はプログラムコードの生成処理手順の一例を示すフローチャート、図7A図13は画面例を示す説明図である。以下の処理は、情報処理装置10の制御部11が、記憶部12に記憶してあるプログラムP及び設計支援アプリAPに従って実行する。
【0018】
アプリケーションの設計(プログラムコードの生成)を行うユーザは、情報処理装置10に対して設計支援アプリAPの起動を指示する。情報処理装置10の制御部11は、入力部14を介して設計支援アプリAPの起動指示を受け付けた場合、設計支援アプリAPを起動し、以下の処理を実行する。
【0019】
情報処理装置10の制御部11は、設計支援アプリAPを起動した場合、初期画面として、新規のアプリケーションの作成指示を受け付けるボタンと、作成中のアプリケーションの作成指示(更新指示)を受け付けるボタンとを有する画面(図示せず)を表示部15に表示する。制御部11は、このような初期画面を介して、新規のアプリケーションの作成指示を受け付けた場合、アプリ名入力画面を表示部15に表示する(S11)。制御部11は、例えば図7Aに示すようなアプリ名入力画面を表示する。図7Aに示す画面は、新規に作成するアプリケーションに付与するアプリ名の入力欄と、入力されたアプリ名のアプリケーションの生成開始を指示するためのCreateボタンとを有する。なお、アプリ名入力画面は、アプリ名の入力欄に加えて、作成するアプリケーションに関する説明文等のメタ情報の入力欄が設けられていてもよい。制御部11は、アプリ名入力画面中の入力欄に対して、入力部14を介してアプリ名の入力を受け付ける(S12)。制御部11は、アプリ名の入力を受け付けた場合、受け付けたアプリ名を入力欄に表示する。
【0020】
制御部11は、アプリ名入力画面中のCreateボタンが操作されたか否かを判断しており(S13)、操作されていないと判断する場合(S13:NO)、ステップS12の処理に戻り、入力欄に対するアプリ名の入力受付を継続する。アプリ名入力画面中のCreateボタンが操作されたと判断した場合(S13:YES)、制御部11は、新規作成するアプリケーション用のアプリ設計画面を表示部15に表示する(S14)。制御部11は、例えば図7Bに示すようなアプリ設計画面を表示する。図7Bに示す画面は、アプリ名が「AAA App」のアプリケーションを設計するための操作を受け付ける設計画面である。図7Bに示す画面は、メニュー欄R1と、GUI欄R2と、プロンプトウィザード欄R3とを有する。メニュー欄R1は、生成対象のアプリケーションに対して設定可能な項目を選択するためのメニュー項目を表示しており、図7Bの例では、Data,Screen,Theme,Language,Othersのメニュー項目が表示されている。なお、メニュー項目は、図7Bの例に限定されず、また、ユーザ毎に又は生成対象のアプリケーション毎に変更(追加及び削除)可能であってもよい。また、例えばData及びScreenのメニュー項目は必須項目とし、他のメニュー項目は変更可能とする等、任意に設定できるように構成されていてもよい。
【0021】
GUI欄R2は、アプリケーションに対して設定可能な各項目に関する設定情報の入力を、グラフィカルなインタフェースを介して受け付ける領域である。GUI欄R2は、メニュー欄R1に表示されたいずれかのメニュー項目が選択された場合に、選択されたメニュー項目について、設定情報の入力を受け付ける画面を切り替えて表示する。図7Bは、Dataのメニュー項目が選択された場合の表示例を示している。なお、Dataは、アプリケーションで扱うデータに関する設定情報の入力を受け付けるためのメニュー項目であり、Screenは、アプリケーションにおける表示画面に関する設定情報の入力を受け付けるためのメニュー項目であり、Themeは、アプリケーションにおけるテーマカラーに関する設定情報の入力を受け付けるためのメニュー項目であり、Languageは、アプリケーションで使用される言語に関する設定情報の入力を受け付けるためのメニュー項目であり、Othersは、上記以外の内容に関する設定情報の入力を受け付けるためのメニュー項目である。
【0022】
図7Bに示すGUI欄R2では、新規作成するデータ(例えばデータベース)の名称を入力するための入力欄I1と、入力欄I1に入力された名称のデータベースの作成を指示するための+Addボタンとが設けられている。入力欄I1にデータベースの名称が入力されて+Addボタンが操作された場合、情報処理装置10の制御部11は、新規作成するデータベースに関する情報の入力画面(図示せず)を表示し、入力画面を介して、当該データベースに関する情報の入力を受け付ける。ここでの入力画面は、例えば、データベース(データストア)の種類(例えば用途に関する情報)、データベースが有するデータフィールドの名称、各データフィールドに格納されるデータの種類(例えばアルファベット、数字、記号等)、桁数及びデータ量等の入力を受け付ける入力欄を有する。このような入力画面を介して新しいデータベースに関する情報の入力を受け付けた場合、情報処理装置10の制御部11は、入力画面の表示を終了し、入力されたデータベースに関する情報をGUI欄R2に表示する。図7Bはアプリ設計画面の初期状態を示しているので、GUI欄R2には何も表示されていないが、データベースに関する情報が入力された場合、例えば、データベースの名称(Data-Name)、当該データベースに付与されたID、当該データベースの種類(Type)等が表示される。なお、GUI欄R2を介して各メニュー項目の設定情報が入力された場合、情報処理装置10の制御部11は、入力された設定情報をプロンプトウィザード欄R3に反映させる。
【0023】
プロンプトウィザード欄R3は、アプリケーションに対して設定可能な各項目に関する設定情報を自然言語及び/又は画像等による入力によって受け付ける領域であり、概要プロンプト欄I2及び中間プロンプト欄I3等を有する。図7Bは初期状態を示しているので、概要プロンプト欄I2及び中間プロンプト欄I3は何も表示されていない空の状態(Blank)である。概要プロンプト欄I2は、生成対象のアプリケーションの概要及び目的等を含む概要プロンプトの入力を自然言語(テキストデータ)、画像、及び音声入力のいずれか又は複数によって受け付ける入力欄である。また、概要プロンプト欄I2は、既に生成されている中間プロンプトに対する変更指示、既に生成されているプログラムコードに対する変更指示、作成中のプログラムコードを確定(コミット)する指示、プログラムコードに対するビルド処理の実行指示等、情報処理装置10の制御部11が設計支援アプリAPに従って実行すべき処理に対する実行指示の入力も、自然言語、画像、及び音声入力のいずれか又は複数によって受け付けるように構成されている。中間プロンプト欄I3は、生成対象のアプリケーションの詳細な仕様内容(中間プロンプト)を自然言語によって表示するプレビュー欄であり、表示した仕様内容に対する編集(変更)が可能に構成されている。本実施形態では、中間プロンプト欄I3には、概要プロンプト欄I2に入力された概要プロンプトから自然言語処理モデルMを用いて生成された仕様内容(中間プロンプト)がメニュー項目毎に表示される。なお、中間プロンプト欄I3は、入力部14を介して中間プロンプトが直接入力できるように構成されており、概要プロンプトから生成された中間プロンプトのほかに、直接入力された中間プロンプトも表示する。具体的には、中間プロンプト欄I3は、メニュー欄R1に表示された各メニュー項目にそれぞれ対応して設けられており、各メニュー項目の設定内容に関する情報を表示する。図7Bの例では、Data Schema(データ構造)の中間プロンプト欄I3は、Dataのメニュー項目の設定内容に関する情報を表示し、例えばアプリケーションで使用されるデータベースの構造に関する仕様(例えば、データベースの種類、データフィールドの名称及びデータの種類等)を表示する。Screen Definition(画面定義)の中間プロンプト欄I3は、Screenのメニュー項目の設置内容に関する情報を表示し、例えばアプリケーションで使用される画面の構成に関する仕様及び画面遷移(ルーティング)に関する仕様を表示する。Theme Colorの中間プロンプト欄I3は、Themeのメニュー項目の設定内容に関する情報を表示し、例えばアプリケーション全体に設定されるテーマカラーに関する仕様を表示する。Languageの中間プロンプト欄I3は、Languageのメニュー項目の設定内容に関する情報を表示し、例えばアプリケーションで使用される言語の種類を表示する。Othersの中間プロンプト欄I3は、Othersのメニュー項目の設定内容に関する情報を表示し、上述した仕様内容(中間プロンプト)以外に定義したい項目に関する設定情報を表示する。また、中間プロンプト欄I3は、それぞれ表示された中間プロンプトに対する編集(変更)を、自然言語(テキストデータ)、画像、及び音声入力のいずれか又は複数によって受け付けるように構成されている。中間プロンプト欄I3は、図7Bの例に限定されず、また、各メニュー項目に対応する構成に限定されない。例えば、Languageの中間プロンプト欄I3を設けずに、Languageのメニュー項目の設定内容に関する情報をOthersの中間プロンプト欄I3に表示する構成でもよい。また、メニュー項目が変更可能である場合、変更後のメニュー項目に対応する中間プロンプト欄I3がプロンプトウィザード欄R3に設けられる。
【0024】
図7Bに示すプロンプトウィザード欄R3では、概要プロンプト欄I2は、入力部14を介したテキスト入力を受け付けるように構成されている。また概要プロンプト欄I2は、画像入力又はマイクを介した音声入力によって、アプリケーションの概要プロンプトを受け付けるように構成されており、画像入力ボタンB1及び音声入力ボタンB2が設けられている。画像入力ボタンB1が操作された場合、情報処理装置10の制御部11は、記憶部12等に記憶してある任意の画像ファイルを選択するための選択画面(図示せず)を表示し、選択画面を介して、アプリケーションの概要が記載された画像ファイルの選択を受け付ける。ここでの画像ファイルは、アプリケーションの概要が文字(自然言語)で記載されている画像を含むファイルであり、例えばアプリケーションの概要が手書きされた用紙をスキャナで読み取った画像ファイルを用いることができる。なお、画像ファイルは、画像に加えてテキストデータを含んでいてもよい。また、画像ファイルのデータは、文字情報のほかに、自然言語(文字)に変換できないような画像イメージであってもよく、例えばテキストデータ等を入力することによって画像を生成する画像生成AIを用いて生成された画像データであってもよい。音声入力ボタンB2が操作された場合、情報処理装置10の制御部11は、入力部14のマイクによる集音を行い、ユーザが発した音声データを取得し、取得した音声データに対して音声認識処理を行うことによって発話内容のテキストデータを生成し、生成したテキストデータを概要プロンプトとして取得する。また、概要プロンプト欄I2は、アプリケーションの概要がテキストデータで記載されているテキストファイルによって概要プロンプトの入力を受け付けるように構成されていてもよい。更に、概要プロンプト欄I2は、動画ファイル、pdf(Portable Document Format)ファイル、バイナリファイル等、あらゆる種類又はフォーマットのデータによって概要プロンプトの入力を受け付けるように構成されていてもよい。また、概要プロンプト欄I2は、対話的に概要プロンプトの入力を受け付ける構成でもよい。例えば、概要プロンプトに関する質問を概要プロンプト欄I2に表示し、質問に対してユーザが回答を入力することによって概要プロンプトの入力が行われるように構成してもよい。また、例えばユーザが概要プロンプトを入力すると、制御部11は、入力された概要プロンプトを自然言語処理モデルMに入力し、自然言語処理モデルMから出力された出力データを回答として表示し、この回答に対してユーザが追加の概要プロンプトを入力することにより、概要プロンプトの入力が行われる構成でもよい。
【0025】
図7Bのプロンプトウィザード欄R3には、概要プロンプト欄I2に対応付けて、概要プロンプト欄I2に入力された概要プロンプトに基づいて中間プロンプトを生成する処理の実行指示を行うためのApplyボタンB3が設けられている。また、中間プロンプト欄I3に対応付けて、各中間プロンプト欄I3に表示された中間プロンプトに基づいてプログラムコードを生成する処理の実行指示を行うためのApplyボタンB4が設けられている。また、GUI欄R2及びプロンプトウィザード欄R3の表示領域にプロンプトウィザード欄R3のみを大画面表示する指示を行うための画面切替ボタンB5が設けられている。更に、図7Bのプロンプトウィザード欄R3には履歴表示欄R4が設けられており、中間プロンプトに対する更新履歴情報が表示される。具体的には、履歴表示欄R4には、概要プロンプト欄I2に入力された概要プロンプトに基づいて中間プロンプトが生成又は変更された場合に中間プロンプトの生成履歴又は変更履歴が表示され、中間プロンプト欄I3に対して中間プロンプトの入力又は変更が行われた場合に中間プロンプトの入力履歴又は変更履歴が表示される。また、GUI欄R2を介してプログラムコードが入力又は変更された場合、更新後のプログラムコードから中間プロンプトが生成された後に中間プロンプトの変更履歴が履歴表示欄R4に表示される。図7Bは初期状態を示しているので、図7Bの履歴表示欄R4には何も表示されていないが、例えばアプリケーションの作成が開始されたことを示す履歴情報が表示されてもよい。なお、上述した変更履歴情報は、中間プロンプトの生成又は変更処理が行われた順序を示すバージョン情報(バージョン番号)によって管理されており、ユーザが所望するバージョンの状態に中間プロンプト及びプログラムコードを戻し、当該バージョンの状態から中間プロンプト及びプログラムコードを更新し直すことができるように構成されている。例えば制御部11は、履歴表示欄R4に表示された任意の履歴情報に対して、当該履歴情報が示す処理の実行直前又は実行直後の状態に戻す指示(ダウングレードの実行指示)を受け付けるように構成されており、任意の履歴情報が指定されてダウングレードの実行指示を受け付けた場合、当該履歴情報における処理が実行される直前(例えば編集処理が行われる直前)又は直後(例えば編集処理が行われた直後)の状態に中間プロンプト及びプログラムコードを戻すように構成されている。この場合、制御部11は、アプリ設計画面の表示内容を、当該履歴情報における処理が実行される直前又は直後の状態の中間プロンプト及びプログラムコードに戻す。このような構成により、中間プロンプト及びプログラムコードの状態を所望の状態(所望のバージョンの状態)に戻すことができ、中間プロンプト及びプログラムコードに対する編集の実行及びやり直しを繰り返すことにより、編集処理を効率よく実行することが可能となる。アプリ設計画面は、図7Bに示す構成に限定されない。例えば、プロンプトウィザード欄R3は、GUI欄R2のように、メニュー欄R1中のメニュー項目が選択されることにより、選択されたメニュー項目に対応する中間プロンプト欄I3が切り替えて表示される構成でもよい。また、プロンプトウィザード欄R3を複数に分割して、各プロンプトウィザード欄R3に、それぞれ設定されたメニュー項目の中間プロンプト欄I3が表示される構成でもよい。
【0026】
上述した構成のアプリ設計画面では、例えばユーザは、プロンプトウィザード欄R3を介して自然言語を用いてソフトウェア(プログラムコード)の生成を行う場合、概要プロンプト欄I2に概要プロンプトを入力するか、中間プロンプト欄I3に中間プロンプトを入力し、ApplyボタンB3又はB4を操作する。またユーザは、GUI欄R2に設けられたGUIを介してソフトウェアの生成を行う場合、GUIを介して各メニュー項目の設定内容を入力する。またユーザは、プログラムコードを入力する場合、GUI欄R2に設けられた入力欄を介してプログラムコードの入力を行う。例えば図13に示すように、GUI欄R2にはプログラムコードの入力欄(表示欄)が設けられており、当該入力欄を介してプログラムコードを入力できるように構成されている。更に、履歴表示欄R4に履歴情報が表示されている場合、ユーザは、任意の履歴情報に対するダウングレードの実行を指示することにより、中間プロンプト及びプログラムコードを任意のバージョンに戻すことができる。
【0027】
情報処理装置10の制御部11は、図7Bに示す画面において、概要プロンプト欄I2を介して概要プロンプトの入力を受け付けたか否かを判断し(S15)、受け付けたと判断した場合(S15:YES)、ステップS20に移行する。制御部11は、概要プロンプトの入力を受け付けていないと判断する場合(S15:NO)、中間プロンプト欄I3を介して中間プロンプトの入力を受け付けたか否かを判断し(S16)、受け付けたと判断した場合(S16:YES)、ステップS48に移行する。また制御部11は、中間プロンプトの入力を受け付けていないと判断する場合(S16:NO)、GUI欄R2に設けられたGUIを介して設定内容の入力を受け付けたか否かを判断し(S17)、受け付けたと判断した場合(S17:YES)、ステップS73に移行する。また制御部11は、GUIを介して設定内容の入力を受け付けていないと判断する場合(S17:NO)、GUI欄R2を介してプログラムコードの入力を受け付けたか否かを判断し(S18)、受け付けたと判断した場合(S18:YES)、ステップS88に移行する。更に制御部11は、プログラムコードの入力を受け付けていないと判断する場合(S18:NO)、ダウングレードの実行指示を受け付けたか否かを判断し(S19)、受け付けたと判断した場合(S19:YES)、ステップS102に移行する。なお、制御部11は、ダウングレードの実行指示を受け付けていないと判断する場合(S19:NO)、ステップS15に戻る。
【0028】
概要プロンプトの入力を受け付けたと判断した場合(S15:YES)、制御部11は、入力された概要プロンプトを受け付け、アプリ設計画面中の概要プロンプト欄I2に表示する(S20)。ここでは、制御部11は、入力部14を介したテキスト入力によって概要プロンプトの入力を受け付けてもよく、画像入力ボタンB1が操作されることによる画像入力、又は、音声入力ボタンB2が操作されることによる音声入力によって概要プロンプトの入力を受け付けてもよい。更に制御部11は、テキストファイル、動画ファイル、pdfファイル、バイナリファイル等、各種のファイル又はデータによって概要プロンプトの入力を受け付けてもよい。次に制御部11は、ApplyボタンB3が操作されたか否かを判断し(S21)、操作されていないと判断する場合(S21:NO)、ステップS20の処理に戻り、概要プロンプト欄I2に対する概要プロンプトの入力受付を継続する。
【0029】
制御部11は、ApplyボタンB3が操作されたと判断した場合(S21:YES)、入力された概要プロンプトに基づいて中間プロンプトを生成する(S22)。ここでは、制御部11は、概要プロンプト欄I2に入力された概要プロンプト、具体的には、この時点で概要プロンプト欄I2に表示されている概要プロンプトを自然言語処理モデルMに入力し、自然言語処理モデルMによって、生成対象のアプリケーションの詳細な仕様内容を自然言語によって記述した中間プロンプトを取得する。なお、概要プロンプトは、テキストデータ及び/又は画像データを含む。制御部11は、概要プロンプトをそのまま自然言語処理モデルMに入力してもよく、例えば概要プロンプトの冒頭に「以下の内容のソフトウェアの詳細な仕様書を作成してください」のように自然言語処理モデルMからの出力結果を制御するためのメッセージを追加した上で自然言語処理モデルMに入力してもよい。また、自然言語処理モデルMが画像の入力が可能な構成であり、入力された概要プロンプトに画像が含まれる場合、制御部11は、画像を含む概要プロンプトを自然言語処理モデルMに入力する。なお、制御部11は、概要プロンプトに含まれる画像をそのまま自然言語処理モデルMに入力するほかに、OCR(Optical Character Recognition:光学式文字読取)機能によって画像からテキストデータを生成し、生成したテキストデータを自然言語処理モデルMに入力してもよい。また、自然言語処理モデルMが出力する中間プロンプトは、生成対象のアプリケーションの仕様内容を自然言語によって記述したテキストデータだけでなく、概要プロンプトの内容に応じた画像データ(静止画及び動画)等を含んでもよい。例えば、自然言語処理モデルMは、概要プロンプトとして入力された画像データ(静止画及び動画)等のファイルを、そのままの状態で、又は、一部を加工した状態で出力するように構成されていてもよい。また自然言語処理モデルMは、概要プロンプトの内容に基づいて画像データ等のファイルを生成して出力する構成でもよい。このような自然言語処理モデルMを用いることにより、例えば概要プロンプトの内容からアプリケーションにおける画面デザイン等を生成することができる。
【0030】
制御部11は、生成した中間プロンプトを中間プロンプト欄I3に表示する(S23)。制御部11は、例えば図8に示すようなアプリ設計画面を表示する。図8に示すアプリ設計画面は、プロンプトウィザード欄R3が大画面表示された状態を示しており、図8の画面中の画面切替ボタンB5は、GUI欄R2及びプロンプトウィザード欄R3を並べて表示する画面への切替指示を受け付けるように変更されている。図8に示す画面では、概要プロンプト欄I2に「会員ログイン機能と会員限定のブログ機能を持つアプリを作成してください」という概要プロンプトが入力されており、各メニュー項目の中間プロンプト欄I3には、概要プロンプトから生成された中間プロンプトがそれぞれ表示されている。制御部11は、概要プロンプトを自然言語処理モデルMに入力する際に、各設定項目(メニュー項目)について出力データを出力するように指示する。例えば、制御部11は、「Data Schema(データ構造)に関する詳細な仕様書を作成してください」のように自然言語処理モデルMからの出力結果を制御するためのメッセージを概要プロンプトに追加した上で自然言語処理モデルMに入力する。これにより、制御部11は、メニュー項目毎に、自然言語処理モデルMで生成された中間プロンプトを取得することができ、取得した中間プロンプトをそれぞれの中間プロンプト欄I3に表示できる。
【0031】
また制御部11は、概要プロンプトを自然言語処理モデルMに入力することによって自然言語処理モデルMから出力された出力データを、各設定項目(メニュー項目)に分割して、それぞれの中間プロンプト欄I3に表示してもよい。例えば制御部11は、自然言語処理モデルMからの出力データに対して、Data Schema(データ構造)に関する用語を検索し、検索結果からData Schema(データ構造)に関する内容を抽出し、抽出した内容をData Schemaの中間プロンプト欄I3に表示してもよい。同様に、制御部11は、自然言語処理モデルMからの出力データに対して、Screen Definition(画面定義)に関する用語を検索し、検索結果からScreen Definition(画面定義)に関する内容を抽出し、抽出した内容をScreen Definitionの中間プロンプト欄I3に表示してもよい。また制御部11は、自然言語処理モデルMからの出力データに対して、Theme Colorに関する用語を検索し、検索結果からTheme Colorに関する内容を抽出し、抽出した内容をTheme Colorの中間プロンプト欄I3に表示してもよい。また制御部11は、自然言語処理モデルMからの出力データに対して、Languageに関する用語を検索し、検索結果からLanguageに関する内容を抽出し、抽出した内容をLanguageの中間プロンプト欄I3に表示してもよい。そして、制御部11は、抽出されなかった残りの内容をOthersの中間プロンプト欄I3に表示してもよい。このような構成の場合でも、自然言語処理モデルMを用いて概要プロンプトから生成された中間プロンプトが、各メニュー項目に対応する中間プロンプト欄I3に表示される。
【0032】
制御部11は、概要プロンプトから中間プロンプトを生成した生成処理の内容を示す履歴情報(中間プロンプトの生成履歴情報)を生成し、生成した履歴情報にバージョン情報(バージョン番号)を付加して記憶部12に記憶すると共に、履歴情報をアプリ設計画面の履歴表示欄R4に表示する(S24)。図8に示す画面では、概要プロンプトの入力内容と、概要プロンプトから中間プロンプトが生成された日時とを含む履歴情報が表示されている。なお、履歴表示欄R4は、作成中の中間プロンプト及びプログラムコードが確定されていない状態(以下では未コミット状態と記載する)の履歴情報を表示する未コミット欄R4bと、作成中の中間プロンプト及びプログラムコードが確定された状態(以下ではコミット状態と記載する)の履歴情報を表示するコミット欄R4aとを有する。ここでは、生成された中間プロンプトは未コミット状態であるので、制御部11は、中間プロンプトの生成履歴情報を未コミット欄R4bに表示する。なお、制御部11は、未コミット状態の履歴情報を、図8に示すように下線の付与等によって強調表示する。また制御部11は、未コミット状態の履歴情報における処理(ここでは概要プロンプトから中間プロンプトの生成処理)のキャンセル(取消)を指示するためのRevertボタンと、未コミット状態の中間プロンプトの確定を指示するためのCommitボタンB6とを未コミット欄R4bに表示する。Revertボタンが操作された場合、制御部11は、未コミット状態の履歴情報における処理の実行前の状態に概要プロンプト欄I2、中間プロンプト欄I3及び履歴表示欄R4の表示内容を戻す。これにより、作成中の中間プロンプト及びプログラムコードを当該履歴情報における処理の実行前の状態に戻すことができる。なお、Revertボタンが操作された場合、制御部11は、概要プロンプト欄I2の表示内容を当該履歴情報が示す処理の実行前の状態に戻さずに、当該履歴情報が示す処理で入力された概要プロンプトを表示したままとしてもよい。この場合、概要プロンプトを再度入力する必要がなく、既に入力されている概要プロンプトに対する編集によって新たな概要プロンプトを入力することができる。CommitボタンB6が操作された場合、制御部11は、中間プロンプト欄I3に表示中の中間プロンプトに対応するプログラムコードが生成されていない場合は、プログラムコードを生成し、ここでの中間プロンプト及びプログラムコードを確定する(コミット状態とする)。制御部11は、コミット状態となった中間プロンプト及びプログラムコードに対応する履歴情報を、例えば図10Aに示すようにコミット欄R4aに移動させて表示する。このとき、制御部11は、履歴情報に対する強調表示を終了してコミット欄R4aに表示する。また制御部11は、概要プロンプトの入力内容を自然言語処理モデルMに入力し、当該入力内容の要約を生成し、要約を、中間プロンプトの生成履歴情報としてもよい。図8に示す状態(概要プロンプトから中間プロンプトが生成されて表示されている状態)では、概要プロンプト欄I2に対する概要プロンプトの編集(追加及び削除)は可能であり、ユーザは、中間プロンプトを目視で確認して、必要に応じて概要プロンプトの編集を行い、ApplyボタンB3を再度操作する。
【0033】
図8に示す状態において、制御部11は、概要プロンプト欄I2に表示されている概要プロンプトに対する編集を受け付けたか否かを判断しており(S25)、受け付けたと判断した場合(S25:YES)、ステップS20の処理に戻り、ステップS20~S24の処理を繰り返す。具体的には、制御部11は、編集後の概要プロンプトを概要プロンプト欄I2に表示し、ApplyボタンB3が操作された場合、自然言語処理モデルMを用いて、編集後の概要プロンプトから中間プロンプトを生成し、生成した中間プロンプトを中間プロンプト欄I3に表示すると共に、中間プロンプトの生成処理の履歴情報を履歴表示欄R4の未コミット欄R4bに表示する。なお、ここでは、先に入力された概要プロンプトに基づいて生成された中間プロンプトが中間プロンプト欄I3に表示されているので、ステップS22で制御部11は、編集後の概要プロンプトに加えて、中間プロンプト欄I3に表示中の中間プロンプトを自然言語処理モデルMに入力することにより、新たな中間プロンプト(編集後の概要プロンプトに対応する中間プロンプト)を生成してもよい。また、制御部11は、編集前後の概要プロンプトの差異(変更内容)を抽出し、概要プロンプトの変更内容と、中間プロンプト欄I3に表示中の中間プロンプトとを自然言語処理モデルMに入力することにより、新たな中間プロンプトを生成してもよい。これにより、中間プロンプト欄I3の表示内容が、更新後の概要プロンプトに対応する中間プロンプトに更新され、未コミット欄R4bの表示内容が、更新後の中間プロンプトに関する履歴情報に更新される。
【0034】
ここまでの処理で、制御部11は、例えば図9に示すようなアプリ設計画面を表示部15に表示する。図9に示す画面では、概要プロンプト欄I2に編集後の概要プロンプトが表示され、中間プロンプト欄I3に、編集後の概要プロンプトに対応する中間プロンプトが表示され、履歴表示欄R4(未コミット欄R4b)に、新たな中間プロンプトを生成した処理の履歴情報が強調表示されている。なお、図9では、Screen Definitionの中間プロンプト欄I3において、概要プロンプトに対する編集によって変更(追加)された内容に下線を付けて強調表示しているが、強調表示されていなくてもよい。また、概要プロンプト欄I2に表示される編集後の概要プロンプトに対しても、編集によって変更された内容を強調表示してもよく、このように強調表示した場合、ユーザは、自身が追加した概要プロンプトの内容、概要プロンプトの編集によって変更された中間プロンプトの内容を容易に把握できる。図9に示す画面においても、制御部11は、未コミット状態の履歴情報に対して取消指示を受け付けた場合、当該履歴情報における処理の実行前の状態に概要プロンプト欄I2、中間プロンプト欄I3及び履歴表示欄R4の表示内容を戻すことができる。
【0035】
図8及び図9に示す画面において、制御部11は、概要プロンプトに対する編集を受け付けていないと判断した場合(S25:NO)、中間プロンプト欄I3に対応付けて設けられているApplyボタンB4が操作されたか否かを判断する(S26)。ApplyボタンB4が操作されたと判断した場合(S26:YES)、制御部11は、この時点で中間プロンプト欄I3に表示されている中間プロンプトに基づいてプログラムコードを生成する(S27)。ここでは、制御部11は、各メニュー項目と、各メニュー項目の中間プロンプト欄I3に表示されている中間プロンプトとをそれぞれ対応付けて1つの自然言語によるテキストデータを生成し、生成したテキストデータを自然言語処理モデルMに入力し、自然言語処理モデルMによって、生成対象のアプリケーションのプログラムコードを取得する。なお、制御部11は、生成したテキストデータ(中間プロンプト)をそのまま自然言語処理モデルMに入力してもよく、例えばテキストデータの冒頭に、生成したいプログラムのフォーマット(関数の名前、引数及び返り値の型情報等)の情報や、「以下の内容のアプリケーションのプログラムコードを作成してください」のように自然言語処理モデルMからの出力結果を制御するためのメッセージを追加した上で自然言語処理モデルMに入力してもよい。また、中間プロンプトにテキストデータだけでなく画像データ等が含まれる場合、制御部11は、テキストデータと共に画像データ等も自然言語処理モデルMに入力し、自然言語処理モデルMからプログラムコードを取得する。
【0036】
制御部11は、生成したプログラムコードに対してビルド処理を実行する(S29)。ビルド処理は、プログラムコード(ソースコード)に問題(誤り、バグ等)があるか否かを解析し、問題がなければプログラムコードを実行可能形式のファイル(実行ファイル)に変換する処理であり、問題がある場合、問題の検出内容を示すエラー情報を出力する。制御部11は、ビルド処理を成功したか否かを判断し(S30)、ビルド処理に失敗したと判断した場合(S30:NO)、例えばビルド処理の結果としてエラー情報が出力された場合、ビルド処理に失敗したことを通知するエラーメッセージを出力し(S31)、ステップS25の処理に戻る。例えば制御部11は、エラーメッセージを、アプリ設計画面の上に表示し、ユーザは、エラー内容に基づいて、概要プロンプト欄I2に表示中の概要プロンプトを編集する。これにより、制御部11は、概要プロンプトに対する新たな編集を受け付けた場合(S25:YES)、ステップS20~S24の処理を繰り返す。
【0037】
ビルド処理を成功したと判断した場合(S30:YES)、制御部11は、生成したプログラムコードに基づいて、アプリ設計画面のGUI欄R2に各メニュー項目について設定された内容(設定情報)を表示する(S32)。制御部11は、例えば図11又は図12に示すようなアプリ設計画面(GUI欄R2)を表示する。なお、制御部11は、メニュー欄R1を介して選択されたメニュー項目の設定内容をGUI欄R2に表示する。図11はThemeのメニュー項目が選択された場合のGUI欄R2の表示例を示し、図12はScreenのメニュー項目が選択された場合のGUI欄R2の表示例を示す。
【0038】
次に制御部11は、ビルド処理によってプログラムコードから生成した実行ファイルに対してデプロイ処理を実行する(S33)。デプロイ処理は、実行ファイルを動作させたい環境(装置)に記憶させ、実行ファイルを実行することによってアプリケーションを稼働させる処理である。デプロイ処理を行うことによって、制御部11は、例えば図11に示すように、GUI欄R2にアプリケーションの画面プレビューを表示できる。その後、制御部11は、ステップS27で生成したプログラムコードと、このプログラムコードの生成に用いた中間プロンプトと、この中間プロンプトに割り当てられたバージョン情報(例えばバージョン番号、具体的にはステップS24で履歴情報に割り当てられたバージョン番号)とを対応付けて履歴情報を生成し、例えば記憶部12に記憶する(S34)。これにより、中間プロンプトのバージョン情報に中間プロンプト及びプログラムコードを対応付けることができ、例えば履歴表示欄R4(コミット欄R4a)に表示された履歴情報に基づいてダウングレードの実行指示を受け付けた場合に、制御部11は、指定されたバージョンの中間プロンプト及びプログラムコードを復元できる。なお、制御部11は、生成対象のアプリケーションに対して初めてプログラムコードを生成した場合、生成したプログラムコードを、予め設定されているファイル名又は予め設定されているルールに従って生成されたファイル名のファイルに記憶する。また制御部11は、生成対象のアプリケーションに対して既にプログラムコードの生成が行われている場合、生成したプログラムコードを、既に生成されているファイルに上書き保存する。また制御部11は、中間プロンプトを記憶する場合、Data Schema、Screen Definition、Theme Color、Language及びOthersの各メニュー項目と、各中間プロンプト欄I3に表示されている中間プロンプトとを対応付けて記憶する。
【0039】
図8及び図9に示す画面において中間プロンプト欄I3に対応付けて設けられているApplyボタンB4が操作されていないと判断する場合(S26:NO)、制御部11は、ステップS35に移行し、未コミット欄R4bのCommitボタンB6が操作されたか否かを判断する(S35)。CommitボタンB6が操作されていないと判断する場合(S35:NO)、制御部11は、ステップS25の処理に戻り、概要プロンプトに対する編集を受け付けるか、ApplyボタンB4が操作されるか、CommitボタンB6が操作されるまで待機する。
【0040】
図8及び図9の画面においてCommitボタンB6が操作されたと判断した場合(S35:YES)、制御部11は、既にApplyボタンB4が操作されることによってプログラムコードが生成され、生成されたプログラムコードに対してビルド処理が実行され、実行されたビルド処理が成功したか否かを判断する(S36)。ビルド処理が実行されていないと判断する場合(S36:NO)、制御部11は、ステップS27~S34と同じ処理を実行する(S37~S44)。即ち、制御部11は、図8及び図9の画面においてApplyボタンB4が操作されるか、CommitボタンB6が操作された場合に、その時点で中間プロンプト欄I3に表示されている中間プロンプトからプログラムコードを生成する処理、プログラムコードに対するビルド処理及びデプロイ処理を行う。なお、制御部11は、プログラムコードを生成する際に、既にプログラムコードが生成されている場合、中間プロンプト欄I3に表示中の中間プロンプトに加えて、既に生成されているプログラムコードを自然言語処理モデルMに入力することにより、新たなプログラムコードを生成してもよい。また、制御部11は、既にプログラムコードが生成されている場合、生成済みのプログラムコードの生成に用いた中間プロンプト(前のバージョンの中間プロンプト)と、この時点で中間プロンプト欄I3に表示されている中間プロンプト(最新バージョンの中間プロンプト)との差分を抽出し、抽出した差分と、生成済みのプログラムコード(前のバージョンのプログラムコード)とを自然言語処理モデルMに入力することによって最新バージョンのプログラムコードを生成してもよい。
【0041】
制御部11は、ビルド処理が実行され、実行されたビルド処理が成功したと判断した場合(S36:YES)、又は、ステップS44の処理後、この時点で中間プロンプト欄I3に表示されている中間プロンプトと、この中間プロンプトから生成されたプログラムコードとを確定する(S45)。即ち、制御部11は、ステップS34又はステップS44で記憶部12に記憶した中間プロンプト及びプログラムコードをコミット状態とする。よって、未コミット欄R4bのCommitボタンB6が操作された場合、この時点での中間プロンプト及びプログラムコードが一旦確定される。そして制御部11は、表示中のアプリ設計画面のプロンプトウィザード欄R3を更新する(S46)。例えば制御部11は、図10Aに示すように、概要プロンプト欄I2を空の状態(Blank)に更新し、未コミット欄R4bに表示されていた履歴情報の強調表示を終了してコミット欄R4aに移動させる。この場合、未コミット欄R4bは削除される。図10Aに示す状態では、概要プロンプト欄I2に対する新たな概要プロンプトの入力と、中間プロンプト欄I3に対する中間プロンプトの編集とが可能である。ユーザは、中間プロンプト欄I3に表示されている中間プロンプトを目視で確認し、必要に応じて、新たな概要プロンプトの入力又は中間プロンプトの編集を行う。
【0042】
制御部11は、プログラムコードの生成処理の終了指示を受け付けたか否かを判断する(S47)。例えば制御部11は、入力部14を介して設計支援アプリAPの終了指示を受け付けたか否かを判断する。制御部11は、終了指示を受け付けていないと判断する場合(S47:NO)、ステップS15の処理に戻り、概要プロンプト欄I2を介して概要プロンプトの入力又は編集を受け付ける都度、ステップS20~S46の処理を実行する。これにより、概要プロンプトが入力又は編集される都度、入力又は編集された概要プロンプトに基づいて中間プロンプトが生成され、生成された中間プロンプトに基づいてプログラムコードが生成される。制御部11は、終了指示を受け付けたと判断した場合(S47:YES)、一連の処理を終了する。
【0043】
ステップS16で中間プロンプト欄I3を介して中間プロンプトの入力を受け付けたと判断した場合(S16:YES)、制御部11は、入力された中間プロンプトを受け付け、アプリ設計画面中の中間プロンプト欄I3に表示する(S48)。なお、既に中間プロンプト欄I3に中間プロンプトが表示されている場合、制御部11は、中間プロンプトに対する編集を受け付け、受け付けた編集後の中間プロンプトを表示する。制御部11は、中間プロンプトの入力を、入力部14を介したテキスト入力、音声入力、画像入力によって受け付けるように構成されている。また制御部11は、表示中の中間プロンプトの任意の位置に対するマウスによるクリックによって挿入位置の指定を受け付け、テキスト入力、音声入力、又は画像入力によって挿入すべき内容を受け付けることにより、中間プロンプトに対する編集を受け付けるように構成されている。中間プロンプトに対する入力及び編集においても、制御部11は、テキストファイル、画像ファイル、動画ファイル、pdfファイル、バイナリファイル等、あらゆる種類又はフォーマットのデータによって受け付けるように構成されていてもよい。
【0044】
制御部11は、中間プロンプトの入力内容又は編集内容を示す編集履歴情報にバージョン番号を付加して記憶部12に記憶すると共に、編集履歴情報をアプリ設計画面の未コミット欄R4bに表示する(S49)。制御部11は、例えば図10Bに示すようなアプリ設計画面を表示する。図10Bの画面では、Theme Colorの中間プロンプト欄I3に編集後の中間プロンプトが表示されており、履歴表示欄R4の未コミット欄R4bに、中間プロンプトの編集履歴情報及びCommitボタンB6が表示されている。中間プロンプトの編集履歴情報は、編集されたメニュー項目の名称(図10BではTheme)及び編集された日時を含む。図10Bの画面においても、未コミット欄R4bは、Revertボタンを介して未コミット状態の履歴情報に対する取消指示の受付が可能であり、制御部11は、Revertボタンが操作された場合、未コミット欄R4bに表示中の履歴情報における処理の実行前の状態に中間プロンプト欄I3及び履歴表示欄R4の表示内容を戻すことができる。また、制御部11は、中間プロンプトの入力内容又は編集内容を自然言語処理モデルMに入力し、当該入力内容又は編集内容の要約を生成し、要約を、中間プロンプトの編集履歴情報としてもよい。
【0045】
図10Bに示す状態(中間プロンプトが入力又は編集されている状態)では、中間プロンプト欄I3に対する中間プロンプトの編集(追加及び削除)が可能であり、ユーザは、中間プロンプトを目視で確認して、必要に応じて中間プロンプトの編集を行う。制御部11は、中間プロンプトに対する編集を受け付けたか否かを判断しており(S50)、受け付けたと判断した場合(S50:YES)、ステップS48の処理に戻り、ステップS48~S50の処理を繰り返す。これにより、中間プロンプトに対する編集が行われる都度、制御部11は、中間プロンプト欄I3の表示内容を編集後の中間プロンプトに更新し、未コミット欄R4bの表示内容を、更新後の中間プロンプトに関する履歴情報に更新する。
【0046】
図10Bに示す画面において、制御部11は、中間プロンプトに対する編集を受け付けていないと判断した場合(S50:NO)、中間プロンプト欄I3に対応付けて設けられているApplyボタンB4が操作されたか否かを判断し(S51)、操作されたと判断した場合(S51:YES)、ステップS27~S34と同じ処理を実行する(S52~S59)。即ち、制御部11は、図10Bの画面においてApplyボタンB4が操作された場合、この時点で中間プロンプト欄I3に表示されている中間プロンプトからプログラムコードを生成する処理、プログラムコードに対するビルド処理及びデプロイ処理を行う。なお、ステップS52で制御部11は、既にプログラムコードが生成されている場合、中間プロンプト欄I3に表示中の中間プロンプトに加えて、生成済みのプログラムコードを自然言語処理モデルMに入力することにより、新たなプログラムコードを生成してもよい。また、制御部11は、編集前後の中間プロンプトの差分を抽出し、抽出した差分と、生成済みのプログラムコードとを自然言語処理モデルMに入力することにより、最新バージョンのプログラムコードを生成してもよい。また、ステップS59で制御部11は、ステップS52で生成したプログラムコードと、ステップS48で入力された編集後の中間プロンプトと、この中間プロンプトに割り当てられたバージョン情報とを対応付けて履歴情報を生成し、例えば記憶部12に記憶する(S59)。
【0047】
図10Bに示す画面において中間プロンプト欄I3に対応付けて設けられているApplyボタンB4が操作されていないと判断する場合(S51:NO)、制御部11は、ステップS60に移行し、画面中の未コミット欄R4bのCommitボタンB6が操作されたか否かを判断する(S60)。CommitボタンB6が操作されていないと判断する場合(S60:NO)、制御部11は、ステップS50の処理に戻り、中間プロンプトに対する編集を受け付けるか、ApplyボタンB4が操作されるか、CommitボタンB6が操作されるまで待機する。
【0048】
図10Bの画面においてCommitボタンB6が操作されたと判断した場合(S60:YES)、制御部11は、既にApplyボタンB4が操作されることによってプログラムコードが生成され、生成されたプログラムコードに対してビルド処理が実行され、実行されたビルド処理が成功したか否かを判断する(S61)。ビルド処理が実行されていないと判断する場合(S61:NO)、制御部11は、ステップS52~S59と同じ処理を実行する(S62~S69)。即ち、制御部11は、図10Bの画面においてApplyボタンB4が操作されるか、CommitボタンB6が操作された場合に、その時点で中間プロンプト欄I3に表示されている中間プロンプトからプログラムコードを生成する処理、プログラムコードに対するビルド処理及びデプロイ処理を行う。
【0049】
制御部11は、ビルド処理が実行され、実行されたビルド処理が成功したと判断した場合(S61:YES)、又は、ステップS69の処理後、この時点で中間プロンプト欄I3に表示されている中間プロンプトと、この中間プロンプトから生成されたプログラムコードとを確定する(S70)。よって、未コミット欄R4bのCommitボタンB6が操作された場合、この時点での中間プロンプト及びプログラムコードがコミット状態になる。そして制御部11は、表示中のアプリ設計画面のプロンプトウィザード欄R3を更新する(S71)。ステップS71はステップS46と同じ処理であり、これにより、プロンプトウィザード欄R3が、図11及び図12に示すような状態に更新される。具体的には制御部11は、未コミット欄R4bに表示中の履歴情報の強調表示を終了してコミット欄R4aに移動させ、未コミット欄R4bを削除する。制御部11は、プログラムコードの生成処理の終了指示を受け付けたか否かを判断し(S72)、受け付けていないと判断する場合(S72:NO)、ステップS15の処理に戻り、中間プロンプト欄I3を介して中間プロンプトの入力又は編集を受け付ける都度、ステップS48~S71の処理を実行する。これにより、中間プロンプトが入力又は編集される都度、入力又は編集された中間プロンプトに基づいてプログラムコードが生成される。制御部11は、終了指示を受け付けたと判断した場合(S72:YES)、一連の処理を終了する。
【0050】
ステップS17でGUI欄R2に設けられたGUIを介して設定内容の入力を受け付けたと判断した場合(S17:YES)、制御部11は、入力された設定内容を受け付け、アプリ設計画面中のGUI欄R2に表示する(S73)。なお、既にGUI欄R2に設定内容が表示されている場合、制御部11は、表示中の設定内容に対する編集を受け付け、受け付けた編集後の設定内容を表示する。GUI欄R2は、メニュー欄R1を介して選択されたメニュー項目の設定内容を表示する。図11はThemeのメニュー項目の設定内容が表示されたGUI欄R2を示し、アプリケーションにおけるテーマカラーとして、ベースカラー(背景色)、メインカラー、テキストカラー、アクセントカラーの各カラーに対する設定内容が表示されている。図11の例では、制御部11は、各カラーの設定内容として、設定された各色に割り当てられたカラーコード、各色を表示したカラーパレットB7、及び、各色を用いた画面のプレビューをGUI欄R2に表示する。カラーパレットB7は、各カラーの設定内容の変更を受け付けるように構成されている。例えばいずれかのカラーパレットB7が操作(例えばマウスによるクリック)された場合、情報処理装置10の制御部11は、選択可能な色を一覧表示し、いずれかの色の選択を受け付けた場合、選択された色に設定内容(各カラーの設定色)を更新する。いずれかのカラーの設定内容が変更された場合、制御部11は、変更後の色のカラーコード及びカラーパレットB7と、変更後の色を用いた画面のプレビューとを表示する。図11の画面中のGUI欄R2には、カラーパレットB7を介して変更された内容への適用(反映)を指示するためのApplyボタンB8が設けられている。ユーザは、図11の画面中のカラーパレットB7を介していずれかのカラーの設定内容を変更した後、変更後の内容に更新(適用)する場合、ApplyボタンB8を操作する。
【0051】
図12及び図13はScreenのメニュー項目の設定内容が表示されたGUI欄R2を示し、アプリケーションにおける表示画面に対する設定内容が表示されている。図12に示すGUI欄R2は、画面遷移図(ルーティング)を表示し、それぞれの画面について、画面の名称及び画面に付与されたIDを表示している。また、図12のGUI欄R2には、各画面に対応付けて、各画面の編集処理の実行を指示するための編集ボタンB10と、各画面の削除を指示するための削除ボタンB11とが設けられている。また図12のGUI欄R2には、いずれかの画面に対応する削除ボタンB11が操作された場合に、操作された削除ボタンB11に対応する画面の削除の適用(反映)を指示するためのApplyボタンB9が設けられている。ユーザは、図12の画面中のいずれかの削除ボタンB11を操作した後、操作内容に更新(適用)する場合、ApplyボタンB9を操作する。
【0052】
図12のGUI欄R2において、いずれかの画面の編集ボタンB10が操作された場合、情報処理装置10の制御部11は、図13に示すように、操作された編集ボタンB10に対応する画面に対する設定内容を表示する。図13のGUI欄R2は、図12のGUI欄R2においてHome Screenに対応する編集ボタンB10が操作された場合の表示例を示す。図13のGUI欄R2(プレビュー欄)は、画面の名称と、当該画面に関するソースコード(プログラムコード)と、当該画面のプレビューとを表示する。図13のGUI欄R2は、表示中のプログラムコードに対する編集(変更)を受け付けるように構成されており、制御部11は、プログラムコードに対する編集を受け付けた場合、編集内容(入力内容)をGUI欄R2に表示する。図13では、制御部11は、編集内容に下線を付けて強調表示している。図13のGUI欄R2には、プログラムコードに対する編集内容の適用(反映)を指示するためのApplyボタンB12が設けられている。ユーザは、図13の画面においてプログラムコードを編集した後、編集後の内容に更新(適用)する場合、ApplyボタンB12を操作する。
【0053】
図11図13は、Theme及びScreenのメニュー項目についてGUI欄R2を介してプログラムコードが編集される状態を示したが、Data、Language及びOthersのメニュー項目についても同様にGUI欄R2を介してプログラムコードの編集が可能である。例えば、Dataのメニュー項目では、GUI欄R2に、設定されたデータベースに関する情報(例えばデータフィールドの名称、各データフィールドに格納されるデータの種類、桁数及びデータ量等)が表示され、各情報を編集できるように構成されている。またLanguageのメニュー項目では、GUI欄R2に、設定された言語に関する情報として、各言語間の対応関係(訳語)が表示され、各情報を編集できるように構成されている。
【0054】
制御部11は、図11又は図12に示す画面において、GUI欄R2に設けられているApplyボタンB8,B9が操作されたか否かを判断し(S74)、操作されていないと判断する場合(S74:NO)、ステップS73の処理に戻り、GUIを介した設定内容の入力又は編集の受付を継続する。GUI欄R2に設けられているApplyボタンB8,B9が操作されたと判断した場合(S74:YES)、制御部11は、この時点でGUI欄R2に表示されている各メニュー項目の設定内容に基づいてプログラムコードを生成する(S75)。例えば制御部11は、この時点でGUI欄R2に表示されている各メニュー項目の設定内容(GUI欄R2を介して入力又は編集された編集後の設定内容)に基づいて、この時点で生成済みのプログラムコードを更新して新たなプログラムコードを生成する。例えば制御部11は、生成済みのプログラムコード中に含まれる各種の設定値を、各メニュー項目の設定内容に基づいて書き換える。また制御部11は、編集後の設定内容と、この時点で生成済みのプログラムコードとを自然言語処理モデルMに入力することにより、新たなプログラムコードを生成してもよい。更に制御部11は、編集後の設定内容と、この時点で中間プロンプト欄I3に表示中の中間プロンプトとを自然言語処理モデルMに入力することにより、編集後の設定内容に対応する中間プロンプトを生成し、各メニュー項目について生成した中間プロンプトを自然言語処理モデルMに入力することにより、新たなプログラムコードを生成してもよい。このとき、制御部11は、生成した中間プロンプトと、この時点で生成済みのプログラムコードとを自然言語処理モデルMに入力して新たなプログラムコードを生成してもよく、中間プロンプトの生成前後における差分(変更内容)を抽出し、抽出した差分と生成済みのプログラムコードとを自然言語処理モデルMに入力して新たなプログラムコードを生成してもよい。
【0055】
その後、制御部11は、ステップS29~S31と同じ処理を実行する(S77~S79)。なお、制御部11は、ステップS79の処理後、ステップS73の処理に戻る。ビルド処理を成功したと判断した場合(S78:YES)、制御部11は、ステップS75で生成したプログラムコード(更新後のプログラムコード)から当該プログラムコードに対応する中間プロンプトを生成し、中間プロンプト欄I3に表示されている中間プロンプトを更新する(S80)。例えば制御部11は、更新前のプログラムコードと更新後のプログラムコードとの差分(変更内容)を抽出し、抽出した差分と、更新前のプログラムコードに対応する中間プロンプトとを自然言語処理モデルMに入力することによって、更新後のプログラムコードに対応する中間プロンプトを生成する。そして、制御部11は、生成した更新後のプログラムコードに対応する中間プロンプトを中間プロンプト欄I3に表示する。なお、更新後のプログラムコードに対応する中間プロンプトは、自然言語処理モデルMを用いて生成する構成に限定されない。例えば制御部11は、プログラムコードに対する変更内容に、この変更内容に対応する部分中間プロンプトを対応付けて登録しておく。そして制御部11は、更新前のプログラムコードと更新後のプログラムコードとの差分(変更内容)に対応する部分中間プロンプトを特定し、特定した部分中間プロンプトを、更新前のプログラムコードに対応する中間プロンプトに追加することで、更新後のプログラムコードに対応する中間プロンプトを生成してもよい。
【0056】
制御部11は、更新後のプログラムコードに対応する中間プロンプトの生成内容(更新内容)を示す更新履歴情報にバージョン番号を付加して記憶部12に記憶すると共に、更新履歴情報をアプリ設計画面の未コミット欄R4bに表示する(S81)。そして、制御部11は、ステップS33~S34と同じ処理を実行する(S82~S83)。なお、ステップS83で制御部11は、ステップS75で生成したプログラムコードと、ステップS80で生成した更新後の中間プロンプトと、この中間プロンプトに割り当てられたバージョン番号とを対応付けて履歴情報を生成して記憶部12に記憶する。制御部11は、未コミット欄R4bのCommitボタンB6が操作されたか否かを判断する(S84)。CommitボタンB6が操作されていないと判断する場合(S84:NO)、制御部11は、ステップS73の処理に戻り、GUIを介して設定内容の編集を受け付けてApplyボタンB8,B9が操作される都度、GUI欄R2に表示されている設定内容からプログラムコードを生成(更新)する処理、プログラムコードに対するビルド処理及びデプロイ処理を行う。また、制御部11は、更新されたプログラムコードに対応する中間プロンプトの生成処理を行い、生成した中間プロンプトの更新履歴情報を未コミット欄R4bに表示する。
【0057】
CommitボタンB6が操作されたと判断した場合(S84:YES)、制御部11は、この時点で中間プロンプト欄I3に表示されている中間プロンプトと、この中間プロンプトに対応するプログラムコードとを確定する(S85)。そして制御部11は、表示中のアプリ設計画面のプロンプトウィザード欄R3を更新する(S86)。ステップS86はステップS46と同じ処理である。制御部11は、プログラムコードの生成処理の終了指示を受け付けたか否かを判断し(S87)、受け付けていないと判断する場合(S87:NO)、ステップS15の処理に戻り、GUIを介して設定内容の入力又は編集を受け付ける都度、ステップS73~S86の処理を実行する。これにより、GUIを介して設定内容が入力又は変更される都度、入力又は変更された各メニュー項目の設定内容に基づいてプログラムコードが生成又は更新され、生成又は更新されたプログラムコードに基づいて中間プロンプトが生成される。制御部11は、終了指示を受け付けたと判断した場合(S87:YES)、一連の処理を終了する。
【0058】
ステップS18でGUI欄R2を介してプログラムコードの入力を受け付けたと判断した場合(S18:YES)、制御部11は、入力されたプログラムコードを受け付け、アプリ設計画面中のGUI欄R2に表示する(S88)。なお、既にGUI欄R2にプログラムコードが表示されている場合、制御部11は、表示中のプログラムコードに対する編集を受け付け、受け付けた編集後のプログラムコードを表示する。例えば制御部11は、図13に示すように、GUI欄R2に表示されているプログラムコードを、編集後のプログラムコードに更新する。制御部11は、図13に示す画面において、GUI欄R2に設けられているApplyボタンB12が操作されたか否かを判断し(S89)、操作されていないと判断する場合(S89:NO)、ステップS88の処理に戻り、GUI欄R2を介したプログラムコードの入力又は編集の受付を継続する。GUI欄R2に設けられているApplyボタンB12が操作されたと判断した場合(S89:YES)、制御部11は、ステップS77~S81と同じ処理を実行する(S90~S94)。なお、ステップS90で制御部11は、ステップS88でGUI欄R2を介して入力又編集されたプログラムコード(更新後のプログラムコード)に対してビルド処理を実行する。また、ステップS93で制御部11は、更新後のプログラムコードに基づいて、当該更新後のプログラムコードに対応する中間プロンプトを生成する。ここでは制御部11は、プログラムコードに対する編集内容を更新前後の差分(変更内容)とし、この差分と、更新前のプログラムコードに対応する中間プロンプトとを自然言語処理モデルMに入力することによって、更新後のプログラムコードに対応する中間プロンプトを生成する。ここでも、プログラムコードに対する変更内容に、この変更内容に対応する部分中間プロンプトが対応付けてある場合、制御部11は、更新前後のプログラムコードの差分(変更内容)に対応する部分中間プロンプトを特定し、特定した部分中間プロンプトを、更新前のプログラムコードに対応する中間プロンプトに追加することで、更新後のプログラムコードに対応する中間プロンプトを生成してもよい。また、ステップS94で制御部11は、更新後のプログラムコードに対応する中間プロンプトの更新履歴情報にバージョン番号を付加して記憶部12に記憶すると共に、更新履歴情報を未コミット欄R4bに表示する。
【0059】
次に制御部11は、更新後のプログラムコードに基づいて、GUI欄R2の各メニュー項目の表示内容(設定内容)を更新する(S95)。これにより、GUI欄R2の各メニュー項目の表示内容が、GUI欄R2を介して編集されたプログラムコードの編集内容に沿った内容に変更される。その後、制御部11は、ステップS82~S86と同じ処理を実行する(S96~S100)。なお、ステップS97で制御部11は、ステップS88で受け付けた更新後のプログラムコードと、ステップS93で生成した更新後のプログラムコードに対応する中間プロンプトと、この中間プロンプトに割り当てられたバージョン番号とを対応付けて履歴情報を生成して記憶部12に記憶する。ここでも、制御部11は、例えば編集前後のプログラムコードを自然言語処理モデルMに入力し、当該プログラムコードに対する編集内容の要約を生成し、要約を、プログラムコードの編集履歴情報としてもよい。制御部11は、CommitボタンB6が操作されていないと判断する場合(S98:NO)、ステップS88の処理に戻り、プログラムコードの編集を受け付けてApplyボタンB12が操作される都度、入力又は変更されたプログラムコードに対するビルド処理及びデプロイ処理を行う。また、制御部11は、更新されたプログラムコードに対応する中間プロンプトの生成処理を行い、生成した中間プロンプトの更新履歴情報を未コミット欄R4bに表示する。
【0060】
制御部11は、プログラムコードの生成処理の終了指示を受け付けたか否かを判断し(S101)、受け付けていないと判断する場合(S101:NO)、ステップS15の処理に戻り、GUI欄R2を介してプログラムコードの入力又は編集を受け付ける都度、ステップS88~S100の処理を実行する。これにより、プログラムコードが入力又は編集される都度、入力又は変更されたプログラムコードに基づいて中間プロンプトが生成される。制御部11は、終了指示を受け付けたと判断した場合(S101:YES)、一連の処理を終了する。
【0061】
ステップS19でダウングレードの実行指示を受け付けたと判断した場合(S19:YES)、制御部11は、ダウングレードさせるバージョン情報(バージョン番号)を受け付ける(S102)。例えば、制御部11は、プロンプトウィザード欄R3の履歴表示欄R4(コミット欄R4a)に表示された履歴情報に基づいて、ダウングレードの実行指示を受け付けるように構成されており、ダウングレードの実行が指示された履歴情報のバージョン情報を特定する。制御部11は、特定したバージョン情報の中間プロンプト及びプログラムコードを記憶部12から読み出し(S103)、読み出したプログラムコードに対してビルド処理を実行し(S104)、実行ファイルを生成する。次に制御部11は、読み出した中間プロンプトに基づいてプロンプトウィザード欄R3を更新する(S106)。ここでは、制御部11は、読み出した中間プロンプトをプロンプトウィザード欄R3の中間プロンプト欄I3に表示し、ダウングレードの実行が指示されたバージョンまでの履歴情報をコミット欄R4aに表示する。
【0062】
次に制御部11は、ステップS103で読み出したプログラムコードに基づいてGUI欄R2を更新する(S107)。ここでは、制御部11は、読み出したプログラムコードに基づいて、各メニュー項目に対する設定内容及びプログラムコードをGUI欄R2に表示する。その後、制御部11は、ステップS104のビルド処理によって生成した実行ファイルに対してデプロイ処理を実行する(S108)。これにより、ダウングレードの実行が指示されたバージョンの履歴情報に対応する中間プロンプト及びプログラムコードに基づくアプリ設計画面が表示される。その後、制御部11は、ステップS101に移行し、プログラムコードの生成処理の終了指示を受け付けていないと判断する場合(S101:NO)、ステップS15の処理に戻り、ダウングレードの実行指示を受け付ける都度、ステップS102~S108の処理を実行する。制御部11は、終了指示を受け付けたと判断した場合(S101:YES)、一連の処理を終了する。
【0063】
上述した処理により、本実施形態では、自然言語及び/又は画像等によって入力されたプロンプト(概要プロンプト及び中間プロンプト)に基づいてソフトウェア(プログラムコード)の生成が可能である。また、自然言語及び/又は画像等によってプロンプトの編集が可能であり、プロンプトを編集することによってプログラムコードの修正が可能である。なお、テキスト入力、画像入力、音声入力等によってプロンプトの入力及び編集を行うことができる。よって、ソフトウェアの設計スキル又は開発スキル等の専門的な知識を有しないユーザであっても、任意のソフトウェアの設計及び開発が可能となる。また、本実施形態では、アプリケーションの概要を概要プロンプトとして受け付け、概要プロンプトから、アプリケーションの詳細な仕様内容を示す中間プロンプトを生成し、中間プロンプトからプログラムコードを生成する。概要プロンプトから直接プログラムコードを生成することが考えられるが、この場合、ユーザが意図しないプログラムコードが生成されることが想定され、プログラムコードの修正等の手戻り作業の回数が増加することが予想される。これに対して、本実施形態では、概要プロンプトから生成された中間プロンプトからプログラムコードを生成することにより、ユーザが意図する内容のプログラムコードを、少ない修正回数で生成することが可能となる。また、プログラムコードの生成に使用した中間プロンプトは、アプリケーションの詳細な仕様書となるので、プログラムコードの生成とは別にソフトウェアの仕様書を作成する作業工程を削減できる。本実施形態では、プロンプトに基づいてプログラムコードを生成する処理について説明したが、生成対象は、アプリケーションを実現するためのプログラムコードだけでなく、アプリケーションにおけるコンフィギュレーションファイル(設定ファイル)であってもよい。
【0064】
本実施形態において、自然言語処理モデルMを用いて概要プロンプトから中間プロンプトを生成する処理、及び、自然言語処理モデルMを用いて中間プロンプトからプログラムコードを生成する処理は、情報処理装置10がローカルで行う構成に限定されない。例えば、自然言語処理モデルMを用いる処理を、自然言語処理モデルMを提供するサーバで実行する構成でもよい。例えば、情報処理装置10は、プロンプトウィザード欄R3を介して入力された概要プロンプトをサーバへ送信し、サーバで概要プロンプトから生成された中間プロンプトを受信するように構成することができる。また、情報処理装置10は、プロンプトウィザード欄R3に表示された中間プロンプトをサーバへ送信し、サーバで中間プロンプトから生成されたプログラムコードを受信するように構成することができる。また、自然言語処理モデルMを用いて、GUIを介して変更されたプログラムコードの設定情報から新たなプログラムコードを生成する処理、GUIを介して変更されたプログラムコードの設定情報から変更後の設定内容に対応する中間プロンプトを生成する処理、及び、更新後のプログラムコードから当該プログラムコードに対応する中間プロンプトを生成する処理についても、情報処理装置10がローカルで行う構成に限定されない。
【0065】
(実施形態2)
上述の実施形態1において、ビルド処理に失敗した場合に、自然言語処理モデルMを用いて、エラー箇所の修正を行う情報処理装置について説明する。本実施形態の情報処理装置は、図1に示す実施形態1の情報処理装置10の構成と同様の構成を有するので、構成についての説明は省略する。
【0066】
図14は実施形態2のプログラムコードの生成処理手順の一例を示すフローチャートである。図14に示す処理は、図2図6に示す処理において、ステップS30,S31の間、ステップS40,S41の間、ステップS55,S56の間、ステップS65,S66の間、ステップS78,S79の間、ステップS91,S92の間にそれぞれ、ステップS111~S114を追加したものである。図2図6と同じステップについては説明を省略する。図14では、ステップS30~S31,S40~S41,S55~S56,S65~S66,S78~S79,S91~S92以外のステップの図示を省略している。
【0067】
情報処理装置10の制御部11は、ステップS30,S40,S55,S65,S78,S91のいずれかでビルド処理に失敗したと判断した場合(NO)、プログラムコードの修正を試行する(S111)。例えば制御部11は、ビルド処理を行ったプログラムコードと、ビルド処理によって出力されたエラー情報(プログラムコードに含まれる問題の内容)とを自然言語処理モデルMに入力することにより、自然言語処理モデルMから修正後のプログラムコードを取得する。そして、制御部11は、修正後のプログラムコードに対してビルド処理を再度実行(再ビルド処理を実行)する(S112)。制御部11は、再度行ったビルド処理を成功したか否かを判断し(S113)、ビルド処理に失敗したと判断した場合(S113:NO)、この時点でプログラムコードの修正を試行した回数が所定回数(例えば5回、10回等)以上であるか否かを判断する(S114)。プログラムコードの修正の試行回数が所定回数未満であると判断した場合(S114:NO)、制御部11は、ステップS111に戻り、ステップS111~S114の処理を繰り返す。なお、ステップS111で制御部11は、直近に生成した修正後のプログラムコードと、このプログラムコードに行ったビルド処理で生成されたエラー情報とを自然言語処理モデルMに入力することにより、更に修正後のプログラムコードを取得してもよい。
【0068】
ビルド処理に成功したと判断した場合(S113:YES)、制御部11は、ステップS32,S42,S57,S67,S80,S93のいずれかに移行し、ビルド処理に成功したプログラムコードについて、ステップS32,S42,S57,S67,S80,S93以降の処理を実行する。一方、プログラムコードの修正の試行回数が所定回数以上であると判断した場合(S114:YES)、制御部11は、ステップS31,S41,S56,S66,S79,S92に移行し、ビルド処理に失敗したこと、及び、プログラムコードを修正できなかったことを通知するエラーメッセージを出力する。その後、制御部11は、ステップS25,S50,S73,S88に移行する。
【0069】
上述した処理により、本実施形態では、中間プロンプト等に基づいて生成されたプログラムコードに何らかの問題があってビルド処理に失敗した場合に、自然言語処理モデルMを用いてプログラムコードの修正を試行できる。なお、制御部11は、所定回数を上限として、プログラムコードの修正を複数回試行できる。また、プログラムコードの試行を所定回数行っても問題が解消せずにビルド処理に失敗した場合、エラーメッセージを出力し、ユーザによる概要プロンプトの編集、中間プロンプトの編集、GUIを介した設定内容の編集(変更)、プログラムの編集によってプログラムコードの生成のやり直しを行うことができる。
【0070】
本実施形態では、ビルド処理に失敗した場合に自然言語処理モデルMを用いてプログラムコードの修正を試行する処理以外は、実施形態1と同様の処理であり、実施形態1と同様の効果が得られる。また本実施形態では、自然言語処理モデルMを用いてプログラムコードの修正を試みるので、自然言語処理モデルMを用いて修正できる程度の問題(誤り、バグ等)であれば自動的に解消することができる。よって、ユーザの操作負担を軽減することができる。本実施形態においても、上述した実施形態1で適宜説明した変形例の適用が可能である。
【0071】
(実施形態3)
上述の実施形態1において、概要プロンプトの入力を対話的に受け付けるように構成してある情報処理装置について説明する。本実施形態の情報処理装置は、図1に示す実施形態1の情報処理装置10の構成と同様の構成を有するので、構成についての説明は省略する。
【0072】
図15はアプリ設計画面の変形例を示す説明図である。図15に示すアプリ設計画面は、図8図10Bの画面と同様の構成に加えて、プロンプトウィザード欄R3の概要プロンプト欄I2の上側に、概要プロンプトの入力履歴を表示する概要プロンプト履歴欄R5を有する。図15に示す画面では、概要プロンプト欄I2に概要プロンプトが入力されてApplyボタンB3が操作された場合、実施形態1と同様に、概要プロンプトから中間プロンプトが生成されて中間プロンプト欄I3に表示され、中間プロンプトの生成履歴が履歴表示欄R4(未コミット欄R4b)に表示される。また本実施形態では、入力された概要プロンプトが概要プロンプト履歴欄R5に表示され、概要プロンプト欄I2から削除される。概要プロンプト履歴欄R5に概要プロンプトが表示された場合、更に入力すべき概要プロンプトに関する情報の入力を促すような対話情報が概要プロンプト履歴欄R5に表示され、ユーザは、表示された対話情報に従って新たな概要プロンプトの入力を行う。
【0073】
図16は実施形態3のプログラムコードの生成処理手順の一例を示すフローチャートである。図16に示す処理は、図2図6に示す処理において、ステップS25の代わりにステップS121~S124を追加したものである。図2図6と同じステップについては説明を省略する。なお、図16では図2図6中のステップS14~S15,ステップS20~S24以外のステップの図示を省略している。
【0074】
本実施形態の情報処理装置10の制御部11は、ステップS21においてApplyボタンB3が操作されたと判断した場合(S21:YES)、ステップS22~S24の処理を実行し、図8に示すようなアプリ設計画面を表示する。そして、制御部11は、概要プロンプト欄I2に入力された概要プロンプトを概要プロンプト履歴欄R5に表示する(S121)。なお、制御部11は、概要プロンプト履歴欄R5に表示(移動)させた概要プロンプトを概要プロンプト欄I2から消去する。
【0075】
次に、制御部11は、概要プロンプト履歴欄R5に移動させた概要プロンプトに基づいて、ユーザが次に行うべき行動(例えば新たな概要プロンプトの入力)を促すような対話情報を生成する(S122)。例えば制御部11は、概要プロンプト、あるいは、概要プロンプト及び中間プロンプト欄I3に表示された中間プロンプトを自然言語処理モデルMに入力し、自然言語処理モデルMによって、ユーザに対する発話内容を自然言語によって記述した対話情報を取得する。制御部11は、概要プロンプト、あるいは、概要プロンプト及び中間プロンプトをそのまま自然言語処理モデルMに入力してもよく、例えば冒頭に「次にユーザが行うべきことを示すメッセージを作成してください」のように自然言語処理モデルMからの出力結果を制御するためのメッセージを追加した上で自然言語処理モデルMに入力してもよい。ここでの対話情報は、ユーザに対する依頼事項のほかに、概要プロンプトに関する質問、次にユーザが行うべき操作(例えばApplyボタンB4又はCommitボタンB6の操作)の実行指示等を含んでもよい。制御部11は、生成した対話情報を概要プロンプト履歴欄R5に表示する(S123)。図15では、対話情報として「仕様書(中間プロンプト)を生成しました。修正が必要な場合は、教えて下さい」のメッセージが表示されている。なお、概要プロンプト履歴欄R5に表示される対話情報は、例えば情報処理装置10がスピーカによる音声出力機能を有する場合、音声出力によってユーザに通知してもよい。
【0076】
ユーザは、概要プロンプト履歴欄R5に表示された対話情報を確認し、必要に応じて新たな概要プロンプトの入力を行う。制御部11は、概要プロンプト欄I2を介して新たな概要プロンプトの入力を受け付けたか否かを判断しており(S124)、新たな概要プロンプトの入力を受け付けたと判断した場合(S124:YES)、ステップS20に移行する。そして、制御部11は、新たな概要プロンプトについてステップS20~S24,S121~S123の処理を実行する。新たな概要プロンプトの入力を受け付けていないと判断する場合(S124:NO)、制御部11は、ステップS26に処理を移行し、ステップS26以降の処理を実行する。
【0077】
上述した処理により、本実施形態では、ユーザが概要プロンプトを入力する際に、概要プロンプト履歴欄R5に表示された対話情報に回答する形式で概要プロンプトの入力が可能であるので、概要プロンプトを入力するユーザの操作負担を軽減できる。本実施形態では、ユーザが入力した概要プロンプトに対して、自然言語処理モデルMで生成した対話情報を表示する構成であるが、ユーザが概要プロンプトを入力する前に、概要プロンプトの入力に関するヒント等のメッセージを概要プロンプト履歴欄R5に表示する構成でもよい。この場合、ユーザは、どのような概要プロンプを入力すべきか分からない場合であっても、概要プロンプト履歴欄R5に表示されたメッセージに従って概要プロンプトの入力が可能となる。
【0078】
本実施形態において、概要プロンプト履歴欄R5に表示される対話情報は自然言語処理モデルMを用いて生成される構成に限定されない。例えば、キーワードに対応付けて対話情報を登録しておき、ユーザが入力した概要プロンプトに含まれるキーワードに対応する対話情報を、ユーザに提供すべき対話情報に特定してもよい。
【0079】
本実施形態では、概要プロンプトが入力された場合に、入力された概要プロンプトと、この概要プロンプトから生成された対話情報とが概要プロンプト履歴欄R5に表示される処理以外は、実施形態1と同様の処理であり、実施形態1と同様の効果が得られる。本実施形態では、概要プロンプト履歴欄R5に表示された対話情報に回答する形式で概要プロンプトの入力が可能となるので、概要プロンプトを入力するユーザの操作負担を軽減できる。また、自然言語処理モデルMに対するプロンプトの入力操作に不慣れなユーザであっても、適切な概要プロンプトの入力が可能となり、その結果、高精度な中間プロンプトの生成及び高精度なプログラムコードの生成が可能となる。本実施形態の構成は、実施形態2の情報処理装置10にも適用可能であり、実施形態2の情報処理装置10に適用した場合であっても同様の処理が可能であり、同様の効果が得られる。また、本実施形態においても、上述した実施形態1~2で適宜説明した変形例の適用が可能である。
【0080】
上述の各実施形態に記載した事項は相互に組み合わせることが可能である。また、請求の範囲に記載した独立請求項及び従属請求項は、引用形式に関わらず全てのあらゆる組み合わせにおいて、相互に組み合わせることが可能である。さらに、請求の範囲には他の2以上のクレームを引用するクレームを記載する形式(マルチクレーム形式)を用いているが、これに限るものではない。マルチクレームを少なくとも一つ引用するマルチクレーム(マルチマルチクレーム)を記載する形式を用いて記載しても良い。
【0081】
今回開示された実施形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、請求の範囲によって示され、請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0082】
10 情報処理装置
11 制御部
12 記憶部
13 通信部
14 入力部
15 表示部
M 自然言語処理モデル
図1
図2
図3
図4
図5
図6
図7A
図7B
図8
図9
図10A
図10B
図11
図12
図13
図14
図15
図16