2026年10月14日水曜日

OpenAI Dotsに話しかけてOracle APEXのアプリケーションを作成する #JoelKallmanDay

2026年9月29日にOpenAIより発表されたDotsを使って、Oracle APEXのアプリケーションを作成してみます。手元のiPhoneに話しかけることで、開発するアプリケーションを指示します。

手元のiPhoneから作成したアプリケーションにアクセスするために、Oracle APEXのアプリケーション開発と実行にAutonomous AI Databaseを使用します。Always Freeを使用するため費用はかかりませんが、2026年10月14日の時点ではOracle APEXは最新バージョンではなく26.1になります。

OpenAIのDotsを使用するにはProプラン以上が必要です。Pro/100でも一ヶ月あたり16,800円なので、個人で利用するにはハードルが高いです。

OpenAI Dotsではクラウドコンピューターという、クラウド上の仮想マシンのような環境が提供されています。本来であれば、このクラウドコンピューターにインストールされているブラウザやJava(21.0.12.1がインストールされていました)に加えて、SQLclをインストールすればAPEXアプリケーションを開発するホストとして使用できるはずでした。


実際にはoracle.comドメインに接続ができなかったので、APEXアプリケーションを開発するホストとして使用することは諦めました。


設定のクラウドコンピューターにウェブサイトの権限があり、こちらの設定に問題があるのかもしれませんが、原因は不明です。openai.comやmicrosoft.comには接続できています。


別件ですが、Codex CloudもOracle APEXのアプリケーション開発に使用できませんでした。SQLclがAutonomous AI Databaseに接続する際にTCPS接続が使用されますが、どうもCodex Cloudで許可されているアウトバウンド通信はHTTPSに限定されているように見えます。OpenAIのドキュメントに制限事項として明記されていないようですが、おそらくそうだろうと思って、こちらの使用も諦めています。

そのため、ローカルのMacbookにAPEXアプリケーションを作成するCodexのプロジェクトを作成し、それに作成したdotから指示を与えるように環境を構成しました。

以下より、その環境の準備とAPEXアプリケーションの作成までの手順を紹介します。

Always FreeのAutonomous AI Databaseのインスタンスが作成済みとします。また、手元のMacbookにはChatGPTのデスクトップアプリとSQLclがインストール済みとします。

作業ディレクトリとしてapexapp-with-dotsを作成し移動します。

mkdir apexapp-with-dots
cd apexapp-with-dots

Documents % mkdir apexapp-with-dots

Documents % cd apexapp-with-dots 

apexapp-with-dots % 


Autonomous AI Databaseへの接続に使用するウォレットをダウンロードして配置します。本記事ではウォレットとしてWallet_APEXDEV.zipを使用します。

SQLclでAPEXワークスペースのデフォルト・パーシング・スキーマに接続し、接続をadb_apexdevとして保存します。

SQLclを起動します。

sqlcl -cloudconfig Wallet_APEXDEV.zip /nolog

apexapp-with-dots % sqlcl -cloudconfig Wallet_APEXDEV.zip /nolog

     

SQLcl: 水 10月 14 14:24:11 2026のリリース26.3 Production


Copyright (c) 1982, 2026, Oracle.  All rights reserved.


SQL> 


本記事の構成では、接続先のTNS名はapexdev_low、接続先のスキーマはWKSP_APEXDEVとして構成されています。

conn -save adb_apexdev -savepwd wksp_apexdev@apexdev_low

SQL> conn -save adb_apexdev -savepwd wksp_apexdev@apexdev_low

パスワード (**********?) **************

名前: adb_apexdev

接続文字列: apexdev_low

ユーザー: wksp_apexdev

パスワード: ******

oracle.net.wallet_location: (SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=${TNS_ADMIN})))

TNSNAMES.ORA: /Users/ynakakos/.dbtools/connections/2TJ8PbLBjDtiBm_gDdx9Tg/tnsnames.ora

TNS Descriptor: apexdev_low = (description=(retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ca-toronto-1.oraclecloud.com))(connect_data=(service_name=ge15e7ebe13fd7f_apexdev_low.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes)))

接続しました.

SQL> 


以上で、接続先としてadb_apexdevが保存されました。

一旦切断し、再度adb_apexdevを指定して接続します。

sqlcl -name adb_apexdev

SQL> exit

Oracle AI Database 26ai Enterprise Edition Release 23.26.4.1.0 - Production

Version 23.26.4.1.0から切断されました

apexapp-with-dots % sqlcl -name adb_apexdev

     

SQLcl: 水 10月 14 14:27:36 2026のリリース26.3 Production


Copyright (c) 1982, 2026, Oracle.  All rights reserved.


接続先:

Oracle AI Database 26ai Enterprise Edition Release 23.26.4.1.0 - Production

Version 23.26.4.1.0


SQL> 


Codexが参照できるようにOracle DatabaseとAPEXlangのスキルをインストールします。以下はMicrosoft APM(Agent Package Manager)を使用した例です。

apm install oracle/skills/apex --target codex
apm install oracle/skills/db --target codex
apm deps list


apexapp-with-dots % apm install oracle/skills/apex --target codex

[*] Created apm.yml

[i] Targets set: codex (persisted to apm.yml)

[*] Validating 1 package...

[+] oracle/skills/apex

[*] Updated apm.yml with 1 new package(s)

[>] Installing 1 new package...

[>] Resolving skills-apex...

[i] Targets: codex  (source: --target flag)

  [+] github.com/oracle/skills/apex #default @014cdb29

  |-- Skill integrated -> .agents/skills/

[i] Added apm_modules/ to .gitignore

  [!] 1 dependency unpinned: oracle/skills -- add #tag or #sha to prevent drift

  [i] Skipped inactive experimental resolver for target 'copilot-cowork' during lockfile 

reconciliation.

  [i] Skipped inactive experimental resolver for target 'copilot-app' during lockfile 

reconciliation.

[*] Installed 1 APM dependency in 15.8s.

apexapp-with-dots % apm install oracle/skills/db --target codex

[*] Validating 1 package...

[+] oracle/skills/db

[*] Updated apm.yml with 1 new package(s)

[>] Installing 1 new package...

[>] Resolving skills-db...

[i] Targets: codex  (source: --target flag)

  [+] github.com/oracle/skills/db #default @014cdb29

  |-- Skill integrated -> .agents/skills/

  [!] 1 dependency unpinned: oracle/skills -- add #tag or #sha to prevent drift

  [i] Skipped inactive experimental resolver for target 'copilot-cowork' during lockfile 

reconciliation.

  [i] Skipped inactive experimental resolver for target 'copilot-app' during lockfile 

reconciliation.

[*] Installed 1 APM dependency in 11.5s.

ynakakos@Yujis-MacBook-Pro apexapp-with-dots % apm deps list

                                 APM Dependencies (Project)                                 

┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━┓

┃ Package            ┃ Version ┃ Source ┃ Prompts ┃ Instructions ┃ Agents ┃ Skills ┃ Hooks ┃

┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━┩

│ oracle/skills/apex │ unknown │ github │    -    │      -       │   -    │   1    │   -   │

│ oracle/skills/db   │ unknown │ github │    -    │      -       │   -    │   1    │   -   │

└────────────────────┴─────────┴────────┴─────────┴──────────────┴────────┴────────┴───────┘

apexapp-with-dots % 


OpenAIのデスクトップアプリよりプロジェクトを作成します。ソースフォルダーとして、これまで構成してきたapexapp-with-dotsを割り当てます。

プロジェクトの名前はDotsによるアプリ作成としています。


それでは、このCodexのプロジェクトに指示を出すdotを作成します。

OpenAIのデスクトップアプリのあなたのdotをクリックします。


dotの作成プロセスが始まります。続けるをクリックします。続けてプラグインの組み込みを案内されますが、今回の用途では不要なのでスキップします。


dotが作業できる場所として、お使いのローカルコンピューターをオンにします。OpenAIが提供してくれるあなたのdotのコンピューターでは、APEXアプリケーションを開発できませんでした。

続けるとdotが作成されます。


dotが作成され、ローカルコンピューターに接続されます。


ローカル・コンピューターへの設定として、ChatGPTアプリが起動しているときはMacをスリープさせないといった項目があったはずなのですが、設定画面を見つけることができなかったため割愛します。スリープを禁止していないと、iPhoneからdotに指示を出している間に、Codexが動いているMacがスリープすることがあります。

dotに対して指示します。最初にCodexのプロジェクトにタスクを作成し、データベースへの接続確認までを行います。

「これからOracle APEXのアプリケーションを作成します。Codexのプロジェクト「DotsによるAPEXアプリ作成」にAutonomous AI Databaseにアプリを作成するタスクを開始して。」

「APEXのワークスペースへの接続には接続名adb_apexdevを使用してsqlcl -name adb_apexdevで接続してください。」


SQLclでデータベースに接続できたので、APEXアプリケーションを開発する準備はできています。

作成したdotは、同じアカウントでサインインしているiPhone上のOpenAIのアプリと共有されています。

音声による指示は、右上の電話のアイコンをクリックして行います。アイコンの古めかしさと、クリックすると呼び出し音が鳴ることに少々驚きました。


最初は本当に電話をかけていると思って、通話を終了してしまいました。


音声で「Sales Historyを調べて、結果をチャットに返してほしい」と依頼しています。以下はMacのデスクトップアプリでのスクリーンショットですが、iPhoneにも同じ内容が表示されています。


電話にてSales Historyのサンプルデータを参照して、地域別のレポートや製品別のチャートを作成するように指示をしました。なぜか通話が途中で切られてしまうので、なんども電話をし直しています。最後にAPEXアプリケーションができたらURLをチャットに送るように指示しています。

ChatGPTの音声モードと異なり、自分が話した内容の文字起こしが表示されないようです。若干、不便です。


dotからの通知を有効にしていると、作業が終わったらiPhoneやMacに通知されます。

通知を受け取ってiPhoneのChatGPTアプリを確認します。作成されたアプリにサインインするURLが返されていました。


返されたリンクをクリックし、スマホからAPEXアプリケーションにサインインします。最初にサインインの画面が開きます。


サインインすると、APEXアプリケーションにアクセスできます。


期待したAPEXアプリと異なるようであれば、dotに電話をかけて修正を依頼します。

概ね以上でAPEXアプリケーションは作成できました。

Codexプロジェクトに作成されたタスクがサイドメニューに現れなかったり、dotとの通話がプチプチ切れたり、Computer Useの利用の承認を永遠に求められたり、なかなか一筋縄ではいかない部分もありましたが、当初の目的である、OpenAI Dotsに話しかけてOracle APEXのアプリケーションを作成することはできました。

今回の記事は以上になります。

完