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

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

OutSystemsを使って在庫と売り場を連動させる・後編(基礎トレ4.1)

(前回の続き)
激烈な難易度を誇る基礎トレ4.1。
やっていることは簡単なんだけど、英語と字幕が難しい。
ノンプログラマーではほぼ理解不能であるものの小林のその手のひらのなかにあるポケットのなかのモンスターならぬアプリはできあがりつつあるのであった。

 

非常に難しい。これとか

f:id:neomatsudaira:20160301101451p:plain

初心者から見るとBooleanもIntegerもIdentifierも初めての言葉なんよ。それを単純なデータと説明されるためかなりのギャップがあるんよ。

 

初心者だと全てが分からないです。
自分参考書を使ってのプログラミング経験はあるのですが、それでもIdentifierだけは意味が分からないです。
多分、識別子っていう意味だと思います。

f:id:neomatsudaira:20160301101634p:plain

OrderItemが変数?
レコードってデータベース用語で1行分のデータのことだから、レコード全体を保持するということは1件分のデータを変数として格納できるということを説明しているのだと思われる。

 

それって、Deleteアクションとかで商品を削除するときにImput Parameter内に多分Imput Parameterは変数の箱のことだから、そのなかに1件分の商品データが格納されているため、削除するときに1件分丸ごとそのデータを削除できますよ!ということを説明しているのだと思う。
そうに違いない!

DateTypeってたぶん変数の型のことだからそういうことだと思う。にしても、これノンプログラマーでは確実に読解不可能な文章になってきています。しっかりとしがみついていかないとまるで理解できなくなってしまいます。

 

変数のスコープとかいう説明もあったけど、スコープってITの辞書引いたら「範囲」という意味だったため、「変数の範囲」と書いてくれれば良いのですがIT用語のためやはり覚える必要があると考えています。

このトレーニングでは、1個1個新しい言葉が出たら辞書を引かないと着いていけなくなってしまいます。

 

おっ!やっとわかりやすくなってきた!

f:id:neomatsudaira:20160301102034p:plain

って、それをはよ言えやーーーーーーーーーッッ!!

 

いままでロジックをカプセルにセットしてメソッド化させたものを商品配達のためリレーションシップするアプリを作りたいとか意味不明なことばっか言っているから着いていくのが大変だったのに、注文商品の削除をしています!ってはよいえやー!って感じです。

 

で、ロジックの作成に入ります。
まずは商品の在庫数量を更新するためデータベースを生成させます。

f:id:neomatsudaira:20160301102317p:plain

データベースの生成とかいままでの説明文章に比べたら簡単すぎます。これ、ドラッグアンドドロップするだけだもの。

 

f:id:neomatsudaira:20160301102438p:plain

言っていることはめっちゃ難しい。
けど、完全日本語訳すると「データベース内にはすべての商品データがあり、そのなかで削除したいデータだけを識別子を使ってフィルタリングし、削除できるようにします。」という意味です。

データベース内にあるすべてのデータを削除するのではなく、ユーザーさんが選択した商品のデータだけを1行削除するために、フィルタリング機能を実装させるということです。

 

で、フィルタリング条件のコードはこちら

f:id:neomatsudaira:20160301102705p:plain

“OrderItem.ProductId = Product.Id”

これも英語だと結構難しいけど、日本語訳すると死ぬほど簡単になります。自分文学部出身ですので、アホみたいに全部を日本語訳してしまいます。

 

  OrderItem.ProductId・・・ユーザーさんが削除ボタンを押した商品

  =・・・・・・・・・・・・・・・・・・・と

  Product.Id・・・・・・・・・・・・同じ商品

 

繋げると、「ユーザーさんが削除ボタンを押した商品と同じ商品」を削除するって当ったり前のことですね!こんな超簡単なコードも英語だと恐ろしく難しく感じられるのです。というか、一般的な日本人は読めないと思います。

  

次は、削除された数量分在庫量を増やすコードの記述をします。

f:id:neomatsudaira:20160301102924p:plain

”QuantityInStockに、これから削除しようとしているOrderItemのQuantityを足したもの、とします。”

これまた難解な文章です。もはや日本語ですらないです。
だが、小林は文学部出身。はっきり言って翻訳レベルは99です。この土俵は自分にとって絶大なる自信をもった土俵です。この土俵において、私は負けることを許されないのです。

全部日本語訳してしまいます。上の日本語字幕の意味は

「キャンセルされたらその数量分、在庫を増やします」

です。
なら、そう書けやー!

なぜ足すのかって言ったら、キャンセルされると在庫が増えるからですよ。こんなん超簡単だわ。

 

f:id:neomatsudaira:20160301103423p:plain

これで在庫を増やすコードが完成した。

 

次にUpdateProductを実装する。なぜ実装するのかは知らない!だけど、Updateって日本語訳すると上書き保存って意味だから、在庫の数量を増やしたら、その増えた分を上書き保存するのは当たり前だろー!って意味だと思います。

f:id:neomatsudaira:20160301103715p:plain

そして、DeleteOrderItemを実装する。これは在庫側は増やしたけど、商品側はキャンセルしたのだから、その商品を削除するためだと思う。

 

だんだんと楽しくなってきたぞーッ!

f:id:neomatsudaira:20160301103908p:plain

 

削除メソッドはIDを選択して削除します。
なので、IDを探していたら小林は気が付きました。それは

f:id:neomatsudaira:20160301104154p:plain

 ID3つもあるやんけ!

ここ、OutSystems Platformを使ってて一番ミスの出やすいところです。 
画面が全部英語表記だということも日本人としてはミスの元になっています。
あと削除のときに選択するIDはいつも赤いID(主キー)です。一番上ですね。これも、なぜなのかとかは考えないで、もう丸暗記しています。

 

その後も深く考えず、動画の通りに作ります。
がんばる。がんばる。

f:id:neomatsudaira:20160301104921p:plain

これ、作っているとき意味不明だった。
でも、作ったあとならすごくよく理解できる部分です。
なぜ、RemoveOrderItemと入れ替えるのか?

 

それは、いままで作ってきたアプリでは在庫と商品の連動がなかったからです。いままでのアプリだとただ削除されて終わりのところを、今回作ったRemoveOrderItemにおいては商品をキャンセルした分在庫データベースの値を増加させるというコードを書いたからです。
だから取り替える。そしてアプリをより良くしていく!

f:id:neomatsudaira:20160301105411p:plain

ここはよう分からんwwwwwwwwwww

説明もないし、こういうときもあるよ!
とする。もう、そうする。私、考えない。

 

で、ロジック書いたので

f:id:neomatsudaira:20160301105708p:plain

アプリ完成。
画像数が多すぎるため、完成画像は次のエントリーで表示させます。すごく難しかったけど、途中からなんとなく分かってきた。

あまりこういう無茶振りはおすすめしません。
OutSystems Platformは難しいソフトのため、手取り足取り教わってください(笑)。

 

(トレーニングは続きます)