Cloud Service
Oracle APEX Application Development
データベース上の業務 Web アプリをローコードで素早く構築。Oracle APEX なら SQL の知識を活かして画面・帳票・REST を作れ、Autonomous Database に標準同梱される。
- 1.Oracle DB 上で動くローコードの Web アプリ開発基盤。ブラウザだけで構築できる。
- 2.Autonomous Database に標準同梱され、追加ライセンス不要で使える。
- 3.SQL/PL/SQL を中心に画面・帳票・REST を組み、データに密着したアプリに強い。
解決する課題
社内の業務システムやデータ入力画面、管理ツールは「データベースの中身を安全に見せ、編集させる Web アプリ」が大半を占めます。これをフロントエンド・バックエンド・認証まで一式スクラッチで作るのは重く、保守も続きません。Oracle APEX は、Oracle Database 上で動くローコードの Web アプリ開発基盤で、ブラウザだけで業務アプリを素早く構築・公開できます。
- DB の表やビューに対するCRUD 画面や帳票を、毎回フルスタックで作り込みたくない
- SQL や PL/SQL の知識を活かして、データに密着したアプリを短期間で形にしたい
- 認証・認可・フォーム検証・ページネーションなどの定型機能を自前実装したくない
- 部門の Excel 運用や Access アプリを、集中管理できる Web アプリへ置き換えたい
APEX は Autonomous Database に標準で同梱され、追加ライセンスなしで使える点が大きな特徴です。AWS でいえばマネージド RDB に密着したローコード基盤という位置づけで、データ中心アプリ開発の領域に相当します。
主要概念と用語
- ワークスペース(Workspace): 開発の論理的な区画。1 つ以上のスキーマと開発者・アプリをまとめる単位
- アプリケーション(Application): 複数ページからなる 1 つの Web アプリ。ページ・コンポーネント・共有コンポーネントで構成する
- ページ(Page): 画面の単位。リージョン・アイテム・ボタン・プロセスなどを配置する
- リージョン(Region): ページ上のコンテンツ枠。フォーム・対話グリッド・チャート・レポートなどの種類がある
- 対話グリッド / 対話レポート(Interactive Grid / Report): 行内編集・絞り込み・集計をユーザー操作で行える高機能なデータ表示部品
- 共有コンポーネント(Shared Components): 認証・認可・ナビゲーション・リスト・テーマなど、アプリ全体で再利用する定義
- プロセス(Process): ページの送信時などに走る PL/SQL やデータ操作の処理
- ORDS(Oracle REST Data Services): APEX の Web リクエストを処理し、表やクエリを REST 化する基盤ミドルウェア
- ユニバーサルテーマ(Universal Theme): レスポンシブな標準 UI テーマ。CSS をほぼ書かずに整った画面を得られる
仕様・制限・クォータ
- APEX はデータベース内に格納・実行される。アプリ定義やメタデータは DB 内の表に保持され、別途アプリサーバーを立てる必要はない
- ブラウザからの HTTP リクエストは ORDS が受けて DB に橋渡しする。Autonomous Database では ORDS と APEX がマネージドで提供される
- 1 ワークスペースに複数アプリ、1 アプリに多数ページを持てるが、ページあたりの部品数や同時開発者数などには運用上の現実的な上限がある
- アップロードファイルのサイズや、1 リクエストの処理時間・行数などには設定とサービス上の制限があり、大量データ処理は分割やバッチ側に寄せる
- バージョンや同梱状況、利用できる機能はデータベースの提供形態(Autonomous か自己管理か)で異なるため、最新の公式ドキュメントで確認する
APEX はデータベースに密着しているため、集計や一括更新はページ処理で行を回すより SQL/PL/SQL にまとめる方が高速で安定します。画面はあくまで入口とし、ロジックは DB 側に置く設計が基本です。
内部の仕組み
APEX は「ブラウザのリクエストを ORDS が受け、データベース内の APEX エンジンがページを動的に組み立てて返す」という構造で動きます。アプリの実体はファイルではなくDB 内のメタデータであり、実行時にそのメタデータを解釈して HTML を生成します。
- ユーザーがページを開くと、ORDS 経由でリクエストが DB に届き、APEX エンジンが該当ページの定義を読み、SQL を実行して HTML をレンダリングする
- 各 HTTP リクエストは短命なセッションとして扱われ、セッションステートは DB に保持されるため、アプリサーバー側で状態を抱えない
- データアクセスは基本的にそのワークスペースに紐づくスキーマ権限で行われ、画面の裏側は通常の SQL/PL/SQL として実行される
- REST 連携は ORDS のRESTful サービスとして公開でき、外部からの呼び出しや他システム連携の入口になる
セッションステートが DB に集約されるため、フロント側でスケールしても整合が崩れにくいのが APEX の利点です。一方で機密値をセッションステートに残しすぎないよう、保護レベルの設定に注意します。
設計パターン / ベストプラクティス
- データモデル先行: 表・ビュー・制約を先に整えてからアプリを作る。きれいなスキーマがそのまま良い画面につながる
- ロジックは DB に集約: 検証や業務ルールは PL/SQL パッケージにまとめ、複数アプリ・複数画面から再利用する
- 共有コンポーネントの活用: 認証・認可・ナビゲーションを共有定義にし、アプリ間で一貫させる
- 対話グリッド/レポートを基本部品に: 一覧・編集・絞り込みは標準部品で賄い、独自実装を最小化する
- REST はバックエンド連携に: 外部システム連携やモバイル向けは ORDS の REST で公開し、画面ロジックと分離する
- 環境分離とエクスポート管理: 開発・本番を分け、アプリ定義は SQL スクリプトとしてエクスポートしてバージョン管理する
運用・監視
- APEX 自身のアクティビティログで、ページ表示回数・エラー・実行時間などのアプリ利用状況を追跡できる
- データベース基盤側のメトリクスやログは OCI Monitoring / Logging と組み合わせ、CPU・接続数・ストレージを一元監視する
- アプリのリリースはエクスポート(SQL スクリプト)と再インポートで行い、本番への直接編集を避けて変更を統制する
- Autonomous Database 同梱の場合、APEX と ORDS のパッチ適用はマネージドで行われるため、運用負荷が小さい
- 障害時は「DB の状態」「ORDS の到達性」「アプリ定義の不整合」を切り分けて原因を特定する
コスト
APEX 自体は追加ライセンスなしで利用でき、コストは主にそれを動かすデータベース(特に Autonomous Database)の規模で決まります。アプリの本数ではなく、消費する DB の計算資源とストレージがコストを左右します。
| コスト要因 | 考え方 | 最適化のヒント |
|---|---|---|
| DB の計算資源 | APEX を動かす DB の規模で課金 | オートスケールや適切なサイズで過剰を避ける |
| ストレージ | アプリ定義とデータの保管量で増える | 不要データの整理とアーカイブ |
| 重いクエリ | 非効率な SQL が CPU を浪費する | 索引やSQLチューニングで負荷を下げる |
| APEX 自体 | 追加ライセンスは不要 | DB に同梱されるため別費用を見込まない |
APEX のコスト最適化はDB を効率よく使うことに尽きます。重い全件スキャンを索引で減らす、不要な再描画を避ける、といったチューニングが、そのまま計算資源の節約につながります。
セキュリティ
- **認証(Authentication)**は、データベースアカウント・APEX アカウント・SSO/OAuth(SAML/OIDC) など複数方式から選べる。本番では IdP 連携を基本にする
- **認可(Authorization)**スキームでページや部品単位のアクセス制御を行い、ロールに応じて表示や操作を絞る
- 入力値はバインド変数として扱われるのが基本で、組み立て SQL を避けることでSQL インジェクションを防ぐ
- DB 接続情報や外部 API のキーは直書きせず Vault(Secrets)等で管理し、設定やコードに残さない
- 外部公開する場合は前段に API Gateway / WAF / ロードバランサ を置き、APEX を直接インターネットへ晒さない構成にする
ユーザー入力を文字列連結で SQL に埋め込むとSQL インジェクションの温床になります。APEX ではバインド変数を使い、どうしても動的 SQL が必要な場合も入力の検証とバインドを徹底してください。
関連サービス・比較
APEX は「DB に密着したローコード開発」という性格上、Autonomous Database とほぼ一体で語られます。データ基盤としての Autonomous Database と、その上のアプリ層である APEX の役割を対比します。
| 観点 | Oracle APEX | Autonomous Database |
|---|---|---|
| 役割 | DB 上の Web アプリ開発・実行層 | アプリを支えるマネージド DB 基盤 |
| 主な利用者 | アプリ開発者・業務担当 | DBA・データ基盤担当 |
| 提供形態 | DB に標準同梱 | OCI のマネージド DB サービス |
| 主言語 | SQL/PL/JavaScript | SQL/PL |
| 追加費用 | 追加ライセンス不要 | DB の規模に応じた課金 |
| 位置づけ | データに密着したアプリ層 | アプリの土台となるデータ層 |
関連して、REST 公開と外部連携には ORDS / API Gateway、認証情報の管理には Vault、外部公開時の保護には WAF / ロードバランサ、基盤の監視には OCI Monitoring / Logging を組み合わせるのが定番です。
ハンズオン / CLI例
APEX のアプリ開発はブラウザ上の APEX デザイナーで行うのが基本ですが、APEX を動かす Autonomous Database のライフサイクルは OCI CLI で自動化できます。以下は APEX が同梱される Autonomous Database を作成・確認する例です。
# APEX が使える Autonomous Database を作成
oci db autonomous-database create \
--compartment-id ocid1.compartment.oc1..xxxxx \
--db-name myapexdb \
--display-name my-apex-db \
--cpu-core-count 1 \
--data-storage-size-in-tbs 1 \
--admin-password 'StrongPassw0rd#_' \
--db-workload OLTP
# コンパートメント内の Autonomous Database を一覧
oci db autonomous-database list \
--compartment-id ocid1.compartment.oc1..xxxxx \
--query "data[].{name:\"display-name\", state:\"lifecycle-state\"}" \
--output table
# 単一の Autonomous Database 詳細を取得(接続情報や APEX/ORDS の URL を確認)
oci db autonomous-database get \
--autonomous-database-id ocid1.autonomousdatabase.oc1..xxxxx
OCI Service
Oracle APEX Application Developmentを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
アプリ統合
比較で見る軸
クラウド: OCI / カテゴリ: アプリ統合 / 難易度: intermediate
導入後に効く点
Autonomous Database に標準同梱され、追加ライセンス不要で使える。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- OCI
- カテゴリ
- アプリ統合
- 難易度
- intermediate
- 関連資格
- —
- 設計柱
- operational / cost / security
判断チェックリスト
- 自社の用途が「アプリ統合 / operational」に近いか確認する。
- 強みである「Oracle DB 上で動くローコードの Web アプリ開発基盤。ブラウザだけで構築できる。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。