OutSystemsエンジニアの猛勉強ブログ

初心者OutSystemsエンジニアのブログです(ぺこり)。

Static Entityを高速で実装する(基礎トレ1.6)後編

(前回までのあらすじ)

小林である。
素晴らしき部下の小林である。
以前、上司のM氏に

「OutSystems 森鴎外」

で、このブログ検索1位になりましたよ!と言って無視されたあの小林である(笑)。
WebマーケティングとSEO対策の素人の方にお教えしたいことは、Webマーケティングのコンサル会社に検索1位にしときましたよ。料金はこれくらいです。

と、請求されたときに、1年に一度くらいしか検索されないようなマイナーな検索キーワードなのか、それとも、1か月で100万回検索されているようなメジャーな検索キーワードでの検索1位なのかの判断をしなければいけないということです。

マイナーなキーワードで1位になるのって、実はとっても簡単なのです。
なので、月間に何回くらい検索されている検索キーワードなのかを知る必要があり、そのためのGoogleキーワードプランナーだということになります。
聡明なる上司様が無視したのはそのためです。

誰も検索しない検索キーワードで1位になることは、あまり意味のあることではないのです。
 

さて、仕事に入ります。
前の記事でStatic Entityを実装させ、Orderデータベースと連結させました。
そこで、連結後のトレーニング動画の字幕を見てもらいたいのです。
Static Entityを作るにあたってはOrderデータベースに外部キーStatusIdを実装し、データベースに変更を加えることでリレーションシップ(連結)をさせました。

 

その後、

f:id:neomatsudaira:20160213190941p:plain

注文画面や注文詳細画面では

 

f:id:neomatsudaira:20160213191015p:plain

問題なく動作します。なぜなら、

 

f:id:neomatsudaira:20160213191043p:plain

Platformが要素を全部自動で最適化し、バグを取ってくれるからです。

なので、OutSystemsにおいては、バグが出ないためアプリ開発も変更要求もあっという間に終わってしまうのです。
ほとんどの処理は開発基盤がやってくれるということです。

 

次に、ステータス列の実装

f:id:neomatsudaira:20160213191808p:plain

ドラッグアンドドロップで列が生成される。
いつも通りマッハである。

 

f:id:neomatsudaira:20160213191859p:plain

(小林の開発画面です)

このデータべースは何気にすごいデータベースです。
この表は3つのデータベースを結合させたリレーショナルデータベースなのです。
左2つの列はOrderデータベースのカラム(列)であり、右から2番目のカラム(列)がClientデータベースのカラムです。
そして一番右端が今連結させたStatusデータベースのカラムなのです。
やっていることは非常に高度です。

 

今回は、データベースのJOIN条件も全部自動で開発基盤がやってくれます。 

f:id:neomatsudaira:20160213192326p:plain

作成しますではなく、自動で生成されています。
ちなみに、小林は今日ドラッグアンドドロップ2回しかしていません。

 

次は画面の設計。マッハで終わらせます。

f:id:neomatsudaira:20160213194942g:plain

注文画面が6秒で設計完了。

 

次、注文詳細画面の設計。
これが噂のネオ・開発

f:id:neomatsudaira:20160213195404g:plain

これで画面の設計はおしまいです。開発時間は合計12秒です。
自分が開発している画面をキャプチャ動画させているのですが、いつもながら、非常識的というか、技術革新の次元があまりに高いため、自分で作ってて恐怖することがあります。

 

企業内エンジニアの方がこのソフトを使いこなすことで、がっつり稼いで欲しいというのが、私の考えです。私のような視力0.08の障害者でも使えますので、得られる恩恵の大きさから考えて、狂ったように猛勉強して、覚えていってもらいたいです。

 

そしていつも通り

f:id:neomatsudaira:20160213200201p:plain

意味不明のため模倣するなり。

 

うむ。

f:id:neomatsudaira:20160213200440p:plain

”GetOrderById.List.Current.Order.StatusId = Entities.Status.New”

全部英語で意味不明なり。
番地の意味が全て理解不能です。
実際には右辺は分かります。

右辺はデータベース内のNewレコードだと思う。
条件式自体は画面に表示されているものがNEWだったら表示しなさいだから、左辺のGetOrderById.List.Current.Order.StatusIdは詳細画面に表示されているデータのことを言っているのだと思う。
なぜなら、

 

  GetOrderById.List.Current

 

の意味は

 

 ・GetOrderById(データベースから取得し)

 ・List(リスト内に格納された)

 ・Current(いま表示されているデータベース内のデータ)

 

だから。
説明がないため、一人でそのように解釈しています。
そうすると左辺は現在表示されているOrderデータベース内のStatusIdということになる。

で、コードを打ち込んで完成

 

完成画面1

f:id:neomatsudaira:20160213202650p:plain

ステータスがShipped(発送しました)だと商品が追加で注文できなくなる。
IF文使ってもできたものだと思うけど、今回はStatic Entityの勉強なので、敢えてStatic Entityでアプリを開発したんだと思う。

 

完成画面2

f:id:neomatsudaira:20160213203023p:plain

新規注文(ステータスがNewのとき)は、まだ発送していないから商品の追加と削除が可能になる。これはAmazonとかのお客様用の画面というよりも業者側の業務用アプリケーションを開発しているのだと考えられる。

 

<アプリを作り終えた感想>
とても簡単だった。
こういうアプリを大量に作っていきたいです。
慣れると5分くらいで変更要求に対応できます。

ディレクトリ(番地の指定)も今回はそんなに難しくなかったです。
ただ、機能の拡張のトレーニングではなく、小学校の算数のドリルのように、似たようなアプリを大量に作っていくトレーニングのほうがスキルは向上すると考えます。
いずれにしろサクサク作れることと、バグが一箇所も発生しなかったため、作ってて快適でした。

 

(次のトレーニングに続く)