読者です 読者をやめる 読者になる 読者になる

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

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

VSアルゴリズム戦!!

プログラミングといえばアルゴリズム!
OutSystemsはコードレス開発ツールだけど、アルゴリズムのコーティングは必須です。

それはコードレスであろうとなんであろうとコンピューターは情理ではなく論理(計算)で動いているからです。つまり、コンピューターから出力されているものはすべて高速に計算されて出力されたものです。

コンピューターでサイコロの目や競馬ゲーム、オンラインゲームでモンスターを攻撃したときのダメージも乱数を用いて、すべて計算されて出力しているのです。

その出力の仕方をアルゴリズムと言います。

日本語訳すると「論理演算」です。コンピューターの華、アルゴリズム。国家試験である基本情報処理技術者試験で半分の配点を占めるのも、やはりこのコンピューターの中枢であり、コンピューターの心臓でもあるアルゴリズムなのです。

それでは超高速開発ツールを使ったアルゴリズムの設計を見ていきたいと思います。

 

まずは、商品数を変更させるため変数のセットを行う

f:id:neomatsudaira:20160303073623p:plain

 

番地の指定がアホみたいに難しい。
選択肢、もっと減らせや!と言いたい程。

f:id:neomatsudaira:20160303073735p:plain

 

そして、商品が注文されたら在庫アプリに格納されている商品数が自動的に減少するコードを書く。それが、これ

f:id:neomatsudaira:20160303073859p:plain

"GetProductById.List.Current.Product.QuantityInStock=GetProductById.List.Current.Product.QuantityInStock - OrderItem.Quantity" 

実はこれコードが長いだけで、あんまり難しくないです。
ただプログラミングの初歩的な知識がないと書けないです。
OutSystems Platformはノンプログラマー向けの開発基盤だと言われていますが、プログラミングの知識がないと無理です。

 

  X= X-1

 

は数学では成り立ちません。
だけど、プログラミングにおいては間違った数式ではありません。この数式は、右辺のX-1を左辺のXに代入するという意味を持ちます。

よって、Xが3だった場合、3-1を左側のXに代入することでXは2になります。つまりコンピューターに対して「Xを2にしてくれ」という指示を出しているのです。

この情報を踏まえて

 

GetProductById.List.Current.Product.QuantityInStock

=GetProductById.List.Current.Product.QuantityInStock - OrderItem.Quantity

 

を日本語訳すると

 

 GetProductById.List.Current.Product.QuantityInStock=・・・注文されて減った在庫の量は、 

 GetProductById.List.Current.Product.QuantityInStock-・・・・注文前の在庫量引く

 OrderItem.Quantity ・・・・・・・・・・・・・・・・・・・注文された量

 

となります。繋げると「注文されて減った在庫の量は、注文前の在庫量引く注文された量」となります。日本語にすると簡単すぎて頭痛くなります。注文前の在庫量から注文して売れた量を引いたら当然のことだけど、注文されて減ったあとの在庫量になります。

コンピューターはアメリカ人が作ったため英語優位なだけで、日本語化してしまえばクソ簡単なのです。なのに難しいフリをしている。それは、欺瞞です。

注文されたので、その分在庫が減っただけです。
注文されたら出庫するんだから、在庫が減る。当たり前ですね。

 

次にUpDateアクションを実装する

f:id:neomatsudaira:20160303075126p:plain

在庫量を上書き更新するのになぜかデータベースの先頭を選択する。この意味はよく分からない。前回もここはよく分からなかった部分です。

OutSystemsでミスが起きる場合は常にここです。

 

User Actionが完成した。

f:id:neomatsudaira:20160303075426p:plain

(今のところ1本道のアルゴリズムです。エラー処理入れるとより複雑になります。)
開発画面はウザいくらいに英語です。というか日本語が存在しない。

 

在庫を減らすプログラムを書き終えたため、これをSaveボタンの内部プログラムに実装します。Saveボタンを押した瞬間に発動するプログラムだからです。

f:id:neomatsudaira:20160303075945p:plain

Saveボタンに実装すると当然のことながらエラーが発生します。なのでせっせと直していく。

 

またしてもディレクトリの選択

f:id:neomatsudaira:20160303080420p:plain

動画の通りにコードを書いていく。
なぜ、ここを選択するのかは分からない。
説明がないためです。

 

f:id:neomatsudaira:20160303080525p:plain

そもそも項目の意味が英語のため読めないのが問題なのですが、仕方がないので意味も分からず模倣していきます。

 

f:id:neomatsudaira:20160303080710p:plain

(右下の項目が両方埋まった小林の開発画面)

項目が英語で読めないため、何を選択したのかはあまり理解していない。

 

これで在庫連動アプリは完成したのですが、一つのエラーが発生していることが確認できます。
それは

f:id:neomatsudaira:20160303080911p:plain

注文をたくさん増やすと制限なく注文できてしまい、在庫がマイナスになっても無制限に注文ができてしまうことです。

よって、在庫が0になったら、もう注文できないようにするコードを書く必要があります。そうしないとECサイトでこのプログラムが実装できません。

在庫の値を変数で引っ張ってきて、「在庫が0以下だったら、注文を行えないようにする」、また、「在庫がまだあるときには注文を正常に行えるようにする」という条件分岐のコードを書かなければいけないということが分かります。

 

(次回、複雑なアルゴリズム回へと、トレーニングは続きます)