特許法第30条第2項適用 令和5年11月8日、Cybozu Days 2023、幕張メッセ(千葉市美浜区中瀬2-1) 令和5年11月9日、Cybozu Days 2023、幕張メッセ(千葉市美浜区中瀬2-1) 令和5年11月9日、https://www.showcase-tv.com、https://www.showcase-tv.com/pressrelease/20231109_llmlabs/、https://prtimes.jp/main、https://prtimes.jp/main/html/rd/p/000000422.000003483.html 令和5年12月5日、日立システムズ社向け勉強会、オンライン(https://showcase-tv.zoom.us、https://showcase-tv.zoom.us/my/sczoom01) 令和5年12月20日、パートナー企業向け勉強会、オンライン(https://cybozu.zoom.us、https://cybozu.zoom.us/j/91732755503) 令和5年12月27日、コムチュア社向け勉強会、オンライン(https://teams.microsoft.com、https://teams.microsoft.com/l/meetup-join/19:meeting_OGVmOTY4ZTQtNGNlMS00ZjkxLTgwNmMtZjY0ZmM4NWIyNTll@thread.v2/0?context={″Tid″:″e7c3bdae-4fcd-48cd-b7f7-980d1e36da73″,″Oid″:″a4bd0948-bacb-4a1e-8e6c-2e33bd54ddec″})
[1.ハードウェア構成]
本開示に係る業務支援システム、業務支援方法、及びプログラムの実施形態の一例を説明する。図1は、業務支援システムのハードウェア構成の一例を示す図である。例えば、業務支援システム1は、音声変換サーバ10、コード生成サーバ20、業務支援サーバ30、及びユーザ端末40を含む。音声変換サーバ10、コード生成サーバ20、業務支援サーバ30、及びユーザ端末40の各々は、インターネット又はLAN等のネットワークNに接続される。図1では、音声変換サーバ10、コード生成サーバ20、業務支援サーバ30、及びユーザ端末40の各々が1台ずつ示されているが、これらのうちの少なくとも1つは、複数台存在してもよい。
音声変換サーバ10は、後述の音声変換処理を実行するサーバコンピュータである。例えば、音声変換サーバ10は、制御部11、記憶部12、及び通信部13を含む。制御部11は、少なくとも1つのプロセッサを含む。記憶部12は、RAM等の揮発性メモリと、フラッシュメモリ等の不揮発性メモリと、の少なくとも一方を含む。通信部13は、有線通信用の通信インタフェースと、無線通信用の通信インタフェースと、の少なくとも一方を含む。
コード生成サーバ20は、後述のコード生成処理を実行するサーバコンピュータである。例えば、コード生成サーバ20は、制御部21、記憶部22、及び通信部23を含む。制御部21、記憶部22、及び通信部23のハードウェア構成は、それぞれ制御部11、記憶部12、及び通信部13と同様であってよい。
業務支援サーバ30は、後述の業務支援処理を実行するサーバコンピュータである。例えば、業務支援サーバ30は、制御部31、記憶部32、及び通信部33を含む。制御部31、記憶部32、及び通信部33のハードウェア構成は、それぞれ制御部11、記憶部12、及び通信部13と同様であってよい。
ユーザ端末40は、ユーザのコンピュータである。例えば、ユーザ端末40は、パーソナルコンピュータ、タブレット端末、スマートフォン、又はウェアラブル端末である。ユーザ端末40は、制御部41、記憶部42、通信部43、操作部44、表示部45、音声入力部46、及び音声出力部47を含む。制御部41、記憶部42、及び通信部43のハードウェア構成は、それぞれ制御部11、記憶部12、及び通信部13と同様であってよい。操作部44は、マウス又はタッチパネル等の入力デバイスを含む。表示部45は、液晶又は有機ELのディスプレイを含む。音声入力部46は、少なくとも1つのマイクを含む。音声出力部47は、少なくとも1つのスピーカーを含む。
なお、記憶部12,22,32,42に記憶されるプログラムは、ネットワークNを介して供給されてもよい。音声変換サーバ10、コード生成サーバ20、業務支援サーバ30、及びユーザ端末40の各々のハードウェア構成は、図1の例に限られない。例えば、音声変換サーバ10、コード生成サーバ20、業務支援サーバ30、及びユーザ端末40の少なくとも1つは、コンピュータ読み取り可能な情報記憶媒体を読み取る読取部(例えば、メモリカードスロット)と、外部機器と直接的に接続するための入出力部(例えば、USB端子)と、の少なくとも一方を含んでもよい。情報記憶媒体に記憶されたプログラムが、読取部及び入出力部の少なくとも一方を介して、音声変換サーバ10、コード生成サーバ20、業務支援サーバ30、及びユーザ端末40の少なくとも1つに供給されてもよい。
また、業務支援システム1は、少なくとも1つのコンピュータを含めばよい。業務支援システム1に含まれるコンピュータは、図1の例に限られない。例えば、業務支援システム1は、コード生成サーバ20及び業務支援サーバ30だけを含んでもよい。この場合、音声変換サーバ10及びユーザ端末40は、業務支援システム1の外部に存在する。業務支援システム1は、コード生成サーバ20だけを含んでもよい。この場合、音声変換サーバ10、業務支援サーバ30、及びユーザ端末40は、業務支援システム1の外部に存在する。業務支援システム1は、コード生成サーバ20と、他のサーバコンピュータと、を含んでもよい。
[2.業務支援システムの概要]
本実施形態では、業務支援システム1は、ノーコード又はローコードでユーザの業務を支援可能である。ノーコードとは、ユーザがコードを入力しないことである。別の言い方をすれば、ノーコードとは、ユーザが、業務支援システム1を利用するために、コードを入力する必要がないことである。ローコードとは、ユーザが、必要最低限のコードだけを入力することである。別の言い方をすれば、ユーザが、業務支援システム1を利用するために、必要最低限のコードを入力すれば済むことである。
コードとは、コンピュータに対する命令である。別の言い方をすれば、コードとは、コンピュータがユーザの指示を理解するための情報である。コードは、コンピュータソフトウェア分野で利用されている任意のコードであってよい。例えば、コードは、プログラミング言語のコード、CSS(Cascading Style Sheets)のコード、データベース言語のコード、マークアップ言語のコード、又は他のコードであってよい。プログラミング言語には、スクリプト言語と呼ばれる言語も含まれる。本実施形態のコードは、コンピュータソフトウェア分野の当業者がコードと呼ぶ種々のコードであってよい。
業務支援システム1がノーコードでユーザの業務を支援可能とは、ユーザがコードを入力しなくても、業務支援システム1が、予め用意されたコードに基づいて、後述の業務支援処理を実行可能なことである。業務支援システム1がローコードでユーザの業務を支援可能とは、ユーザが必要最低限のコードだけを入力すれば、業務支援システム1は、ユーザが入力した必要最低限のコードと、予め用意されたコードと、に基づいて、後述の業務支援処理を実行可能なことである。
なお、ノーコード及びローコードの各々の言葉の意味は、一般的に知られている意味であってよい。コンピュータソフトウェア分野の当業者は、出願時の技術常識によって、ノーコード及びローコードの各々の意味を理解可能である。ノーコード及びローコードの各々は、出願時の技術常識によって当業者が理解可能な公知の意味であってよい。例えば、ローコードにおける必要最低限のコードの分量は、当業者が出願時の技術常識によって理解できる程度の分量であればよい。例えば、ローコードにおける必要最低限のコードの分量は、1行~100行程度であってもよいし、101行以上であってもよい。
例えば、業務支援システム1は、ユーザの業務を支援するための種々の業務支援機能を有する。業務支援機能は、業務支援のために開発されたプログラムにより実現される機能である。業務支援機能の種類は、公知の種類であってよい。例えば、業務支援機能は、ユーザがデータベースにデータを格納するためのデータベース機能、ユーザが他のユーザとコミュニケーションを取るためのコミュニケーション機能、ユーザがスケジュールを管理するためのスケジュール機能、ユーザがメールを管理するためのメール管理機能、又はその他の機能であってもよい。
本実施形態では、業務支援システム1は、ユーザに対し、クラウド型のグループウェアを提供する場合を例に挙げる。業務支援システム1は、ユーザに対し、オンプレミス型のグループウェアを提供してもよい。業務支援システム1は、ユーザに対し、グループウェアに分類されないが、業務を支援するサービスを提供してもよい。例えば、ユーザが所属する会社等の組織は、業務支援システム1に契約する。ユーザは、組織の一員として、業務支援システム1が有する業務支援機能を利用する。ユーザがユーザ端末40のブラウザから業務支援システム1にログインすると、ユーザ端末40は、ユーザが業務支援機能を利用するための業務支援画面を、表示部45に表示させる。業務支援画面は、ブラウザではなく、業務支援システム1専用のプログラム上で表示されてもよい。
図2及び図3は、ユーザ端末40に表示される業務支援画面の一例を示す図である。本実施形態では、ユーザがデータベース機能を利用する場合を例に挙げる。例えば、ユーザは、データベースの一種であるアプリを利用する。ユーザは、自身の業務に関係する任意のデータをアプリに格納できる。例えば、ユーザは、アプリのフィールドに格納されるデータだけではなく、他のデータもアプリに格納できる。例えば、ユーザは、他のユーザに対するコメント、文書若しくは画像等のファイル、又はその他のデータをアプリに格納できる。アプリは、データベース機能だけではなく、コミュニケーション機能及びファイル管理機能等も兼ね備えた複合的な業務支援機能ということもできる。
例えば、ユーザがアプリを選択すると、図2の上側のように、ユーザ端末40は、当該アプリを構成するデータの単位であるレコードのリストLを示す業務支援画面SCを、表示部45に表示させる。図2の上側の例では、ユーザが議事録を管理する議事録管理アプリのレコードが、リストLに示されている。ユーザがリストLのレコードを選択すると、ユーザ端末40は、当該レコードの詳細を業務支援画面SCに表示させる。例えば、ユーザは、当該業務支援画面SCから、当該レコードを更新できる。
本実施形態では、ユーザは、ノーコード又はローコードでアプリを作成できる。例えば、ユーザは、フィールドの設定等の簡単な設定作業だけを行うことによって、コードを入力しなくてもアプリを作成できる。ユーザは、設定作業を行わなくても、予め用意されたデフォルトのアプリを利用できる。ユーザは、必要最低限のコードを入力することによって、アプリが有する業務支援機能を拡張できる。即ち、ユーザは、ノーコードで作成したアプリが有する業務支援機能を拡張することによって、ローコードのアプリを作成できる。業務支援機能の拡張は、業務支援機能のカスタマイズということもできる。
例えば、ユーザは、ユーザ端末40のブラウザで実行されるスクリプトを入力することによって、アプリの機能を拡張してもよい。スクリプトは、スクリプト言語で記述されたコードである。ユーザは、CSS(Cascading Style Sheets)のコードを入力することによって、アプリの機能を拡張してもよい。業務支援システム1は、スクリプト及びCSS以外の他のコードに対応していてもよい。ユーザがこれらのコードを入力してアプリの機能を拡張しようとすると、ユーザは、ある程度のコードの知識を有する必要がある。コードの知識を有するユーザだったとしても、コードを入力するのに手間がかかる。
そこで、本実施形態の業務支援システム1は、ユーザが手軽にアプリの機能を拡張できるように、AI(Artificial Intelligence)がコードを生成するコード生成機能を有するようになっている。コード生成機能は、業務支援システム1のデフォルトの機能(全てのユーザが最初から利用できる機能)であってもよいが、本実施形態では、ユーザが任意で追加できるプラグインであるものとする。コード生成機能の利用を希望するユーザは、プラグインによって、コード生成機能を追加する。プラグインは、コード生成機能のためのプログラム及びデータの集まりである。ユーザがプラグインを追加すると、ユーザは、コード生成機能のためのプログラム及びデータを利用可能になる。
AIは、ユーザの業務を支援する人工的な知能を有するプログラムである。AIの定義は、諸説あるが、本実施形態のAIは、公知の種々の定義で規定されるAIであってよい。AIは、生成AI又は対話型AIと呼ばれるAIであってもよい。例えば、AIは、大規模言語モデル、大規模言語モデルに分類されない機械学習モデル、ボットと呼ばれるプログラム、又はその他のプログラムであってもよい。機械学習の定義も、諸説あるが、本実施形態の機械学習は、公知の種々の定義で規定される機械学習であってよい。機械学習は、教師有り学習、半教師有り学習、又は教師無し学習の何れであってもよい。
本実施形態では、大規模言語モデルがAIに相当する場合を例に挙げる。更に、AIが生成するコードの一例として、ユーザ端末40のブラウザで実行されるスクリプト(例えば、JAVASCRIPT(登録商標))を説明する。例えば、ユーザは、テキスト(文字)又は音声を利用して、AIに対する指示を行う。図2の上側の例であれば、ユーザは、音声入力の開始のためのアイコンIを選択し、アプリで拡張したい機能の内容を発話する。音声入力部46がユーザの音声を検出すると、ユーザ端末40は、音声変換サーバ10との間で、ユーザの音声をテキストに変換するための処理を実行する。ユーザの音声がテキストに変換されると、図2の下側のように、ユーザ端末40は、入力フォームFに当該テキストを表示させる。当該テキストが誤っていれば、ユーザは、操作部44を操作して当該テキストを修正できる。ユーザは、音声入力を利用せずに、入力フォームFにテキストを手入力することもできる。
図2の下側の例では、ユーザは、「会議日が最も過去のレコードを緑色にする機能を作って」といった指示を行う。例えば、業務支援システム1が、ユーザの指示を満たすようにアプリの機能を拡張するには、会議日が最も過去のレコードを特定する処理と、当該レコードの色を変える処理と、を示すコードを生成する必要がある。業務支援システム1は、当該コードをAIに生成させる。例えば、ユーザがボタンBを選択すると、コード生成サーバ20は、ユーザの指示に応じたコードをAIに生成させる。図3の上側のように、業務支援画面SCは、コードの生成待ちの状態になる。業務支援画面SCの表示領域Aには、ユーザが入力した指示が表示される。
例えば、コード生成サーバ20がAIにコードを生成させると、業務支援サーバ30は、AIが生成したコードをデプロイする。AIが生成したコードが、ユーザ端末40のブラウザで実行されるスクリプトである場合、ユーザ端末40は、業務支援サーバ30からコードを受信し、ブラウザで当該コードを実行する。AIがユーザの希望に沿ったコードを生成すれば、図3の下側のように、ユーザ端末40は、当該コードを実行することによって、リストLに表示されたレコードのうち、会議日が最も過去のレコードを緑色にすることができる。業務支援画面SCの表示領域Aには、AIからの回答が表示される。ユーザがコードの生成を終了するための操作を行うと、AIが生成したコードがアプリに反映される。ユーザが当該操作を行わなければ、AIが生成したコードが破棄される。
以上のように、業務支援システム1は、ユーザが、アプリが有する業務支援機能を拡張するために、AIに対する指示を入力すると、当該業務支援機能の拡張のためのコードをAIに生成させる。業務支援システム1は、AIに生成させたコードに基づいて、ユーザの希望に沿った機能拡張を実現する。ユーザは、コードを入力しなくても、自然言語で指示を入力することによって、アプリが有する業務支援機能を拡張できるので、業務支援システム1は、ユーザの利便性を高めることができる。以降、業務支援システム1の詳細を説明する。
[3.業務支援システムで実現される機能]
図4は、業務支援システム1で実現される機能の一例を示す図である。
[3-1.音声変換サーバで実現される機能]
例えば、音声変換サーバ10は、データ記憶部100及び音声変換部101を含む。データ記憶部100は、記憶部12により実現される。音声変換部101は、制御部11により実現される。なお、音声入力が行われない場合には、業務支援システム1は、音声変換サーバ10を含まなくてよい。
[データ記憶部]
データ記憶部100は、音声変換処理に必要なデータを記憶する。例えば、データ記憶部100は、音声変換処理を示す音声変換プログラムを記憶する。音声変換処理は、音声をテキストに変換する処理と、テキストを音声に変換する処理と、の少なくとも一方である。本実施形態では、音声変換処理がこれらの両方の処理である場合を例に挙げるが、音声変換処理は、これらのうちの何れか一方の処理だけであってもよい。音声からテキストへの変換のための音声変換プログラムと、テキストから音声への変換のための音声変換プログラムと、が別々であってもよい。音声変換プログラムは、公知のプログラムであってよい。例えば、音声変換プログラムは、音声波形のパターンが利用されるパターンマッチングの手法、機械学習の手法、又はその他の手法のプログラムであってもよい。
[音声変換部]
音声変換部101は、音声変換プログラムに基づいて、音声変換処理を実行する。例えば、音声変換サーバ10は、ユーザ端末40から、ユーザが入力した音声を示す入力音声データを取得する。入力音声データのデータ形式は、公知の形式であってよい。音声変換部101は、音声データと、音声変換プログラムと、に基づいて、ユーザが入力した音声をテキストに変換する。音声変換部101は、ユーザ端末40に対し、ユーザが入力した音声のテキストを示す入力テキストデータを送信する。音声変換部101は、コード生成サーバ20、業務支援サーバ30、又は他のコンピュータに対し、入力テキストデータを送信してもよい。
例えば、音声変換部101は、コード生成サーバ20、業務支援サーバ30、又は他のコンピュータから、AIからの回答のテキストを示す回答テキストデータを取得する。音声変換部101は、回答テキストデータと、音声変換プログラムと、に基づいて、AIからの回答のテキストを音声に変換する。音声変換部101は、ユーザ端末40に対し、AIからの回答のテキストの音声を示す回答音声データを送信する。ユーザ端末40は、音声変換サーバ10から、回答音声データを取得する。ユーザ端末40は、回答音声データに基づいて、音声出力部47から、AIからの回答を音声で出力する。ユーザ端末40は、音声変換サーバ10、コード生成サーバ20、業務支援サーバ30、又は他のコンピュータから、回答テキストデータを取得してもよい。ユーザ端末40は、回答テキストデータに基づいて、業務支援画面SCの表示領域Aに、AIからの回答を表示させてもよい。
[3-2.コード生成サーバで実現される機能]
例えば、コード生成サーバ20は、データ記憶部200、拡張内容情報取得部201、機能設定情報取得部202、テンプレートコード取得部203、仕様情報取得部204、デフォルトプロンプト取得部205、コード生成部206、及び提供部207を含む。データ記憶部200は、記憶部22により実現される。拡張内容情報取得部201、機能設定情報取得部202、テンプレートコード取得部203、仕様情報取得部204、デフォルトプロンプト取得部205、コード生成部206、及び提供部207の各々は、制御部21により実現される。
[データ記憶部]
データ記憶部200は、コード生成処理に必要なデータを記憶する。例えば、データ記憶部200は、テンプレートデータベースDB1を記憶する。
図5は、テンプレートデータベースDB1の一例を示す図である。例えば、テンプレートデータベースDB1には、テンプレートコードの検索で利用されるインデックスと、テンプレートコードと、が格納される。インデックスは、テンプレートコードの検索時に参照される情報である。本実施形態では、自然言語のテキストの意味を示すベクトル情報(埋め込み表現)がインデックスとして利用される場合を例に挙げる。ベクトル情報は、公知の方法(例えば、Word2Vec又はFastText)によって取得されるようにすればよい。ベクトル情報は、コードを生成するAIがテンプレートコードに基づいて計算した埋め込み表現であってもよい。
本実施形態では、あるテンプレートコードに関連付けられたインデックスは、当該テンプレートコードによって拡張される機能の拡張内容(即ち、テンプレートコードが示す処理によって実現される機能の内容)のベクトル情報である。例えば、レコードの背景色を変える処理を示すテンプレートコードには、「レコードの背景色を変えるコードです。」といったテキストのベクトル情報がインデックスとして格納されている。レコードの文字サイズを変える処理を示すテンプレートコードには、「レコードの文字サイズを変えるコードです。」といったテキストのベクトル情報がインデックスとして格納されている。
なお、ベクトル情報は、テンプレートコードの検索で利用される情報であればよい。ベクトル情報は、上記のようなテキストがベクトル化された情報ではなく、テンプレートコード自体がベクトル化された情報であってもよい。また、インデックスは、ベクトル情報に限られない。インデックスは、検索時に参照される情報であればよい。例えば、インデックスは、ベクトル以外の形式の情報であってもよい。例えば、インデックスは、自然言語としての意味を示す配列、行列、単一の数値、複数の数値の組み合わせ、又はその他の情報であってもよい。インデックスは、テンプレートコードの説明を示すテキスト、テンプレートコードが関係するキーワード、テンプレートコードが属するカテゴリ、又はその他の情報であってもよい。
テンプレートコードは、予め用意されたコードである。本実施形態では、業務支援システム1を運営する事業者がテンプレートコードを用意する場合を例に挙げるが、テンプレートコードは、任意の者によって用意されてよい。例えば、ユーザがテンプレートコードを用意してもよい。ユーザ同士でテンプレートコードが共用されてもよい。テンプレートコードは、業務支援システム1を運営する事業者と協力する他の事業者によって用意されてもよい。あるインデックスに関連付けられたテンプレートコードは、当該インデックスが示す機能の拡張を実現するためのコードである。当該テンプレートコードは、当該機能の拡張内容のための処理を示す。
例えば、「レコードの背景色を変えるコードです。」といったテキストのベクトル情報がインデックスとして格納されている場合、当該インデックスに関連付けられたテンプレートコードは、レコードの背景色を変える処理(特定のHTML要素を特定し、その要素のスタイルを変更する処理)を示す。当該テンプレートコードは、ページの色を所定の色にするスタイルタグと、当該スタイルタグを呼び出すための関数と、を含む。「レコードの文字サイズを変えるコードです。」といったテキストのベクトル情報がインデックスとして格納されている場合、当該インデックスに関連付けられたテンプレートコードは、レコードの文字サイズを変える処理(特定のHTML要素を特定し、その要素のサイズを変更する処理)を示す。当該テンプレートコードは、ページの文字サイズを所定のサイズにするスタイルタグと、当該スタイルタグを呼び出すための関数と、を含む。
なお、データ記憶部200に記憶されるデータは、上記の例に限られない。データ記憶部200は、任意のデータを記憶可能である。本実施形態では、コード生成サーバ20が、業務支援システム1と連携する外部サービスのAIを利用する場合を例に挙げるので、データ記憶部200は、AIそのものを記憶しないものとするが、データ記憶部200は、AIそのものを記憶してもよい。即ち、本実施形態では、AIの実データが他サービスのシステムに記憶されている場合を例に挙げるが、データ記憶部200は、AIの実データを記憶してもよい。
図6は、コードの生成で利用されるAIの一例を示す図である。例えば、AIは、埋め込み表現の計算等の一連の処理を示すプログラムと、プログラムによって参照されるパラメータと、を含む。埋め込み表現は、AIがデータの意味を理解するための情報である。例えば、埋め込み表現は、多次元ベクトルで表現される。埋め込み表現は、データの特徴を示す特徴量と呼ばれることもある。埋め込み表現は、多次元ベクトル以外の他の形式で表現されてもよい。AIは、パラメータ以外の他のデータ(例えば、用語の辞書に相当するデータ)を含んでもよい。他のデータは、プログラムによって参照される。他のデータは、AIとは別データであってもよい。AIは、パラメータに基づいて、自身に入力された入力データの埋め込み表現を計算し、埋め込み表現に応じた出力を行う。例えば、パラメータは、重み及びバイアスである。
なお、AIのプログラム及びパラメータは、それぞれ公知のプログラム及びパラメータであってよい。例えば、AIのプログラム及びパラメータは、GPT(Generative Pre-trained Transformer)又はBERT(Bidirectional Encoder Representations from Transformers)等の大規模言語モデルで採用されているプログラム及びパラメータ、ニューラルネットワーク又はGAN(Generative Adversarial Networks)等の機械学習のモデルで採用されているプログラム及びパラメータ、これらの分類されない生成AI若しくは対話型AIで採用されているプログラム及びパラメータ、又はその他のプログラム及びパラメータであってもよい。AIのプログラム及びパラメータは、コンピュータソフトウェア分野の当業者が出願時の技術常識によって理解できる種々のプログラム及びパラメータであってよい。
本実施形態では、AIの一例として大規模言語モデル(例えば、GPT)を説明するので、AIのプログラムは、AIに入力された入力データを解析する処理を示す。AIのパラメータは、AIが自然言語としての意味を解析するために参照される重み及びバイアス等のパラメータである。AIは、学習によって調整されたパラメータに基づいて、自身に入力された入力データを言語解析し、言語解析の結果に応じた出力を行う。例えば、AIは、入力データが示す自然言語のテキストを、複数のトークンに分割する。AI、パラメータに基づいて、個々のトークンの意味を示す埋め込み表現を計算する。AIは、各トークンの埋め込み表現の並び順に基づいて、自然言語としての意味を理解する。AIは、必要に応じて、各トークンの埋め込み表現の並び順に応じた予測を行ってもよい。AI、埋め込み表現の並び順に応じた出力データを出力する。
本実施形態では、種々のコードがAIに学習されている場合を例に挙げる。AIは、業務支援システム1が対応可能なコード(例えば、JAVASCRIPT(登録商標))だけを学習してもよいが、本実施形態では、他のコードも学習しているものとする。AIは、種々の言語のコードに対応可能であってもよい。例えば、AIからの出力データは、入力データによって異なることもある。入力データが、何らかの質問である場合には、出力データは、当該質問に対する回答を示す。入力データが、コードの生成の指示である場合には、出力データは、コードを含む。この場合、出力データは、コードだけではなく、コードの解説を含んでもよい。出力データは、任意の種類の情報を含んでよい。
図6のように、本実施形態では、AIに対する入力データが、拡張内容情報、機能設定情報、テンプレートコード、仕様情報、及びデフォルトプロンプトを含む場合を例に挙げる。入力データに含まれるこれらの情報の詳細は、後述する。入力データは、少なくとも拡張内容情報を含めばよい。入力データは、本実施形態の例に限られない。例えば、機能設定情報、テンプレートコード、仕様情報、及びデフォルトプロンプトの少なくとも1つは、入力データに含まれなくてもよい。AIからの出力データは、コードである。出力データは、コードと、コード以外の情報(例えば、AIからの回答)と、を含んでもよい。AIからの出力データは、コードではなく、最終的にユーザに提供されるコードの生成に利用される中間的なコードであってもよい。
[拡張内容情報取得部]
拡張内容情報取得部201は、ユーザの入力に基づいて、業務支援システム1における業務支援機能の拡張内容に関する拡張内容情報を取得する。本実施形態では、ユーザが音声入力部46から音声を入力する場合を例に挙げるが、ユーザは、操作部44から入力を行ってもよい。例えば、ユーザは、操作部44から、AIに対する指示を入力してもよい。ユーザは、ユーザインタフェースとしてのパーツ(例えば、ボタン又はチェックボックス等の画像)を選択することによって、入力を行ってもよい。
拡張内容情報は、AIに対する指示である。拡張内容情報は、ユーザの意図ということもできる。拡張内容情報は、AIに対するプロンプトと呼ばれることもある。入力データに含まれる情報のうち、拡張内容情報以外の他の情報は、プロンプトとともにAIに入力される補足的な情報ということもできる。プロンプトという言葉の定義は、諸説あるが、AIに対して入力される情報がプロンプトに相当するのであれば、拡張内容情報以外の他の情報もプロンプトに相当する。プロンプトという言葉の定義は、公知の種々の定義であってよい。本実施形態では、業務支援機能の拡張のためにAIが利用されるので、拡張内容情報は、ユーザが業務支援機能の拡張を希望する内容(ユーザが希望するカスタマイズの内容)を示す。拡張内容情報は、自然言語で記述されるが、自然言語の意味がベクトル化された情報であってもよい。
本実施形態では、ユーザがボタンBを選択した場合に入力フォームFに入力されたテキストが拡張内容情報に相当する場合を例に挙げる。このため、拡張内容情報は、ユーザが業務支援機能の拡張を希望する具体的な内容を示すテキストである。ユーザがボタンBを選択すると、ユーザ端末40は、コード生成サーバ20に対し、入力フォームFに入力されたテキストである拡張内容情報を送信する。拡張内容情報取得部201は、ユーザ端末40から、拡張内容情報を取得する。拡張内容情報取得部201は、1つの拡張内容情報だけを取得してもよいし、複数の拡張内容情報を取得してもよい。
なお、拡張内容情報は、自然言語のテキストではなく、ユーザが入力した音声そのものであってもよい。この場合、拡張内容情報取得部201は、ユーザ端末40から音声である拡張内容情報を取得した後に、音声変換サーバ10に対し、拡張内容情報をテキストに変換するように依頼してもよい。拡張内容情報取得部201は、音声変換サーバ10から、テキストに変換された拡張内容情報を取得する。本実施形態では、AIが大規模言語モデルなので、テキストに変換された情報がAIに入力される。拡張内容情報取得部201は、ユーザ端末40から直接的に拡張内容情報を取得するのではなく、音声変換サーバ10、業務支援サーバ30、又は他のコンピュータを介して、間接的に拡張内容情報を取得してもよい。
[機能設定情報取得部]
機能設定情報取得部202は、業務支援機能の設定に関する機能設定情報を取得する。機能設定情報は、拡張対象となる業務支援機能の設定を示す。図2及び図3の例であれば、ユーザが選択したアプリのデータベース機能が、拡張対象となる業務支援機能に相当する。ユーザが選択したアプリは、拡張内容情報が取得された際に業務支援画面SCに表示されているアプリ(図2及び図3の例では、「議事録管理アプリ」)である。このため、機能設定情報は、ユーザが選択したアプリの設定を示す。機能設定情報取得部202は、1つの機能設定情報だけを取得してもよいし、複数の機能設定情報を取得してもよい。
本実施形態では、ユーザが選択したアプリの設定データが、後述の業務支援データベースDB2に格納されているので、機能設定情報取得部202は、業務支援データベースDB2に格納された設定データのうち、少なくとも1つの項目を、機能設定情報として取得する。機能設定情報取得部202は、設定データの全ての項目を、機能設定情報として取得してもよいが、本実施形態では、機能設定情報取得部202は、設定データのうち、ユーザが選択したアプリのフィールドの設定項目を、機能設定情報として取得する。機能設定情報取得部202は、設定データのうち、アクセス権の設定等の他の項目については、機能設定情報として取得しないものとする。
例えば、ユーザが、業務支援画面SCの入力フォームFにテキストが入力された状態でボタンBを選択すると、機能設定情報取得部202は、ユーザ端末40から、ユーザが選択したアプリのアプリIDを取得する。アプリIDは、業務支援画面SCの表示データ(例えば、HTMLデータ)に含まれているものとする。アプリIDは、URLの一部(例えば、ボタンBのリンクに含まれる引数))に含まれていてもよい。機能設定情報取得部202は、何らかの形で、拡張対象となるアプリのアプリIDを取得すればよい。機能設定情報取得部202は、音声変換サーバ10、業務支援サーバ30、又は他のコンピュータから、ユーザが選択したアプリのアプリIDを取得してもよい。
例えば、機能設定情報取得部202は、ユーザが選択したアプリのアプリIDに基づいて、業務支援サーバ30に対し、機能設定情報を要求する。要求には、アプリIDが含まれるものとする。業務支援サーバ30は、要求を受信すると、業務支援データベースDB2を参照し、アプリIDに関連付けられた設定データを取得する。業務支援サーバ30は、当該設定データの少なくとも一部(例えば、フィールドの設定項目)を、機能設定情報として取得する。業務支援サーバ30は、コード生成サーバ20に対し、機能設定情報を送信する。機能設定情報取得部202は、業務支援サーバ30から、機能設定情報を取得する。
図2及び図3の例であれば、ユーザが選択した議事録管理アプリには、「レコード番号」、「会議日」、「会議時間」、「出席者」、「課題」、「決定事項」、及び「次のステップ」といった7つのフィールドが存在する。機能設定情報取得部202は、これら7つのフィールドのフィールドコード、フィールド名、フィールドタイプ、並び順、又はこれらの組み合わせを含む機能設定情報を取得する。フィールドの設定項目として、他の設定項目が存在する場合には、機能設定情報取得部202は、他の設定項目を含む機能設定情報を取得してもよい。
なお、機能設定情報は、拡張対象となる業務支援機能に応じた設定を示せばよい。機能設定情報は、本実施形態の例に限られない。例えば、機能設定情報は、アプリのフィールド以外の他の設定を示してもよい。機能設定情報は、アプリ名、アプリを管理する管理者用のメモ、ユーザがデータを入力するためのフォームの配置、リストLの表示形式、アプリに格納されたデータに基づいて表示されるグラフの形式、アプリのアイコン、アプリのその他のデザイン、通知の設定、アクセス権の設定、又はその他の設定を示してもよい。
また、ユーザが、アプリ以外の他のデータベース機能を拡張する場合には、機能設定情報取得部202は、他のデータベース機能の設定を示す機能設定情報を取得すればよい。ユーザがコミュニケーション機能を拡張する場合には、機能設定情報は、コミュニケーション機能の設定(例えば、スレッド名、スレッドのコメント等の情報の転記のための設定、又はスレッドのレイアウト)を示す機能設定情報を取得すればよい。
例えば、ユーザがスケジュール機能を拡張する場合には、機能設定情報は、スケジュール機能の設定(例えば、スケジュール機能を利用するユーザの設定、スケジュール機能で予約される会議室等の施設の設定、又はスケジュール機能の画面のレイアウト)を示す機能設定情報を取得すればよい。ユーザがメール管理機能を拡張する場合には、機能設定情報は、メール管理機能の設定(例えば、メールのフォルダ名、フォルダへの仕分けの設定、又はメール機能の画面のレイアウト)を示す機能設定情報を取得すればよい。これらの機能設定情報は、業務支援データベースDB2に格納されているものとする。
[テンプレートコード取得部]
テンプレートコード取得部203は、予め用意されたテンプレートコードであって、業務支援機能に関するテンプレートコードを取得する。本実施形態では、テンプレートデータベースDB1にテンプレートコードが格納されているので、テンプレートコード取得部203は、テンプレートデータベースDB1から、テンプレートコードを取得する。テンプレートコード取得部203は、テンプレートデータベースDB1以外の他のデータベース、コード生成サーバ20以外の他のコンピュータ、又は外部情報記憶媒体から、テンプレートコードを取得してもよい。テンプレートコード取得部203は、1つのテンプレートコードだけを取得してもよいし、複数のテンプレートコードを取得してもよい。
本実施形態では、テンプレートコード取得部203は、拡張内容情報に基づいて、複数のテンプレートコードが格納されたテンプレートデータベースDB1を検索することによって、テンプレートコードを取得する。例えば、テンプレートコード取得部203は、拡張内容情報をクエリとして利用し、テンプレートデータベースDB1を検索する。テンプレートコード取得部203は、テンプレートデータベースDB1に格納されたテンプレートコードのうち、検索でヒットしたテンプレートコードを取得する。検索のアルゴリズムは、公知の検索エンジン等で採用されているアルゴリズムと同様であってよい。
例えば、テンプレートコード取得部203は、拡張内容情報が示す自然言語のテキストのベクトル情報を取得する。自然言語のテキストのベクトル化は、公知の方法(例えば、Word2Vec又はFastText)によって行われてよい。テンプレートコード取得部203は、テンプレートデータベースDB1にインデックスとして格納されたベクトル情報のうち、拡張内容情報が示す自然言語のテキストのベクトル情報と距離的に近いベクトル情報が関連付けられたテンプレートコードを取得する。
例えば、テンプレートコード取得部203は、拡張内容情報が示す自然言語のテキストのベクトル情報と最も距離が近いベクトル情報が関連付けられたテンプレートコードを取得してもよい。テンプレートコード取得部203は、拡張内容情報が示す自然言語のテキストのベクトル情報との距離が閾値未満のベクトル情報が関連付けられたテンプレートコードを取得してもよい。テンプレートコード取得部203は、拡張内容情報が示す自然言語のテキストのベクトル情報との距離が近い順に所定数のテンプレートコードを取得してもよい。ベクトル情報がインデックスとして利用されることによって、テンプレートコード取得部203は、キーワードとしてはマッチしなかったとしても、ユーザの意図に沿ったテンプレートコードを取得できるので、より柔軟な検索が可能になる。
なお、テンプレートコード取得部203がテンプレートコードを取得する方法は、上記の例に限られない。テンプレートコード取得部203は、予め用意されたテンプレートコードを取得すればよい。例えば、テンプレートコード取得部203は、ベクトル情報以外の他のインデックス(例えば、キーワード)に基づいて検索を実行することによって、テンプレートコードを取得してもよい。テンプレートコード取得部203は、特に検索を実行することなく、予め用意されたテンプレートコードを取得してもよい。例えば、テンプレートコード取得部203は、予め用意されたテンプレートコードの全てを取得してもよいし、ランダムに選択されたテンプレートコードを取得してもよい。テンプレートコード取得部203は、複数のテンプレートコードのうち、ユーザが選択したテンプレートコードを取得してもよい。
[仕様情報取得部]
仕様情報取得部204は、コードに要求される仕様に関する仕様情報を取得する。コードに用要求される仕様は、業務支援システム1を運営する事業者が定めた仕様である。コードに要求される仕様は、コードに対する要求が定義されたガイドラインということもできる。例えば、コードに用要求される仕様は、業務支援システム1のAPIの仕様、コーディングのガイドラインで規定される仕様、セキュリティのガイドラインで規定される仕様、業務支援システム1で利用可能な文字コードの仕様、業務支援システム1で利用可能な変数の仕様、ID若しくはクラスの属性の仕様、URLの記述形式の仕様、又はその他の仕様であってもよい。これらの仕様は、自然言語で記述されているものとするが、自然言語で記述された仕様がベクトル化されていてもよい。
仕様情報は、仕様の詳細を示す情報であればよい。例えば、仕様情報は、コードに要求される仕様を示すテキストを含む。即ち、仕様情報は、自然言語で仕様の詳細が記述された情報である。仕様情報は、任意の形式であってよい。例えば、仕様情報は、テキストファイル、リッチテキストファイル、文書ファイル、HTMLファイル、又はその他の形式であってもよい。仕様情報は、テキスト以外にも、表又は図といった他の要素を含んでもよい。本実施形態では、データ記憶部200が仕様情報を記憶する場合を例に挙げる。例えば、仕様情報取得部204は、データ記憶部200を参照し、仕様情報を取得する。仕様情報取得部204は、コード生成サーバ20以外の他のコンピュータ、又は、外部情報記憶媒体から、仕様情報を取得してもよい。仕様情報取得部204は、1つの仕様情報だけを取得してもよいし、複数の仕様情報を取得してもよい。
なお、業務支援機能ごとに、当該業務支援機能に特有の仕様情報が用意されていてもよい。例えば、アプリの仕様情報、アプリ以外の他のデータベース機能の仕様情報、コミュニケーション機能の仕様情報、スケジュール機能の仕様情報、及びメール管理機能の仕様情報の各々が、互いに別々に用意されていてもよい。仕様情報取得部204は、複数の業務支援機能のうち、拡張対象となる業務支援機能の仕様情報を取得すればよい。
[デフォルトプロンプト取得部]
デフォルトプロンプト取得部205は、予め用意されたデフォルトプロンプトであって、コードの生成に関するデフォルトプロンプトを取得する。本実施形態では、業務支援システム1を運営する事業者がデフォルトプロンプトを用意する場合を例に挙げるが、デフォルトプロンプトは、任意の者によって用意されてよい。例えば、ユーザがデフォルトプロンプトを用意してもよいし、ユーザが所属する組織の他のユーザがデフォルトプロンプトを用意してもよい。ユーザ同士でデフォルトプロンプトが共用されてもよい。デフォルトプロンプトは、業務支援システム1を運営する事業者と協力する他の事業者によって用意されてもよい。
本実施形態では、データ記憶部200がデフォルトプロンプトを記憶する場合を例に挙げる。例えば、デフォルトプロンプト取得部205は、データ記憶部200を参照し、デフォルトプロンプトを取得する。デフォルトプロンプト取得部205は、コード生成サーバ20以外の他のコンピュータ、又は、外部情報記憶媒体から、デフォルトプロンプトを取得してもよい。デフォルトプロンプト取得部205は、1つのデフォルトプロンプトだけを取得してもよいし、複数のデフォルトプロンプトを取得してもよい。デフォルトプロンプト取得部205は、複数のデフォルトプロンプトのうち、拡張内容情報に応じたデフォルトプロンプトを取得してもよい。
例えば、AIは、種々の言語のコードを生成可能なことがある。一方で、業務支援システム1は、特定の言語(例えば、JAVASCRIPT(登録商標))にだけ対応していることがある。この場合に、ユーザが当該特定の言語を指定しないこともある。このため、デフォルトプロンプトとして、特定の言語のコードをAIが生成することを示すテキストが用意されていてもよい。このようなデフォルトプロンプトによって、AIは、どの言語のコードを生成すればよいかを特定できる。
例えば、デフォルトプロンプトは、「あなたはユーザのコードの作成を支援するAIです。」といったように、AIが果たすべき役割を示すテキストであってもよい。このようなデフォルトプロンプトによって、AIは、自身が果たすべき役割を特定できる。他にも例えば、デフォルトプロンプトは、「あなたが生成したコードの解説をして下さい。」といったように、AIがコードとともにユーザに何らかの回答をすることを示すテキストであってもよい。このようなデフォルトプロンプトによって、AIは、コードとともに、ユーザに対する回答(例えば、コードの解説)を生成すべきことを特定できる。
例えば、デフォルトプロンプトは、拡張内容情報、機能設定情報、テンプレートコード、及び仕様情報の各々がどのような情報であるかを示すテキストであってもよい。デフォルトプロンプトは、「この情報は、ユーザが希望する拡張内容を示す拡張内容情報です。この情報に基づいて、ユーザの希望に沿ったコードを生成して下さい。」といったテキストであってもよい。このようなデフォルトプロンプトによって、AIは、拡張内容情報がユーザの希望を示すことを特定できる。機能設定情報、テンプレートコード、及び仕様情報の各々についても同様に、デフォルトプロンプトは、これらの情報の詳細を示すテキストであってもよい。このようなデフォルトプロンプトによって、AIは、機能設定情報、テンプレートコード、及び仕様情報の各々をどのように利用すればよいかを特定できる。
[コード生成部]
コード生成部206は、コード生成処理を実行する。コード生成処理は、コードを生成する処理である。コード生成部206は、拡張内容情報と、AIと、に基づいて、業務支援機能の拡張のためのコードを生成する。例えば、コード生成部206は、拡張内容情報を含む入力データをAIに入力する。本実施形態では、AIが外部システムに記憶されているので、コード生成部206は、外部システムに対し、入力データを送信する。AIがデータ記憶部200に記憶されている場合には、コード生成部206は、データ記憶部200に記憶されたAIに対し、入力データを入力すればよい。
例えば、AIは、予め行われた学習によって調整されたパラメータに基づいて、入力データの埋め込み表現を計算する。本実施形態では、GPTを一例とする大規模言語モデルがAIに相当する場合を例に挙げるので、AIは、パラメータに基づいて、入力データをトークンに分割して個々のトークンの埋め込み表現を計算する。AIは、必要に応じて、トークンの埋め込み表現の並び順に基づいて、続きを予測する。AIは、当該並び順に基づいて、出力データとしてコードを出力する。例えば、AIは、種々の言語の学習結果からがコードを生成するコードインタプリタと呼ばれる公知の機能に基づいて、コードを生成してもよい。AIは、コードだけではなく、ユーザに対する回答のテキストを含む出力データを出力してもよい。コード生成部206は、AIが出力した出力データに含まれるコードを取得することによって、拡張内容情報に応じたコードを生成する。
例えば、拡張内容情報は、ユーザの入力に基づいて取得されるので、ユーザが希望する業務支援機能の拡張内容が拡張内容情報に示されている。図2及び図3の例であれば、会議日が最も過去のレコードを緑色にするといった具体的な内容が拡張内容情報に示されている。AIは、このような拡張内容情報を言語解析によって理解し、拡張対象となる業務支援機能の拡張のためのコードを生成できる。ノーコード又はローコードの業務支援システム1の機能拡張のためにAIがコードを生成することは、出願時点で新規な構成ではあるが、AIがプロンプトに基づいてコードを生成する技術自体は、出願時点で公知の技術が利用されてよい。このため、当業者は、本実施形態の記載と、出願時の技術常識と、によって、本実施形態のAIがコードを生成する処理を実施可能な程度に理解できる。
本実施形態では、コード生成部206は、機能設定情報に更に基づいて、コードを生成する。例えば、コード生成部206は、拡張内容情報及び機能設定情報を含む入力データをAIに入力する。AIは、拡張内容情報だけではなく、機能設定情報に基づいて、埋め込み表現を計算する。埋め込み表現は、拡張内容情報だけではなく、機能設定情報が示す設定も反映されている。AIは、当該計算された埋め込み表現に応じたコードを含む出力データを出力する。コード生成部206は、AIが出力した出力データに含まれるコードを取得することによって、機能設定情報に応じたコードを生成する。
例えば、ユーザが選択したアプリのフィールドの設定項目を機能設定情報が示す場合、AIは、機能設定情報が示すフィールドの設定項目に応じた埋め込み表現に基づいて、どのフィールドに対する処理を実行すればよいかを特定する。AIは、当該特定したフィールドに対する処理を示すコードを生成する。図2及び図3の例であれば、AIは、拡張内容情報に応じた埋め込み表現から、会議日のフィールドに対する処理が必要であることを特定する。AIは、機能設定情報に応じた埋め込み表現から、ユーザが選択したアプリに会議日のフィールドがあることを特定し、当該フィールドに対する処理を実行すればよいことを特定する。AIは、これらの特定結果に基づいて、会議日のフィールドに対する処理を示すコードを含む出力データを生成する。
本実施形態では、コード生成部206は、テンプレートコードに更に基づいて、コードを生成する。例えば、コード生成部206は、拡張内容情報及びテンプレートコードを含む入力データをAIに入力する。AIは、拡張内容情報だけではなく、テンプレートコードに基づいて、埋め込み表現を計算する。埋め込み表現は、拡張内容情報だけではなく、テンプレートコードが示す設定も反映されている。AIは、当該計算された埋め込み表現に応じたコードを含む出力データを出力する。コード生成部206は、AIが出力した出力データに含まれるコードを取得することによって、テンプレートコードに応じたコードを生成する。
例えば、拡張内容情報に応じたテンプレートコードが取得される場合、コード生成部206は、AIは、拡張内容情報に応じたテンプレートコードに応じた埋め込み表現に基づいて、どのようなコードを生成すればよいかを大まかに特定する。AIは、当該大まかに特定したコードに基づいて、拡張内容情報に応じたコードを生成する。図2及び図3の例では、レコードの背景色を変える処理を示すテンプレートコードが取得される。AIは、当該テンプレートコードに基づいて、レコードの背景色を変えるにはどのようなコードであればよいかを大まかに特定し、会議日が最も古いレコードの背景色を変えるコードを含む出力データを生成する。
本実施形態では、コード生成部206は、仕様情報に更に基づいて、コードを生成する。例えば、コード生成部206は、拡張内容情報及び仕様情報を含む入力データをAIに入力する。AIは、拡張内容情報だけではなく、仕様情報に基づいて、埋め込み表現を計算する。埋め込み表現は、拡張内容情報だけではなく、仕様情報が示す設定も反映されている。AIは、当該計算された埋め込み表現に応じたコードを含む出力データを出力する。コード生成部206は、AIが出力した出力データに含まれるコードを取得することによって、仕様情報に応じたコードを生成する。
例えば、業務支援システム1のAPIの仕様が仕様情報に示されている場合、コード生成部206は、AIは、仕様情報に応じたAPIの仕様に応じた埋め込み表現に基づいて、どのような仕様のコードを生成すればよいかを特定する。AIは、当該大まかに特定した仕様に基づいて、仕様情報に応じたコードを生成する。図2及び図3の例では、拡張対象となる業務支援機能がアプリなので、アプリのAPIの仕様が仕様情報に示されている。AIは、当該仕様情報に基づいて、アプリのAPIの仕様を特定し、当該仕様を満たすコードを含む出力データを生成する。
本実施形態では、コード生成部206は、デフォルトプロンプトに更に基づいて、コードを生成する。例えば、コード生成部206は、拡張内容情報及びデフォルトプロンプトを含む入力データをAIに入力する。AIは、拡張内容情報だけではなく、デフォルトプロンプトに基づいて、埋め込み表現を計算する。埋め込み表現は、拡張内容情報だけではなく、デフォルトプロンプトが示す設定も反映されている。AIは、当該計算された埋め込み表現に応じたコードを含む出力データを出力する。コード生成部206は、AIが出力した出力データに含まれるコードを取得することによって、デフォルトプロンプトに応じたコードを生成する。
例えば、AIが生成すべきコードの言語がデフォルトプロンプトに示されている場合、コード生成部206は、AIは、デフォルトプロンプトに応じた埋め込み表現に基づいて、どの言語のコードを生成すればよいかを特定する。AIは、当該言語のコードを生成する。図2及び図3の例では、ユーザ端末40のブラウザ上で実行される言語でコードが生成される必要があるので、デフォルトプロンプトには、当該言語が示されている。AIは、当該デフォルトプロンプトに基づいて、自身が生成すべきコードの言語を特定し、当該言語のコードを含む出力データを生成する。
なお、コード生成部206は、他の情報を含む入力データに基づいて、コードを生成してもよい。例えば、コード生成部206は、ユーザが選択したアプリの機能設定情報だけではなく、アプリのレコードに格納されたデータを含む入力データに基づいて、コードを生成してもよい。コード生成部206は、ユーザ自身に関するユーザ情報を含む入力データに基づいて、コードを生成してもよい。ユーザ情報は、ユーザのプロフィール、ユーザが所属する組織、又はその他の情報であってもよい。
[提供部]
提供部207は、ユーザに対し、コードを提供する。提供部207がコードを提供するとは、提供部207が、ユーザ端末40に対し、コードそのものを示すデータ、又は、コードの実行結果を示すデータを送信することである。提供部207は、ユーザ端末40に対し、直接的にこれらのデータを送信してもよいし、業務支援サーバ30等の他のコンピュータを介して間接的にこれらのデータを送信してもよい。本実施形態では、ユーザ端末40のブラウザ上でコードが実行されるので、提供部207は、ユーザ端末40に対し、コードそのものを示すデータ(例えば、コードを含むHTMLデータ)を送信する場合を例に挙げる。
本実施形態では、コード生成部206により生成されたコードは、業務支援サーバ30によってデプロイされたうえでユーザ端末40に送信される。デプロイは、拡張対象となる業務支援機能への展開である。図2及び図3の例であれば、デプロイは、ユーザが選択したアプリへのコードの展開である。例えば、提供部207は、業務支援サーバ30に対し、コード生成部206により生成されたコードのデプロイを依頼する。業務支援サーバ30は、デプロイの依頼を受け付けると、コード生成サーバ20から依頼を受け付けたコードをデプロイする。例えば、業務支援サーバ30は、業務支援画面SCの表示データ(例えば、HTMLデータ)にコードを埋め込むことによって、デプロイを行う。コードは、表示データの任意の位置に埋め込まれてよい。
例えば、提供部207は、コードのデプロイ結果を示す画面を、ユーザのユーザ端末40に表示させるための処理を実行することによって、ユーザに対し、コードを提供する。図3の下側の業務支援画面SCは、コードのデプロイ結果を示す画面の一例である。このため、図3の下側の業務支援画面SCについて説明している箇所は、コードのデプロイ結果を示す画面と読み替えることができる。コードのデプロイ結果を示す画面は、拡張対象となる業務支援機能の画面であればよい。デプロイの方法自体は、公知の方法であってよい。例えば、業務支援サーバ30は、コードを実行して、その実行結果を示すデータだけをユーザ端末40に送信してもよい。
本実施形態では、提供部207が、業務支援サーバ30に対し、コードのデプロイを依頼する場合を例に挙げるが、提供部207は、業務支援サーバ30以外の他のコンピュータに対し、コードのデプロイを依頼してもよい。例えば、ユーザ端末40がデプロイの機能を有する場合には、提供部207は、ユーザ端末40に対し、コードのデプロイを依頼することによって、ユーザにコードを提供してもよい。提供部207は、自身でコードをデプロイし、コードのデプロイ結果を示す業務支援画面SCをユーザ端末40に表示させることによって、ユーザにコードを提供してもよい。提供部207は、特にデプロイを実行せずに、単にコードを示すデータだけをユーザ端末40に送信することによって、ユーザにコードを提供してもよい。
例えば、ユーザは、自身の希望に沿った機能拡張が行われていることを確認すると、コードの生成を終了するための操作を行う。この場合、業務支援サーバ30は、ユーザに関連付けてコードをデータ記憶部300に保存する。ユーザは、次回以降、データ記憶部300に保存されたコードを利用できる。例えば、ユーザが、AIでコードを生成したアプリを再度呼び出すと、当該アプリの業務支援画面SCの表示データには、当該コードを含むようになる。ユーザは、データ記憶部300に保存されたコードを修正又は削除することもできる。
[3-3.業務支援サーバで実現される機能]
例えば、業務支援サーバ30は、データ記憶部300及び業務支援部301を含む。データ記憶部300は、記憶部32により実現される。業務支援部301は、制御部31により実現される。
[データ記憶部]
データ記憶部300は、業務支援処理に必要なデータを記憶する。例えば、データ記憶部300は、業務支援システム1の各種データが格納された業務支援データベースDB2を記憶する。本実施形態では、ユーザがアプリの機能を拡張する場面を例に挙げるので、アプリの各種データが業務支援データベースDB2に格納される場合を例に挙げる。
図7は、業務支援データベースDB2の一例を示す図である。例えば、業務支援データベースDB2には、アプリID、アプリ名、アプリ設定データ、及びレコードデータが格納される。業務支援データベースDB2に格納されるデータは、図7の例に限られない。例えば、業務支援データベースDB2には、アプリ以外の他のデータ(例えば、ユーザ同士がコミュニケーションを取るスレッドのデータ、スケジュールのデータ、又はメールのデータ)が格納されてもよい。
アプリIDは、アプリを識別可能なIDである。アプリ名は、アプリの名称である、アプリ設定データは、ユーザがノーコード又はローコードで指定したアプリの設定を示す。例えば、アプリ設定データは、先述したフィールドの設定、グラフの設定、リストLの表示の設定、アクセス権の設定、又はその他の設定であってよい。AIにより生成されたコードは、アプリ設定データの一部として保存されてもよい。レコードデータは、レコードに格納されたデータである。ユーザがアプリを新規作成すると、業務支援データベースDB2には、新たなアプリのアプリID等のデータが格納される。ユーザがアプリを更新すると、業務支援データベースDB2の当該アプリのデータが更新される。
なお、データ記憶部300に記憶されるデータは、上記の例に限られない。データ記憶部300は、業務の支援に必要なデータを記憶すればよい。例えば、データ記憶部300は、業務支援画面SCの表示に必要なデータ(例えば、HTMLデータ又は画像データ)を記憶してもよいし、コードのデプロイに必要なデータ(例えば、デプロイのプログラム)を記憶してもよい。
[業務支援部]
業務支援部301は、ユーザの業務を支援するための業務支援処理を実行する。業務支援処理は、ユーザに対し、業務支援機能を提供するための処理である。例えば、業務支援処理は、業務支援画面SCをユーザ端末40に表示させる処理である。本実施形態では、コード生成サーバ20が生成したコードによってアプリの機能が拡張されるので、業務支援処理は、AIが生成したコードをデプロイし、その結果を業務支援画面SCに表示させる処理であってもよい。業務支援画面SCの表示のための処理と、AIが生成したコードをデプロイするための処理と、の詳細は、先述した通りである。
[3-4.ユーザ端末で実現される機能]
例えば、ユーザ端末40は、データ記憶部400、表示制御部401、及び操作受付部402を含む。データ記憶部400は、記憶部42により実現される。表示制御部401及び操作受付部402の各々は、制御部41により実現される。
[データ記憶部]
データ記憶部400は、業務支援のためのデータを記憶する。例えば、データ記憶部400は、業務支援システム1の各種画面の表示のためのブラウザを記憶する。例えば、データ記憶部400は、業務支援システム1専用のアプリケーションを記憶する。データ記憶部400は、業務支援画面SCの表示データを記憶する。
[表示制御部]
表示制御部401は、業務支援システム1における各種画面を、表示部45に表示させる。例えば、表示制御部401は、音声変換サーバ10、コード生成サーバ20、又は業務支援サーバ30から受信したデータに基づいて、業務支援画面SCを表示部45に表示させる。
[操作受付部]
操作受付部402は、業務支援システム1における各種操作を受け付ける。例えば、操作受付部402は、業務支援画面SCに対する操作を受け付ける。操作受付部402が受け付けた操作内容を示すデータは、音声変換サーバ10、コード生成サーバ20、又は業務支援サーバ30に適宜送信される。
[4.業務支援システムで実行される処理]
図8は、業務支援システム1で実行される処理の一例を示す図である。制御部11,21,31,41が、それぞれ記憶部12,22,32,42に記憶されたプログラムを実行することによって、図8の処理が実行される。図8の各処理は、業務支援方法に含まれる処理の一例である。図8では、アプリが有する業務支援機能が拡張される場合の処理の一例が示されている。なお、図8において、ユーザ端末40は、音声変換サーバ10及びコード生成サーバ20の各々と直接的に通信するのではなく、業務支援サーバ30を介して間接的に通信してもよい。
図8のように、ユーザ端末40は、業務支援サーバ30との間で、ユーザが選択したアプリの業務支援画面SCを表示させるための処理を実行する(S1)。S1では、業務支援サーバ30は、業務支援データベースDB2に基づいて、ユーザが選択したアプリの業務支援画面SCの表示データを生成してユーザ端末40に送信する。ユーザ端末40は、業務支援画面SCの表示データを受信すると、業務支援画面SCを表示部45に表示させる。以降、ユーザが、図2及び図3の流れで、アプリが有する業務支援機能を拡張する。
ユーザ端末40は、音声入力部46によりユーザに対する音声入力を受け付けると、音声変換サーバ10に対し、ユーザが入力した音声を示す入力音声データを送信する(S2)。音声変換サーバ10は、ユーザ端末40から、入力音声データを取得する(S3)。音声変換サーバ10は、音声変換プログラムと、入力音声データと、に基づいて、音声変換処理を実行する(S4)。音声変換サーバ10は、ユーザが入力した音声のテキストを示す入力テキストデータを送信する(S5)。ユーザ端末40は、音声変換サーバ10から、入力テキストデータを取得する(S6)。
ユーザ端末40は、ユーザがボタンBを選択すると、コード生成サーバ20に対し、拡張内容情報を送信する(S7)。S7では、ユーザ端末40は、コード生成サーバ20に対し、コードの生成を要求することになる。S7では、拡張対象となるアプリのアプリIDも送信される。コード生成サーバ20は、ユーザ端末40から、拡張内容情報を取得する(S8)。コード生成サーバ20は、業務支援サーバ30との間で、機能設定情報を取得するための処理を実行する(S9)。S9では、コード生成サーバ20は、業務支援サーバ30に対し、拡張対象となるアプリのアプリIDを送信する。業務支援サーバ30は、業務支援データベースDB2に基づいて、当該アプリIDに関連付けられたアプリ設定データに基づいて、コードの生成に必要な機能設定情報を取得する。業務支援サーバ30は、コード生成サーバ20に対し、機能設定情報を送信する。コード生成サーバ20は、業務支援サーバ30から機能設定情報を取得する。
コード生成サーバ20は、テンプレートデータベースDB1に基づいて、テンプレートコードを取得する(S10)。S10では、コード生成サーバ20は、拡張内容情報に基づいて、テンプレートデータベースDB1を検索する。コード生成サーバ20は、検索でヒットしたテンプレートコードを取得する。コード生成サーバ20は、記憶部22に記憶された仕様情報を取得する(S11)。コード生成サーバ20は、記憶部22に記憶されたデフォルトプロンプトを取得する(S12)。コード生成サーバ20は、S8~S12で取得した各情報を含む入力データと、AIと、に基づいて、コードを生成する(S13)。S13では、コード生成サーバ20は、AIを管理する外部システムに対し、入力データを送信する。コード生成サーバ20は、外部システムから、AIが生成したコードを含む出力データを取得する。
コード生成サーバ20は、業務支援サーバ30及びユーザ端末40の間で、ユーザにコードを提供するための処理を実行し(S14)、本処理は終了する。S14では、コード生成サーバ20は、業務支援サーバ30に対し、S13で生成したコードのデプロイを依頼する。業務支援サーバ30は、コードをデプロイして業務支援画面SCの表示データを生成する。業務支援サーバ30は、ユーザ端末40に対し、業務支援画面SCの表示データを送信する。ユーザ端末40は、業務支援画面SCの表示データを受信すると、表示データに含まれるコードを実行して業務支援画面SCを表示部45に表示させる。AIからの回答の音声出力が必要な場合には、音声変換サーバ10は、コード生成サーバ20からAIの回答を示すデータを取得し、テキストを音声に変換する処理を実行する。当該変換された音声は、ユーザ端末40で出力される。
[5.実施形態のまとめ]
本実施形態の業務支援システム1は、ノーコード又はローコードでユーザの業務を支援可能である。業務支援システム1は、ユーザの入力に基づいて、拡張内容情報を取得する。業務支援システム1は、拡張内容情報と、AIと、に基づいて、業務支援機能の拡張のためのコードを生成する。業務支援システム1は、ユーザに対し、コードを提供する。これにより、ユーザは、コードを入力しなくても、業務支援システム1が拡張内容情報を取得するための入力を行えば、業務支援機能を拡張できるので、業務支援システム1は、ユーザの利便性を高めることができる。例えば、ノーコード又はローコードの業務支援システム1のユーザは、コードの知識がない又はあまり多くないことがある。ユーザは、コードの知識を得なくても、業務支援システム1のコード生成処理によって、手軽に業務支援機能を拡張できる。コードの知識があるユーザも、コードを入力する手間がなくなるので、業務支援システム1は、コードの知識があるユーザの利便性を高めることができる。例えば、非AIのコード生成ツールは、限定的な機能しかユーザに提供できないことがあり、ユーザの多様な要求に応えることができない。業務支援システム1は、AIを利用することによって、ユーザの多様な要求に応えることができる。業務支援システム1は、ユーザの具体的な要求に応じたカスタマイズが可能なコードを生成できる。
また、業務支援システム1は、機能設定情報を取得する。業務支援システム1は、機能設定情報に更に基づいて、コードを生成する。これにより、業務支援システム1は、ユーザの入力だけではなく、拡張対象となる業務支援機能の設定に応じたコードを生成できる。業務支援システム1は、ユーザが拡張しようとしている業務支援機能に特有のコードを生成することによって、ユーザの希望に沿ったコードを生成しやすくなる。例えば、図2及び図3の例であれば、業務支援システム1は、ユーザが拡張しようとしているアプリのフィールド等の設定に応じたコードを生成できるので、ユーザの希望に沿ったコードを生成しやすくなる。
また、業務支援システム1は、テンプレートコードを取得する。業務支援システム1は、テンプレートコードに更に基づいて、コードを生成する。これにより、業務支援システム1は、予め定められた形式から逸脱しないコードを生成できる。例えば、業務支援システム1は、汎用的なAIを利用してコードを生成すると、業務支援とは異なる目的のコードを生成してしまう可能性がある。AIは、業務支援システム1で用意されたテンプレートコードに基づいてコードを生成するので、業務支援のためのコードを生成しやすくなる。即ち、AIは、テンプレートコードを参考にして、拡張内容情報に応じたコードを生成できる。業務支援システム1は、ユーザの希望に沿ったコードを生成しやすくなる。
また、業務支援システム1は、拡張内容情報に基づいて、複数のテンプレートコードが格納されたテンプレートデータベースDB1を検索することによって、テンプレートコードを取得する。これにより、業務支援システム1は、拡張内容情報に応じたテンプレートコードに基づいて、ユーザの希望に沿ったコードを生成しやすくなる。例えば、業務支援システム1は、ユーザの希望に沿ったテンプレートコードを検索し、当該テンプレートコードに基づいてコードを生成できるので、ユーザの希望に沿ったコードを生成しやすくなる。
また、業務支援システム1は、仕様情報を取得する。業務支援システム1は、仕様情報に更に基づいて、コードを生成する。これにより、業務支援システム1は、業務支援システム1に特有の仕様を満たすコードを生成できる。例えば、汎用的なAIは、業務支援システム1に特有の仕様に関係なく、一般的なコードを生成する可能性がある。AIは、仕様情報によって、業務支援システム1に特有の仕様を把握できるので、業務支援システム1は、ユーザの希望に沿ったコードを生成しやすくなる。例えば、業務支援システム1は、セキュリティの仕様に沿ったコードを生成できるので、セキュリティのリスクを低減できる。
また、業務支援システム1は、デフォルトプロンプトを取得する。業務支援システム1は、デフォルトプロンプトに更に基づいて、コードを生成する。これにより、業務支援システム1は、ユーザの入力で不足する項目をデフォルトプロンプトで補完したうえで、コードを生成できる。例えば、ユーザが、何の言語のコードをAIに生成させるかを入力しなかったとしても、業務支援システム1は、ある特定の言語をデフォルトプロンプトで定めておくことによって、当該言語のコードを生成できる。
また、業務支援システム1は、コードのデプロイ結果を示す業務支援画面SCを、ユーザ端末40に表示させるための処理を実行することによって、ユーザに対し、コードを提供する。これにより、業務支援システム1は、コードの実行結果をユーザに確認させることができるので、ユーザの利便性を高めることができる。業務支援システム1は、コードの生成からデプロイまでのプロセスを一連の流れで実行できるので、当該流れを迅速化できる。
[6.変形例]
なお、本開示は、以上説明した実施形態に限定されない。本開示は、本開示の趣旨を逸脱しない範囲で、適宜変更可能である。
図9は、変形例の業務支援システム1で実現される機能の一例を示す図である。図11のように、以降説明する変形例では、修正内容情報取得部208、修正部分コード生成部209、コード修正部210、補完内容情報取得部211、表示画面情報取得部212、及びユーザ属性情報取得部213が実現される。修正内容情報取得部208、修正部分コード生成部209、コード修正部210、補完内容情報取得部211、及び表示画面情報取得部212、及びユーザ属性情報取得部213の各々は、制御部21によって実現される。
[6-1.変形例1]
例えば、業務支援機能を拡張したい拡張内容が複数存在することがある。この場合、ユーザは、AIに対し、次々と拡張内容情報を指示できるようにしてもよい。変形例1では、図2及び図3のように、会議日が最も過去のレコードを緑色にする機能がアプリに追加された後に、会議日が最も新しいレコードを赤色にする機能と、出席者に特定のユーザがいるレコードを複製する機能と、が追加される場合を例に挙げる。ユーザは、合計で3回の入力を行うことになる。
変形例1の拡張内容情報取得部201は、ユーザが新たな入力を行うたびに、拡張内容情報を取得する。例えば、図3の下側の業務支援画面SCの状態で、ユーザは、会議日が最も新しいレコードを赤色にする旨の音声入力を行う。AIは、ユーザの音声入力に応じた拡張内容情報に基づいて、会議日が最も新しいレコードを赤色にするためのコードを生成する。その後、ユーザは、出席者に特定のユーザがいるレコードを複製する旨の音声入力を行う。AIは、ユーザの音声入力に応じた拡張内容情報に基づいて、出席者に特定のユーザがいるレコードを複製するためのコードを生成する。このように、拡張内容情報取得部201は、ユーザが次々と入力を行うと、そのたびに拡張機能情報を取得する。
変形例1のコード生成部206は、拡張内容情報の履歴に更に基づいて、コードを生成する。拡張内容情報の履歴は、過去の入力に基づいて取得された拡張内容情報である。履歴には、少なくとも1つの拡張内容情報が含まれる。拡張内容情報の履歴は、データ記憶部200に記憶されるものとする。コード生成部206は、データ記憶部200に記憶された拡張内容情報の履歴を取得して、コードを生成する。コード生成部206は、ユーザ端末40等の他のコンピュータから、拡張内容情報の履歴を取得してもよい。ユーザの1回目の入力時には、拡張内容情報の履歴が存在しないので、コード生成部206は、1回目の入力時の拡張内容情報に基づいて、コードを生成する。この処理は、実施形態で説明した通りである。コード生成部206は、ユーザの2回目の入力以降で、拡張内容情報の履歴に更に基づいて、コードを生成する。
例えば、コード生成部206は、新たな拡張内容情報と、拡張内容情報の履歴と、を含む入力データをAIに入力する。AIは、新たな拡張内容情報だけではなく、拡張内容情報の履歴に基づいて、埋め込み表現を計算する。埋め込み表現は、新たな拡張内容情報だけではなく、拡張内容情報の履歴も反映されている。AIは、当該計算された埋め込み表現に応じたコードを含む出力データを出力する。コード生成部206は、AIが出力した出力データに含まれるコードを取得することによって、履歴に応じたコードを生成する。
例えば、ユーザの2回目の入力時に、コード生成部206は、2回目の入力に応じた新たな拡張内容情報と、拡張内容情報の履歴である1回目の入力時の拡張内容情報と、を含む入力データをAIに入力する。ユーザの3回目の入力時に、コード生成部206は、3回目の入力に応じた新たな拡張内容情報と、拡張内容情報の履歴である1回目及び2回目の各々の入力時の拡張内容情報と、を含む入力データをAIに入力する。ユーザの4回目以降の入力時も同様に、コード生成部206は、新たな拡張内容情報と、それまでの入力に応じた拡張内容情報の履歴と、を含む入力データをAIに入力する。コード生成部206は、AIからの出力データに含まれるコードを取得する。
変形例1の業務支援システム1は、ユーザが新たな入力を行うたびに、拡張内容情報を取得する。業務支援システム1は、拡張内容情報の履歴に更に基づいて、コードを生成する。これにより、業務支援システム1は、ユーザにより行われた最新の入力だけではなく、ユーザにより行われた過去の入力も考慮されたコードを生成できるので、ユーザの利便性を高めることができる。例えば、ユーザは、入力を繰り返すと、それまでに入力した情報を省略することがある。業務支援システム1は、拡張内容情報の履歴を利用することによって、ユーザが省略した情報をそれまでの文脈から特定し、コードを生成できる。
[6-2.変形例2]
例えば、AIは、ユーザの希望に沿ったコードを、1回で生成できないことがある。このため、ユーザは、AIが生成したコードの修正を指示できるようにしてもよい。図2及び図3の例であれば、ユーザは、図3の下側の業務支援画面SCから、AIが生成したコードの修正を指示してもよい。変形例2では、ユーザが、音声入力によって、コードの修正を指示する場合を例に挙げるが、ユーザは、他の任意の入力方法で、コードの修正を指示可能である。例えば、ユーザは、テキスト入力によって、コードの修正を指示してもよい。
なお、ユーザは、音声入力、テキスト入力、又はその他の操作(例えば、「修正」のボタンの選択)によって、コードの修正を行うことを、業務支援システム1に対して明示的に指示してもよい。業務支援システム1は、ユーザによる明示的な指示によって、新たなコードの生成ではなく、生成済みのコードの修正をすべきことを特定できる。業務支援ユーザが明示的な指示を行わなくても、AIによって、コードの修正であることが推定されてもよい。AIは、入力データに基づいて、新たなコードの生成ではなく、生成済みのコードの修正をすべきことを特定してもよい。AIは、入力データの埋め込み表現によって、このような特定を行うことができる。
図10は、コードの修正のための処理の一例を示す図である。変形例2の業務支援システム1は、修正内容情報取得部208及び修正部分コード生成部209を含む。修正内容情報取得部208は、ユーザの入力に基づいて、コードの修正内容に関する修正内容情報を取得する。修正内容情報は、コードの修正時におけるユーザの入力が示す指示である。修正内容情報は、修正時におけるユーザの意図ということもできる。修正内容情報は、AIに対するプロンプトと呼ばれることもある。図10のように、修正時には、修正内容情報を含む入力データがAIに入力される。
変形例2では、コードの修正時にユーザがボタンBを選択した場合に入力フォームFに入力されたテキストが修正内容情報に相当する場合を例に挙げる。このため、修正内容情報は、ユーザがコードの修正を希望する具体的な内容を示すテキストである。ユーザがボタンBを選択すると、ユーザ端末40は、コード生成サーバ20に対し、入力フォームFに入力されたテキストである修正内容情報を送信する。修正内容情報取得部208は、ユーザ端末40から、修正内容情報を取得する。修正内容情報取得部208は、1つの修正内容情報だけを取得してもよいし、複数の修正内容情報を取得してもよい。
なお、修正内容情報は、自然言語のテキストではなく、ユーザが入力した音声そのものであってもよい。この場合、修正内容情報取得部208は、ユーザ端末40から音声である修正内容情報を取得した後に、音声変換サーバ10に対し、修正内容情報をテキストに変換するように依頼してもよい。修正内容情報取得部208は、音声変換サーバ10から、テキストに変換された修正内容情報を取得する。修正内容情報取得部208は、ユーザ端末40から直接的に修正内容情報を取得するのではなく、音声変換サーバ10、業務支援サーバ30、又は他のコンピュータを介して、間接的に修正内容情報を取得してもよい。
修正部分コード生成部209は、修正内容情報と、AIと、に基づいて、修正前のコードのうち、修正内容に応じた修正部分の修正後のコードである修正部分コードを生成する。修正内容に応じた修正部分は、修正前のコードのうちの一部分である。修正部分の分量は、修正内容に応じて異なる。例えば、修正部分は、1行だけのこともあるし、2行以上のこともある。修正部分は、ある連続した行ではないこともある。例えば、20行あるコードのうち、3行目と10行目が修正部分のこともある。どの部分が修正されるかは、AIによって決定される。
例えば、AIは、修正部分コードとともに、修正前のコードにおける修正部分を識別可能な修正部分情報を出力する。修正部分情報は、修正前のコードにおける修正部分の位置ということもできる。例えば、修正部分情報は、修正部分が何行目であるかを示す。修正時のデフォルトプロンプトとして、「修正前のコードのうち、修正が必要な部分だけを修正して下さい。その部分の修正後のコードと、その部分の識別情報と、を出力して下さい。」といったプロンプトが用意されていてもよい。AIは、このようなデフォルトプロンプトによって、修正部分コードと、修正部分識別情報と、を出力すればよいことを、より正確に理解できる。
例えば、修正部分コード生成部209は、修正前のコードと、修正内容情報と、を含む入力データをAIに入力する。図10の例であれば、修正部分コード生成部209は、デフォルトプロンプトを更に含む入力データをAIに入力する。AIは、修正内容情報だけではなく、修正前のコードに基づいて、埋め込み表現を計算する。埋め込み表現は、修正内容情報だけではなく、修正前のコードも反映されている。AIは、当該計算された埋め込み表現に応じた修正部分コード及び修正部分識別情報を含む出力データを出力する。コード生成部206は、AIが出力した出力データに含まれる修正部分コード及び修正部分識別情報を取得する。図10の例であれば、修正前のコードのうちの20行目の部分だけが修正部分コードとしてAIから出力される。修正部分識別情報は、20行目であることを示す。
変形例2のコード修正部210は、修正前のコードのうちの修正部分を修正部分コードに差し替えることによって、コードを修正する。差し替えは、上書き又は変更ということもできる。図10の例であれば、修正前のコードのうちの20行目が修正部分コードに差し替えられる。例えば、コード修正部210は、修正前のコードのうち、修正部分識別情報が示す修正部分を、修正部分コードに差し替える。なお、ユーザが修正部分を指定してもよい。例えば、ユーザが「20行目のコードを修正して下さい。」といった入力をしてもよい。この場合、修正内容情報は、修正部分識別情報を含む。AIは、修正部分識別情報を出力しなくてもよい。AIが修正部分識別情報を出力しなくても、コード修正部210は、ユーザが入力した修正部分を修正部分コードに差し替えればよい。
変形例2の業務支援システム1は、ユーザの入力に基づいて、修正内容情報を取得する。業務支援システム1は、修正内容情報と、AIと、に基づいて、修正部分コードを生成する。業務支援システム1は、コードのうちの修正内容に応じた修正部分を修正部分コードに差し替えることによって、コードを修正する。これにより、業務支援システム1は、ユーザによるコードの修正作業を効率化できるので、修正時におけるユーザの利便性を高めることができる。例えば、AIがコード全体を再生成すると、修正前と全く以て異なる処理を示すコードが生成される可能性があるが、業務支援システム1は、修正前のコードのうちの修正部分だけを修正部分コードに差し替えることによって、修正前と全く以て異なる処理になるといったことを防止し、修正の精度を高めることができる。
[6-3.変形例3]
例えば、ユーザの入力だけでは、コードの生成に十分な情報が含まれないことがある。例えば、ユーザが「会議日が最も過去のレコードを変える機能を作って」といった入力を行った場合、ユーザがレコードの何を変えたいのかが明示されていない。近年のAIとして、ユーザの入力が不足する場合に、不足した情報を推定して補完するAIが知られている。例えば、GPTを一例とする大規模言語モデルは、ユーザの入力の続きを予測することによって、不足した情報を推定できることがある。上記の例であれば、AIが、色を変えるという情報を補完できることがある。このようなAIは、ユーザの入力が情報不足だったとしても、不足した情報を推定して補完することによって、コードを生成できる。一方で、AIは、ユーザの希望に沿わない不適切な補完を行うこともある。このため、AIが情報を補完した場合には、その旨が業務支援画面SCに表示されてもよい。
変形例3の業務支援システム1は、補完内容情報取得部211を含む。補完内容情報取得部211は、拡張内容情報で不足する部分をAIが補完してコードを生成した場合に、AIによる補完内容に関する補完内容情報を取得する。補完内容は、ユーザの入力では不足した情報である。補完内容は、ユーザが明示的に入力しなかったが、ユーザの希望としてAIが推定した内容ということもできる。AIは、ユーザが入力した自然言語の続きを予測することによって、ユーザの入力を補完する。補完内容は、AIによる予測結果ということもできる。
例えば、変形例3のデフォルトプロンプトとして、「ユーザの入力が不足した場合には、あなたが情報を補完して下さい。どの情報を補完したのか分かるように出力をして下さい。」といったプロンプトが用意されていてもよい。AIは、このようなデフォルトプロンプトによって、補完内容情報を出力できる。補完内容情報取得部211は、AIから出力された補完内容情報を取得する。補完内容情報は、テキストで表現される場合を例に挙げるが、音声又はその他の形式であってもよい。
図11は、変形例3の業務支援画面SCの一例を示す図である。提供部207は、補完内容情報に基づいて、ユーザに対し、補完内容を更に提供する。図11の例では、AIが色を補完したので、提供部207は、その旨を示すメッセージが表示領域Aに表示された業務支援画面SCを表示させることによって、ユーザに対し、補完内容を提供する。図11の例では、「色の変更をご希望されていると推測しましたが、もし違うようでしたら修正内容を入力して下さい」といったメッセージが保管内容に相当する。
例えば、提供部207は、業務支援サーバ30に対し、補完内容情報を送信し、補完内容の表示を依頼する。業務支援サーバ30は、依頼を受信すると、補完内容情報が示す補完内容が業務支援画面SCに表示させるように、業務支援画面SCの表示データを生成する。業務支援サーバ30は、ユーザ端末40に対し、補完内容を示す業務支援画面SCの表示データを送信する。ユーザ端末40は、当該表示データに基づいて、図11のような業務支援画面SCを表示部45に表示させる。ユーザは、AIの補完内容が意図したものであれば、コードの生成を終了する。ユーザは、AIの補完内容が意図したものでなければ、コードを修正したり、最初からコードの生成をやり直したりする。
変形例3の業務支援システム1は、拡張内容情報で不足する部分をAIが補完してコードを生成した場合に、補完内容情報を取得する。業務支援システム1は、補完内容情報に基づいて、ユーザに対し、補完内容を更に提供する。これにより、ユーザは、AIが補完した補完内容を知ることができるので、業務支援システム1は、ユーザの利便性を高めることができる。例えば、AIが補完した補完内容が誤っている場合には、その部分を修正する必要があるので、ユーザは、どの部分を注目してチェックすればよいかを把握しやすくなる。
[6-4.変形例4]
例えば、業務支援システム1は、ユーザの入力が行われた場合にユーザ端末40に表示されている画面に関する表示画面情報を取得する表示画面情報取得部212を更に含んでもよい。表示画面情報は、ユーザ端末40で表示中の画面を識別可能な情報である。表示画面情報は、任意の形式であってよく、例えば、表示中の画面のURL、表示中の画面に割り当てられたID、表示中の画面のスクリーンショット、又はその他の情報であってもよい。例えば、表示画面情報は、ユーザ端末40から送信されるHTTPリクエスト等のリクエストに含まれていてもよい。業務支援画面SCのURL又はその一部が表示画面情報として利用されてもよい。
変形例4のコード生成部206は、表示画面情報に更に基づいて、コードを生成してもよい。例えば、コード生成部206は、AIに対し、表示画面情報を含む入力データを入力してもよい。AIは、拡張内容情報だけではなく、表示画面情報に基づいて、埋め込み表現を計算する。埋め込み表現は、拡張内容情報だけではなく、表示画面情報の特徴も反映されている。AIは、当該計算された埋め込み表現に応じたコードを含む出力データを出力する。コード生成部206は、AIが出力した出力データに含まれるコードを取得することによって、表示画面情報に応じたコードを生成する。
なお、コード生成部206が表示画面情報を利用するのではなく、他の機能が表示画面情報を利用してもよい。例えば、仕様情報取得部204は、表示画面情報に基づいて、実施形態で説明した仕様情報を取得してもよい。図2及び図3の例であれば、表示画面情報が、アプリを識別可能なアプリIDを示してもよい。仕様情報取得部204は、表示画面情報が示すアプリIDに基づいて、当該アプリIDが示すアプリの仕様情報を取得してもよい。仕様情報取得部204が仕様情報を取得した後の処理は、実施形態で説明した通りである。
変形例4の業務支援システム1は、表示画面情報に更に基づいて、コードを生成する。これにより、業務支援システム1は、ユーザ端末40に表示されている業務支援画面SCに応じたコードを生成できる。例えば、業務支援システム1は、業務支援画面SCに表示されたアプリに特有のコードを生成できる。業務支援システム1は、業務支援画面SCに表示中のアプリの仕様に特有のコードを生成できる。業務支援システム1は、業務支援画面SCのスクリーンショットに特有のコードを生成できる。
[6-5.変形例5]
例えば、業務支援システム1は、ユーザの属性に関するユーザ属性情報を取得するユーザ属性情報取得部213を更に含んでもよい。ユーザ属性情報は、ユーザを分類可能な情報である。例えば、ユーザ属性情報は、ユーザの組織、組織の規模、部署、役職、業種、プロフィール、入社年度、年齢、性別、又は他の情報であってもよい。ユーザ属性情報は、デモグラフィック情報を呼ばれる情報であってもよい。
変形例5では、業務支援サーバ30のデータ記憶部300が、ユーザ属性情報が格納されたユーザデータベースを記憶する場合を例に挙げる。ユーザ属性情報取得部213は、ユーザデータベースから、ユーザ属性情報を取得する。ユーザ属性情報取得部213は、ユーザデータベース以外の他のデータベース、業務支援サーバ30以外の他のコンピュータ(例えば、コード生成サーバ20)、又は外部情報記憶媒体から、ユーザ属性情報を取得してもよい。ユーザは、自身のユーザ属性情報を編集可能であってもよい。
変形例5のコード生成部206は、ユーザ属性情報に更に基づいて、コードを生成する。例えば、コード生成部206は、AIに対し、ユーザ属性情報を含む入力データを入力する。AIは、拡張内容情報だけではなく、ユーザ属性情報に基づいて、埋め込み表現を計算する。埋め込み表現は、拡張内容情報だけではなく、ユーザ属性情報の特徴も反映されている。AIは、当該計算された埋め込み表現に応じたコードを含む出力データを出力する。コード生成部206は、AIが出力した出力データに含まれるコードを取得することによって、ユーザ属性情報に応じたコードを生成する。
変形例5の業務支援システム1は、ユーザ属性情報に更に基づいて、コードを生成する。これにより、業務支援システム1は、ユーザの属性に応じたコードを生成できる。例えば、大企業に所属するユーザの業務支援に適したコードと、中小企業に所属するユーザの業務支援に適したコードと、が異なる場合に、業務支援システム1は、ユーザが所属する組織の規模に応じたコードを生成できる。飲食業界で働くユーザの業務支援に適したコードと、アパレル業界で働くユーザの業務支援に適したコードと、が異なる場合に、業務支援システム1は、ユーザが働く業界に応じたコードを生成できる。
[6-6.その他の変形例]
例えば、変形例1~5の2つ以上を組み合わせてもよい。
例えば、音声変換サーバ10で実現されるものとして説明した機能は、コード生成サーバ20、業務支援サーバ30、又はユーザ端末40によって実現されてもよい。コード生成サーバ20で実現されるものとして説明した機能は、音声変換サーバ10、業務支援サーバ30、又はユーザ端末40によって実現されてもよい。業務支援サーバ30で実現されるものとして説明した機能は、音声変換サーバ10、コード生成サーバ20、又はユーザ端末40によって実現されてもよい。ユーザ端末40で実現されるものとして説明した機能は、音声変換サーバ10、コード生成サーバ20、又は業務支援サーバ30によって実現されてもよい。各機能は、複数のコンピュータによって分担されてもよいし、1つのコンピュータによって実現されてもよい。