テクニカル・シート
Oracle™ APEX 18.1 APEX開発
概要編
株式会社シックススクウェアジャパン
DBXAP(ディービーザップ)
発行日: 2017 年 04 月 18 日
更新日: 2019 年 07 月 09 日
1.2 版
目次
1 はじめに ................................................................................................ 1
1.1 本文書について ............................................................................................. 1
1.2 本文書の目的 ................................................................................................ 1
1.3 本文書の例で使用する環境 ............................................................................... 1
2 Oracle™ APEXを利用する前に ................................................................. 2
2.1 初めて Oracle™ APEXをさわる方へ .................................................................. 2
2.2 なぜ Oracle™ APEXなのか .............................................................................. 2
3 Oracle™ APEX概要 ................................................................................ 4
3.1 Oracle™ APEXとは ....................................................................................... 4
3.2 Oracle™ APEXへの接続 ................................................................................. 4
4 Oracle™ APEXの管理 ............................................................................. 7
4.1 インスタンス管理概要 ..................................................................................... 7
5 Oracle™ APEX開発画面の操作 ............................................................... 11
5.1 Oracle™ APEXの主要コンポーネント .............................................................. 11
5.2 アプリケーション・ビルダーによる開発の概要 ................................................... 12
6 アプリケーション動作の理解 .................................................................... 16
6.1 動作理解の為の最初のステップ ....................................................................... 16
7 付録 A 関連資料 .................................................................................... 18
1 / 19 Copyright 2017-2019 SIX SQUARE JAPAN Co., Ltd. All Rights Reserved.
1 はじめに
1.1 本文書について
本文書は、株式会社シックススクウェアジャパン(以下当社といいます)が提供する、技術文書となります。本文書は情報提供を目的とし、本文書及び関連文書の使用に起因するいかなる損害についても、当社は責任負いません。
1.2 本文書の目的
本文書は、主に初めて Oracle™ APEXによる開発を行う場合の必要な知識について、マニュアルのみを参照した場合では理解しづらい点の、補足説明を目的としています。
1.3 本文書の例で使用する環境
本文書では特に断りのない場合、以下の環境を前提としています。
※ 開発に使用するブラウザについては Google™ Chromeを推奨します。
OS : Oracle™ Linux
DB : Oracle™ Database 18c(コンテナ・データベース構成)
PDB名: PDB1
APEX : Oracle™ APEX 18.1
2 / 19 Copyright 2017-2019 SIX SQUARE JAPAN Co., Ltd. All Rights Reserved.
2 Oracle™ APEXを利用する前に
2.1 初めて Oracle™ APEXをさわる方へ
Oracle™ APEXはローコード開発(少ないコード量の開発)によるブラウザベースのWebアプリケーション開発ツールです。マニュアルだけでは全容をつかみにくいなどの部分を補足したいと思います。Oracle™ APEXによる開発の一助になれば幸いです。
2.2 なぜ Oracle™ APEXなのか
まずは当社が考える Oracle™ APEXを利用するメリットについて説明したいと思います。
2.2.1 新規システム導入なしの開発環境
Oracle™ APEXは、Oracle Personal Edition、Oracle Standard Edition 2、Oracle Enterprise Editionなど、全 Oracle™ Databaseライセンスの無償オプションとして利用できます。
Oracle™ Databaseを既に購入済みである場合、新しくサーバーやライセンスなどを購入せずに、SQLスクリプトによるインストールを行うだけで利用できるようになるというのは、開発開始にあたっての大きなメリットになります。
2.2.2 既存データの流用
Oracle™ APEXの動作部分は基本的に PL/SQL及び SQLでの開発となります。既存のデータが同じ Oracle™ Database上にある場合、データの参照権限を渡すだけでそのデータを利用した開発が出来るようになります。
DBLINKなどの Oracle™ Databaseの標準的な機能や、Web APIのコール機能が標準でついている為、他のデータソースからデータを集めるといったことが行いやすいのも特徴です。
2.2.3 容易な移行性
システムを構築する際に移行性は重視される点の一つです。Oracle™ APEXで作成したアプリケーションは、SQLファイルとしてエクスポートし、新規バージョンの Oracle™ APEXに対してインポートということも出来ますし、Oracle™ APEXで利用しているスキーマごとエクスポート・インポートといったことも可能です。
※ 移行時にサポートされなくなる機能などには注意してください。
3 / 19 Copyright 2017-2019 SIX SQUARE JAPAN Co., Ltd. All Rights Reserved.
2.2.4 高い汎用性と拡張性
Oracle™ Databaseで動作していることは高い汎用性と拡張性をもたらします。他のノンプログラミング開発ツールで利用するデータベースでは、独自のデータベースを利用するなどの理由から特定のデータ連携方法しかできない場合があります。Oracle™ APEXでは、Oracle™ Databaseへの直接接続が可能であるため、シェルや Javaなど一般的な言語からのデータ操作・共有が可能となります。
4 / 19 Copyright 2017-2019 SIX SQUARE JAPAN Co., Ltd. All Rights Reserved.
3 Oracle™ APEX概要
3.1 Oracle™ APEXとは
Oracle™ APEXは、Oracle™ Application Expressの略称です。Webアプリケーションの開発をローコード(少ないコード)での実装が可能です。Webブラウザベースの開発ツールで、Oracle™ Database のライセンスに無償オプションとして付属しています。
以下の SQLにより、インストール済みの Oracle™ APEXのバージョンが確認可能です。
opc$ sudo su - oracle
oracle$ sqlplus / as sysdba
SQL> col COMP_NAME for a30
SQL> col NAME for a20
SQL> col VERSION for a15
SQL> select r.COMP_NAME, r.VERSION, c.NAME, c.CON_ID
2 from CDB_REGISTRY r, V$CONTAINERS c
3 where r.CON_ID=c.CON_ID and r.COMP_ID='APEX'
4 order by CON_ID;
COMP_NAME VERSION NAME CON_ID
------------------------------ --------------- -------------------- ----------
Oracle Application Express 18.1.0.00.45 PDB1 3
3.2 Oracle™ APEXへの接続
3.2.1 埋込み PL/SQLゲートウェイを利用した接続
埋込み PL/SQLゲートウェイを利用すると、Oracle™ Databaseで直接Webサーバーのリスニングが行われます。以下のようにデータベースサーバーの IPアドレスと、リスニングポートをブラウザで指定するとログイン画面が表示されます。
https://<データベースサーバーIP>:<リスニングポート>/apex
Oracle™ REST Data Services(旧称 APEXリスナー)を構成する場合、Webサーバーと Databaseサーバーが分離出来ます。本番環境では通常 Oracle™ REST Data Servicesを構成して利用します。
リスニングポートは以下の SQLにて確認が可能です。値が 0の場合は無効を意味しています。
SQL> alter session set container = pdb1;
5 / 19 Copyright 2017-2019 SIX SQUARE JAPAN Co., Ltd. All Rights Reserved.
SQL> SELECT DBMS_XDB_CONFIG.GETHTTPSPORT FROM DUAL;
GETHTTPSPORT
------------
5500
以下の SQLにてリスニングポートが変更可能です。先の SQLにて値が 0だった場合は、リスニングするポート番号を指定して有効化出来ます。
SQL> alter session set container = pdb1;
SQL> EXEC DBMS_XDB_CONFIG.SETHTTPSPORT(5500);
Oracle™ APEXのインストール詳細については、以下の当社記事が参考になります。
https://dbxap.sixsquare.co.jp/tech-0001/
3.2.2 DBCS(Oracle™ Database Cloud Service)上の Oracle™ APEX
OCI-C(Oracle™ Cloud Infrastructure Classic)の DBCSでは最初から Oracle™ APEXが組み込まれています。サービス・コンソール画面から接続許可後、接続が出来るようになります。また、スタンドアロンの ORDSについても構成済みとなります。
以下のような URLへ接続することで、Oracle APEXへアクセスできます。URLは Oracle™ Cloud のサービス・コンソール画面上からもリンクされています。
https://<データベースサーバーIP>/ords/<PDB名>
Oracle™ Database 18c 新しい OCIでは、Oracle™ APEXの構成がされていないため、ORDSを含めて自分で構成をする必要があります。
3.2.1 Oracle™ REST Data Services(ORDS)による接続
ORDSは Oracle™ APEXのアプリケーションサーバーとして利用できる Java™アプリケーションです。デプロイが保証された環境として、Oracle™ WebLogic Serverか Apache Tomcatをサポートしています。スタンドアロンとして単体動作することも可能です。
また、ORDSの設定によって、同じバージョンの Oracle™ APEXを条件として、複数の PDBや、ワークスペース毎で URLを変更することなどができます。
6 / 19 Copyright 2017-2019 SIX SQUARE JAPAN Co., Ltd. All Rights Reserved.
ORDSを構成することにより、Web APIの提供やWebサーバー等の分離、Webサーバーなどの各ミドルウェアのセキュリティ機能の利用を可能にします。
7 / 19 Copyright 2017-2019 SIX SQUARE JAPAN Co., Ltd. All Rights Reserved.
4 Oracle™ APEXの管理
4.1 インスタンス管理概要
4.1.1 インスタンス管理者
INTERNALワークスペースのインスタンス管理者(ADMINユーザー)によって、インスタンス(PDB)単位の管理を行います。インスタンス管理者は、Oracle™ APEXインスタンス全体を管理するスーパーユーザーです。インスタンス管理者は、ワークスペース割当ての管理や、利用機能制限などのアプリケーション全体の構成およびセキュリティの管理を行います。
4.1.2 ワークスペース概要
Oracle™ APEXでは、ワークスペース(作業領域)上で開発を行います。開発者ごとに参加するワークスペースを割り当てます。コピーされた同じアプリケーションであっても、ワークスペース毎にプライベートなデータを利用することが出来ます。
図 4-1 ワークスペース概要図
開発時に自動生成される SQLについて、以下”A.”のような SQLが生成されます。これにより、開発者はスキーマを意識せずにワークスペース内のプライベートなデータとして扱うことが出来ます。
A. ローカル・スキーマ定義の SQL
8 / 19 Copyright 2017-2019 SIX SQUARE JAPAN Co., Ltd. All Rights Reserved.
select id from tbl_cust / select id from #OWNER#.tbl_cust
B. スキーマ名指定の SQL
select id from <スキーマ A>.tbl_cust
共通のマスタテーブルなどで、”B.”のようにスキーマを指定する形でコーディングする場合は、シノニム化を行うか、共有コンポーネントのアプリケーション定義属性、置換文字列などでなどで一括置換できるようにすると便利です。
4.1.3 インスタンス管理者サインイン
管理タスクを実行するために、Oracle™ APEX管理サービス・アプリケーションにサインインします。
以下 URLのログイン画面から、ADMINユーザーでサインインします。
https://<データベースサーバーIP>/ords/apex_admin
または、以下 URLの通常のワークスペースへのログイン画面にて、ワークスペース名をINTERNALとしてサインインすることも可能です。
https://<データベースサーバーIP>/ords
図 4-2 ワークスペースログイン画面
10 / 19 Copyright 2017-2019 SIX SQUARE JAPAN Co., Ltd. All Rights Reserved.
ADMINユーザーのパスワードが不明な場合は、以下スクリプトにて変更可能です。スクリプトはOracle™ APEXインストール時のディレクトリ配下にあるものを使用します。インストール済みバージョンのスクリプトを実行する必要があることに注意してください。
データベースインストール直後の初期配置は $ORACLE_HOME/apex となります。OCI-CのDBCSでは/u01/app/oracle/product/apex/<バージョン>にインストール済みの Oracle™ APEXのバイナリが配置されています。
SQL> alter session set container = pdb1;
SQL> @apxchpwd.sql
================================================================================
This script can be used to change the password of an Application Express instance
administrator. If the user does not yet exist, a user record will be
created.
================================================================================
Enter the administrator's username [ADMIN] <入力無し> User "ADMIN" exists.
Enter ADMIN's email [ADMIN] <入力無し> Enter ADMIN's password [] <パスワードを入力> Changed password of instance administrator ADMIN.
11 / 19 Copyright 2017-2019 SIX SQUARE JAPAN Co., Ltd. All Rights Reserved.
5 Oracle™ APEX開発画面の操作
5.1 Oracle™ APEXの主要コンポーネント
5.1.1 各コンポーネントの概要
Oracle™ APEXには開発における 4つの以下のような主要コンポーネントがあります。
アプリケーション・ビルダー
開発には主にこのコンポーネントを利用します。Webアプリケーションの新しい画面の作成やデータの取得する SQLの記述、画面配置の変更などが出来ます。
SQL ワークショップ
SQLまたは SQLスクリプト・ファイルの実行、データベース・オブジェクトの定義やデータの変更、リレーショナルの作成などが出来ます。ワークスペースに割り当てられたスキーマから操作します。
チーム開発
アプリケーション開発プロセスの管理を支援します。アプリケーションのスケジュールや To Do、バグの管理、利用者のフィードバック管理などの機能があります。
アプリケーション・ギャラリ
ギャラリから選択したパッケージ・アプリケーションのインストールが可能です。いくつかのアプリケーションが事前に準備されています。
アプリケーション・ギャラリには、サンプル・アプリケーションと生産性アプリケーションというタイプがあり、生産性アプリケーションはデフォルトで編集が出来ず、ロックを解除して編集をすると、サポートが受けられなくなります。ユーザーが作成したパッケージ・アプリケーションのタイプは、カスタム・アプリケーションと呼ばれます。
また、管理機能では、ワークスペースで利用可能な表領域の追加リクエストや、各ユーザーのページ・ビュー状況などのアクティビティ・レポートが確認できます。
12 / 19 Copyright 2017-2019 SIX SQUARE JAPAN Co., Ltd. All Rights Reserved.
5.1.2 主要なコンポーネントへのアクセス
ワークスペースへサインインした直後の画面から、それぞれのコンポーネントへアクセスできます。
図 5-1 ワークスペースサインイン直後の画面
5.2 アプリケーション・ビルダーによる開発の概要
5.2.1 アプリケーション・ビルダーの開発画面の主要用語
ページ・デザイナ
ページ・デザイナはWebアプリケーションの 1ページ(1画面)について、レイアウト調整や画面機能の追加・変更などを行います。Oracle™ APEX 5.0から、主にページ・デザイナで画面の作成を行います。
ページ
ページは、基本的にWebアプリケーションの 1画面のことを指します。アプリケーション・ビルダーでは、アイテム、リージョンなどのユーザーインタフェース要素を含むページを作成します。
リージョン
リージョンとはページの論理サブセクションです。各ページには複数の異なるタイプのリージョンをいくつでも作成できます。リージョンのタイプには、HTMLテキスト、SQL問い合わせ、PL/SQL生成の HTML、グラフなどがあります。
13 / 19 Copyright 2017-2019 SIX SQUARE JAPAN Co., Ltd. All Rights Reserved.
アイテム
アイテムには、テキスト・フィールド、テキスト領域、パスワード、選択リスト、チェック・ボックスなどがあります。アイテムには属性の指定ができ、ページ上のアイテムの表示と動作に影響を与えます。例えばラベルの表示位置、アイテムの大きさ、直前のアイテムの横または下に表示するかどうかといった属性があります。
アイテムの値はアプリケーションのセッション・ステートに自動的に格納され、ユーザー・セッション内の任意の時点で参照できます。
ページ・デザイナ及びページ、リージョン、アイテムの関係を簡単に図示します。
図 5-2 要素の関連図
反映
14 / 19 Copyright 2017-2019 SIX SQUARE JAPAN Co., Ltd. All Rights Reserved.
5.2.2 ページ・デザイナの構成
構成説明の前にページ・デザイナを表示するフローを示します。サインイン後、①アプリケーション・ビルダーの画面から、②編集したいアプリケーションをクリック、さらに③ページの作成または④編集したいページをクリックすると、ページ・デザイナが開きます。
図 5-3 ページ・デザイナを開くまでの操作フロー
②
③
④
①
15 / 19 Copyright 2017-2019 SIX SQUARE JAPAN Co., Ltd. All Rights Reserved.
ページ・デザイナの構成について、以下に簡単な説明を示します。
図 5-4 ページ・デザイナの構成
グリッド・レイアウト
レイアウトの変更や、編集中の対
象変更する。
プロパティ・エディタ
レポート表示に利用す
る SQLなどもここで
記載する。
リージョンやアイテムの一覧
ドラッグ・アンド・ドロップで
グリッド・レイアウトに配置
ナビゲーション・ペイン
各要素のツリー表示
全体でWeb画面 1ページを表している
16 / 19 Copyright 2017-2019 SIX SQUARE JAPAN Co., Ltd. All Rights Reserved.
6 アプリケーション動作の理解
6.1 動作理解の為の最初のステップ
6.1.1 ページ生成の基本の仕組み
Oracle™ APEXによる開発では、基本的にデータ定義からアプリケーションのページを生成することとなります。
例えば、アプリケーションの作成を「スプレッドシートから」という機能を利用してアプリケーションを作成した場合は、コピー&ペーストにて入力したデータを基に、自動で文字列や数値などのデータ定義を判別し、ログインページ、検索ページ、更新用ページを生成します。
検索ページにはレポート・リージョンが含まれ、表形式で検索可能なデータが表示されます。また、検索結果は 1行ごとに更新ページへリンクされます。さらに、自動でログインページからサインインが必要となるように構成されています。
サンプル・アプリケーションなどを参考にしながら、各ページの紐づきの変更やアイテム(グラフやリストなど)の追加、レイアウトの変更、検索条件(SQL)の変更などを行い、アプリケーションのカスタマイズが出来ます。
6.1.2 ページに定義する動作の概要
ページの動作を作りこむ場合、表データのフェッチ操作や、値の操作のために PL/SQLなどの、プログラム・コードを登録します。使いこなすには、主に以下の表に示す用語や動作を理解する必要があります。これらについては、Oracle™ APEXでアプリケーションを作ってみて、躓いた時などに参照してみると良いかと思います。
No APEXで定義された用語 概要 1 セッション・ステート セッションで記録されたデータ・セットを指す。例えば
P10_DOC_STATS変数に、”USEFUL”というセッション・ステート値が設定されていた場合、ページ間を超えて値の操作が可能となる。
2 ページの送信 フォームに入力したデータを確定し、セッション・ステート値への登録や、ページに定義された動作を実行する。
3 プロセス メールの送信やデータのフェッチ等の事前定義された動作や、PL/SQLのコードを指す。基本的にページの送信やページ遷移の前後で動作する。動作条件等は開発者が登録する。
17 / 19 Copyright 2017-2019 SIX SQUARE JAPAN Co., Ltd. All Rights Reserved.
4 動的アクション 一定のタイミング(条件)に紐づいて動作する処理。ページの遷移やリロードを伴わず、処理がされる。
5 計算 アイテムの値を割り当てる処理。プロセスと同様に、ページの遷移や送信時に動作する。
6 検証 基本的にページの送信時に、アイテムに設定された値が数値か、正規表現に一致するかなどを検証する。 ※ 常に実行とすることで、操作のたびに検証を動作させることも出来ます。
7 ブランチ 別のページへ遷移させる処理。ページの送信後に移動させたいページ等があれば登録します。
6.1.3 ページ動作フローの理解
少し複雑ですが、ページ動作フローを理解することで、ページ作成の応用が利きます。値の設定には癖があるのでどのタイミングで何が実行されるかを抑えておくことで、アプリケーション開発の理解が早まります。
https://apex.oracle.com/architectureから動作図を確認することが出来ます。
1. ページを開くとアプリケーション定義の展開、認証、認可の権限確認が行われます。
2. 権限に問題がなければ、セッション・ステート値を利用してプロセスが動作します。
3. プロセス動作後、リージョンやアイテムの値を設定します。
4. 動的アクション(ロード時)が動作します。
5. ページのレンダリングが完了します。動的アクションは AJAXを利用して、ページに対して動的に動作します。
6. ボタンなどにより、ページの送信がされます。
7. 認証、認可の確認を行います。
8. 問題がなければ、セッション・ステートの値をアイテムの値で更新します。
9. ページ計算が動作します。
10. 検証が動作します。失敗時はページに戻ります。
11. プロセスが動作します。
12. プロセスが完了後、ブランチが動作します。
18 / 19 Copyright 2017-2019 SIX SQUARE JAPAN Co., Ltd. All Rights Reserved.
7 付録 A 関連資料
Oracle® Application Express管理ガイド
リリース 18.1 (E98584-01)
http://docs.oracle.com/cd/E86255_01/AEADM/toc.htm
Oracle® Application Expressアプリケーション・ビルダー・ユーザーズ・ガイド
リリース 18.1 (E98591-01)
https://docs.oracle.com/cd/E99982_01/HTMDB/toc.htm
19 / 19 Copyright 2017-2019 SIX SQUARE JAPAN Co., Ltd. All Rights Reserved.
巻末
免責事項
このドキュメントは情報提供のみを目的として提供されており、ここに記載される内容は予告なく変更されることがあります。このドキュメントの情報・資料の掲載には注意を払っておりますが、内容の正確性について一切保証しません。
株式会社シックススクウェアジャパンは、直接的、間接的に関わらず、この文書に関する保証責任及び法的責任の一切を負うものではありません。
他社商品名称に関する表示
「Google」、「Google」ロゴ、「Googleマップ」、「Google Play」、「Google Play」ロゴ、「Android」、「Android」ロゴ、「YouTube」、「YouTube」ロゴ、「ハングアウト」、「ハングアウト」ロゴ、「Gmail」は、Google Inc.の商標または登録商標です。
Oracleと Javaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。
文中の社名、商品名等は各社の商標または登録商標である場合があります。
著者
株式会社シックスクウェアジャパン 代表取締役 亀井 良
1984年東京生まれ。2005年から独立系の中小ソフトウェア・SI会社へ就職し 2012年に独立、株式会社シックススクウェアジャパン 代表取締役に就任、現在に至る。
業務経歴:Oracle™ Databaseを中心に C/Pro*Cなどのプログラミング、DBA業務に従事し、Oracle™ RAC/Linuxを中心としたエンタープライズの導入プロジェクトを数多く経験。 2010年頃より、Oracle™ Exadataの導入検証・設計・運用を主として行う。DBA業務の中で、Oracle™ APEXの導入提案・開発をきっかけに、顧客によるシステム内製化の推進を目指し、2016年頃より Oracle™ APEXの導入フェーズから運用までの全般サービス(DBXAP)を立ち上げる。
株式会社シックススクウェアジャパン https://sixsquare.co.jp
DBXAP(Oracle™ APEXによるWebシステム構築、支援サービス) https://dbxap.sixsquare.co.jp