Anketとは何か?
一言で説明するとSlackでアンケートをとることが出来るサービスです。
↓ Anketをインストールしたワークスペース内で次のように入力します。
↓ すぐにアンケートが作成され回答を開始することができます。
回答はSlack上でリアルタイムで確認することができますしWEB上でも誰が回答したかなどを確認することができるようになっています。
なぜAnketを作ったのか?
いくつか理由があります。
1. Slack Appを作ってみたかった
Slackは普段コミュニケーションとして使っています。
ちょっと違った使いかたとしてはwebhookつかってプログラムから通知したりbotトークンつかってbot作るなどしてました。
ただSlackはdialogが出せたりbuttonを出してインタラクティブなアクションをしたり /hoge
のようなslash commandを入力してアクションを作成することができます。
せっかく使うならただのコミュニケーションツールとして使うのではなく、使い倒したいなと思ったのが最初のきっかけです。
このタイミングで社内でアンケートをとる機会が出来て、ちょうど良かったというのもあります。
2. 技術を試せる場所がほしかった
この後紹介しますが、Anketはslash commandをbotkitを使って、アンケートの作成する際のAPI、WEB上でのアンケート結果を確認するアプリケーションをRailsで作成してます。
この2つはAWS上にのっており、構成はすべてTerraformで管理されています。
Terraformは使うのがはじめてだったのですが、ドキュメント読んで終わりではなく実際に使ってみることでハマりどころや、さらに深ぼるところが出てきて理解が進むと思います。
後はRailsが好きというのもありますが、リリースされた機能をただ眺めるのではなく実際に動いているサービスがあればそこで実際に使って試すこともできます。
そんな感じで僕は技術を試せる場所がほしかったんだと思います。
3. おもしろい
細かい理由はさておき、コード書くのも楽しいし、それを誰が作ってくれるのも楽しい
構成
技術的な面は今回のエントリーではどんなインフラかを紹介したいと思います。
まず図で紹介すると↓のようになります。
特にかわったことはしていないつもりでRailsとbotkitがEC2上で動いていてALBにぶらさがっている。
EC2はPackerで作成したAMIで起動しています。
秘匿値はAMIを作るときにいれるのではなく、起動時にAWS Systems Manager パラメータストアから取りだして環境変数で展開しています。
AWS上の構成はRoutes53のDNSの設定からほぼ?すべてTerraformで管理されています。
最後に
インフラの管理からアプリケーションの開発まですべて一人でやってます。
こっちはなんとかなるんですが、より使いやすいサービスにするためには一人だと考えるのに限界があります。
ぜひ使っていただいて、これ良いね! ここ使いずらい! もっとこうしてみたら?,そもそもバグってるよ!などを教えていただけると嬉しいです。
連絡はTwitterで@hatappiにDMしていただくかhatappi@hatappi.meにメールいただければと思います。