解決したい課題
僕のチームでは有志のメンバーが、毎晩仕事が終わるときに、Slackのチームチャンネルで一日の振り返りを投稿しています。
目的は2つ。
自分の頭の整理と、チームメンバーへの共有です。
しかし、毎回フォーマットをコピペしに探しに行ったり、今日自分がやったことを思い出す作業にはまぁまぁの負荷があります。一日真剣に働いて、ウィルパワーが消耗し切っているのに、これはキツイです。それで、なかなか毎日続かない。一度サボると、やらなくなってしまう。そんな循環を繰り返しています。
それを少しでも楽にできるようにしようということで、botアプリを作りました。
アプリの名前はfurikaeru
にしました。
今は一般公開はしていませんが、一応それも見据えてコード書いたので、ゆくゆくできたらと考えていたり、考えていなかったり。
会社のインフラ使わせてもらっているので、インフラ代が気になるところ。
仕様
実装済みのもの
1. アプリをチャンネルに招待する
アプリのいないチャンネルに@furikaeru
と投稿すればOK。
2. フォーマットを投げてくれる
振り返りフォーマットをコピペするために、Slackチャンネルの昨日の投稿までスクロールして探したり(僕はこのスタイル)、他のNotionなどのメモアプリに行ったり(このスタイルのメンバーもいそう)、地味に面倒です。
@furikaeru
と投稿すると、スレッドへの返信の形でこんなフォーマットを返してくれます。
これをコピペして内容を埋めればOK。
わざわざ昨日の投稿を探してコピペして中身を編集したり、メモアプリに置いてあるフォーマットをコピペしたりする必要がなくなります。
3. 今日完了したタスクを記憶してフォーマットに入れて返してくれる
振り返りフォーマットの取得は楽になりました。
でも記憶の糸をたぐって今日やったことを思い出すのも面倒な作業です。とある同僚はSlack内で自分の投稿を検索して、今日やったことを整理するとのこと。
そういう人は次のことをやればもっと楽にできるかもです。
日中、一つのタスクが終わったら、@furikaeruに向かって完了したタスクをつぶやくと、@furikaeruはそのタスクを記録してくれます。
@furikaeru テストを書く :white_check_mark:
:white_check_mark:
の部分は他に下記スタンプでも代用可能です。
-
:ok:
-
:white_check_mark:
-
:ballot_box_with_check:
-
:heavy_check_mark:
-
:done:
→弊社のワークスペースにはオリジナルスタンプで存在している。
ちなみに、投稿するとこんな感じで@furikaeruが絵文字でリアクションしてくれます。
この状態で、一日の終わりに振り返るフォーマットを要求すると、その日の完了タスクを入れた状態でフォーマットを返します。
今後追加したい機能
1. 今日以外の完了タスクのフォーマットも返せるようにしたい
例えば@furikaeru yesterday
とかやったら昨日のフォーマットが取れるようにしたい。
2. 「明日やること」も自動で取得したい
弊社はOutlookを使っているので、カレンダーに入っている予定を取ってきてフォーマットに埋めたい。
この辺参考になりそう↓
3. Slackのリストがリストにならない
-
もしくは*
で投げるんですが、上の写真の通りリストマークにならないんですよね。半角スペース入れているのにダメ。
2022/9/22追記
これはSlack apiの仕様でできない模様。
There's no specific list syntax in app-published text, but you can mimic list formatting with regular text and line breaks:
https://api.slack.com/reference/surfaces/formatting#block-formatting
Google翻訳すると↓
アプリで公開されたテキストには特定のリスト構文はありませんが、通常のテキストと改行を使用してリストの書式設定を模倣できます。
模倣、つまりリストっぽく、それっぽくはできるよ、ということみたい。これが現時点では限界のようです。
4. 完了したタスクの登録はスラッシュコマンドもいいかも
参考↓
5. SAM化する。ついでにTypeScript化する
同僚が教えてくれましたが、SAMならTypeScriptが書けるらしい。
TypeScriptは今、会社の輪読会でやっているのでいいなと。
アーキテクチャ
- Slack API
- AWS
- API Gateway
- Lambda (Node.js)
- DynamoDB
ハマったところ
基本的には、次章の「参考になったサイト」など、世に溢れる記事を参考にすればSlack botアプリは作れると思いますが、ちょいちょいハマったのでそこだけメモしていこうと思っています。
適宜記事を書いて、公開でき次第、こちら更新します。
API Gatewayの設定
Now writing...
DynamoDBの設計とLambdaからDynamoDBにputItemすること。
Lambda + JSの実行環境で日本時間をセットすること
Slackで自動で絵文字のリアクションをすること
参考になったサイト