NewsPicks Mobile App Unitの森崎です。
当記事では私が入社3ヶ月の間に行ったSlackを用いた自動化の事例を紹介します。
2事例紹介しますが、後半のSlack×GASをSlack×Zapierに移行した例はモバイル領域のみならず、幅広い活用の仕方があるので参考になれば幸いです。
Slack×Bitriseでテスト用アプリのデプロイを誰でもできるようにした事例
実現したこと
弊社は施策が色んなチームから降りてきて、実装が完了するとデザイナーや依頼元のチームに動作やレイアウトを確認してもらうフローを踏んでいます。
その際にDeploygateを使用して開発ブランチをデプロイしていたのですが、デプロイの作業はエンジニアに都度依頼をしてエンジニアが作業していました。
SlackからBitriseのワークフローを呼べるようにすることで、依頼する負担やエンジニアの作業をなくすことができました。
SlackからBitriseのワークフローを実行する方法
作業することは3つです。Bitrise公式でも手順が公開されています。
- SlackからBitriseのSlackWebhookを叩く設定を追加
- さらに実行しやすいようにSlackのWorkflowを作成
- BitriseからSlackに通知する設定を追加
1. SlackからBitriseのSlackWebhookを叩く設定を追加
- Bitriseの設定画面のIncoming Webhooks→Set up webhook manuallyを選択する
- ServiceでSlackを選択するとWebhook URLが表示されるので控えておく
- Slack App または Outgoing Webhook を設定する
URL以外の設定は公式ドキュメントなどを参考にしてください。
この設定により、Slackの指定のメッセージやイベントを検知してBitriseのワークフローを実行できるようになります。 現在はOutgoing Webhookは非推奨になっているのでSlack Appを使うのが好ましいです。(公式ドキュメント)
2. さらに実行しやすいようにSlackのWorkflowを作成
- ワークフロー全体図
Slackのワークフローを作成し、エンジニアに関わらず様々な職種の人が実行できるようにします。
ブランチやサーバーの環境もSlackから設定できるようにしています。
Slack×GASで自動化していたものをSlack×Zapierに移した事例
機能
以下のことをSlackからGASを呼ぶことで、結果をSlackに通知するようにしました。
メンション付きでキーワードを渡すとレスポンスをくれます。testはランダムで担当の決定を呼び出してます。
- 順番に担当の決定
メンバーの一覧から順番に担当を決めます。 - ランダムで担当の決定
メンバーの一覧からランダムに担当を決めます。 - メンバーの追加
メンバーの一覧に新しいユーザーを追加します。
GASからZapierに移行する
なぜ移行したか
元々GASは使用していましたが、Zapierは使用したことがありませんでした。 全社でZapierが導入されたのに合わせて、今回は勉強がてらそんなに大きな機能ではないのでZapierに移してみることにしました。
移す際に必要な作業
ZapierにてZapと呼ばれるワークフローを作成します。必要な作業はこれで完結しているのでとても分かりやすいです。ZapではActionを用いてワークフローを構築していきます。Actionは豊富に用意されています。
Zap
今回作成したZapの一つを紹介します。上記(機能)の担当を決めるZapです。
- Slackからのアクションを検知します
Slackのアクション(Slack Integrations) - フィルタをかけます
Slackから受け取ったメッセージを条件でフィルタしています。今回は特定の文字のが含まれている時だけ後続の処理を行います。
Filterの詳細(Filter by Zapier Integrations) - スプレッドシートからメンバーの一覧を取得します
スプシでメンバーの一覧を保持しているため、その情報を取得します。取得は用意されているActionで簡単に取得できます。
Google Sheets のアクション(Google Sheets Integrations) - スプレッドシートから前回のアサインの情報を取得します
別シートの情報を取得したい場合は、Actionをもう一つ用意する必要があります。 - 取得した情報と、Slackのメッセージからレスポンスに必要な情報を作成する
このステップはJavaScriptまたはPythonでコードを書けるActionです。少しZapier特有のコードも存在します。 - Slackにメッセージを送ります
- スプレッドシートの更新が必要かどうかフィルタで判断します
- スプレッドシートの情報を更新します
移行してみて
Zapierは直感的に使いやすく、エンジニア以外でも取り入れやすい業務改善ツールだなと感じました。
1. Zapierについて
まず一番にZapierの素敵な点は、様々なサービスとの連携がサポートされてるため簡単に連携ができます。それらの連携もGUIでかなりの要件を実現できるのが魅力です。しかし、ノーコードで完結するのは難しく、やはりコードで書かなければならないことは出てきます。
また、Zapは直列のフローなので入力値によってその後のフローを分岐させることができないのは少し不便に感じました。今回の場合だと、担当を決めるのは同じZapですが、ユーザーの追加は違うZapにしています。
あとこれは今回の機能に限った話かもしれませんが、GASの方がレスポンスは早かったです。
2. GASとの使い分け
スプレッドシートで色んな作業をしたい時はZapierよりもGASの方が圧倒的に楽だなと感じました。Zapierでスプレッドシートをいじりたい場合もGASと同じようにコードを書く必要があります。 また、スプレッドシートを変更したいだけならいいのですが、変更した結果によって分岐するなど複雑なフローはZapierだと難しくなりすぎて不向きです。
一方で様々なサービスと連携する場合は圧倒的にZapierの方が便利です。
最後に
自動化すると業務は劇的に改善されて、必要な作業に集中できるようになります。そのためストレスが減り、パフォーマンスの向上につながると考えています。
もちろん自動化を導入するためには少なくないコストが掛かりますが、経験的にはそのコスト以上の価値があります。 今後も積極的に導入していきたいと思います。
皆さんの会社で行なっている自動化がありましたら、ぜひ教えてください。