前回の投稿では、OSSなローコードツールBudibaseで自動入力フォームの作成について紹介しました。
最小限のコード記述で、ある程度のアプリを作成することができました。
Budibaseには、「データ」、「デザイン」、「オートメーション」の3つの設定項目がありました。
前回「データ」と「デザイン」の設定を行いましたが、「オートメーション」の設定はしていませんでした。
今回は、「オートメーション」の設定について解説していきます。
Automationとは
「データ」は、アプリケーションで利用するデータの構造や取得方法を定義します。「デザイン」では、データを利用した表示(ビジュアル)部分の設定を行いました。
「オートメーション」は、表示とは直接関係しないデータ処理を行うのに使います。
オートメーションでは、処理の入力、処理の内容、処理の出力の設定を行います。
オートメーションで設定した処理を実行するには、トリガーが必要になりますが、トリガーは「ボタン押下」や「スケジュール実行」等が可能です。
Automationの利用例
作成する機能
前回の記事で作成した株式の再投資計算ツールでオートメーションを使いましたので、そちらを例としてご紹介します。
株式の再投資計算ツールは、毎月の予算、売却株式、購入株式を入力して、毎月予算にあった投資ができるように計算するものです。以前はGoogleスプレッドシートで行っていた業務ですが、最新の株価やポートフォリオのデータを手動で引っ張ってくる必要があり大変でしたが、BudibaseでWebツール化して解決しました。↓こんな感じのアプリです。
分散投資のため、購入株式は複数銘柄を追加します。
その際、購入数量は、予算と売却金額を元に金額が均等になるように決めたいです。そこで、購入銘柄一覧の上に「自動算出」ボタンを用意しました。
これを押せば、毎月の予算を守りつつ売却金額も考慮して全購入銘柄の購入金額が均等になるように数量を調整することができます。
こういった表示とは関係のないまとまった処理を行うのに「オートメーション」を利用します。
データの準備
本記事では、オートメーションの利用方法のみを紹介するため、購入銘柄一覧表の銘柄追加部分には触れませんので、オートメーションで利用する購入株式の仮データを用意します。
画面上部の「Data」タブをクリックし、Budibase DBで「Purchase」という表を作成し、データを記入しておきます。
入力部分
早速、オートメーションを使って処理を作ってみましょう。
画面上部の「Automation」タブをクリックし、「+」アイコンをクリックします。
作成ウインドウが表示されますので、「Name」に「QuantityCalc」、「Trigger」で「App Action」を選択、「Save」ボタンを押します。
「+ Add field」ボタンを2回押して、「SaleTotal(Number)」と「Budget(Number)」を追加します。
こちらが処理で使用する入力値を受け取る設定です。
予算の値と株式売却金額の合計値を受け取ります。
処理部分
続いて処理を追加します。
処理の追加アイコンをクリックします。
様々な処理を追加することができますが、「Query rows」をクリックし、「Save」ボタンをクリックします。
Query rowsの処理が追加されますので、テーブル名で「Purchase」を選択します。
この設定で、「Purchase」テーブルからすべての行を取得できます。
次に、「Query rows」の下にさらに処理を追加していきます。今度は、「JS Scripting」を追加します。
「Edit Code」ボタンを押すとコードの記入ができますので、下記JavaScriptのコードを記入します。
let ret = []
// 予算と売却額、購入銘柄数に応じた平均購入額の計算
let ave = (Number(trigger.fields.SaleTotal) + Number(trigger.fields.Budget)) / steps[1].rows.length;
// 銘柄毎に購入数を計算
steps[1].rows.forEach(row => {
row.Quantity = Math.round(ave / row.CurrentPrice);
row.TotalPrice = row.Quantity * row.CurrentPrice;
ret.push(row);
});
return ret;
こちらのコードは、コメントの通りですが、予算と売却金額合計を足したものを購入銘柄数で割って、1銘柄当たりの金額を計算し、それを各銘柄の現在の株価で割って、購入数量と購入に必要な金額を算出しています。算出結果は、リストに追加して返しています。
次に、「Update row」を追加します。
Update rowの処理が追加されますが、右上のループアイコンをクリックします。
すると、Update rowの前にLOOPINGが追加されます。
下記設定を行います。
LOOPING | Input Type | Array |
Binding/Value | {{ steps.2.value }} | |
Max long iterations | {{ steps.2.value.length }} | |
Update Row | Table | Purchase |
Quantity | {{ loop.currentItem.Quantity }} | |
TotalPrice | {{ loop.currentItem.TotalPrice }} | |
Row ID | {{ loop.currentItem._id }} |
空白にしたフィールドは更新されません。「*」は必須項目と思いますが「Failure Condition」は空白で問題ないようです。
以上で、オートメーションの設定が完了しました。
トリガー作成
オートメーション設定ができたら、あとは、ボタンクリックで呼び出すだけです。
ボタンの「On click」アクションに「Trigger Automation」を追加し、「Automation」で「QuantityCalc」を選択、入力値にフォームの値を選択し、「Save」ボタンをクリックすれば完了です。
感想
オートメーションの設定自体は、直感的で分かりやすいです。
前の記事でも書きましたが、ページ更新周りで不具合があるような気がしていて、株式の再投資計算ツールの作成過程では、その部分で苦労しました。パネルの「On close」アクションを利用するなど、工夫すれば更新できましたので、ひとまず良しとします。
今回程度のアプリであればクラウドサービスを使って無料で作成できますので、興味のある方はチャレンジしてみてはいかがでしょうか。
コメント