DBXAP(ディービーザップ)€¦ · Oracle ® APEX 20.1 APEX ......

20
テクニカル・シート Oracle ® APEX 20.1 APEX 開発 概要編 株式会社シックススクウェアジャパン DBXAP(ディービーザップ) 発行日 : 2017 04 18 更新日 : 2020 05 12 1.3

Transcript of DBXAP(ディービーザップ)€¦ · Oracle ® APEX 20.1 APEX ......

テクニカル・シート

Oracle® APEX 20.1 APEX開発

概要編

株式会社シックススクウェアジャパン

DBXAP(ディービーザップ)

発行日: 2017 年 04 月 18 日

更新日: 2020 年 05 月 12 日

1.3 版

目次

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開発画面の操作 .................................................................... 10

5.1 Oracle APEXの主要コンポーネント ................................................................. 10

5.2 アプリケーション・ビルダーによる開発の概要 ................................................... 11

6 アプリケーション動作の理解 ....................................................................... 15

6.1 動作理解の為の最初のステップ ....................................................................... 15

7 付録 A 関連資料 ....................................................................................... 17

1 / 18 Copyright 2017-2020 SIX SQUARE JAPAN Co., Ltd. All Rights Reserved.

1 はじめに

1.1 本文書について

本文書は、株式会社シックススクウェアジャパン(以下当社といいます)が提供する、技術文書となります。本文書は情報提供を目的とし、本文書及び関連文書の使用に起因するいかなる損害についても、当社は責任負いません。

1.2 本文書の目的

本文書は、主に初めて Oracle APEXによる開発を行う場合の必要な知識について、マニュアルのみを参照した場合では理解しづらい点の、補足説明を目的としています。

1.3 本文書の例で使用する環境

本文書では特に断りのない場合、以下の環境を前提としています。

※ 開発に使用するブラウザについては、Web開発に便利なプラグイン等が利用可能ですので、Google Chromeを推奨します。

OS : Oracle Linux

DB : Oracle Database 18c(コンテナ・データベース構成)

PDB名: PDB1

APEX : Oracle Application Express 20.1

2 / 18 Copyright 2017-2020 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 / 18 Copyright 2017-2020 SIX SQUARE JAPAN Co., Ltd. All Rights Reserved.

2.2.4 高い汎用性と拡張性

Oracle Databaseで動作していることは高い汎用性と拡張性をもたらします。他のノンプログラミング開発ツールで利用するデータベースでは、独自のデータベースを利用するなどの理由から特定のデータ連携方法しかできない場合があります。Oracle APEXでは、Oracle Databaseへの直接接続が可能であるため、シェルや Javaなど一般的な言語からのデータ操作・共有が可能となります。

2.2.5 エンジニア向け開発環境の充実

Oracle Autonomous Databaseでは、Oracle Cloud Free Tierの常時無償サービスにて、合計 2つのデータベース(それぞれ 1 OCPUと 20GBのストレージを搭載)が利用可能です(2020/05/11現在)。これらは標準で Oracle APEXの利用が可能です。記載の通り CPUとストレージに制限がありますが、検証環境としては十分なものです。

Oracle APEXの公式サイト(https://apex.oracle.com)にて、無償のワークスペースの利用ができます。これは、申し込みをすればすぐに利用可能な環境です。

また、Oracle Databaseのライセンスに付随している理由より、既存の Oracle Databaseを利用しているユーザーであれば、そのままWebアプリを別で作ることが出来ます。

OTN開発者ライセンスや Oracle Express Editionでは、制限は多いですが、無償のデータベースを利用できます。もちろん Oracle APEXの利用も可能です。サポートはないため、自己解決できない場合は、コミュニティを利用することとなります。

4 / 18 Copyright 2017-2020 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 20.1.0.00.13 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 / 18 Copyright 2017-2020 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 Oracle REST Data Services(ORDS)による接続

ORDSは Oracle APEXのアプリケーションサーバーとして利用できる Javaアプリケーションです。デプロイが保証された環境として、Oracle WebLogic Serverか Apache Tomcatをサポートしています。スタンドアロンとして単体動作することも可能です。

また、ORDSの設定によって、同じバージョンのOracle APEXを条件として、複数の PDBや、ワークスペース毎でURLを変更することなどができます。

ORDSを構成することにより、Web APIの提供やWebサーバー等の分離、Webサーバーなどの各ミドルウェアのセキュリティ機能の利用を可能にします。

3.2.3 DBCS(Oracle Database Cloud Service)上の Oracle APEX

OCI (Gen2)では、Oracle APEXの構成がされていないため、ORDSを含めて自分で構成をする必要があります。その分柔軟性は高く、オンプレミスと同等程度の柔軟性を持ちます。Oracle Cloud上や他ベンダーの Cloudの利用を考えれば、オンプレミスより高い柔軟性を持っているといえなくもありません。

6 / 18 Copyright 2017-2020 SIX SQUARE JAPAN Co., Ltd. All Rights Reserved.

3.2.4 Oracle Autonomous Database上の Oracle APEX

ATP(Autonomous Transaction Processing)、ADW(Autonomous Data Warehouse)といったOracle Autonomous Databaseでは、Oracle APEXが最初からサービスとして組み込まれています。

最初から組み込み済みの為、初期導入としての敷居が低いです。また、Exadata上に構成されているため、大量データを扱う場合の性能面でも優位性があります。

最新版への対応が少し遅れることや、ドメインの制限、ローカルサーバーが使えないといったデメリットはありますが、昨今のサーバーレス環境への対応状況や、運用の軽減を考えれば十分にメリットがあります。

7 / 18 Copyright 2017-2020 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

select "ID" from "TBL_CUSTOMER"

8 / 18 Copyright 2017-2020 SIX SQUARE JAPAN Co., Ltd. All Rights Reserved.

select "ID" from #OWNER#."TBL_CUSTOMER"

アプリケーションをまたがるマスタテーブルで、”B.”のようにスキーマを指定する形でコーディングする場合は、シノニム化を行うか、共有コンポーネントのアプリケーション定義属性、置換文字列などでなどで一括置換できるようにすると便利です。

B. スキーマ名指定の SQL

select "ID" from <スキーマ A>."TBL_CUSTOMER"

4.1.3 インスタンス管理者サインイン

管理タスクを実行するために、Oracle APEX管理サービス・アプリケーションにサインインします。以下 URL例のアドレスから、ADMINユーザーでサインインします。

https://<データベースサーバーIP>/ords/apex_admin

接続 URLは各環境によって適宜読み替えてください

または、以下 URLの通常のワークスペースへのログイン画面にて、ワークスペース名をINTERNALとしてサインインすることも可能です。

https://<データベースサーバーIP>/ords

図 4-2 ワークスペースログイン画面

9 / 18 Copyright 2017-2020 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

...set_appun.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.

10 / 18 Copyright 2017-2020 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、バグの管理、利用者のフィードバック管理などの機能があります。

アプリケーション・ギャラリ

ギャラリから選択したパッケージ・アプリケーションのインストールが可能です。いくつかのアプリケーションが事前に準備されています。

アプリケーション・ギャラリには、サンプル・アプリケーションと生産性アプリケーションというタイプがあり、生産性アプリケーションはデフォルトで編集が出来ず、ロックを解除して編集をすると、サポートが受けられなくなります。ユーザーが作成したパッケージ・アプリケーションのタイプは、カスタム・アプリケーションと呼ばれます。

また、管理機能では、ワークスペースで利用可能な表領域の追加リクエストや、各ユーザーのページ・ビュー状況などのアクティビティ・レポートが確認できます。

11 / 18 Copyright 2017-2020 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、グラフなどがあります。

12 / 18 Copyright 2017-2020 SIX SQUARE JAPAN Co., Ltd. All Rights Reserved.

アイテム

アイテムには、テキスト・フィールド、テキスト領域、パスワード、選択リスト、チェック・ボックスなどがあります。アイテムには属性の指定ができ、ページ上のアイテムの表示と動作に影響を与えます。例えばラベルの表示位置、アイテムの大きさ、直前のアイテムの横または下に表示するかどうかといった属性があります。

アイテムの値はアプリケーションのセッション・ステートに自動的に格納され、ユーザー・セッション内の任意の時点で参照できます。

ページ・デザイナ及びページ、リージョン、アイテムの関係を簡単に図示します。

図 5-2 要素の関連図

反映

13 / 18 Copyright 2017-2020 SIX SQUARE JAPAN Co., Ltd. All Rights Reserved.

5.2.2 ページ・デザイナの構成

構成説明の前にページ・デザイナを表示するフローを示します。アプリケーション作成後、下記のフローに沿ってページ・デザイナを開くことが出来ます。

図 5-3 ページ・デザイナを開くまでの操作フロー

サインイン後、「①」アプリケーション・ビルダーをクリック

「②」編集したいアプリケーションをクリック

「③」編集したいページをクリックするとページ・デザイナが開きます

「④」の「ページの作成」ボタンでは新しいページの作成ができます。

④ ③

14 / 18 Copyright 2017-2020 SIX SQUARE JAPAN Co., Ltd. All Rights Reserved.

ページ・デザイナの構成について、以下に簡単な説明を示します。

図 5-4 ページ・デザイナの構成

グリッド・レイアウト

主にレイアウトの変更をする。

プロパティ・エディタ

レポート表示に利用す

る SQLなどもここで

記載する。

リージョンやアイテムの一覧

ドラッグ・アンド・ドロップでグリ

ッド・レイアウトに配置

ナビゲーション・ペイン

各要素のツリー表示

全体でWeb画面 1ページを表している

15 / 18 Copyright 2017-2020 SIX SQUARE JAPAN Co., Ltd. All Rights Reserved.

6 アプリケーション動作の理解

6.1 動作理解の為の最初のステップ

6.1.1 ページ生成の基本の仕組み

Oracle APEXによる開発では、基本的にデータ定義からアプリケーションのページを生成することとなります。

例えば、「ファイルから」という機能を利用してアプリケーションを作成した場合は、コピー&ペーストにて入力したデータや、CSV/XLSX/XML/JSONファイルを基に、自動で文字列や数値などのデータ定義を判別し、「ログインページ」、「検索ページ」、「更新用ページ」を生成します。

「検索ページ」にはレポート・リージョンが含まれ、検索可能なデータが表形式で表示されます。また、検索結果は 1行ごとに「更新用ページ」へリンクされます。さらに、自動で「ログインページ」からサインインが必要となるように構成されています。

サンプル・アプリケーションなどを参考にしながら、各ページの紐づきの変更やアイテム(グラフやリストなど)の追加、レイアウトの変更、検索条件(SQL)の変更などを行い、アプリケーションのカスタマイズが出来ます。

6.1.2 ページに定義する動作の概要

ページの動作を作りこむ場合、データベース表のフェッチ操作の GUI定義や、データ値の操作のために PL/SQLなどの、プログラム・コードの記述をします。使いこなすには、主に以下の表に示す用語や動作を理解する必要があります。これらについては、Oracle APEXでアプリケーションを作ってみて、躓いた時などに参照してみると良いかと思います。

No APEXで定義された用語 概要 1 セッション・ステート セッションで記録されたデータ・セットを指す。例えば

事前定義済みの”APP_USER”置換文字列には、ユーザー名がセッション・ステート値と設定され、ページ間を超えて値の操作が可能となる。

2 ページの送信 フォームに入力したデータを確定し、セッション・ステート値への登録や、ページに定義された動作(プロセス・動的アクション)を実行する。

3 プロセス メールの送信やデータのフェッチ等の事前定義された動作や、PL/SQLのコードを指す。基本的にページの送信やページ遷移の前後で動作する。動作条件等は開発者が登録する。

16 / 18 Copyright 2017-2020 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. プロセスが完了後、ブランチが動作します。

17 / 18 Copyright 2017-2020 SIX SQUARE JAPAN Co., Ltd. All Rights Reserved.

7 付録 A 関連資料

Oracle® Application Express Administration Guide Release 20.1(F24718-01) https://docs.oracle.com/en/database/oracle/application-express/20.1/aeadm/index.html

Oracle® Application Express App Builder User's Guide Release 20.1(F24724-02) https://docs.oracle.com/en/database/oracle/application-express/20.1/htmdb/index.html

18 / 18 Copyright 2017-2020 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