4月
16
IkaLog には Slack 連携機能があって、バトルの結果を Incoming WebHook 経由で発言させることができるのですが、発言内容はルールとマップと勝敗だけであり不十分であるため、チャンネル内の他のプレーヤー向けの記録としては結局手動で stat.ink の結果の閲覧ページを貼っていました。しかし、これだと stat.ink への投稿が完了するまで待って URL を調べて発言して、となって面倒です。下手すると次のバトルが始まってしまうし。
というわけで、IkaLog の作者の hasegaw さんにお願いして、IkaLog が stat.ink へバトル結果を投稿した時の完了イベントを WebSocket 経由で取得できるようにしてもらい、それを利用して Slack の Incoming WebHook 経由で URL を自動で貼るスクリプトを作りました。
こんな感じになります。
IkaLog 側の修正は既に master には取り込まれており、IkaUI のバイナリも近いうちにリリースされると思います。16日22:30追記: リリースされてました。
ちなみに IkaLog の修正を master に取り込む pull request には「Special Thanks: Umezawa-san.」と書いてあって、この Umezawa-san というのは私のことなんですが、具体的に何をやったかというと、実装の懇願(笑)と動作テストです。ていうか hasegaw さん動作テストしてないらしい(笑)。
それはともかく、スクリプトは以下のような感じです。
- Perl で書いてあります。
- 手元では Windows + Cygwin で動作確認しています。単なる Perl スクリプトなので、Mac でも Linux でも動くと思います。
- エラーチェックはかなり適当です
- ライセンスは Apache License 2.0 です(IkaLog と同じ)
それでは良いイカ生活を!
Q&A
- なんで Perl なの?
- この言語じゃないと書きづらい and/or ライブラリが揃っていない、というようなものではないので、一番慣れているスクリプト言語にしました。
- なんで WebSocket ライブラリは Mojolicious なの?
- WebSocket クライアントになれるライブラリは、ちょろっとググった限りでは Mojolicious と Protocol::WebSocket と AnyEvent::WebSocket があるようなのですが、 Cygwin のインストーラでインストールできるのは Mojolicious だけだったので、これを使っています。
- GUI ないの?
- 考えときます。が、Slack の Incoming WebHook を設定できる人がコマンドラインインターフェースを扱えないってことも考えづらいかなぁ…
no comment untill now