毎月 500 時間の社内ルーティンワークを GAS を使って自動化した話

## はじめに

グロービスにて、社内で発生するルーティンワークを自動化する仕組みを作って、約半年で月 500 時間の業務自動化を行った話について書きます。

今年の [Cloud Next](https://cloud.withgoogle.com/next18/tokyo) でこの内容について登壇した際に、「自社でもやろうとしていて参考になった」などの声をいただいたので、同じような動きをしようとしている方に、自分のノウハウが少しでも役立てばと思います。

Cloud Next '18 in Tokyo の登壇内容。
[Google Apps Script で始める RPA](https://cloud.withgoogle.com/next18/tokyo/sessions/session/223235)

ITmedia さんからも取材していただきました。
[エンジニアとビジネスサイドの化学反応で業務を効率化](http://www.itmedia.co.jp/business/articles/1811/07/news011_5.html)

## やろうと思ったきっかけ

発端は去年のアドベントカレンダーで書いたこの記事でした。
[Google Apps Script (GAS) で毎週 30 分の雑務を自動化した話](https://qiita.com/tanabee/items/e51f107f1e95a42cc636)

自分の身の回りの業務を自動化したのですが、社内の他のメンバーが行っている業務、特に複数人で行っている業務を掛け算的に自動化したら、全社的にルーティンワークが減って本来時間をかけたい業務により注力できるようになるのではないかと思いました。

そこで、全社から業務自動化をエンジニアに依頼できる仕組みを考えて提案しました。

## 自動化依頼の仕組み

Google フォームを使って依頼する仕組みを作りました。

![meyasubako.png](https://qiita-image-store.s3.amazonaws.com/0/19698/e2dae41a-21dd-a3bd-0b12-f3fee063a612.png)
実際のフォーム項目

**業務名** と **作業の手順・詳細** は、自動化する上で作業内容を理解するためのものです。**作業の発生頻度** と **1回あたりの作業時間（分）**、**作業に関わる人数** は作業に定常的にどれくらいの時間がかかっているか把握するためのものです。3 つの項目を掛け算すると月あたりどれくらいの作業時間がかかっているのか概算することができます。

**例: 毎月 x 120 分 x 3 人 = 月 6 時間**

全ての依頼に対応していると、開発するリソースが足りなくなるため、やるやら判断についても仕組み化しました。このプロジェクト立ち上げ当初は主に 3 名のメンバーがおり、業務の 20% 以内の工数をかけて良いと取り決めていたため、上限はそれぞれの業務時間の 20% までとしました。また、1 件の依頼に対して開発にかける時間は以下の等式を満たす範囲としました。

**開発工数 < 月あたりの削減時間**

この等式は、はじめ適当に決めた基準でしたが、後々のメンテナンス工数などを考慮すると現実的なラインだったと思います。


## 部門内展開〜全社展開

すぐに全社展開とはなりませんでした。「依頼が来すぎて本業を圧迫しないか」、「ちゃんとハンドリングできるのか」など確認するために、まずは試験的に所属する部門内に閉じて実施しました。

1 ヶ月まわしたところで一定の成果がでた（月 100 時間以上削減）ので、その後全社に展開しました。

## 成果

2018 年 4 月から約半年で以下の成果を上げました。

- 依頼数: 50 件
- 解決数: 21 件
- 削減時間: 502 時間/月

本来の目的であるルーティンワークの削減という効果だけでなく、社内の様々な業務把握につながり、今後サービス開発する上での背景理解につながったことも良かった点です。

## 事例集

グロービスでは、G Suite を利用しているため、主に G Suite 周りの自動化が多かったです。そのため、主な開発は Google Apps Script を用いたものです。具体的には以下のようなものがありました。

- スプレッドシートのイベント一覧をカレンダーに一括登録したい（[Qiita 記事](https://qiita.com/tanabee/items/7ebcc63e5b561d18a582)）
- Gmail の特定のメーリスへのメール一覧をスプレッドシートに蓄積したい（[Qiita 記事](https://qiita.com/tanabee/items/17eb721801eff8d97db9)）
- Google フォーム回答時に Slack にも通知したい（[コード全文](https://github.com/tanabee/form-to-slack)）
- スプレッドシートの情報を JSON 形式で吐き出したい（[コード全文](https://github.com/tanabee/spreadsheet-to-json)）

![Google Apps Script で始める RPA.png](https://qiita-image-store.s3.amazonaws.com/0/19698/c7f16a09-f7b4-0621-22db-7e2f72f52786.png)
解決例（引用: [Google Apps Script で始める RPA](https://docs.google.com/presentation/d/16Oo0_rVPl-gieZNAj2HNtWqQMJCPhW27CqLk-c5peyY/edit#slide=id.g3dc77a0a06_0_433)）

例を見ていけば分かると思いますが、基本的に G Suite の 2 アプリケーション（スプレッドシートとカレンダーなど）をつなぐものが多いです。アプリケーションをつなぐ処理は 100 行以内で書けることが多く、もともとの作業時間が多い場合は非常に費用対効果が高いです。


## 今後の展望

一定の成果を上げたプロジェクトですが、今後も業務自動化をさらに加速するために、以下のような取り組みを行っています。

### 汎用的に使えるスクリプトを作る

特定の依頼に特化した作りにせず、他の依頼が来た際にも対応できるコードにしています。これにより、依頼数分のスクリプトを作るのではなく、スクリプトの数をおさえ、メンテナンスコストを最小限にできます。

### 自動化できる社内メンバーを増やす

プログラミング初心者の人も含めて、社内で興味のある人を募って、 Google Apps Script の勉強会を開催しています。実際に自動化のために作ったスクリプトも 100 行前後のものが多いので、プログラミング初心者でも手の届きやすく、既存のスクリプトをコピペしてメンテナンスできるレベルを目指しています。

長期的には部署毎に Google Apps Script が書ける人がいて、その人が一次対応できるような状態を目指しています。

### OSS 化

OSS 化に向けて動いています。社内の効率化にとどまらず、社外の同じような課題についても解決していくことを目指しています。

## まとめ

以上、道半ばですが、去年から 1 年間で全社に自動化文化を広げてきた話でした。グロービスでは **自由と自己責任** という言葉があり、中途入社 1 年目の自分がここまでできたのは会社のこうした文化も大きく影響していると思います。

最後に、グロービスはエンジニア・デザイナー積極採用中ですので、もし興味ある方は Wantedly 覗いてください！ [グロービス Wantedly](https://www.wantedly.com/companies/globis)

## 関連記事

- [GAS ビギナーが GAS を使いこなすために知るべきこと 10 選](https://qiita.com/tanabee/items/2c51681396fe12b6a0e4)
- [3 分で作る無料の翻訳 API with Google Apps Script](https://qiita.com/tanabee/items/c79c5c28ba0537112922)
- [Google Apps Script ハンズオン資料](https://qiita.com/tanabee/items/4a5056f468ae71d8d648)