1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Zapierを使ってGitHubのシステムリポジトリのissueをGoogleフォームと連携して自動登録にした話

1
Posted at

Issueで不具合の改修タスクを管理するなら手動登録はコストがかかる

メールで問い合わせがある度にIssueを手動で登録するのはめんどくさいし時間がかかる。
何より自動で反映されないのなら誰かがメールのチェックをし続けなくてはいけないためコストがかかる。

漏れがあったら一体誰のせいになるのか。
そう、一番下っ端の人間。つまり僕だ。

そんな思いから自動化方法を模索し始め30分で仮実装ができた、Zapierを使ってGitHubのシステムリポジトリのissueをGoogleフォームと連携して自動登録にした話をまとめようと思う。

Zapierとは?ざっくり説明

Zapier(ザピアー)は複数のWebサービスやアプリケーションを連携させて、作業を自動化できるツール。
無料プランが用意されており、月100回の実行までは無料で行える。
実際に試したところ、約15分のクールタイムもあり、即時反映ではない。

chatgptに聞いたら以下の実行間隔があるそう

プラン Zapの実行間隔(ポーリング頻度)
Free 約15分に1回(最大15分遅延)
Starter以上 5分に1回
Professional 1分ごとにチェック
Teams以上 ほぼリアルタイム(Webhook推奨)

100回で足りない場合や即時反映が希望の場合は有料プランとなるので、詳細はZapierの公式ページを確認してほしい。
https://zapier.com/

※Issueにお問い合わせを吸い上げるだけであれば、月100回も使わないだろうし、15分のクールタイムも何の問題もなさそうな話である。
(緊急かつ大量のissueなど発生する可能性がない。そう願いたい。)

どういう経路で連携させたのか

今回実装した経路は下記の通りだ。

Googleフォーム
 ↓
Googleスプレッドシート
 ↓
GitHub

これらの3つのツールのうち2つ(Googleフォーム以外)をZapierと連携させることで可能となった。
また、これらは基本無料で使用できて、使えない現場のほうが少ないのではないだろうか。

ここからは、具体的な方法な方法について解説していこうと思う。

連携方法

ステップ1:Googleフォームとスプレッドシートの準備

Googleフォームを作成

対象システム名
件名(お問い合わせ件名)
内容(詳細なメッセージ)
メールアドレス(任意)

※Googleフォームの回答先をスプレッドシートにリンクする
フォーム画面の「回答」タブ → 「スプレッドシートのアイコン」から連携可能

ステップ2:ZapierでZapを作成

Zapierにログイン
https://zapier.com にアクセスしてログイン(無料プランでOK)

新しいZapを作成
上部の「Create Zap」をクリック

1.Trigger(トリガー)を設定

App: Google Sheets
Event: New Spreadsheet Row

Googleアカウントとスプレッドシートを接続
GoogleアカウントをZapierに接続
対象のスプレッドシートとワークシートを選択(フォームと連携されているもの)
テスト
フォームに1件送信しておき、「テストトリガー」でデータを確認

2.Action(GitHubにIssueを作成)

App: GitHub
Event: Create Issue

GitHubアカウントを接続
GitHubにログインしてZapierと連携(OAuth認証)
必要に応じて対象リポジトリへの書き込み権限を確認

フィールドをマッピング

Repository: 登録先のリポジトリ(○○/○○という形に整形が必要)
Title: Googleフォームの「件名」を指定
Body: 内容+名前やメールなどをMarkdownで組み立てるときれいです

本文のテンプレートをスプレッドシートでセルから引用しながら作成

### お問い合わせ内容
{{内容}}
---
**送信者メール:** {{メールアドレス}}
**送信日時:** {{タイムスタンプ}}
(任意)Labels や Assignees の設定

テストして公開

テストでGitHubにIssueが作成されるか確認
問題なければ「Publish Zap」で有効化するだけ、以上だ。

とても容易にタスクを減らすことができた。

最後に

ここまでやっといていま言う?という感じだが、ある程度の権限をZapierに与えることから、セキュリティ上の懸念は発生することになる。
導入を検討する場合は、本来そのあたりもおさえる必要があることを忘れないでほしい。
(僕はコスト削減という一本鎗でごり押した。)

ちなみにこれもchatgptに調べてもらったので参考にしてほしい。
(導入を検討する場合はどこまでが正確な情報かは疑って見るようにしてほしい)

Zapierが安全である根拠

  1. OAuth 2.0による認証
    Zapierは、GoogleやGitHubと連携する際に公式のOAuth 2.0認証フローを使用します。
    パスワードをZapierに渡すことはありません。
    認可されたアクセス権だけがZapierに付与されます(例:読み取り専用 or issue作成のみなど)。
    GitHub OAuth documentation
    Google OAuth documentation

  2. 通信は全てHTTPSで暗号化
    Zapierは全ての通信においてTLS(HTTPS)で暗号化されています。
    → データがインターネット上で盗み見られる心配は極めて小さいです。

  3. Zapier社のセキュリティ認証と実績
    SOC 2 Type II 準拠(外部監査済)
    GDPR対応
    2段階認証(2FA)も対応
    世界中の大企業(Salesforce、Shopify、Amazonなど)もZapierを利用
    Zapier公式のセキュリティポリシー
    https://zapier.com/security
    https://zapier.com/privacy

  4. アクセス範囲の制限
    Zapierに許可したGoogle/GitHubのアクセス権は、いつでも取り消せます
    GitHubでは Zapier のアクセススコープを制限可能(たとえば issue 作成権限のみに)

今回は以上。
不明点は質問しないで自身で解消してください。(よくわからないので。)

また気が向いたらアウトプットも兼ねて書く予定です。
バイバイ

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?