Mercari Engineering Blog

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

社内の面倒な手作業はZapierにやらせようーーノンプログラマーでも業務自動化ができるツールを導入してみて

これは Mercari Advent Calendar 2017 22日目の記事です。

こんにちは、メルカリのQA-SETチームで自動化をぶりぶりしている tadashi0713 です。

前回は業務自動化の1つとして、Seleniumを使ったブラウザ操作自動化についてご紹介しました。

tech.mercari.com

コメントや反応を見ますと、最近はRPA(Robotic Process Automation)をはじめとした業務自動化に関心が高い印象を受けました。

メルカリでは1ヶ月ほど前にZapierというツールをTeam Planで導入しました。

zapier.com

このツールを使って、社員がより簡単に業務自動化ができるようにしようとしています。

今回はZapierを導入した背景や社内での使われ方、またどう社員に使ってもらえるようにしたか、などについてご紹介したいと思います。

◆ Zapierとは

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


Zapierは複数のアプリ(Webアプリケーション)を連携させてワークフローを作り、業務を自動化させることができるツールです。

WebUI上からアカウント連携・ワークフロー作成ができるため、ノンプログラマーでも簡単に使うことができます。

同じ部類のサービスではIFTTT(https://ifttt.com/)があります。

どちらも触った印象だとZapierの方が

  • 業務系アプリとの連携が充実している
  • ワークフローを作る上で、柔軟なカスタマイズができる

と感じ、今回はZapierを選択しました。

◆ 導入した背景

現在私は社内のノンプログラマー向けに、自分で業務自動化ができるように定期的に勉強会を行なっています。

勉強会の雰囲気などについては弊社オウンドメディアのメルカンに紹介されましたのでご覧ください。

mercan.mercari.com

勉強会の中でよく相談を受けましたのが、異なるアプリ間での作業自動化でした。

  • このGoogle Spreadsheetsの行が追加されたらSlackに通知してほしい
  • 毎日○時になったらこの条件のJIRAのチケットをSlack通知してほしい
  • 特定のワードが入っているカレンダーのイベントが始まる前にSlack通知してほしい
  • メールで届く添付ファイルをGoogle Driveに自動でアップロードしてほしい

このような相談に対して、試しにZapierをFree Accountで使ってみてもらったところ、学習コストがほぼ要らずにZapierのワークフローを作り、業務自動化ができるようになりました。

この経験によって、Zapierを会社全体で使えるようになれば、より社内の業務効率化ができるのではないかと手応えを感じました。

◆ Zapの作り方

Zapierでは複数のアプリを連携させて作ったワークフローの単位を「Zap」と呼びます。

Zapierでは主に2つの方法でZapを作ることができます。

◇ 1から自分で作る

Zapierのページ上部にある「MAKE A ZAP!」ボタンをクリックして始めます。

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


連携させたいアプリや、そのアプリのトリガー・アクションを自分で決めます。

柔軟性が高いため、既に自動化させたいものがはっきりしている場合にはこちらを使うのがおすすめです。

◇ Templateを使う

よく作られているZapはTemplateとして提供されています。

自分がやりたい自動化と同じ場合には、こちらを使った方がより簡単に作ることができます。

まずZapierのExploreのページからアプリを選択します。


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


選択されたアプリを含むTemplate一覧が表示されます。


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


自分がやりたいZapのTemplateが見つかったら、「Use this Zap」ボタンをクリックします


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


Templateを使うことで、アプリの選択やトリガー・アクションの設定をする必要がないため、より簡単にZapを作成することができます。

現在業務で使っているアプリでどういう自動化ができるか探すのにも、このTemplateは役に立つかと思います。

◆ 社内で作られたZap例

ここでは実際に社内で作られたZapの例をご紹介します。

◇ Google Calendar → Slack

シンプルなZapのため、初めてZapierを触る時によく作られます。

  • イベントが作られたタイミング
  • イベントが始まる・終わる○分前

にSlackに通知させることできます。

Google Calendarでは、「Search Term」を設定することができ、特定のイベントのみトリガーさせることも可能です。

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

◇ Slack → JIRA

タスク管理ツールとして、チームによっては現在JIRAが使われています。

JIRAを開いてissueを作成するより、SlackでのやりとりからSlack上でissue作成できた方が便利なようで、複数のチームで使われています。

Slackのトリガーとしては

  • Channel内の発言の中に特定のワードがある(ex. add todo)
  • Channel内の発言に特定のリアクションをつける

などを使うことができます。

◇ Google Drive → Slack

Google DriveにファイルがアップロードされたらSlackに通知します。

メルカリでは週一で全体定例ミーティングを行なっているのですが、その録画を編集・アップロードした際にSlackに通知されます

Google Driveに動画をアップロードされた直後の場合、処理中になっていて閲覧できないことがあります。

Zapierにはトリガーとアクションの間を一定時間遅らせることができる「Delay by Zapier」があり、これを使うことで回避することができます。


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


また、添付ファイルがあるメールが届いたらGoogle Driveにアップロードする→そのファイルのリンクをSlack通知することもできます。

◆ Zapを作る上で便利な機能

ここではZapを作る上で便利な機能についてご紹介します

◇ Filter

Zapのトリガーとアクションの間にFilterをはさむことができます。

特定の条件のみでアクションを実行させたい場合などに便利です。


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

◇ Schedule by Zapier

基本的にZapのトリガーは連携アプリからになりますが、毎日○時に、1時間毎にZapを実行させたいケースもあります。

「Schedule by Zapier」を使えば上記のことができるようになります。


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

◆ TeamでZapを共有する

Team Planの場合、Zapierで作ったZapを「Shared Folders」に移動することで、チーム内のメンバーが閲覧・編集することができます。


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


現在だと、運用するチーム毎にフォルダを作って、その中にZapを入れています。

このShared Foldersによって

  • Zapを作った人以外でも編集ができるため、属人化を防ぐことができる
  • Team内のお互いのZapを見ることができるため、ナレッジが溜まっていく

メリットがあります。

◆ Zapierを使ってもらうために自分がしたこと

導入したとしても、ツールは使ってもらえないと意味がありません。

ここでは社内の様々な人にZapierを使ってもらうようになるまでに自分がやったことについてご紹介します。

◇ 社員全員にZapierを紹介

全体定例ミーティングにて、Zapierについての紹介をさせてもらいました。

エンジニアや似たようなツールを使ったことがある人にはここで使ってもらえるようになりました。

◇ ハンズオンを実施

上記の全体への告知だけだと、今まで業務自動化などをやったことがない人にとっては、いくら簡単とはいえハードルが高いかと思います。

そのため、1時間程度のハンズオンを複数回実施しました。

最初の30分でZapierの簡単な概要とZapの作り方、後半30分では実際にZapを作ってもらいました。

最初の1個が作れるようになると、ぐっとハードルが下がる印象を受けました。


f:id:tadashi-nemoto0713:20171222110507p:plain カスタマーサポート拠点の仙台オフィスで行なったハンズオンの様子

カスタマーサポートからの要望もあって、カスタマーサポート拠点のある仙台オフィスでもハンズオンを行うことができました。

メルカリではカスタマーサポートツールは内製化されており、ハンズオンを行う前はZapierを活用するのが厳しいと感じていました。

しかし実際にはGoogle Spreadsheet、Gmail、Slack、JIRAなども使われており、Zapierを使っていくつか業務自動化してもらうことができました。

◇ メンバーの招待・追加を簡単にする

ZapierのTeam Planでは新規メンバーを招待する場合、既存のメンバーからメールアドレスを追加してTeamに招待してあげる必要があります。

社内全体で使ってもらおうとなった際に、自分自身この追加作業が面倒になると思ったのと同時に、社員により気軽にアカウント発行をしてもらいたいと感じました。

そのため、上記の追加作業を自動化できるようにしました。


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


SlackのSlash Commandからメールアドレスを入力してもらうと、入力したアドレスにメール招待が届くようにしました。

AWS Lambdaの「slack-echo-command-python」blueprintを使い

Slack(Slash Command) → AWS API Gateway → AWS Lambda

のフローを作成しました。

Lambda関数では、Slash Commandで入力してもらったメールアドレスに一定のバリデーションをかけたあと、CircleCIのAPIを叩きます。

CircleCIにおいて実際にブラウザを操作してログイン、招待まで行います。

ブラウザ操作自動化については以前書きました記事を参考にしていただければと思います。

tech.mercari.com

◆ まとめ

現在では150人以上の様々なチーム・職種の社員が、Zapierを使って業務自動化を行なっており、1日500回以上実行されています。

それぞれ工夫を凝らしたもので、毎日見ていて私自身も勉強になりますし、そのZapを作った人がチーム内などから感謝されていると素直に嬉しいです。

これをきっかけに、より社内全体での業務自動化が推進されればと思います。

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

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