6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Codex CLI × APEXLangで始めるOracle APEXアプリAI駆動開発

6
Posted at

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.tomlpolicy を追記します。

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等もお構いなしに実行されます。。
手間は増えますが、必ず承認依頼するよう設定すれば幾分かマシかもしれません。

インポートされたアプリにログインして確認します。
今回は以下のようなページが作られました。

スクリーンショット 2026-06-03 105043.png

余談(もう少し複雑なアプリに挑戦)

せっかくなので、もう少し複雑なアプリの開発も試してみました。
個人的にバイクツーリングが趣味なので、ツーリング計画を立てられる地図アプリの作成をCodex CLIにお願いしてみました。
結果2時間くらいで以下のようなAPEXアプリが出来ました。

route_map.png

今度ツーリング計画を立てる際に使おうかと思うくらい、想定よりちゃんとしたアプリが出来上がりました。
実際はアプリの動作を試しつつ、何度も仕様追加やバグ修正、機能改善の依頼をしました。
またAPEXの標準コンポーネントだけでは実装できないため、PL/SQLやJavaScript、カスタムのCSSやHTMLをふんだんに利用しています。
ですが実装はすべてAIが行っているため、そうした複雑さは隠ぺいされています。。

以上、APEXlangとCodex CLIをつかったAPEXアプリのAI駆動開発でした。
APEXが持つDBとの親和性からくるメリットは理解しつつも、ローコードながら独特の開発体系に慣れないと感じられてた方は、APEXLangの登場により扱いやすくなっているかもしれません。

参考資料

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?