1 of 35

GAS + Spreadsheet + Slack API で

レビュアーガチャを作ってみた

@unsoluble_sugar

2 of 35

お前誰 ?

@unsoluble_sugar

  • TOPGATE, Inc. / Mobile App Engineer
  • Tech Hunter / Blogger, Game App Engineer
  • Easy Easy / Organizer
  • Otaku / Game, Anime, Gadget

3 of 35

プルリクのレビュー誰がするの問題

4 of 35

チームにおける課題

プルリクを出してもレビューしてくれる人が少なかった

  • システムの理解度が浅い
  • 若手など経験不足のメンバー
  • レビュアーが集中してしまう
  • 高まり続ける属人性

5 of 35

理想はペアプロ、モブプロ的なやつ

6 of 35

現実は厳しい…

7 of 35

レビュアーガチャで解決!

8 of 35

レビュアーガチャとは!

レビュアーの選出を自動化するシステムのことである

  • プログラムによるランダム抽選
  • Slackチャンネルでメンションを投げる
  • レビューし合う文化を浸透させる

9 of 35

ガチャによる課題解決

均等にレビュアーの機会を得られると…

  • レビュー依頼の手間が省ける
  • システムの理解度が深まる
  • 若手などのスキル向上
  • レビュアーの分散化
  • 属人化の解消

10 of 35

要件定義

11 of 35

利便性と楽しさを

必要最低要件+α

  • 対象プルリクのURLを指定
  • チェックボックスで対象者を選択
  • 投稿チャンネルの切り替えに対応
  • メンション通知のキャラ追加&カスタマイズ可

12 of 35

さっそく作ってみた

13 of 35

最小コストで実現する

自分の知見を活かした技術選定

14 of 35

最小コストで実現する

自分の知見を活かした技術選定

なお、開発はWeb上で完結する模様

15 of 35

Google Apps Scriptとは?

Googleが開発したJavaScriptベースのスクリプトプラットフォーム

  • ブラウザ上のエディタで開発可能
  • Google提供サービスとの連携が容易
  • 主に軽量なアプリ向け
  • Webアプリ・API化なども可能
  • clasp(CLIツール)でローカル開発も�https://github.com/google/clasp

16 of 35

Google Spreadsheetとは?

Google版のExcelみたいなやつ

  • マクロや関数も使用可能
  • グラフ表示などもできる
  • Googleフォームのアンケート集計�などにも使用される
  • Google Apps Scriptとの相性が良い

17 of 35

Slack APIとは?

SlackのAPIだよ(真理)

  • Slackからユーザー情報を取得
  • Slackのチャンネル・DMへ投稿
  • 最近はなんか色々できます

18 of 35

Spreadsheetの構成

19 of 35

データ管理用シートとして使用

大きく4つに分けました

  • レビュアー一覧
  • プルリクエストURL
  • 投稿チャンネル設定
  • 投稿キャラクター情報の管理

20 of 35

レビュアー一覧

メンバーIDはプロフィールから取得できる

  • メンション ID(表示用)
  • メンバー ID(内部用)
  • チェックボックスで対象を選択

21 of 35

プルリクエストURL

(シート分ける意味)

  • レビュー対象のプルリクURL

22 of 35

投稿チャンネル設定

テスト用に切り替えたかったので

  • 投稿チャンネルの一覧表示
  • 「データの入力規則」を使用
  • チャンネル名でも動くが、内部的には�チャンネルIDを使用するのが良い�※名前変更されると追従する必要がある

23 of 35

投稿キャラクター情報の管理

実は一番力を入れているシート(笑)

  • キャラクター名
  • 投稿メッセージ
  • メンションを含められる
  • アイコン画像URL
  • IMAGE関数でサムネ表示

24 of 35

Slack APIの準備

25 of 35

Slack APIの準備

メッセージ投稿に使うだけ

  • Slack App Botの追加
  • Access Tokenの取得
  • 今回はライブラリを使用�シンプルに書けてコード補完も効くなど便利�https://github.com/soundTricker/SlackApp

26 of 35

Google Apps Scriptの実装

27 of 35

Google Apps Scriptの準備

Slack API、Spreadsheet連携用

28 of 35

Google Apps Scriptの処理

Spreadsheetの情報を取得&Slackへ投稿

  • レビュアー一覧の取得、抽選処理
  • プルリクエストURLの取得
  • 投稿チャンネルの取得
  • 投稿キャラクター情報の取得
  • Slackへ投稿

29 of 35

Google Apps Scriptの実装

シート情報を取得して必要な実装をしていくだけ

30 of 35

そんな感じでザッとやれば動きます

31 of 35

ガチャ回し放題

Spreadsheet上から実行すればSlackへ投稿

  • 基本はレビュアー候補ポチポチー、プルリクセットでガチャ回すだけ
  • キャラ選定やセリフのカスタマイズが腕の見せ所(?)

32 of 35

可能性は無限大

どこまで自動化すべきかは悩みどころ…

  • Webhookによるプルリク作成検知
  • GitHub APIを使ってReviewer割り当て
  • Slackコマンドによる実行
  • Interactive Message対応
  • Web画面化など

33 of 35

GAS

Spreadsheet

Slack API

完全に理解した

チームの課題解決にぜひお試しを

34 of 35

日常的に使ってもらえる�ツールで承認欲求得ていく�スタイルマジおすすめ

35 of 35

ご清聴ありがとうございました