Mercari Engineering Blog

We're the software engineers behind Mercari. Check out our blog to see the tech that powers our marketplace.

社内の面倒な手作業はZapierにやらせよう #2 〜Webhookを使って、自動化の幅を広げる〜

f:id:tadashi-nemoto0713:20180218185222p:plain


こんにちは、メルカリの自動化&品質保証グループ(Automation & QA Group:通称AQA)で、自動化をぶりぶりしている tadashi0713 です。

私は普段、テスト自動化・CI / CD改善・その他社内の生産性を上げるための自動化・ツール作成を行っています。

以前はQA-SETでしたが、AQAになったことにより、よりチーム全体での自動化を推進していきます。


メルカリでは、去年からZapierという自動化ツールを導入し、社員がより簡単に業務自動化に取り組めるようにしています。

導入した背景や、簡単なワークフローの作り方、実際に社内でどう使われているか、などについては下記の記事をご覧ください。

tech.mercari.com


現在では、 ノンプログラマー含め250名以上のメンバーが、400以上のワークフローを作成 し、日々の作業を自動化しています。

また社内のエンジニアも、Zapierを使った自動化について、いくつか書いてもらっています。

masartz.hatenablog.jp

dev.to

2つ目の記事では、Slackのメッセージについたリアクションをトリガーに、自動翻訳するBotについて紹介されています。

グローバルメンバーと、複数言語でのSlackコミュニケーションが増えているということもあり、現在社内で一番使われています。


この約半年間、Zapierを運用する中で様々なTipsが出てきたので、定期的にこのブログでご紹介していきたいと思います。

今回は 「Webhookを使ったワークフロー作成」 についてご紹介します。


Webhook by Zapier

基本的にZapierでは、連携されているWebサービス(App)をトリガー・アクションとして繋げて、ワークフローを作成します。

しかし、Appだけが提供するトリガー・アクションだけでは、期待しているワークフローが作れない場合もあります。

例えば、kintoneのAppでは「New Record(レコードが作成されたら)」をトリガーにすることはできますが、「レコードが更新されたら」や「コメントが書き込まれたら」をトリガーにすることは現時点ではできません。

f:id:tadashi-nemoto0713:20180607181253p:plain


しかし、そのWebサービスにWebhook機能がある場合には、「Webhook by Zapier」を使うことで、そのWebサービスとZapierを連携させてワークフローを作成することができます。

zapier.com

実際に社内で使われているワークフローを紹介しながら、この「Webhook by Zapier」を説明します。


kintone × Webhook を使い、kintone上でのコメントをSlackにも通知する

メルカリでは現在、各種申請業務などでkintoneを利用しています。

申請手段をkintoneで一元管理することで、申請手段がバラバラになることによる非効率化を防ぐことができます。

詳細については、こちらの記事をご覧ください。

kintone-sol.cybozu.co.jp


こちらの記事にも書かれてありますが、kintoneと社内コミュニケーションツールとして使われているSlackとの連携をしたいという要望が多くありました。

特に、kintone上でのコメントが気づかなかったことによる、タイムロスが課題になっていました。

現在ではZapierを使い、下記のようなワークフローが使われています。

  • kintoneにコメント書き込まれたらSlackに通知する
  • kintoneに宛先が付いている場合には、Slackでもメンションさせる

f:id:tadashi-nemoto0713:20180608111624p:plain

これによって、申請はkintoneに一元管理しつつ、申請者はSlackで早く確認することができます。


先ほどの通り、kintoneのAppからは「コメントが書き込まれたら」をトリガーにすることは現時点ではできません。

しかし、kintoneのWebhookを使うことによって、コメントが書き込まれた時にワークフローをトリガーすることが可能です。

kintoneのWebhookとZapierとの連携手順については、下記の記事が参考になります。

developer.cybozu.io

今回はコメントの書き込みをトリガーにしたいため、kintoneのWebhook追加画面で「通知を送信する条件」に「コメントの書き込み」をチェックします。

f:id:tadashi-nemoto0713:20180608112314p:plain


このままSlackでkintone上のコメントを送信することは簡単ですが、「kintoneに宛先が付いている場合には、Slackでもメンションさせる」を実現するには少し工夫が必要です。

まず、Webhookから受け取ったデータから、宛先がついているメールアドレスを抜き出します。

Zapierでは、「Formatter by Zapier」を使うことにより、下記のように簡単にメールアドレスのみを抜きだすことができます。

f:id:tadashi-nemoto0713:20180608110603p:plain

次に、抜き出したメールアドレスを使って、Slackで該当するユーザーを探します。

f:id:tadashi-nemoto0713:20180608111101p:plain

最後に、見つけたユーザー名を指定してSlackに送信するメッセージを作成します。

f:id:tadashi-nemoto0713:20180608110204p:plain


JIRA × Webhook を使い、必要なIssueを自動生成する

メルカリのプロダクト開発では、プロジェクト管理ツールとしてJIRAを利用しています。

iOS/Androidの開発・リリース管理にはVersionを利用しているのですが、それぞれのVersionにおいて毎回必要なIssue(例えばリリース前のテスト実行やストアの文言作成など)を作る必要がありました。

リリースするタイミングが増えると、このような細かいタスクも負担になります。

現在ではZapierを使い、Versionが作られると、自動的にそれらのIssueがバージョンに紐づいて作成されるようになっています。

ZapierにはJIRAのAppも既に用意されています。


しかし、「Versionが作られたら」をトリガーにすることは現時点ではできないため、JIRAのWebhookを使います。

f:id:tadashi-nemoto0713:20180608112954p:plain

JIRAにはIssue、Project、Userに関する細かい変更をWebhookとして利用することができます。

Webhookとしてトリガーが設定できたら、JIRAのAppを使いIssueを作成します。

Issueを作成するステップのVersionに、今回Webhookで受け取ったVersionのIDを指定してあげることによって、そのVersionに紐づけることができます。

f:id:tadashi-nemoto0713:20180608111323p:plain


まとめ

このように、「Webhook by Zapier」を使うことで、Zapierにおいてより多様なワークフローを作成することができます。

ワークフローを作る幅が増えることは、即ち 社員の生産性向上に直結 します。

Zapierで通常作るワークフローと比べると、今回紹介したワークフローは、ノンプログラマーにとっては難しい部分もあると思います。

しかし、やり方を身につけてもらうことによって、自分たちで作成・メンテナンスすることは十分に可能です。

mercan.mercari.com

メルカリでは、エンジニアの行動指針に Automation, Karakuri があります。

この文化が、エンジニアだけでなく社内全体に広まるよう、引き続き頑張りたいと思います。

PS・・・テストや自動化の話をカジュアルにできるようにFacebookグループ Agile Testing, Automation and QAの現場 を作ってみました。もしご興味があれば、ぜひ遊びにきてください!

 
Agile Testing, Automation and QAの現場
Facebookグループ · メンバー116人
グループに参加
アジャイルテスティング、自動化、品質保証。そんなキーワードに関心のある方が集まるグループです。アンケートにお答えいただいたからから随時承認中です。ご協力お願いいたします。 日本語をメインで使っていますが、 Some member can communicate with you in English...