Slide 1

Slide 1 text

1

Slide 2

Slide 2 text

2

Slide 3

Slide 3 text

まず、最初にOracle APEXをご存知ない、という方のために、製品紹介をさせてください。 3

Slide 4

Slide 4 text

Oracle APEXを一言で説明すると「データベースで動作するWebテンプレート・エンジン」であり、それを元に した「アプリケーション開発フレームワーク」です。 特徴を3点、ご紹介します。 (Click - 左の図) デスクトップ向け、および、モバイル向けのWebアプリケーション開発を行うことができます。 (Click - 真ん中の図) データベースに蓄積されたデータを使った、レポート、フォーム、チャート、カレンダーなどを、素早く作るこ とができます。 (Click - 右の図) IT技術者はもちろん、IT技術者でなくても、少しのSQLの知識があれば、アプリケーションを作り始められま す。 さらに、Oracle APEXはOracle Databaseが提供する機能の多くを利用することができます。 5

Slide 5

Slide 5 text

Oracle APEXがどのように利用されているかの一例です。 Oracle APEXは幅広い業界で、利用者の規模の大小に関わらず、様々(さまざま)なビジネス上の問題を解 決するために使用されています。 (Click - 左の図) 一般の従業員、パートナー、顧客といったエンド・ユーザーを対象とした、簡易アプリケーションや、セル フ・サービス・アプリケーションを素早く開発することにより、変化の激しいビジネス上の要件にいち早く追 従できます。 (Click - 真ん中の図) パッケージ・ソフトウェアを既存のビジネスプロセスと統合するため、および、組織が持つ特別な要件を満 たすための拡張を行うために使われています。 APEXは、Oracleが提供しているERPソフトウェアである、Oracle E-Business Suiteの公式にサポートされる拡 張ツールであり、利用者は簡単にEBSに機能追加を行うことができます。 (Click - 右の図) スプレッドシートやMS AccessによるアプリケーションをWeb化することによって、複数のユーザーが同時に 使用できる、データの複製が発生しない、安全な、アプリケーションを構築することができます。 その他、レガシーなクライアント・サーバー型のアプリケーションのWeb化にも使用されています。 6

Slide 6

Slide 6 text

Oracle APEXの特徴になります。 (Click - 左の図) Webブラウザだけを使って開発環境にアクセスできます。また、開発したアプリケーションへは、URLとユー ザーの認証情報だけでアクセスできます。特別なクライアント・ソフトウェアは必要ありません。Webブラウ ザのみです。 (Click - 真ん中の図) 宣言的なフレームワークであるOracle APEXのエンジンでは、アプリケーションとは定義であり、オラクルの データベースの表に保存されるデータです。ファイルへのコード生成やコンパイルは行いません。 (Click - 右の図) すべてのページの処理はデータベース内でのデータ処理であり、オラクル・データベースのスキーマで直 接実行されるPL/SQLによってページが生成されています。したがって、すべてのデータはデータベースの キャッシュを有効に使い、非常に効率的にHTMLのページが生成されます。 7

Slide 7

Slide 7 text

最初は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

Slide 8

Slide 8 text

Oracle APEXの原型が作成されたのは1999年8月4日です。その後、2つの特許が出願されています。 ですので、2019年9月で開発が始ってから20年、ということになります。(年数は時々に変更すること) 開発者によると、当初はコード・ジェネレーションを検討していたが、結果が思わしくなかったので、メタ データから動的にHTMLを生成する方法を採用したとのことです。 無償の検証環境であるapex.oracle.comでは現在、数十万という数のアプリケーションをホストしており、こ の考え方が正しかったことを証明しています。 9

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

APEXはオラクル・データベースが動いていれば、ローカル、オンプレミス、クラウドの、どこでも実行可能 で、非常に柔軟性があります。開発環境や、実行しているアプリケーションにアクセスするURLだけが必 要です。 Oracle APEXで開発したアプリケーションは、これらの環境に依存せず、変更なしで同じ動作をします。 ラップトップで動作させているOracle Database Express Editionで開発して、その後、アプリケーションを エクスポートして、Autonomous Databaseへ実装することもできますし、高い負荷状況が発生するなら、 On PremisのExadataへ移動することもできます。 (かならずしも喋らなくていい) 同じバージョンか、より高いバージョンのOracle APEXであれば、APEXアプリケーションをインポートする ことができます。 11

Slide 11

Slide 11 text

Oracle APEXは、Oracle Databaseのライセンスを持っていれば、スタンダード・エディションやエンタープライ ズ・エディションといったエディションにかかわらず、追加コスト無しで利用できます。 そうはいっても、オラクル・データベースは高価で手が出ないし、そこまでのアプリケーションを作るわけで はないんだ、というのはあるでしょう。 リソースの制限、有償サポートがないといった制約はありますが、無償で利用できるオラクル・データベー スがリリースされています。RAC、データガードといった機能は提供されませんが、開発で必要な機能に関 してはエンタープライズ・エディションにて提供されている機能が利用可能です。 現在 Linux 版の 18.4、Windows版の 18.4 がリリースされています。 -- 以下、話してはいけない、注意事項 – 次にリリースされるExpress Editionのバージョンは決まっていない。20cかもしれないし、21cかもしれない。 Mike Hichiwaによると、安定しているバージョンでXEを出荷する、とのこと。 12

Slide 12

Slide 12 text

Oracle REST Data Serviceも無償で利用できます。Oracle DatabaseもしくはOracle WebLogic Server Standard Editionのライセンス範囲内で有償サポートを受けることも可能です。 ORDSは、Oracle APEX以外にも、単体でOracle Databaseを使ったRESTサービスを実装可能にしたり、 Oracle DatabaseをJSONのドキュメント・ストアとして利用するインターフェースなども提供します。 13

Slide 13

Slide 13 text

Oracle APEXです。https://apex.oracle.comが、Oracle APEXのポータル・サイトとなっており、ここから製品 情報、ソフトウェアのダウンロード、マニュアル、無償環境へのログインなど、多くの情報にたどり着くこと ができます。 14

Slide 14

Slide 14 text

Free Autonomous Databaseとして、Oracle APEXが構築済みのFree Autonoumous Databaseの利用が可能 です。 15

Slide 15

Slide 15 text

Oracleのデータベース開発ツールの開発部門のトップである、Michael Hichwaのステートメントです。 具体的には、 無償環境を継続して提供すること。 速度、セキュリティ、使用しているライブラリなどが最近であることを追求すること。 毎年2回、製品をリリースすること。 クラウド、オン・プレミス、Mac/PCで利用可能であることを、今後も維持する。 と言っています。 製品の概要については以上になります。 16

Slide 16

Slide 16 text

Oracle APEXがどのように動作するか、という説明になります。 17

Slide 17

Slide 17 text

アーキテクチャーは単純で、ブラウザからのページのリクエストやフォームのサブミットは、ミドルティアを 経由し、データベースの内部で処理され、そこで生成された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

Slide 18

Slide 18 text

(Click - ブラウザからのURL) ブラウザからの要求があると、 (Click - プロシージャー・コール) ほとんど、そのまま、データベースのプロシージャー・コールとして、データベースを呼び出し、 (Clilck - データベースのHTML) データベースがHTMLを生成し、 (Click - ブラウザへのHTML) それがそのまま、ブラウザに返されます。 20

Slide 19

Slide 19 text

HTTPのリクエスト処理はすべてデータベースで行われます。 まずURLを受け付けますが、その中には必ずアプリケーションID、ページID、セッションIDの3つのIDが含ま れます。 アプリケーションIDとページIDで、生成するページの処理が決定され、セッションIDに紐づいて、それまで の処理の状態 - Session Stateと読んでいます - が保存されます。 ミドルティアは完全にステートレスで、ステートの管理もデータベースが行います。 こちらのフローはHTTPのGETでのリクエストの受付フローです。 21

Slide 20

Slide 20 text

リクエストはステートレスなので、処理が開始した時点では、引き継いでいる情報は何もありません。 まずは、アプリケーション全体の設定情報をセッションに反映させます。 言語情報とかタイムゾーンとか、そういったものになります。 22

Slide 21

Slide 21 text

次に、ユーザー認証とページの認可の処理を行います。 23

Slide 22

Slide 22 text

セッションIDに紐づいた情報を、データベースからセッションにリストアします。 24

Slide 23

Slide 23 text

開発者によって定義された処理を行います。 大抵は、データベースから、画面に表示するためのデータをとりだす処理が行われます。 25

Slide 24

Slide 24 text

リージョン、ボタン、ページ・アイテムは画面を構成するコンポーネントで、これらの定義情報を元に、HTML 生成します。 26

Slide 25

Slide 25 text

ダイナミック・アクションは、生成されたHTMLに埋め込まれたJavaScriptのコードで、ブラウザ上でのイベン トの発生に従って実行されます。 27

Slide 26

Slide 26 text

こちらはHTTPのPOSTの処理フローです。 アプリケーションの定義の反映、認証と認可、セッションの回復はGETのパスと同様です。 28

Slide 27

Slide 27 text

POSTで送られてくる値に、後処理を実施します。 後処理は開発者によって定義されますが、例えば、すべて大文字に変換する、といった処理になります。 29

Slide 28

Slide 28 text

送信された値の検証を行います。 例えば、入力数値の範囲であるとか、文字列の長さ、の制限を検証します。 これも開発者が必要に応じて設定します。 30

Slide 29

Slide 29 text

開発者によって定義された処理を行います。 大抵は、フォームで受け取ったデータを元に、データベースへの行の挿入、更新、削除といった操作を行 います。 31

Slide 30

Slide 30 text

POSTの処理を終えた後、結果としてユーザーに返す画面を生成するページを設定します。 これがGETからPOSTのサイクルの処理フローになります。 32

Slide 31

Slide 31 text

アーキテクチャー上の利点のまとめになります。 リクエストの受付から、HTMLの生成まで、ネットワークを経由しないことによる高速な処理。 メタ・データによるアプリケーション開発。 アプリケーションは、データベースにとってはデータであり、追加の運用が発生しないこと。 そして、Oracle Databaseの機能は、そのまま使用することができます。 33

Slide 32

Slide 32 text

(Click) Oracle APEXのテンプレート・エンジン部分はPL/SQLで記述されています。 テンプレート・エンジンがSQLを呼び出して、値を得るのにどの程度時間がかかるか、簡単なコードで検証 してみます。 (Click) 全てメモリ上の操作だと考えると、驚くことではありませんが、0.000091秒という結果になっています。 34

Slide 33

Slide 33 text

(Click) どうしてAPEXをデータベースに実装したのですか?もっと、一般的にいえば、Webテンプレート・エンジンを データベースのストアド・プロシージャーで実装したのか、ということですが、 (Click) そこにデータがあるから、ということになります。 また、アプリケーションを実行するインフラストラクチャーが別途必要であれば、追加の運用も発生します が、データベースで実行していれば、それは通常DBAが運用していて、例えばDBのバックアップが取られ ていれば、APEXのバックアップもそれに含まれますし、運用監視ツールやパフォーマンス監視のツールも、 データベースのものがそのまま使えます。 35

Slide 34

Slide 34 text

Oracle APEXでのアプリケーション開発の手順になります。 36

Slide 35

Slide 35 text

Forresterの定義では、 ハンド・コーディングが最低限で、事前のセットアップ、トレーニング、デプロイメントが少なく、アプリケー ションを素早く提供できるプラットフォーム、が ローコード・プラットフォーム、ということになります。 38

Slide 36

Slide 36 text

Oracle APEXでは、画面生成はユーザーによる定義に従って行われます。 ユーザーが指定するのは、データ・ソースの定義であり、画面についてコーディングしないため、ハンド・ コーディングと比較して生産性が高いです。 39

Slide 37

Slide 37 text

Oracle APEXによるアプリケーション開発の手順ですが、 アプリケーションを定義し、 そこに含まれる ページを定義し、 ページに含まれるリージョンを定義し、 リージョンに含まれる、ページ・アイテムを定義し、 最後に、動作の定義として、宣言による指定か、コードによる記述を行います。 簡単なアプリケーションでは、宣言による指定で事が足りますので、SQLでデータソースを規定する以外に コードを記載することはありません。 また、大抵はウィザードに従ってページを生成するため、これらの定義が一度に作成されることがありま す。 40

Slide 38

Slide 38 text

Oracle APEXで使用されるコードの種類です。 SQL, PL/SQL, JavaScript, CSSがあります。 これらが使用される場面の例をひとつずつ、紹介します。 41

Slide 39

Slide 39 text

チャートのデータ・ソースの定義です。 実際は上下とも、定義している内容はまったく同じです。 単一の表をデータソースとするなら、表の指定だけでSQLを記載する必要はありません。 SQLを記載すれば、もっと複雑なデータソースを扱えます。 42

Slide 40

Slide 40 text

POSTされたフォームのデータを表に適用します。 こちらもひとつの表を対象としているなら、表に紐づけられたフォーム・リージョンを指定するだけで、コー ドの記載は不要です。 同じ処理をPL/SQLで記載していますが、数十行に渡ります。 ただし、こちらも複数の表を一度に更新する、といった定義でできる処理の範疇を超えた処理を定義でき ます。 43

Slide 41

Slide 41 text

現在のOracle APEXでは、ロジックの記述はPL/SQLのみですが、Oracle DatabaseにはMultilingual Engineと して、GraalVMを組み込む計画があります。 年初にこのMLEを使ったOracle APEXのプロトタイプが公開されていました。 このプロトタイプでは、サーバー側のロジックをPL/SQLのみではなく、JavaScript、一部 Python で実装可能 になっています。 フロントエンドはJavaScript一択ですから、サーバー側もJavaScriptにて記述ができるようになると、学習コス トが下がる効果が期待できます。 --- 以下、参考情報。 このプロトタイプがリリースされた時点では、Oracle Database 20cでMLEが実装予定でしたが、後ろになり ました。なので、リリース時期は未定です。 44

Slide 42

Slide 42 text

Webブラウザ側のコードである、動的アクションです。 JOBがSALESMANという条件で、Hire Date, Commissionのアイテムを表示させています。 ノー・コードでは、アクションとして表示、影響を受ける要素として、Hire Date, Commisionを指定する、とい う形式で、一般的な動作であれば、コードを書かずに指定できます。 同じ処理をJavaScriptのコードとして記載したのが、ロー・コードの項目です。Oracle APEXに用意されている アクションでは足りない場合は、jQuery UIの機能をフルに使うことができます。 45

Slide 43

Slide 43 text

アプリケーション単位、ページ単位でCSSを追加し、ページの見栄えを改良する、といったことも可能です。 46

Slide 44

Slide 44 text

This is a Section Header without Picture, and can also be used as a Q and A slide. 47

Slide 45

Slide 45 text

49

Slide 46

Slide 46 text

すこしSQLについて考えてみましょう。 50

Slide 47

Slide 47 text

こういうSQLがあります。 52

Slide 48

Slide 48 text

1979年というのは、Oracle Databaseの最初のバージョンがリリースされた年なのですが、そのときから今 まで、テクノロジーには色々な変遷がありました。 見た目、ケータイがわかりやすいですが、コンピュータ言語、オペレーティング・システム、JavaScriptのフ レームワークなど、大きく様変わりしています。 SQLも拡張されてきていますが、構文は変わっておらず、1979年に動いていたSQLは2019年でも動きます。 select, insert, update, deleteといった核となる部分は大きく変わってはいません。 53

Slide 49

Slide 49 text

今後、10年を考えても、SQLは同様に動くでしょう。 54

Slide 50

Slide 50 text

APEX 19.1 を構成しているコードの分析です。 全体で170万行程度あり、その半分は、JavaScript、残り半分がそれぞれ、CSSとSQLとPL/SQLになっていま す。 Stack Overflowで一般的に使用されている言語のTop 3で記述されていて、ミドルティアであるORDSがJava で記載されていることを考えると上位5つの内の4つの言語で記載されていることになります。 55

Slide 51

Slide 51 text

APEXの開発チームは、組み込んでいるライブラリといった、更新されるコードのメンテナンスを行なってい ます。 だいたい、チームの作業時間の25%は、JavaScript, CSSやHTMLのアップグレードや最新の標準に準拠す るために使われています。 JavaScriptのフレームワークは特に厄介で、バックワード・コンパチビリティがなかったり、セキュリティ・ チェックに引っかかるため、更新が必須だったりします。 ユーザーがAPEXで主に記述するのは、SQLやPL/SQLのスニペットであり、これは、本当に変化しないし、 バックワード・コンパチビリティも確保されます。 生産性を高めるアプリケーションを作成するために、何か覚えないといけないとしたら、SQLは学習する価 値のある言語です。今、SQLを使えることでも価値がありますが、将来にわたって有益であることが言えま す。 できるだけAPEX標準のコンポーネントとSQLの利用に限るようにしておけば、APEX自体のアップデートによ り、すでに作成されているアプリケーションも最新の環境に対応していくことになります。 実際、15年前に開発されたアプリケーションが、そのまま今も動いているという事例があります。 56

Slide 52

Slide 52 text

This is a Hero Slide without Picture. 57