Slack Slashコマンド + Rust で遊んだ
弊社ブログに書いたが、Slack Slashコマンドでポモドーロ数を測れるようにした。
https://github.com/yoshitsugu/slash-pomo
背景などは弊社ブログに書いた通りなので、ここでは実装面について書く。
使った言語、ライブラリなど
Rust
個人的に今勉強中なのでRustで書いてみた。
このツール自体は社内で使ってもらっているが、実装は業務外の時間にやった&別になくても困らないものなので、趣味優先にした。
Rocket
ついでにWebフレームワークも最近でたRocketを使っている。
RustのWebフレームワークとしてはnickelとかIronなどがあるようだ。
Rocketは最近v0.2.0がでたが、まだ追従できていない。(現在0.1.6)
Redis
カウントの記憶にはRedisを使った。
普段手軽に使っているものなので使ったが、他にも選択肢はいろいろあったかもしれない。あまり調べられてはいない。
RustからRedisを呼び出すのにはredis-rsを使った。
実行環境
IBM Bluemix
Webサーバを動かす環境としてはIBMのBluemixを使った。
HerokuではないのはSlashコマンドの仕様として3秒以内にレスポンスしないとタイムアウトしてしまう1ため、しばらくするとsleepしてしまうHerokuだと厳しかったから。
RedisはRedis Cloudを使った。30MBのプランなら無料なので便利だ。
公式wiki?にはheroku-buildpack-rustがそのまま使えると書いてあったが使えなかった。仕方なくforkしてちょっと修正した。
感想
とりあえず動くものができたので追ってリファクタリングや自動テストなどやりたい。
多分慣れている人が見たらまだまだツッコミどころ満載のコードだと思うが個人的には大分Rustの感覚が養われてきたように思う。この段階で再度基礎の勉強をしてもいいかもしれないと思っている。
また、こういうオモチャみたいなものでも、動くものを作るのはやはり楽しい。
https://api.slack.com/slash-commands には一応3秒以内に返せない場合の解決策もあるがシンプルにやりたかった。↩︎