はじめに
新たにリリースされたOracle APEX24.1の新機能、APEX AIアシスタントを使用して、自然言語でアプリケーションを作成します。
APEX AIアシスタントは、OpenAIなどの生成AIサービスを使用し、ユーザーが入力したテキスト(自然言語)からPL/SQL、CSS、HTML、JavaScriptのコードを記述します。
自然言語で指示をするだけで、APEXアシスタントがコードを記述してくれます。その他にも、PL/SQL、CSS、HTML、JavaScriptについての説明や、バグの修正を行う事が出来るので、コーディングに費やす時間を大幅に削減する事が出来ます。
本記事ではAPEXアシスタントを使用し、SQLクエリを記述したいと思います。
【前提条件】
- Oracle APEXのワークスペースが作成済みであること
(ワークスペースの作成方法はこちらをご参照ください。) - 使用可能なAPIキーが作成済みであること
(OpenAIのAPIキー取得方法はこちらをご参照ください。)
Oracle APEXの生成AIサービスは、2024年8月現在、OpenAI、Cohere、OCI Genarative AIをAIプロバイダーとして使用することが出来ます。OCI Genarative AIは、APEX24.1.2以降でのみ使用可能です。
【所要時間】
20分程
1. 生成AIサービスの作成
APEXアシスタントの機能を使用するため、APEX上で生成AIサービスを作成します。
既にAPEX上で生成AIサービスを作成済みの場合は再度作成いただく必要はありません。2. サンプルアプリケーションの作成へスキップします。
-
以下の通りに記入し、作成をクリックします。
- AIプロバイダ - OpenAI(CohereのAPIを使用する場合は、Cohereを選択します)
- 名前 - 任意(本記事では、OpenAI Demoとしています)
- アプリケーション・ビルダーで使用 - トグルをオン
-
APIキー - 取得したAPIキー
2. サンプルアプリケーションの作成
APEXアシスタントの機能を試すために、アプリケーションとデータセットが必要です。
APEXのワークスペース上に、サンプルデータセットをロードし、新しいアプリケーションを作成します(既にEMP表、DEPT表をダウンロードし、アプリケーションを作成済みの場合は3. APEXアシスタントを使ってみるへスキップして下さい。)。
-
画面上部の検索をクリックし、検索フィールドにサンプルと入力します。検索結果に表示されるサンプル・データセットをクリックします。
-
アプリケーションの作成に必要なデータをインストールします。本記事では、EMP/DEPTというサンプル・データセットをインストールします。インストールをクリックします。
-
これで、アプリケーションの作成が終わりました。SQLワークショップをクリックし、インポートしたEMP表とDEPT表を確認します。
-
先程インポートしたEMP表とDEPT表が表示されています。それぞれの表にどの様なデータが格納されているか確認します。
EMP表には従業員の氏名や職種、給与等の情報が格納されており、DEPT表には部署のID、名前、所在地が格納されている事が分かりました。また、EMP表のDEPTNOはDEPT表の主キーであるDEPTNOを参照している事が分かりました。
3. APEXアシスタントを使ってみる
生成AIサービス、サンプルアプリケーションの用意ができたので、APEXアシスタントを使用してみましょう。
-
このページには、従業員の氏名、部署名、入社日(Hired)などの情報が表示されています。
「入社してから何年経過しているか」、「どの支部で働いているか(部署の所在地)」という2つの情報を追加したいと思います。
-
従業員ページのページ・デザイナで編集を行います。
Employeeというクラシック・レポートをクリックし、ソース>タイプをSQL問合せへ変更し、その下に表示されるSQL問合せのコード・エディタを開きます。
-
コード・エディタにAPEXアシスタント機能があるので、クリックします。
生成AIサービスが作成されていない場合は表示されません。まだ生成AIサービスを作成していない場合は、1. 生成AIサービスの作成をご参照ください。
-
先ずは従業員ページの表に、それぞれの従業員が「どの支部で働いているか(部署の所在地)」表示させたいと思います。
インポートしたデータセットを確認した際に、所在地はLOCという列に格納されている事を確認したので、「LOCの情報も追加してください」と入力してみます。
すると、表を結合してLOC列を表示するSQLクエリを生成してくれました。挿入をクリックし、SQLクエリをアップデートします。
-
次に、従業員が「入社してから何年経過しているか」というデータも表示させたいと思います。表示するフォーマットも指定します。
指定した通りのフォーマットで「入社してから何年経過しているか」というデータを表示するSQLクエリを生成してくれました。クエリを挿入し、保存と実行のボタンをクリックします。
参考:
「1年前」といった形式で表示してくださいと指定しただけですが、1年に満たない場合は「1年未満」と表示するようにクエリを生成してくれました。以下がAPEXアシスタントが生成したクエリです。select emp.empno, emp.ename, emp.job, emp.mgr, emp.hiredate, emp.sal, emp.comm, emp.deptno, dept.loc, CASE WHEN months_between(sysdate, emp.hiredate) < 12 THEN '1年未満' ELSE TRUNC(months_between(sysdate, emp.hiredate) / 12) || '年前' END as years_since_hire from emp
-
編集した内容が反映されているか確認します。Locという列に「どの支部で働いているか(部署の所在地)」というデータが表示、Years Since Hire列に、「入社してから何年経過しているか」というデータを表示する事が出来ました。
-
次に、画面上部のナビゲーション・バーからダッシュボードをクリックし、ダッシュボードページを確認します。
ダッシュボードページ下部にある部署ごとの総給与と、職種ごとの合計給与を、それぞれ平均給与に変更したいと思います。画面下部、開発者ツール・バーのページ2をクリックします。
-
ダッシュボードページのページ・デザイナで、部署ごとの総給与と職種ごとの合計給与のグラフを編集します。
先ずは、部署ごとの総給与のシリーズ1をクリックします。ソース>タイプをSQL問合せへ変更します。その下に表示されるSQL問合せのコード・エディタを開きます。
-
コード・エディタでAPEXアシスタントをクリックし、プロンプトからAPEXアシスタントへ指示を出します。先程は列名を明記して指示を出しましたが、今回は列名を出さずに指示を出してみます。
部署ごとの平均給与のグラフに変更したいので、部署ごとの平均給与と指示を出します。
-
部署ごとの平均給与を出すことの出来るSQLクエリを生成してくれました。挿入をクリックし、SQLクエリをAPEXアシスタントが生成したものに変更します。
生成してくれたクエリがどいったものなのか解説をお願いしてみます。クエリー・ビルダーをクリックし、一般的なサポートへ切り替えます。
-
-
説明の選択をクリックすると、自動でAPEXアシスタントへ指示が送られ、APEXアシスタントがSQLクエリの説明を行います。
-
今までの会話履歴がクリアされました。
-
向上の選択をクリックすると、自動でAPEXアシスタントへ指示が送られました。APEXアシスタントが、どの様にしてクエリを改善することが出来るか提案、提案に沿ったSQLクエリの修正を行ってくれました。
-
提案内容を確認し、修正後のクエリを挿入します。
修正後のクエリの説明や、クエリの向上を再度行いたい場合、他に何か質問などある場合は、プロンプトにメッセージを入力します。このままで良い場合は、右下にあるOKボタンをクリックし、SQLクエリの変更を保存します。
-
列のマッピング>値をAVERAGE_SALARYと変更します。
APEXアシスタントが生成したSQLクエリによって値の列名は変わるので、ご注意下さい(本記事では、給与の平均をAVERAGE_SALARYという列別名で表しているため、AVERAGE_SALARYを選択しました)
-
識別>名前を部署ごとの平均給与と変更し、画面上部にある保存と実行ボタンをクリックします。
-
変更が反映されているのが確認できます。部署ごとの平均給与が一目で分かり、会計の部署の平均給与が一番高いということが分かります。
「職種ごとの合計給与」のグラフも同様に、APEXアシスタントを使用し「職種ごとの平均給与」のグラフに変更してみて下さい。
これで本記事は終了です。
AIがAPEX上でアプリケーション開発支援をしてくれる様になり、より素早くより簡単にアプリケーション開発を行う事が出来る様になりました。是非、APEXアシスタントをご活用ください。