Oracle Apex (Application Express)をさわってみる

昨日に引き続きです。

ノンプログラミングツールいろいろあるんで、どんどんさわっていこうかな〜と思ってます。

今日はOracle Application Expressです。

本当は最初に触ろうと思ってたのはMicrosoft PowerAppsなんですが・・・

というわけで今日はApexです。

前提

Kintoneと違って覚えることがかなり多そう(操作トリガーとか細かいことまだぜんぜん追いかけきれてない)ので、今日は入門解説チックです。見解はもちろん納品ベースで。

実行はデモワークスペースでおこないます。

さすがOracleだけあって、オンプレミス用もあります。これがKintoneとの一番大きな違いと言えるでしょうね。

f:id:saikou9901:20180401112907p:plain

あと、基本的にこの記事は嘘ではないです。さわったの昨日なので。

デモワークスペースをつくる

基本的にウィザードに従えば難しくないです。

f:id:saikou9901:20180401113115p:plain

f:id:saikou9901:20180401113003p:plain

ワークスペース作成後にログイン画面まで来て、初めて言語選択ができました。

f:id:saikou9901:20180401113214p:plain

よくよく考えたらここ日本語化できるならウィザードも・・・と思ってもう一度トップページからワークスペース作成ウィザード始めると・・・

f:id:saikou9901:20180401113401p:plain

これつまり日本語のランディングページから日本語のウィザードへの連携が取れてないんだよなぁ・・・URLからしてランディングページのWebサーバからApexのAPサーバ、って別領域に移動するからなんだろうけど、連携してくれてると嬉しかったなぁ。

これ埋めればいいだけだと思うんですが・・・

f:id:saikou9901:20180401113908p:plain

とりあえず、ワークスペースを作って最初はこんな感じです。

f:id:saikou9901:20180401114204p:plain

いまのところ

  • SQLワークショップ
  • チーム開発

のとこはさわってないですが、社内で開発環境作るときとかにさわってみたいですね。

開発者向けOracle Database+Apexをすれば、社内向けの開発ツールとか全部こいつで賄えそうな勢い。はやく月曜日になって会社の開発サーバにいろいろ仕込みたい。

うそです。月曜日いやです。エイプリルフールなので。

公式のサンプルアプリケーションから

Kintoneでも用意されていましたが、Apexもサンプルアプリがあります。

細かいバリエーションで結構な数ありますね。

f:id:saikou9901:20180401114835p:plain

今回は社内で使いそうなバグトラッキング入れてみました。

f:id:saikou9901:20180401114921p:plain

f:id:saikou9901:20180401114934p:plain

f:id:saikou9901:20180401114952p:plain

f:id:saikou9901:20180401115003p:plain

インストールする前「アプリケーション・ビルダー」はこんな感じでしたが、

f:id:saikou9901:20180401115025p:plain

バグトラッキングアプリが増えました。 アプリのとこにある再生っぽい「▶︎」ボタンでアプリケーションが別タブ起動します。

f:id:saikou9901:20180401115014p:plain

最初にアプリケーションを起動したらなんかでました。

ログイン済み+Load sample dataとか書いてあるので、このアプリケーションに作り込まれたウィザード的なものだと思います。

ということは、自分たちで作るアプリケーションでもこんなウィザード画面できるんですかね。よさげ。

f:id:saikou9901:20180401115344p:plain

はじめてApexのアプリケーションが現れた模様。 これまでのウィザードやダッシュボードと同じようにフラットなデザイン。

f:id:saikou9901:20180401115718p:plain

おもむろにサイドメニューをクリックすると、一覧がでてきました。フィルタリング等のメニューの配置などはKintoneとさほど変わらないです。この辺の配置に、みんな落ち着いて来たんでしょうね。

f:id:saikou9901:20180401120002p:plain

行の一番左、Bug#のボタンをクリックすると詳細画面でました。

f:id:saikou9901:20180401120214p:plain

「Edit Bug」をクリックすると編集できました。 Kintoneはこの辺のクリックできる箇所はアイコンのみの表示でしたが、Apexは全体的にボタン枠あるので個人的にはわかりやすいですね。

f:id:saikou9901:20180401120656p:plain

一覧にある「Create Bug」のボタンを押すと新規登録になりました。 モーダルですね。 あとでわかりますが、Apexはページ作成時にメインページかモーダルダイアログか選択できます。

f:id:saikou9901:20180401121033p:plain

画面サイズ

バグトラッキングアプリで幅縮めてみました。

基本的にサイドバーが閉じ状態になるだけで、中身に変化はないですね。この辺も用途としてはKintoneと同じなので問題なしです。

f:id:saikou9901:20180401121241p:plain

f:id:saikou9901:20180401121355p:plain

そろそろ新規作成

からっぽから新規作成してみましょう。「作成」でできます。

f:id:saikou9901:20180401115014p:plain

ウィザードですね。いいですね。完全にEmptyからだと探すの時間かかりそうなので「デスクトップ」からいきます。

f:id:saikou9901:20180401121702p:plain

スキーマ」は、Oracle Databaseがわかる方なら皆さんご存知、あの「スキーマ」です。Oracleっぽいですね。あとは単一アプリケーションは単一スキーマに所属する、ということも推測できます。

f:id:saikou9901:20180401121912p:plain

ページもウィザード。

f:id:saikou9901:20180401122153p:plain

いろんなパターンが追加できそうですね。

f:id:saikou9901:20180401122221p:plain

作成しようとするとわかるんですが、表を選択することになります。ウィザードの場合は表定義ありきっぽいですね。Kintoneみたいに表定義含め新規作成する方法はあるんでしょうか?そのへんまだわかってないです。

f:id:saikou9901:20180401122428p:plain

とりあえず足せるページを一通り足してみました。

f:id:saikou9901:20180401122346p:plain

Oracleっぽいのきました。リージョンまわりです。

f:id:saikou9901:20180401122625p:plain

ただし、プリセットはびっくりするほど日本リージョンにマッチしてないです。自分でフォーマット手入力しないと使えないと思います。

f:id:saikou9901:20180401122721p:plain

いよいよ作成です。

f:id:saikou9901:20180401122844p:plain

この時点で、ページ作成の妥当性チェック。テーブル定義とマッチしない場合はここで弾かれます。

f:id:saikou9901:20180401122831p:plain

まぁすぐウィザードが再表示されるので、特に困ることないです。

f:id:saikou9901:20180401123024p:plain

無事に作成されるとこのページにきます。アプリケーションのメンテナンスページのもよう。

f:id:saikou9901:20180401123057p:plain

アプリケーションを使ってみる

早速起動。ログインページ。下のバーはメンテナンス・デバッグ用。視認性はある。

f:id:saikou9901:20180401123427p:plain

ログインするとなんかでてきました。どうもこのトップバー、サイドバー、コンテンツの構成がデフォルトのようです。

f:id:saikou9901:20180401123630p:plain

レポートをみると、なるほどバグトラッキングと同じようにできてます。 ただ行ヘッダの詳細表示はペンマークですね。ラベル付きボタンがよければ、自分で作る必要がありそうです。

f:id:saikou9901:20180401123747p:plain

ソート・フィルタは列ヘッダでも。Kintoneと比べてある程度固く、でもって精細さがある。

f:id:saikou9901:20180401123831p:plain

ウィザードのページテンプレート「レポート」で作成したページは、詳細表示すると参照画面がでてきます。

f:id:saikou9901:20180401124145p:plain

f:id:saikou9901:20180401124005p:plain

ウィザードのページテンプレート「レポートトフォーム」で作成すると、さっきと同じレポートと編集できる詳細画面ができます。なのでページテンプレートもさらに細かい設定のプリセットであることがわかりますね。

f:id:saikou9901:20180401124238p:plain

f:id:saikou9901:20180401124304p:plain

f:id:saikou9901:20180401124334p:plain

ウィザードのページテンプレート「フォーム」をトップレベルに置くとどうなるんだ?と思いましたが、新規登録だけできるフォームになりました。登録後も空っぽで同じページが表示されまう。

f:id:saikou9901:20180401124724p:plain

f:id:saikou9901:20180401124837p:plain

追加したデータはちゃんとレポート側にでました。

f:id:saikou9901:20180401124929p:plain

チャートはこんなかんじ。

f:id:saikou9901:20180401125003p:plain

メンテナンス関連

適当に触ってみる。まず「セッション」。

f:id:saikou9901:20180401125349p:plain

ログインセッションが表示されている模様。他にも色々見れるけでまだ全然わかりません。デバッグとかも同じメニューっぽいので今日は割愛。

f:id:saikou9901:20180401125521p:plain

「レイアウト列の表示」を押すとピンク色が表示されたり消えたりします。つまりこれ12分割のグリッドレイアウトってことですね。テキストボックスが3列の途中までになっているので、この辺の定義がどうなっているのかは、アプリケーションを販売する場合はちゃんとした調査が必要そうです。

f:id:saikou9901:20180401125621p:plain

「クイック編集」を押すと、ChromeDeveloperToolsのSpecificationのように画面部品が選択できます。選択すると・・・

f:id:saikou9901:20180401125947p:plain

はい沼ーーーーーーーーーーーーー

この辺はまたいずれ。

f:id:saikou9901:20180401125959p:plain

「テーマローラー」は、新規にカラーテーマを作成できます。

お客さんの要望に合わせてテーマを作成できるので、納品としても一安心ですね。

f:id:saikou9901:20180401130120p:plain

システム要件的なもの

操作トリガー・バッチ処理について

正直まったくわかりません。が・・・さすがにOracleなので無いということはないはず。

このページデザイナでボタンに「動的アクション」(詳細不明)などをつけて実施するんじゃないかと思います。

f:id:saikou9901:20180401130350p:plain

少なくともWebhook、また画面を見てみると「PL/SQL」とか転がってるのでそのキックはできるかもですね。

最悪の場合はデータベーストリガーで・・・。

アプリ間データ連携

これはけっこうKintoneと違うところかもです。Kintoneは1アプリケーションと1データ定義の関連が強く、FileMaker感がありました。

対して、Apexはアプリケーションとデータ定義(テーブル定義)はぜんぜん1:1の関係ではないです。

ページごとにどのテーブルを参照するか決められますし、次のように、ページ作成をSQL基準で行うことができます。

f:id:saikou9901:20180401131111p:plain

ユーザ・権限

次のように、設定画面があります。

f:id:saikou9901:20180401131313p:plain

権限設定の内容を見る限り、Apexが導入されたOracle Databaseのデータベースユーザとは別物のようです。 データベースユーザとは粒度も意味も全く異なるので、Apex用のユーザスキームがあるはずです。

調べてないですが、認証連携はOracleなので何かしらやってほしいですね。 OAuth2、LDAPあたりは。

まとめ

簡単にいうと、Kintoneとはレベル・役割・用途で棲み分けられると思います。

圧倒的にApexのほうが複雑です。ただそのぶん汎用性があります。

そしてそのぶん、私たちが後のApexおじさんになりえる、という問題も内包しています。

Apexのアプリケーションはなにかしらエクスポートできるんじゃないかと思っています。アプリケーション作成時にファイルからインポートするルートありますし、公式パッケージをオンプレミスに導入するルートもあります。

そのファイルの可読性によっては、おじさん回避の可能性がありますね。


正直Apex深すぎてまだぜんぜんわからないですし、ここでは書ききらないです。

ここから先詳細はQiita案件だとおもうので、何か発見し次第そちらでやっていこうかなと思っています。

これはオンプレミスで社内で試しやすいので、早速やってみたいと思っています。