こんにちは、この記事は enebular advent calendar 24日目 の記事です。
今年は、例年に比べて家でこもることもあってゲームをよく遊んだ年でした。 特に遊んだのは
- あつまれ、どうぶつの森
- Cyberpunk 2077(プレイ中)
あつまれ、どうぶつの森 今は全くやってないのですが やってたときに一番熱中したのはカブです。 詳細な説明は、調べれば出てくるので割愛しますが、簡単に言うとカブとは株を模したもので、一週間の間で売値が変動する「カブ」という商品を使ってゲーム中に投機を行います。(投資ではない
このカブでうまいことやるとこんな感じでゲームシステムが崩壊するぐらいのベル(ゲーム内の通貨)が手に入ります。
実は、このカブの売値の変動アルゴリズムはほぼ解明されており、インターネット上には多くのカブ価 予測ツールがあります。
「カブ価 予測」とかでググると予測ツールがたくさん公開されています。
自分は当初、この予測ツールを使ってチマチマ値を打ち込んでいたのですが、以下の問題があることに気づきました。
- PC内のlocalstorageを使って過去の値を保存しているため、他の端末でカブ価を入力できない
- 他の仲間に共有しづらい
そこで、このカブ価予測ツールをSlack Commandにしてしまえばいろいろ便利なのでは?と思い作ってみることにしました。
動作の様子
こんな感じで動きます。
つくり方
用いる予測ツール
予測ツールなので、アルゴリズムとか組むの?めっちゃ難しそう!と思うかもしれませんが、そういうことは全くやりません。 先ほども言ったとおり、株価予測ツールはインターネット上にあるのでそれを用います。巨人の肩の上に乗りましょう。
今回、用いるツールはこちらの予測ツールです。
この予測ツール、あつ森のカブ価予測ツールの中でもかなりエンジニア向けです。
- オープンソース
- APIがある
- 画像自動生成機能がある
ちなみにWebページもあるので、ぜひアクセスしてみてください。
画像自動生成機能とは、URLに今まで出たカブ価の値を入力することで、株価予測のグラフのpngファイルを生成してくれる機能です。
例えば、今まで100ベル -> 110ベル -> 120ベルと売値が推移している場合、以下のURLを叩くと予測のグラフが出力されます。
https://ac-turnip.com/p-100-110-110.png
以下が実際の画像です。
この中の画像自動生成機能とビジュアルコーディングツールであるenebularを組み合わせると、ほとんどコードを書かずにこのSlack Commandが作れてしまいます。
enebularとは
enebularとは、以下のようにnodeを組み合わせることでAPIやデータ加工基盤が簡単に作れるツールです。
LINE BOTとか今回のようなSlackコマンドを作る際に、enebularは一切、コードを書かずに作れるため、非常におすすめです。 あとログインしてenebularのEditorを開いてる、実際にWebのエンドポイントが立つので、簡単にAPIを短時間で立ち上げたい、とかPoCとか作る際にもおすすめす。
ぜひ、以下からサインアップしてみてください。
実際に作ってみる
やることは非常にシンプルです。 以下のように打ち込まれたテキストを、URLのプレースホルダーに当て込むだけです。
enebularとslackを組みあわせてつくる
では、実際にenebularとSlackを組み合わせ作ってみましょう。サインアップなどのやり方は省略し、nodeの作り方のみ説明します。
まずは、enebularでFlow editorを立ち上げて右上のURLを確認してみてください。
マウスでホバーすると表示されるURLをメモっておいてください。これがエンドポイントになります。 このエンドポイントをSlackに設定することで、Slack Commandが簡単に作れます。
Flowは以下です。マジシンプル。
それぞれ図の番号順で説明します
① HTTP in ノード
このノードはHTTPリクエストを受け付けるノードです。先ほど確認したエンドポイントをURLに向けてHTTPリクエストを送るとこのノードからリクエストの情報が入ってきます。
メソッドはPOST, URLは適当なものをつけておきましょう。自分は /predict
と設定しました。
② templateノード
このノードは、決まったテンプレートに何か文字列を動的に埋め込みたい場合に有用なノードです。 今回は予測ツールの画像生成のパスを埋め込みたいので、以下の通り設定します。
payload.text
にはSlack Commandの引数が入っています。これを予測ツールのURLに埋め込んでいます。
③ HTTP response
最後のノードでHTTPリクエストを返却します。特に設定は不要です。
これで作ったエンドポイントをSlack側に設定すればSlack Commandが完成です! Slack Commandの設定方法は割愛します。ぜひ検索してしらべてみてください。
つくってみてよかったこと
Slackだと、アプリからでもPCでも投稿できる上、過去の履歴ももちろんログで残っているため、予測ツールの入力が捗るようになりました。 あと、予測ツールを使うと、同時にSlackにいる友人に現在の自分の島のカブ価を共有できるので、便利でした。
enebularを使うとほぼコードを書かずに簡単にできるので、ぜひやってみてください。ではでは。