pco2699’s blog

学んだものについて、メモしておく場所

enebularであつ森のカブ価予測 Slack Commandをシュッと作ろう

こんにちは、この記事は enebular advent calendar 24日目 の記事です。

今年は、例年に比べて家でこもることもあってゲームをよく遊んだ年でした。 特に遊んだのは

  • あつまれ、どうぶつの森
  • Cyberpunk 2077(プレイ中)

あつまれ、どうぶつの森 今は全くやってないのですが やってたときに一番熱中したのはカブです。 詳細な説明は、調べれば出てくるので割愛しますが、簡単に言うとカブとは株を模したもので、一週間の間で売値が変動する「カブ」という商品を使ってゲーム中に投機を行います。(投資ではない

このカブでうまいことやるとこんな感じでゲームシステムが崩壊するぐらいのベル(ゲーム内の通貨)が手に入ります。

f:id:pco2699:20201224104628j:plain

実は、このカブの売値の変動アルゴリズムはほぼ解明されており、インターネット上には多くのカブ価 予測ツールがあります。
「カブ価 予測」とかでググると予測ツールがたくさん公開されています。

自分は当初、この予測ツールを使ってチマチマ値を打ち込んでいたのですが、以下の問題があることに気づきました。

  • PC内のlocalstorageを使って過去の値を保存しているため、他の端末でカブ価を入力できない
  • 他の仲間に共有しづらい

そこで、このカブ価予測ツールをSlack Commandにしてしまえばいろいろ便利なのでは?と思い作ってみることにしました。

動作の様子

こんな感じで動きます。 f:id:pco2699:20201224105424p:plain

つくり方

用いる予測ツール

予測ツールなので、アルゴリズムとか組むの?めっちゃ難しそう!と思うかもしれませんが、そういうことは全くやりません。 先ほども言ったとおり、株価予測ツールはインターネット上にあるのでそれを用います。巨人の肩の上に乗りましょう。

今回、用いるツールはこちらの予測ツールです。

github.com

この予測ツール、あつ森のカブ価予測ツールの中でもかなりエンジニア向けです。

  • オープンソース
  • APIがある
  • 画像自動生成機能がある

ちなみにWebページもあるので、ぜひアクセスしてみてください。

ac-turnip.com

画像自動生成機能とは、URLに今まで出たカブ価の値を入力することで、株価予測のグラフのpngファイルを生成してくれる機能です。

例えば、今まで100ベル -> 110ベル -> 120ベルと売値が推移している場合、以下のURLを叩くと予測のグラフが出力されます。

https://ac-turnip.com/p-100-110-110.png

以下が実際の画像です。

https://ac-turnip.com/p-100-110-110.png

この中の画像自動生成機能とビジュアルコーディングツールであるenebularを組み合わせると、ほとんどコードを書かずにこのSlack Commandが作れてしまいます。

enebularとは

enebularとは、以下のようにnodeを組み合わせることでAPIやデータ加工基盤が簡単に作れるツールです。

f:id:pco2699:20201224110627p:plain

LINE BOTとか今回のようなSlackコマンドを作る際に、enebularは一切、コードを書かずに作れるため、非常におすすめです。 あとログインしてenebularのEditorを開いてる、実際にWebのエンドポイントが立つので、簡単にAPIを短時間で立ち上げたい、とかPoCとか作る際にもおすすめす。

ぜひ、以下からサインアップしてみてください。

www.enebular.com

実際に作ってみる

やることは非常にシンプルです。 以下のように打ち込まれたテキストを、URLのプレースホルダーに当て込むだけです。

f:id:pco2699:20201224112924p:plain

enebularとslackを組みあわせてつくる

では、実際にenebularとSlackを組み合わせ作ってみましょう。サインアップなどのやり方は省略し、nodeの作り方のみ説明します。

まずは、enebularでFlow editorを立ち上げて右上のURLを確認してみてください。 f:id:pco2699:20201224211506p:plain

マウスでホバーすると表示されるURLをメモっておいてください。これがエンドポイントになります。 このエンドポイントをSlackに設定することで、Slack Commandが簡単に作れます。

Flowは以下です。マジシンプル。 f:id:pco2699:20201224211946p:plain

それぞれ図の番号順で説明します

① HTTP in ノード

このノードはHTTPリクエストを受け付けるノードです。先ほど確認したエンドポイントをURLに向けてHTTPリクエストを送るとこのノードからリクエストの情報が入ってきます。

メソッドはPOST, URLは適当なものをつけておきましょう。自分は /predict と設定しました。

② templateノード

このノードは、決まったテンプレートに何か文字列を動的に埋め込みたい場合に有用なノードです。 今回は予測ツールの画像生成のパスを埋め込みたいので、以下の通り設定します。

f:id:pco2699:20201224212509p:plain

payload.text にはSlack Commandの引数が入っています。これを予測ツールのURLに埋め込んでいます。

③ HTTP response

最後のノードでHTTPリクエストを返却します。特に設定は不要です。

これで作ったエンドポイントをSlack側に設定すればSlack Commandが完成です! Slack Commandの設定方法は割愛します。ぜひ検索してしらべてみてください。

つくってみてよかったこと

Slackだと、アプリからでもPCでも投稿できる上、過去の履歴ももちろんログで残っているため、予測ツールの入力が捗るようになりました。 あと、予測ツールを使うと、同時にSlackにいる友人に現在の自分の島のカブ価を共有できるので、便利でした。

enebularを使うとほぼコードを書かずに簡単にできるので、ぜひやってみてください。ではでは。