2026年5月14日にOracle APEX 26.1がリリースされました。APEX 26.1の新機能については、リリース・ノートで紹介されています。
Oracle APEX 26.1, Release Notes 2. New Features
26.1の一つ前の24.2のリリースから1年半程度の期間が経過しているためか、数多くの新機能が追加されています。
その中でBlueprints が目に止まりました。
2.30 BlueprintsAPEX now supports a new Markdown-based blueprint format for Spec-Driven Development (SDD) with AI coding assistants. With SDD, the specification becomes the durable source of truth: it describes what the application should do, what the database means, and how users should work with the data. An AI assistant can use those specifications to generate an inspectable APEX application design artifact that can be reviewed before creating the application.
For more information on blueprint support, see https://github.com/oracle/apex .
Importing an Application Blueprint
Application Blueprints can be imported directly through the App Builder Import page.
何を説明しているのか分からなかったので(Markdownをインポートしてアプリケーションを作成する?)、リンクが貼られているGitHubから内容を確認してみました。
GitHubのapexのリポジトリを開きます。blueprintsは26.1の新機能なので、ブランチとして26.1を選択します。フォルダblueprintsが現れます。
README.mdファイルに、スペックからAPEXのblueprintsを生成するフローが説明されています。
記述が抽象的で実際に何を行えばSDD(スペック駆動開発)ができるのか、よく分かりません。
スペックからAPEX Blueprintを生成してインポートするまでの具体的なステップが、
QUICKSTART.md に記述されています。
作業内容としては、生成AIでOrder Entryのアプリケーションのブループリントを生成し、APEXのワークスペースにインポートしてAPEXアプリケーションを作成しています。
実際に、このQUICKSTART.mdに記載されている作業を実施してみます。作業はMacbook Pro、データベースはローカルのコンテナ環境で実行しているOracle AI Database 26ai Freeを使用します。CodexとGPT-5.5を使って、APEX Blueprintを生成します。
作業ディレクトリとしてblueprint を作成し、そのディレクトリに移動します。
mkdir blueprint
cd bluerpint
最初にGitHubのリポジトリapexをクローンします。フォルダblueprintsを含むように、ブランチとして26.1を指定します。
git clone -b 26.1 https://github.com/oracle/apex.git
blueprint % git clone -b 26.1 https://github.com/oracle/apex.git
Cloning into 'apex'...
remote: Enumerating objects: 6382, done.
remote: Counting objects: 100% (527/527), done.
remote: Compressing objects: 100% (238/238), done.
remote: Total 6382 (delta 387), reused 324 (delta 286), pack-reused 5855 (from 1)
Receiving objects: 100% (6382/6382), 449.49 MiB | 7.62 MiB/s, done.
Resolving deltas: 100% (3112/3112), done.
blueprint %
QUICKSTART.mdの作業に必要なファイルは、apex/blueprints/examples/order-entry以下に含まれます。このフォルダをCodexのプロジェクト・フォルダとします。
cp -r apex/blueprints/examples/order-entry . ls order-entry blueprint % cp -r apex/blueprints/examples/order-entry .
blueprint % ls order-entry
database-objects README.md screenshots skills-input skills-output
blueprint %
APEXのワークスペースを作成します。
ローカルのAPEX環境を
UC Local APEX Dev で作成しているため、添付のスクリプトを実行して、APEXワークスペースとして
blueprint 、スキーマ
blueprint 、管理者ユーザーとして
blueprint を作成します。
local-26ai.sh create-user blueprint
blueprint % local-26ai.sh create-user blueprint
loaded .env file
SQLcl: 月 6月 08 14:27:11 2026のリリース26.1 Production
Copyright (c) 1982, 2026, Oracle. All rights reserved.
接続先:
Oracle AI Database 26ai Free Release 23.26.1.0.0 - Develop, Learn, and Run for Free
Version 23.26.1.0.0
USER
_______
SYS
[中略]
接続先:
Oracle AI Database 26ai Free Release 23.26.1.0.0 - Develop, Learn, and Run for Free
Version 23.26.1.0.0
USER
____________
BLUEPRINT
名前: local-26ai-blueprint
接続文字列: localhost:1521/FREEPDB1
ユーザー: blueprint
パスワード: ******
PL/SQLプロシージャが正常に完了しました。
Oracle AI Database 26ai Free Release 23.26.1.0.0 - Develop, Learn, and Run for Free
Version 23.26.1.0.0から切断されました
>>>>
saved sqlcl connection
connect with 'sql -name local-26ai-blueprint'
blueprint %
後で実行するblueprintのインポートが失敗しないように、データベース・ユーザーBLUEPRINTから、ロールSELECT_CATALOG_ROLEを外します。
sql -name local-26ai-sys
revoke select_catalog_role from blueprint;
exit
blueprint % sql -name local-26ai-sys
SQLcl: 月 6月 08 14:28:20 2026のリリース26.1 Production
Copyright (c) 1982, 2026, Oracle. All rights reserved.
接続先:
Oracle AI Database 26ai Free Release 23.26.1.0.0 - Develop, Learn, and Run for Free
Version 23.26.1.0.0
SQL> revoke select_catalog_role from blueprint;
Revokeが正常に実行されました。
SQL> exit
Oracle AI Database 26ai Free Release 23.26.1.0.0 - Develop, Learn, and Run for Free
Version 23.26.1.0.0から切断されました
blueprint %
作成されたスキーマBLUEPRINTに、Order Entryアプリケーションが使用するデータベース・オブジェクトの作成や、サンプル・データの投入を行います。
スクリプトには19c向けと26ai向けがあります。今回は26ai向けを実行します。
ls order-entry/database-objects blueprint % ls order-entry/database-objects
order-entry-schema-19c.sql order-entry-seed-data-19c.sql
order-entry-schema-26ai.sql order-entry-seed-data-26ai.sql
blueprint %
sql -name local-26ai-blueprint @order-entry/database-objects/order-entry-schema-26ai.sql @order-entry/database-objects/order-entry-seed-data-26ai.sql exit
blueprint % sql -name local-26ai-blueprint
SQLcl: 月 6月 08 14:34:20 2026のリリース26.1 Production
Copyright (c) 1982, 2026, Oracle. All rights reserved.
接続先:
Oracle AI Database 26ai Free Release 23.26.1.0.0 - Develop, Learn, and Run for Free
Version 23.26.1.0.0
SQL> @ order -entry/database-objects/order- entry - schema - 26ai . sql
View OREN_ORDERS_DVが削除されました。
Table OREN_ORDER_ITEMSが削除されました。
Table OREN_ORDERSが削除されました。
[中略]
Table OREN_ORDER_ITEMSが変更されました。
Table OREN_ORDER_ITEMSが変更されました。
Table OREN_ORDER_ITEMSが変更されました。
Table OREN_ORDER_ITEMSが変更されました。
SQL> @ order -entry/database-objects/order- entry - seed - data - 26ai . sql
0行削除されました。
0行削除されました。
0行削除されました。
0行削除されました。
[中略]
Table OREN_PRODUCTSが変更されました。
Table OREN_ORDERSが変更されました。
Table OREN_ORDER_ITEMSが変更されました。
SQL> exit
Oracle AI Database 26ai Free Release 23.26.1.0.0 - Develop, Learn, and Run for Free
Version 23.26.1.0.0から切断されました
blueprint %
リポジトリapexからコピーしたorder-entry/skills-output/order-entry-blueprint.md が、生成済み のOrder EntryアプリケーションのAPEX blueprintです。
このファイルをorder-entry/skills-input 以下にあるスペックと、apex/blueprints/prompt 以下にあるプロンプトにより出力することが、いわゆるスペック駆動開発ということになります。
生成済みのblueprintを削除し、同じファイルをCodexに出力させます。生成AIがorder-entry/skills-input 以下にあるスペックを適切に解釈できるのであれば、ほぼ同じファイルが作成されるだろうと期待できます。元のファイルはフォルダapex以下に残っているため、後で比較もできます。
rm order-entry/skills-output/order-entry-blueprint.md blueprint % rm order-entry/skills-output/order-entry-blueprint.md
blueprint %
フォルダorder-entryに移動します。
cd order-entry
DBとAPEXのスキルをロードします。私の好みでMicrosoft APMを使用します。SQLclでskills syncコマンドを実行しても良いでしょう。
以下の内容のファイルをapm.yml として作成します。
name: order-entry
version: 1.0.0
description: order entry blueprint
author: Yuji
dependencies:
apm:
# Oracle Database Skills
- git: https://github.com/oracle/skills
path: db
ref: main
# Oracle APEXlang Skills
- git: https://github.com/oracle/skills
path: apex
ref: main
今回はCodexを使用するため、以下のコマンドを実行してCodex向けにスキルをインストールします。
apm install --target codex
order-entry % apm install --target codex
[>] Installing dependencies from apm.yml...
[>] Resolving skills-db...
[>] Resolving skills-apex...
[i] Targets: codex (source: --target flag)
[+] github.com/oracle/skills/apex#main #main @55679630
|-- Skill integrated -> .agents/skills/
[+] github.com/oracle/skills/db#main #main @55679630
|-- Skill integrated -> .agents/skills/
[i] Added apm_modules/ to .gitignore
[*] Installed 2 APM dependencies in 1.2s.
ynakakoshi@Ns-Macbook order-entry %
必ずしも必要ではないと思いますが、MCPサーバーなどの設定を.codex/config.tomlに記述します。
[mcp_servers.oracle-apexdev]
command = "/opt/homebrew/Caskroom/sqlcl/26.1.2.132.1334/sqlcl/bin/sql"
args = [ "-R", "4", "-mcp" ]
[sandbox_workspace_write]
network_access = true
以上でCodexを呼び出すところまでは準備できました。
Codexのデスクトップ・アプリを使用して、blueprintを生成してみます。
新規チャットを開始します。
新規プロジェクトの既存のフォルダとして、先ほど作成したフォルダorder-entry を使用します。使用するモデルとしてGPT-5.5を選択しています。
QUICKSTART.mdには、以下の文書をインストラクションとして与えることが記載されています。
Using the prompt and icon allowlist files:
- prompt/blueprint-prompt.md
- prompt/apex-fa-icons-allowlist.txt
Generate and overwrite:
- <full-path-to-output-blueprint.md>
Using:
- examples/order-entry/skills-input/order-entry-functional-requirements.md
- examples/order-entry/skills-input/order-entry-schema-metadata.md
Don't read any other files unless directed by the prompt. プロンプトとなるblueprint-prompt.md とapex-fa-icons-allowlist.txt は、添付ファイルとして与えることにします。
これらのファイルはapex/blueprint/prompt以下に置かれています。
プロンプトとして以下を与え、APEX blueprintを生成します。
添付したファイルblueprint-prompt.mdおよびapex-fa-icons-allowlist.txtより、Oracle APEXのblueprintをskills-output/order-entry-blueprint.mdとして生成してください。
以下のファイルの内容だけが、生成するAPEX blueprintの要求仕様になります。
skills-input/order-entry-functional-requirements.md
skills-input/order-entry-schema-metadata.md
30分程度でorder-entry-blueprint.mdが出力されました。
APEX向けの成果物なので、まずローカルのAPEXスキル手順と入力ファイルを確認します。あわせて、指定されたプロンプト雛形とアイコン許可リストは作業フォルダ外にあるため、読めるか確認しながら進めます。
入力仕様はかなり具体的で、ページ構成・ナビゲーション・SQL由来の表示列まで決まっています。次に、生成フォーマット側の指示と残りの要求を読み切って、blueprintとして矛盾なくまとめます。
blueprint生成ルール側は、ページ・リージョン・SQL・リンクをすべて完全に出す前提のフォーマットです。今は「どの見出し・項目名で出力するか」を確認して、生成後に機械的に欠けがないか点検できる形にします。
1個のファイル 1件の検索を調査しました 2 件のコマンドを実行
出力フォーマットの核は把握できました。これからblueprint本文を作成し、最後にアイコン許可リスト・必須ページ・主要な要求(Order Line IDやメニュー制約など)を照合します。
これから skills-output/order-entry-blueprint.md を新規作成します。かなり大きい成果物になるので、要求されたページ・リージョン・フォーム・LOV・メニューをコンパクトなblueprint形式に落とし込みます。
1 件のファイルを作成中1 件のファイルを作成中 • 447行を書き込み中
1 件のファイルを作成中1 件のファイルを作成中 • 376行を書き込み中
ファイルを作成しました。最後に、必須ページ・メニュー項目・Order Line IDの扱い・アイコン許可リストに対して軽く点検しています。
点検で、ページ数は17、リージョン数は39で、指定された主要ページは入っています。アイコン照合の抽出方法にファイル名が混ざってしまったので、そこだけ正しい抽出で再確認します。
LINE_ITEM_ID や行番号由来の識別子は出ていないことを確認しました。アイコン照合は許可リスト側の行末形式の影響で完全一致検索が効いていないようなので、別の方法で確認します。
生成しました: skills-output/order-entry-blueprint.md
確認した点:
17ページ、39リージョンを出力 指定のトップメニュー順を反映 Order Line ID は OREN_ORDER_ITEMS.ORDER_ITEM_ID 由来で、LINE_ITEM_ID や行番号由来の識別子は未使用使用アイコンは apex-fa-icons-allowlist.txt 内に存在することを確認済み order-entry-blueprint.md ドキュメント・MD 15:50
生成されたskills-output/order-entry-blueprint.mdをAPEXワークスペースにインポートします。作成済みのAPEXワークスペースblueprintにサインインします。
アプリケーション・ビルダーよりインポート を実行します。
インポートするファイルとしてskills-output/order-entry-blueprint.md を選択します。ファイル・タイプ はアプリケーション・ブループリント です。
次 へ進みます。
ブループリント・インポート・エラーが発生しました。copy the full error log to the clipboardをクリックし、エラー・ログをクリップボードにコピーします。
Codexに貼り付けて、修正を依頼します。
修正も30分程度の時間がかかりました。
添付の検証エラー内容に沿って、skills-output/order-entry-blueprint.md を修正しました。
主な修正:
List of Values / Lists / Breadcrumb の構造を blueprint 文法どおりに修正Calendar の Render As を startDateCol / supplementalInfo に修正 Map の Render As を latitudeCol / longitudeCol / tooltip / hidden に修正 hidden列に残っていた不正な Format Mask を削除 Modal Forms ページグループを Forms に変更して参照も統一Calendar SQL内の禁止されやすい order by を除去 確認済み:
17ページ、39リージョンのまま維持 使用アイコンは allowlist 内 LINE_ITEM_ID / ROWNUM / ROW_NUMBER は未使用です。order-entry-blueprint.md ドキュメント・MD 16:24
再度、blueprintのインポートを実行ます。
blueprintのインポートですが、インポートが完了するとAPEXアプリケーションが作成されています。
作成されたアプリケーションを実行してみます。
アプリケーションのサインイン後にエラーが発生しました。
このエラーもCodexに貼り付けて、修正を依頼しました。
サインイン後にホームページを開く際に、以下のエラーが発生しました。
Failed to parse SQL query! ORA-20999: Failed to parse SQL query! ORA-06550: line 20, column 10: ORA-22848: cannot use BLOB type as comparison key
原因はHome Dashboardの「Top 5 Revenue Products Last 12 Months」カードSQLでした。PRODUCT_IMAGE がBLOBなのに GROUP BY に含まれていて、Oracleが ORA-22848 を出していました。
skills-output/order-entry-blueprint.md (line 523) を修正済みです。売上集計を内側のサブクエリで PRODUCT_ID 単位に行い、外側で OREN_PRODUCTS をJOINして画像BLOBを取得する形にしました。
確認済み:
PRODUCT_IMAGE は GROUP BY / ORDER BY / WHERE / JOIN条件 に使われていません。画像表示用のSELECT列としては維持しています。 order-entry-blueprint.md ドキュメント・MD 16:30
修正されたblueprintを、再度インポートしました。
アプリケーションにサインイン後、Home Dashboard が表示されました。
Customer Order Details のページです。
Orders Workbench のページです。
Orders Calendar のページです。
Store Command Map のページです。
Management Hub のページです。
Markdown形式で記述されたAPEXアプリケーションを、blueprintとしてAPEXワークスペースにインポートできることは確認できましたが、Markdownの書式の説明がどこに記載されているのか、なぜCodexでblueprintが生成できたのかは、今のところ不明です。
今回の記事は以上になります。
完