Misoca開発チームの黒曜(@kokuyouwind)です。
富山Ruby会議が近づいてきましたが、10/23 午前11時現在、まだスライドを1枚も作ってません。4連休に着手するつもりだったんですが、シャニマスとMTG Arenaに消えました。
あ、頭の中ではできあがってるから…… あとはスライドに書き出すだけだから……(震え声)
🤖 Slackワークフロービルダー
先日、Slackにワークフロービルダー機能が追加されましたね。
これはSlack上からメニュークリックや特定タイミングで起動するワークフローを作ることで、定型的な作業を自動化できるものになっています。
このような画面でワークフローを定義できます。
メッセージを送るだけでなく、フォームを表示したり、メッセージ内にワークフロー起動者の名前やフォームの入力を埋め込んだりなどができるようになっています。
ちなみに、弊社の@tharaは力を授けてくれるワークフローを作っていました。
力を求めるとこうなります。
ニュースサイトかな?
🤔困ったところ
標準の機能だけでも定形メッセージの送信やアンケートの収集など使い所はあるのですが、外部サービスと繋がらないのでChatOpsを実現するには少々力不足に感じます。
スラッシュコマンドが使えると面白そうだったんですが、残念ながらそのまま送信されてしまいました。
これでremindが設定されてくれれば、ワークフローからリマインドの設定や削除をしたり、/trelloコマンドを使ってTrelloのカードを作ったりなどもできそうなんですけどね。
💎Rubotyと連携させる
そこでRubotyですよ!
弊社のSlackにはRubotyのチャットボットが住んでいます。このボットは通常のメッセージを見ているため、ワークフローからのメッセージ送信でコマンドを起動できます。
こんな感じで、普通に反応してくれます。もちろんechoのようにメッセージ内容を参照するコマンドも問題なく機能します。
つまりワークフローとRubotyを組み合わせれば、外部サービスとの連携なども自由にできるわけですね!*1
休暇申請
Misocaでは休暇予定が他の人にわかるよう、シフトカレンダーに予定を作成するルールがあります。
こんな感じでGoogleカレンダーに入れるルールのため、カレンダーを見れば今日だれが休みなのかわかるようになっています。*2
ただ毎回手で予定を入れるのは面倒なので、チャットボットからカレンダー予定を作れるようにしています。
これだけでも結構便利なのですが、フォーマットを間違えると反応してくれなくて悲しいなどの事故を起こしがちです。またコマンドでは休みの開始日-終了日を指定しますが、実際には1日単位で取得することが多いためちょっと冗長な指定になってしまいます。
そこでワークフローを使うと…
このメニューから「有給取得(一日分)」を選ぶことでフォームが開きます。
ここに必要事項を埋めてSubmitすることで、カレンダー予定を作ることができます。
日付のところは現状だとテキスト入力です。カレンダーコンポーネントが使えるようになってくれるともっと便利になりますね。
ちなみに、作成者のコメントはこちら。
はい。
リリース作業のワークフロー化
もう少し実用的な例でいきましょう。
Misocaでは本番へのリリース作業を「リリースしたい」「リリース開始」という2つの発言でできるようにしています。*3*4
こんな感じでリリース作業を行っています。
これも十分に便利なのですが、「リリースしたい」と「リリース開始」を打ち間違える事故があったり、リリース内容の見出し部分を手で書くのが結構めんどくさかったりといった点が気になっていました。
そこで、以下のようなワークフローを定義しました。縦に長いので画像を3分割しています。
実際に使ってみると、以下のようになります。
リリース準備が整ったら、以下のフォームにリリース内容を記入します。
このフォームを送信すると、リリース内容が共有されたうえでデプロイが始まります。
手でRubotyを起動していた箇所がワークフローから起動されるようになり、しかもリリースカテゴリなどもフォームを埋めるだけになりました。
left blankの部分が邪魔、そもそも手でカテゴライズしてるのがあまりイケてない、などの課題はありますが、従前と比べてミスしやすい箇所がなくなったことでリリース作業がしやすくなっています。
💬 感想
Slackワークフローは現状だと少々機能不足ですが、チャットボットを使った作業フローはそのまま置き換えることができて大変便利でした。みなさんもチャットボットと連携させて、外部サービスを絡めた作業の自動化を試してみてはいかがでしょうか。
今後は機能を強化して、ワークフロー機能のなかで「Slackコマンドの発行」「入力に応じたワークフローの分岐」などが入ってくれると使い道が広がりそうですね。とても楽しみです。
📢 宣伝
MisocaではSlackワークフローを使ってChatOpsしたいエンジニアを募集しています。