Share
Embed
Oracle APEX - 普通の人々のためのコーディング
Oracle Developer Days 2019でのAPEXのセッションで使用した資料で、その後、改訂したもの。
説明ノート付き。
Yuji Nakakoshi
October 18, 2019
Transcript
52 slides
-
Oracle APEXを一言で説明すると「データベースで動作するWebテンプレート・エンジン」であり、それを元に した「アプリケーション開発フレームワーク」です。 特徴を3点、ご紹介します。 (Click - 左の図) デスクトップ向け、および、モバイル向けのWebアプリケーション開発を行うことができます。 (Click -
真ん中の図) データベースに蓄積されたデータを使った、レポート、フォーム、チャート、カレンダーなどを、素早く作るこ とができます。 (Click - 右の図) IT技術者はもちろん、IT技術者でなくても、少しのSQLの知識があれば、アプリケーションを作り始められま す。 さらに、Oracle APEXはOracle Databaseが提供する機能の多くを利用することができます。 5 -
Oracle APEXがどのように利用されているかの一例です。 Oracle APEXは幅広い業界で、利用者の規模の大小に関わらず、様々(さまざま)なビジネス上の問題を解 決するために使用されています。 (Click - 左の図) 一般の従業員、パートナー、顧客といったエンド・ユーザーを対象とした、簡易アプリケーションや、セル フ・サービス・アプリケーションを素早く開発することにより、変化の激しいビジネス上の要件にいち早く追
従できます。 (Click - 真ん中の図) パッケージ・ソフトウェアを既存のビジネスプロセスと統合するため、および、組織が持つ特別な要件を満 たすための拡張を行うために使われています。 APEXは、Oracleが提供しているERPソフトウェアである、Oracle E-Business Suiteの公式にサポートされる拡 張ツールであり、利用者は簡単にEBSに機能追加を行うことができます。 (Click - 右の図) スプレッドシートやMS AccessによるアプリケーションをWeb化することによって、複数のユーザーが同時に 使用できる、データの複製が発生しない、安全な、アプリケーションを構築することができます。 その他、レガシーなクライアント・サーバー型のアプリケーションのWeb化にも使用されています。 6 -
Oracle APEXの特徴になります。 (Click - 左の図) Webブラウザだけを使って開発環境にアクセスできます。また、開発したアプリケーションへは、URLとユー ザーの認証情報だけでアクセスできます。特別なクライアント・ソフトウェアは必要ありません。Webブラウ ザのみです。 (Click -
真ん中の図) 宣言的なフレームワークであるOracle APEXのエンジンでは、アプリケーションとは定義であり、オラクルの データベースの表に保存されるデータです。ファイルへのコード生成やコンパイルは行いません。 (Click - 右の図) すべてのページの処理はデータベース内でのデータ処理であり、オラクル・データベースのスキーマで直 接実行されるPL/SQLによってページが生成されています。したがって、すべてのデータはデータベースの キャッシュを有効に使い、非常に効率的にHTMLのページが生成されます。 7 -
最初はHTML DBという名前でリリースされました。 最新のOracle APEXのバージョンは 19.1で、Oracle Database、Oracle REST Data ServicesおよびOracle Cloud
Serviceと整合性が取れるよう、リリースの番号づけが変わりました。 APEXの開発が始まった当初から、一貫性のある、モダンなアプリケーションを素早く、そして容易に作成す るためのツールを提供する努力が続けられています。 (これは話さなくてもよい) より詳しくは、apex.oracle.comに記載されている方針声明を参照してください。 [https://apex.oracle.com/ja/learn/resources/sod/] 8 -
Oracle APEXの構成要素は、もちろん、Oracle Database、それにインストールされるソフトウェアである、 Oracle APEX、それと、HTTPのリクエストをOracle Databaseに仲介する、Oracle REST Data Services (ORDS)の
3つになります。 Oracleでは、これをRAD Stackと呼んで、プロモーションを行っています。 Oracle APEXはOracle Databaseが稼働していることが条件で、利用可能な環境として多くの選択肢が提供 されています。 無償で利用できる環境としては、 1. 検証用途であれば apex.oracle.com というホストで誰でも自分用のワークスペースを取得し、アプリ ケーションの開発ができます。 2. Oracle Cloudのアカウントを取得すると、Free Tierとして、ADWとATPそれぞれひとつ、無償で利用でき るインスタンスを作成することができます。これらのインスタンスは、1OCPU、20GBの範囲で永遠に無 料で利用可能です。 3. Oracle Database XE (Express Edition)との組み合わせで、OnPに無料でOracle APEXを利用できる環境を 作成できます。 Autonomous Database (ADW/ATP) 上でのOracle APEXのサポートも開始したことから、有償の場合は Oracle Databaseが稼働している全ての環境でOracle APEXの利用が可能です。Autonomous Databaseにつ いてはAPEXが構築済みでインスタンスが提供されるため、構築作業が不要になっています。 10 -
APEXはオラクル・データベースが動いていれば、ローカル、オンプレミス、クラウドの、どこでも実行可能 で、非常に柔軟性があります。開発環境や、実行しているアプリケーションにアクセスするURLだけが必 要です。 Oracle APEXで開発したアプリケーションは、これらの環境に依存せず、変更なしで同じ動作をします。 ラップトップで動作させているOracle Database Express Editionで開発して、その後、アプリケーションを エクスポートして、Autonomous
Databaseへ実装することもできますし、高い負荷状況が発生するなら、 On PremisのExadataへ移動することもできます。 (かならずしも喋らなくていい) 同じバージョンか、より高いバージョンのOracle APEXであれば、APEXアプリケーションをインポートする ことができます。 11 -
Oracle APEXは、Oracle Databaseのライセンスを持っていれば、スタンダード・エディションやエンタープライ ズ・エディションといったエディションにかかわらず、追加コスト無しで利用できます。 そうはいっても、オラクル・データベースは高価で手が出ないし、そこまでのアプリケーションを作るわけで はないんだ、というのはあるでしょう。 リソースの制限、有償サポートがないといった制約はありますが、無償で利用できるオラクル・データベー スがリリースされています。RAC、データガードといった機能は提供されませんが、開発で必要な機能に関 してはエンタープライズ・エディションにて提供されている機能が利用可能です。 現在
Linux 版の 18.4、Windows版の 18.4 がリリースされています。 -- 以下、話してはいけない、注意事項 – 次にリリースされるExpress Editionのバージョンは決まっていない。20cかもしれないし、21cかもしれない。 Mike Hichiwaによると、安定しているバージョンでXEを出荷する、とのこと。 12 -
Oracle REST Data Serviceも無償で利用できます。Oracle DatabaseもしくはOracle WebLogic Server Standard Editionのライセンス範囲内で有償サポートを受けることも可能です。 ORDSは、Oracle
APEX以外にも、単体でOracle Databaseを使ったRESTサービスを実装可能にしたり、 Oracle DatabaseをJSONのドキュメント・ストアとして利用するインターフェースなども提供します。 13 -
アーキテクチャーは単純で、ブラウザからのページのリクエストやフォームのサブミットは、ミドルティアを 経由し、データベースの内部で処理され、そこで生成されたHTMLが応答としてブラウザへ返されます。 ミドルティアはデータ処理や操作といったことは行わず、データベースで動作しているAPEXエンジンがペー ジ・リクエストを受け取り、DBのスキーマにあるデータを使った処理を行います。 (以下は時間に応じて) ミドルティアは、Javaアプリケーションサーバー上で動作するOracle REST Data Service (ORDS)を利用するこ
とが推奨されています。 ORDSを動作させるJavaアプリケーションサーバーとしては、Oracle WebLogic Server(WLS) 、Oracle Glassfish, Tomcatがあります。また、ORDS自体にStandaloneで動作するJettyが含まれていますので、それ を使うこともできます。 HTTPサーバーをORDSの前に配置して、静的なイメージはHTTPサーバーから提供する、といった構成も一 般的です。 APEX architecture is unique. The application artifacts are stored in the database. This makes sense as APEX is not a code generator, it is interpreted from meta data. This way as the Oracle database improves over time the APEX engine inherits these improvements. 19 -
(Click - ブラウザからのURL) ブラウザからの要求があると、 (Click - プロシージャー・コール) ほとんど、そのまま、データベースのプロシージャー・コールとして、データベースを呼び出し、 (Clilck -
データベースのHTML) データベースがHTMLを生成し、 (Click - ブラウザへのHTML) それがそのまま、ブラウザに返されます。 20 -
HTTPのリクエスト処理はすべてデータベースで行われます。 まずURLを受け付けますが、その中には必ずアプリケーションID、ページID、セッションIDの3つのIDが含ま れます。 アプリケーションIDとページIDで、生成するページの処理が決定され、セッションIDに紐づいて、それまで の処理の状態 - Session Stateと読んでいます - が保存されます。
ミドルティアは完全にステートレスで、ステートの管理もデータベースが行います。 こちらのフローはHTTPのGETでのリクエストの受付フローです。 21 -
Oracle APEXによるアプリケーション開発の手順ですが、 アプリケーションを定義し、 そこに含まれる ページを定義し、 ページに含まれるリージョンを定義し、 リージョンに含まれる、ページ・アイテムを定義し、 最後に、動作の定義として、宣言による指定か、コードによる記述を行います。 簡単なアプリケーションでは、宣言による指定で事が足りますので、SQLでデータソースを規定する以外に コードを記載することはありません。
また、大抵はウィザードに従ってページを生成するため、これらの定義が一度に作成されることがありま す。 40 -
現在のOracle APEXでは、ロジックの記述はPL/SQLのみですが、Oracle DatabaseにはMultilingual Engineと して、GraalVMを組み込む計画があります。 年初にこのMLEを使ったOracle APEXのプロトタイプが公開されていました。 このプロトタイプでは、サーバー側のロジックをPL/SQLのみではなく、JavaScript、一部 Python で実装可能
になっています。 フロントエンドはJavaScript一択ですから、サーバー側もJavaScriptにて記述ができるようになると、学習コス トが下がる効果が期待できます。 --- 以下、参考情報。 このプロトタイプがリリースされた時点では、Oracle Database 20cでMLEが実装予定でしたが、後ろになり ました。なので、リリース時期は未定です。 44 -
This is a Section Header without Picture, and can also
be used as a Q and A slide. 47 -
APEXの開発チームは、組み込んでいるライブラリといった、更新されるコードのメンテナンスを行なってい ます。 だいたい、チームの作業時間の25%は、JavaScript, CSSやHTMLのアップグレードや最新の標準に準拠す るために使われています。 JavaScriptのフレームワークは特に厄介で、バックワード・コンパチビリティがなかったり、セキュリティ・ チェックに引っかかるため、更新が必須だったりします。 ユーザーがAPEXで主に記述するのは、SQLやPL/SQLのスニペットであり、これは、本当に変化しないし、 バックワード・コンパチビリティも確保されます。 生産性を高めるアプリケーションを作成するために、何か覚えないといけないとしたら、SQLは学習する価
値のある言語です。今、SQLを使えることでも価値がありますが、将来にわたって有益であることが言えま す。 できるだけAPEX標準のコンポーネントとSQLの利用に限るようにしておけば、APEX自体のアップデートによ り、すでに作成されているアプリケーションも最新の環境に対応していくことになります。 実際、15年前に開発されたアプリケーションが、そのまま今も動いているという事例があります。 56