なんでもルーレットしてくれる Slack bot

自分のプロジェクトのエンジニア間では、「誰がやるか決めようぜ!!!」みたいなことがときたま発生するので、以下のような感じのことができる Slack bot をつくった。

名前はわさび寿司的な意味で wasabi。

構成

今年の抱負の実現のために Go で API サーバーを立てる練習がしたかったので、それなりにきちんとつくった(若干の牛刀感は否めない)。特徴はざっくりと以下のような感じ。

  • ベースは拙作の potto
    • /:Slack の Outgoing WebHook をハンドリング
    • /statsgolang-stats-api-handler を使って runtime の情報を吐く
  • graceful な感じ
  • ストレージは Redis
    • ルーレットの要素は set で管理
    • channel ごとにルーレットの要素を管理

実際にサーバーで動かすにあたって

ミドルウェアのセットアップ

itamae でシュッと実行できるようにした。

itamae はシンプルで好き。最近趣味でなんかするときはよく使わせてもらっている。

daemonize

普段は daemontools を使っているけど、ちょっと前に ISUCON の勉強で supervisor を触っていたので、試しに使ってみるかってことで使ってみた。

が、

  • yum でシュッと 3.x 系が入らない
  • 2.x 系と 3.x 系の config の違い

あたりに翻弄されてだいぶ時間を喰われてしまった。。

3.x 系をシュッとセットアップする itamae の cookbook はできたのでまあよしとするかな。。。

感想

  • 自分のつくったもの(ksatriyapotto)を使って実際にコードを書くと「これはイケてないわあ。。。」みたいなとこがどんどん見えて、がんがん使う側視点でリファクタリングが進むのでよい
  • 目標であった「今年の抱負の実現のために Go で API サーバーを立てる練習がしたかった」については、1 つ自分の中でテンプレ的なものができたので達成

wasabi は練習台なので、年末焦燥感駆動でもうちょいがんばる 🙏

comments powered by Disqus