Oracle APEX 26.1 が2026年5月にGAとなり、新機能として APEXLang が使えるようになりました。
APEXLangはOracle APEXでアプリ開発するための新しい言語で、AI駆動開発に最適化されています。
そのためAPEXLangのおかげでAIコーディングを使ったAPEXアプリ開発ができるようになりました。
具体的には、以下にあるSkillsを導入することでCodex等による開発が可能となります。
今回はこのAPEXLang SkillsとCodex CLIを使い、APEXアプリのAI駆動開発を試してみました。
なお本検証では以下の背景から、リモートのLinuxサーバに導入したCodex CLIを利用しています。
- 承認の手間を減らしつつ、ローカルPCとは分離した環境で安全に開発したい
- 生成されたコードをそのままAPEX Workspaceへ効率的にインポートしたい
APEXLangとは
作業へ入る前に、APEXLangを使ったアプリ開発の雰囲気をご紹介します。
例えばスキーマ内のテーブルを対話モードレポートで一覧表示するページを作る場合、以下のように記述します。
APEXLangのコード例
region schema-tables (
name: Schema Tables
type: interactiveReport
source {
location: localDatabase
type: sqlQuery
sqlQuery:
```sql
select sys_context('USERENV', 'CURRENT_SCHEMA') as schema_name
, t.table_name
, c.comments
, t.tablespace_name
, t.num_rows
, t.blocks
, t.last_analyzed
, t.partitioned
, t.temporary
, t.duration
, t.status
from user_tables t
left join user_tab_comments c
on c.table_name = t.table_name
and c.table_type = 'TABLE'
```
}
layout {
sequence: 20
slot: BODY
}
appearance {
template: @/interactive-report
templateOptions: #DEFAULT#
}
...(略)...
これまではAPEXアプリをエクスポートするとSQLで記述されたファイルになっていましたが、APEXLangはAPEX専用の新しい記法となっている点が分かるかと思います。
またAPEXLang形式でエクスポートすると各ページは .apx という拡張子のファイルで出力されます。
プロジェクト構造もAPEXLang用になっており、こちらのマニュアルにある通り、以下のような構造となります。
.
└── <app-alias>/
├── pages/
│ ├── p00001.apx
│ ├── p00002.apx
│ └── ...
├── shared_components/
│ ├── lists.apx
│ └── ...
├── supporting_objects/
├── deployments/
│ └── default.json
├── .apex/
│ └── apexlang.json
├── application.apx
└── page_groups.apx
簡単なAPEXアプリを実装してみる
ここから APEXLang+Codex CLI を使った簡単なAI駆動開発をやってみます。
まずは開発環境の準備です。
検証環境
今回は以下2つのサーバをOCI Computeで用意しました。
- 開発用サーバ (Oracle Linux 8.10)
- Oracle AI Database 26ai用サーバ (Oracle Linux 8.10)
Oracle AI Database 26ai、APEX 26.1、ORDSインストール
APEXLangを使うには APEX 26.1 が必要ですので、何はともあれOracle AI DB 26aiとAPEX 26.1、ORDSをまずインストールします。
それぞれのインストール手順は以下をご参照ください。
(ADB上でAPEX 26.1が利用できれば、ADBでも問題ないです。)
26ai EE (Linux x86-64) インストール
(RAC向け手順ですが、GI関連の手順をSkipすればシングル構成で構築できます。)
APEX、ORDSインストール
Codex CLIインストール
開発用サーバにCodex CLIをインストールします。
curl -fsSL https://chatgpt.com/codex/install.sh | sh
ご自分のアカウントで認証し、Codexが使えるようにします。
認証は codex login を実行するのですが、通常であればブラウザが立ち上がって認証画面に進みます。
ただ今回はCLIしか使えないリモートサーバ上で作業しているため、代わりに以下コマンドを実行します。
codex login --device-auth
実行すると認証先のURL、およびone-timeコードが出力されます。
まずはローカルPCのブラウザでURLにアクセスしてログインし、その後の画面でone-timeコードを入力して認証完了です。
次にCodexの設定ファイル config.toml へ policy を追記します。
vim .codex/config.toml
[approvals]
policy = "on-request"
on-request の設定により、AIの方で確認が必要と判断した場合のみ承認を求められます。
これで承認する回数は大分減りました。
APEXLang Skillsインストール
APEXLangを扱うにはAPEXLang Skillsが必要ですので、Skillsをインストールします。
codexを起動します。
codex
skill-installer を使ってインストールします。
$skill-installer https://github.com/oracle/skills.git
これでAPEXLangを使ったAI駆動開発が可能となりました。
SQLclインストール
APEXアプリのエクスポート/インポートやAPEXLangプロジェクトの新規作成、コード検証には SQLcl の 26.1 以上が必要です。
そのため最新のSQLclをインストールします。
curl -OL https://download.oracle.com/otn_software/java/sqldeveloper/sqlcl-latest.zip
unzip sqlcl-latest.zip
解凍されたファイルの中に sql という実行ファイルがあるため、パスを通すなどして使えるようにします。
直接実行しても問題ないです。
APEXLangを使った開発
ここから実際にAPEXlangでアプリ開発していきます。
アプリのテンプレート新規作成
APEXlangの新規プロジェクトを用意します。
まずはSQLclでDBにログインします。
ログインするDBユーザはAPEXワークスペース作成時に管理用として紐づけたスキーマです。
sql <Workspace Admin Schema>@<Service name>
DBログインできたら以下コマンドでプロジェクトを新規作成します。
ここでは testapp というプロジェクト名を指定しています。
apex generate -alias testapp
無事に作成できるとカレントディレクトリに testapp というディレクトリが作られ、先述したプロジェクト構造が出来上がっています。
ちなみに、もし既存アプリをベースに開発を進めたい場合、以下コマンドで既存アプリをエクスポートしてプロジェクトを作成できます。
app_id には既存アプリのIDを指定します。
apex export -applicationid <app_id> -exptype APEXLANG
Gitリポジトリ作成
AIコーディングしていると、思ったものと違う成果物が出てくるケースがあるかと思います。
その場合は以前の状態に戻して別プロンプトでリトライしますが、以前の状態へ戻す際にGitでバージョン管理していると良いです。
戻すのが楽になりますし、AIが加えた変更を diff で後から確認しやすくなります。
ということで作成したAPEXlangプロジェクト用にGitリポジトリを作ります。
cd testapp
git init
git config user.name "your name"
git config user.email "your email address"
コミットする前に .gitignore で管理不要なファイルを指定しておきます。
vim .gitignore
.agents
.codex
testapp 配下のファイルを追加し、初期コミットを実行します。
git add .
git commit -m "initial commit"
アプリ実装
冒頭で例として出した「スキーマ内のテーブルを対話モードレポートで一覧表示するページ」を作ってみます。
Codexを立ち上げてプロンプトを入力します。
codex
apexlangを使ってスキーマ内のテーブルを対話モードレポートで一覧表示するページを作って。メニュー一覧に作成したページを追加して。
コードを検証
作成されたコードにLintを実行し、正しく実装されているか検証します。
cd ..
sql <Workspace Admin Schema>@<Service name>
apex validate -input ./testapp
問題なければ「検証成功」と出力されます。
作成したアプリをAPEXにインポート
最後にワークスペースへインポートします。
apex import -input ./testapp
既存アプリを更新する形でインポートする場合は以下を実行します。
app_id には既存アプリのIDを指定します。
apex import -input ./testapp -id <app_id>
ちなみにCodexにDBへの接続情報まで伝えておくと、コード生成⇒コード検証⇒インポート といった一連の処理をCodexが全て行ってくれます。
またコード検証でエラーが発生すると自律的に修正してくれるので、バグ対応も効率的になります。
ただしDBログインしてDBに対する変更を自動で行うため、扱いにはくれぐれもご注意ください。
DDL等もお構いなしに実行されます。。
手間は増えますが、必ず承認依頼するよう設定すれば幾分かマシかもしれません。
インポートされたアプリにログインして確認します。
今回は以下のようなページが作られました。
余談(もう少し複雑なアプリに挑戦)
せっかくなので、もう少し複雑なアプリの開発も試してみました。
個人的にバイクツーリングが趣味なので、ツーリング計画を立てられる地図アプリの作成をCodex CLIにお願いしてみました。
結果2時間くらいで以下のようなAPEXアプリが出来ました。
今度ツーリング計画を立てる際に使おうかと思うくらい、想定よりちゃんとしたアプリが出来上がりました。
実際はアプリの動作を試しつつ、何度も仕様追加やバグ修正、機能改善の依頼をしました。
またAPEXの標準コンポーネントだけでは実装できないため、PL/SQLやJavaScript、カスタムのCSSやHTMLをふんだんに利用しています。
ですが実装はすべてAIが行っているため、そうした複雑さは隠ぺいされています。。
以上、APEXlangとCodex CLIをつかったAPEXアプリのAI駆動開発でした。
APEXが持つDBとの親和性からくるメリットは理解しつつも、ローコードながら独特の開発体系に慣れないと感じられてた方は、APEXLangの登場により扱いやすくなっているかもしれません。

