IkaLog には Slack 連携機能があって、バトルの結果を Incoming WebHook 経由で発言させることができるのですが、発言内容はルールとマップと勝敗だけであり不十分であるため、チャンネル内の他のプレーヤー向けの記録としては結局手動で stat.ink の結果の閲覧ページを貼っていました。しかし、これだと stat.ink への投稿が完了するまで待って URL を調べて発言して、となって面倒です。下手すると次のバトルが始まってしまうし。

というわけで、IkaLog の作者の hasegaw さんにお願いして、IkaLog が stat.ink へバトル結果を投稿した時の完了イベントを WebSocket 経由で取得できるようにしてもらい、それを利用して Slack の Incoming WebHook 経由で URL を自動で貼るスクリプトを作りました。

こんな感じになります。

IkaLog -> stat.ink -> Slack

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 を設定できる人がコマンドラインインターフェースを扱えないってことも考えづらいかなぁ…
Trackback

no comment untill now

Add your comment now