※ 本記事は、Chaitanya Koratamaddi, Ashwin Raoによる”Introducing File-Level Import with APEXlang in Oracle APEX 26.2“を翻訳したものです。

2026年11月9日

Oracle APEX 26.1では、Oracle APEX向けのオープンで人が読みやすいアプリケーション定義言語、APEXlangを導入しました。アプリケーションをAPEXlang形式でエクスポートし、Visual Studio Codeなどの外部エディタで構造化された.apxファイルを編集できます。変更を検証した後、APEXワークスペースへアプリケーションをインポートできます。

これにより、APEXの開発でも、ソースコードを中心とするモダンな手順を使えるようになりました。ページや共有コンポーネントを個別のファイルとして編集し、使い慣れた差分ツールで確認して、ソース管理できます。ただし、小さな変更を適用する場合でも、アプリケーション全体をインポートする必要がありました。

大規模なアプリケーションでは、ページや共有コンポーネントを1つ変えただけでも、全体のインポートに余分な時間がかかります。作業コピーを使わないチームでは、同じ開発環境でほかの開発者が行った、無関係な変更まで上書きする恐れもありました。

Oracle APEX 26.2では、この課題に対応し、選択したAPEXlangファイルだけをインポートできるようにしました。

アプリケーション全体ではなく、更新したページや共有コンポーネントなど、1つ以上のファイルを選んでインポートできます。

段階的な導入と共同開発を支援する

ファイル単位のインポートにより、共有の開発環境でもAPEXlangを段階的に取り入れやすくなります。一部の開発者は、APEXlang形式でエクスポートしたアプリケーションの個々の.apxファイルを、VS Codeなどのローカルエディタで変更します。その間も、ほかのメンバーはApp Builderで作業を続けられます。

変更ができたら、全体を再デプロイせず、変更したページや共有コンポーネントだけをインポートします。編集、インポート、テストのサイクルを短縮し、更新範囲を限定することで、無関係な部分のテストを抑え、問題の調査もしやすくなります。

たとえば、Employee Portalアプリケーションで、ある開発者がVS CodeとAPEXlangを使ってpages/p00003-employees.apxを更新し、別の開発者がApp Builderで共有の値リスト(LOV)dept-dnameを更新するとします。ページファイルを単独でインポートすれば、App Builderで行ったLOVの変更には影響を与えず、アプリケーション全体の再デプロイも避けられます。

注: この共有ワークスペースの例では、アプリケーションの作業コピーを使わず、メインのアプリケーションを直接編集することを想定しています。変更を分離して開発するには、作業コピーを作り、そこでAPEXlangとVS Codeが使えます。完成した変更をApp Builderでメインアプリケーションにマージする前に、個々のファイルを繰り返しインポートできるため、開発とテストを効率化できます。

VS Codeから、選択したAPEXlangソースファイルをインポートする

SQL DeveloperのVS Code拡張機能では、Import Applicationの隣に、Import Fileボタンを追加しました。このボタンを表示するには、拡張機能を、Oracle APEX 26.2以降がインストールされたデータベースに接続し、対象のAPEXlangアプリケーションもAPEX 26.2以降でエクスポートしている必要があります。APEXlangを使った開発手順は、こちらのブログを参照してください。

更新したファイルをインポートする前に、対象アプリケーションがすでにインポート済みか、現在のワークスペースに存在することを確認します。また、Oracle APEX 26.2をインストールしたOracle Databaseに、SQL Developerから接続する設定を確認してください。詳しい設定手順は、ドキュメントを参照してください。

更新ファイルをインポートする手順は、次のとおりです。

  1. VS Codeで、APEXlangアプリケーションのフォルダーを開きます。
  2. 対象の変更を含む.apxファイルを開きます。
  3. エディタのツールバーでImport Fileをクリックします。

注: インポートするのは、エディタで開いているファイルだけです。アプリケーションのほかの部分は含みません。

図1:SQL Developer Extension for VS CodeのImport Fileボタン。

SQLclで選択したファイルをインポートする

新しい-files引数で、インポートするファイルを指定できます。既存のアプリケーションに指定したファイルだけをインポートし、それ以外のコンポーネントは変更しません。

SQLclでAPEXlangを使う方法は、こちらのブログを参照してください。

単一のファイルをインポートする

次のコマンドでは、employee-portalというAPEXlangアプリケーションのEmployees Reportページをインポートします。現在の作業ディレクトリに応じて、以下の同じ結果になる2通りのコマンドのいずれかを使えます。

apex import -input employee-portal/ -files employee-portal/pages/p00003-employees.apx

または、先にアプリケーションのディレクトリへ移動します。

cd employee-portal 
apex import -files pages/p00003-employees.apx

注: -filesには、現在の作業ディレクトリからの相対パスを指定します。先にアプリケーションのディレクトリへ移動した場合は、そのディレクトリからの相対パスでファイルを指定でき、-input引数も省略できます。

既存のアプリケーションに、指定したページだけをインポートします。

複数のファイルをインポートする

複数のファイルをインポートするには、-files引数の後に、ファイルパスを空白で区切って指定します。現在の作業ディレクトリに応じて、以下の同じ結果になる2通りのコマンドのいずれかを使えます。

apex import -input employee-portal/ -files employee-portal/pages/p00003-employees.apx employee-portal/shared-components/lovs/dept-dname.apx

または、先にアプリケーションのディレクトリへ移動します。

cd employee-portal 
apex import -files pages/p00003-employees.apx shared-components/lovs/dept-dname.apx

どちらも、Employees ReportページとDepartmentsの値リストをインポートし、それ以外のアプリケーションファイルは変更しません。

インポート前に、変更を比較して取り込む

対象ワークスペースにインポートする前に、ローカルのAPEXlangソースと、接続先APEX環境の現在のアプリケーションを比較してください。特に、ローカルにエクスポートした後、ほかの開発者がApp Builderで同じページやコンポーネントを変更している可能性がある場合は重要です。

SQL Developer for VS Code 26.3以降では、ローカルのAPEXlangソースと接続先のアプリケーションを比較し、必要な変更を選んでローカルの.apxファイルに取り込めます。更新したファイルを確認し、競合を解消してアプリケーションを検証した後、整合を取った変更をインポートできます。

たとえば、ある開発者がApp BuilderでEmployeesページに列を追加し、別の開発者がVS CodeとAPEXlangで同じページにボタンを追加したとします。VS Code側の開発者は、インポート前にpages/p00003-employees.apxと接続先のアプリケーションを比較し、App Builderで行われた最新の変更を取り込めます。双方の変更を確認して競合を解消した後、ページを検証してインポートすれば、同僚の変更を意図せず上書きすることを防ぎやすくなります。

注: この手順は、共有アプリケーションを直接編集するチームを想定しています。別の方法として、アプリケーションの作業コピーで変更を分離し、必要に応じてAPEXlangやVS Codeも使い、後でApp Builderからメインアプリケーションへマージできます。

まとめ

Oracle APEX 26.2では、APEXlangファイルを選んでインポートし、必要な箇所に絞ってローカル開発を進められるようになりました。VS Codeでページや共有コンポーネントを編集し、新しいImport Fileボタンで必要なファイルだけをインポートできます。SQLclでも、アプリケーションを検証し、-filesオプションで1つ以上の変更ファイルをインポートできます。

インポート前に変更を比較・取得する機能と組み合わせれば、更新範囲を抑えて共同作業を進めやすくなります。APEXアプリケーションを並行開発するチームは、結果をより早く確認できます。

よくある質問

ファイル単位のインポートは、本番環境でも使えますか。

技術的には動作する可能性がありますが、主な用途は開発とテストです。指定したファイルだけを更新するため、関連する依存コンポーネントをすべて含むとは限らず、十分にテストしたアプリケーションの完全な版を表すとも限りません。本番デプロイでは、組織の標準的なアプリケーション全体のデプロイ手順に従い、変更のテスト、追跡、復旧を、組織の手順に沿って行えるようにしてください。

対象のAPEXワークスペースにアプリケーションがない場合も、ファイルをインポートできますか。

いいえ。対象ワークスペースに、アプリケーションがすでに存在している必要があります。存在しなければ、インポートはエラーで失敗します。

新しく作成し、まだアプリケーションに取り込んでいない共有コンポーネントにページが依存する場合は、どうインポートしますか。

VS Codeでは、依存先の共有コンポーネントの.apxファイルを先にインポートしてから、ページをインポートします。SQLclでは、-filesの後に空白で区切って両方のファイルを指定し、1つのコマンドでインポートできます。指定順は問いません。SQLclで依存関係を解決し、正しい順序でインポートします。

手作業で作成した場合も、AIを使ったAPEXlang開発で作成した場合も、新規または未インポートの共有コンポーネントに同じ手順を適用します。

App Builderでファイル単位のインポートを使えますか。

いいえ。SQL Developer Extension for VS CodeとSQLclからのみ利用できます。App Builderには対応していません。

テーマ、テンプレート、プラグイン、ワークスペースコンポーネントも、ファイル単位でインポートできますか。

いいえ。現在、これらのファイルのインポートには対応していません。