【Oracle APEX24.2】生成AIを使ってデータモデルとサンプルデータを生成してみた

本記事では、生成AIを活用したデータモデルの生成を行います。
データモデルだけではなく、そのデータモデルに合わせたサンプルデータも生成してみます。

## 前提条件
- Oracle APEX 24.2のワークスペースを作成済みであること
- OCI生成AIサービス、CohereまたはOpenAIのAPIキーを取得済みであること

## 生成AIサービスの作成（LLMの登録）
データ・モデルの作成機能はLLMを使用するので、先ずはAPEX上で生成AIサービスを作成します。

1. 作成したAPEXのワークスペースにログインし、**アプリケーション・ビルダー**をクリックします。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/f444d3c9-787b-f6be-dfd7-0347bcf94d09.png)

2. **ワークスペース・ユーティリティ**をクリックします。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/0236a250-130b-d4ec-7609-21070f49f741.png)

3. **生成AI**をクリックします。
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/242a8375-f209-bb99-f4c9-489c01c5b821.png)

4. **作成**をクリックし、生成AIサービスを作成します。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/366c6e6e-d415-356c-8977-82e580a2202d.png)

5．以下の通りに記入し、**接続のテスト**をクリックします。
- **AIプロバイダ** - OpenAI（OCI生成AIサービス、Cohere、OpenAIの3つから選択することが出来ます）    
- **名前** - 任意（本記事ではOpenAIとしています）
- **アプリケーション・ビルダーで使用** - トグルをオン
- **APIキー** - 取得したAPIキー
- **AIモデル** - 任意（本記事ではgpt-4oを使用しています）
![image (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/c2c34978-199b-5a71-4e74-4cdf099d1b23.png)

:::note info
Oracle APEX 24.2から接続のテスト機能が追加されました。
LLMにきちんと接続することが出来ているか確認する事が出来ます。
:::


6．生成AIサービスを問題なく作成できていれば、**接続に成功しました**と表示されます。テストに成功していれば、**作成**をクリックし、生成AIサービスを作成します。
![image (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/78e0dcbb-d6b4-02e0-3cc7-032163ceff37.png)


7． 生成AIサービスを作成する事が出来ました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/ea218448-1d04-683f-92f6-9978aacff56d.png)


## AIを使ったデータモデルの生成とサンプルデータ生成（Oracle SQL編）
これでデータ・モデル生成の準備が整いました。早速データ・モデルの生成を行います。
今回は、オンライン学習プラットフォームのためのデータ・モデルを作成します。

1．再度APEXのホームページに戻り、今度は**SQLワークショップ**をクリックします。
![image (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/f9ab7cde-41d8-11de-2d76-8ee6d19663c7.png)

2．**ユーティリティ**をクリックします。
![image (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/c622faf9-9de4-30c0-87ef-55f1e2fee7a1.png)


3．**AIを使用したデータ・モデルの作成**をクリックします。
![image (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/d40944ad-4a16-1671-4fb9-28dabcf33f4c.png)


:::note info
この機能は24.2の新機能なので、24.1以前のバージョンでは表示されません
また、生成AIサービス作成時に**アプリケーション・ビルダーで使用**をオンにしていないと表示されないのでご注意ください。
:::

4．**承認**をクリックします。
![image (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/94303953-b354-7508-2861-d30436cb998d.png)


5．チャット画面が表示され、APEXアシスタントを使用する事が出来るようになりました。SQL形式として**Oracle SQL**が選択されていることを確認します。

先ずは、「学生、コース、教師のエンティティを持つ、オンライン学習プラットフォームのためのデータモデルを作成してください。」と指示をだしてみます。
![image (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/424fbcd0-21f9-66bf-dba3-cc973faa21a8.png)


6．指示を出した通りにデータ・モデルを作成してくれました。表を設計してくれただけでなく、外部キーなども付けてくれました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/c85d3bfd-6334-ec17-d1af-9dbe02e74e31.png)


7．「追加したい他の属性または要件はございますか？」と聞かれているので、「成績や試験の表もこのデータモデルに追加してください。」とお願いしてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/1dd3d476-97b5-f2ae-4bf2-b72910b619a3.png)
最初に生成してくれたデータ・モデルに追加で成績と試験の表も追加してくれました。

8．それではこのデータモデルに対して、サンプルデータを生成してもらいたいと思います。「このデータモデルに対して、サンプルデータを生成して下さい。」と指示を出します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/a89068e9-df4c-ece3-d4df-9cb369696684.png)
各表に対して複数行のデータを生成してくれました。

9．このサンプルデータを、先程生成してもらったデータ・モデルに追加してもらいたいと思います。「このサンプルデータを、先程生成してくれたデータモデルに追加してください。」と指示を出します。
![image (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/cab33244-cd06-5ad6-b02f-8514ada460af.png)
サンプルデータがデータ・モデルに追加されました。**SQLスクリプトの作成**をクリックします。


10．作成されたSQLスクリプトを確認する事が出来ます。スクリプト名に**Online Learning**と記入し、**実行**をクリックします。生成されたSQLスクリプトの例は[こちら](https://github.com/marina-fujimoto/qiita/blob/main/Online%20Learning.sql)をご参照ください。
![image (9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/71f6c081-808f-5344-3fbf-73cba45ff0bd.png)


11．**即時実行**をクリックします。
![image (10).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/2717b716-1804-6e16-2217-a78511bcd3ba.png)


12．サマリーを確認する事が出来ます。エラーが発生することなくSQLを実行する事が出来ました。
![image (11).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/fb4ab6c8-28d3-57de-102e-80cc6a1b0bab.png)


13．**SQLワークショップ>オブジェクト・ブラウザ**をクリックし、作成された表を確認してみます。
![image (12).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/50dd47af-4f84-e9cd-87b5-528816d20c6c.png)


14．表が作成され、データも格納されていることが分かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/6f3efd4a-e226-cfa9-c7cc-d51902f142c3.png)

:::note info　
作成したSQLスクリプトの確認方法

1．画面上部の検索バーからSQLスクリプトと検索し、SQLスクリプトをクリック
![image (13).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/9e87ee01-30b3-daf0-5df1-2f454fa6cc95.png)


2．作成したSQLスクリプトのペンアイコンをクリック
![image (14).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/3f520a30-7567-8508-337f-afa29d728c67.png)


SQLスクリプトが表示され、編集・再度実行する事が出来ます。
:::

## AIを使ったデータモデルの生成（Quick SQL編）

1．再度、**SQLワークショップ>ユーティリティ>AIを使用したデータ・モデルの作成**からAPEXアシスタントを開きます。今回は、SQL形式として**Quick SQL**を選択します。
![image (15).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/99f5a991-64bf-e8a3-2bac-4004f98f6c85.png)


2．先程と同じ用に、オンライン学習プラットフォームのためのデータモデルを作成してもらいます。

「学生、コース、教師、成績、試験等のエンティティを持つ、オンライン学習プラットフォームのためのデータモデルを作成してください。」と指示を出します。
![image (16).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/90e20d49-e16e-194d-5326-7e779f2f3595.png)

指示をした通りにQuickSQLを生成してくれました。**クイックSQLの確認**をクリックします。


3．生成されたクリックSQLと、それに対応するSQLが表示されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/7ce98542-0084-a4bb-0a43-f423b541504f.png)

4．ダイアグラムのタブをクリックすると、ER図を確認することも出来ます。レビューおよび実行をクリックしてみます。
![image (17).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/cbc6ad1a-4016-eddc-3f3d-873656338ea4.png)


5．先程と同じSQLスクリプトの画面が表示されました。こちらからスクリプト名を入力し実行すれば、表等が作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/3a8833ae-ade9-a2f6-76d9-7c3617e35a5c.png)


## まとめ
データ・モデルの生成だけではなく、そのデータ・モデルのサンプルデータも簡単に生成する事が出来ました。

## 参考資料
- [Introducing AI-Driven Data Modeling in Oracle APEX 24.2](https://blogs.oracle.com/apex/post/blog-create-data-model-using-ai)
- [Create Custom Data Models Using AI](https://docs.oracle.com/en/database/oracle/apex/24.2/htmrn/new-features.html#GUID-9BE115BE-5CFA-4A68-8FBB-3AFDCAD752FB)