プロジェクトを進める上で、重要な通知が他のメッセージに埋もれてしまったり、関係のない通知が頻繁に届いて煩わしさを感じたことはありませんか?
特に、多人数が関わるプロジェクトでは、必要な情報を適切に共有することが難しくなりがちです。しかし、そんなお悩みを抱える方に朗報です!
BacklogとGoogle Apps Script(GAS)を活用することで、関係者にのみ必要な通知を送信し、無駄なコミュニケーションコストを大幅に削減することが可能です。本記事では、これらのツールを使って、プロジェクト管理の効率を最大化する方法を詳しく解説します。
無駄な通知を排除し、必要な情報を効率的に共有する理由
通常、BacklogとSlackの連携機能はプロジェクトの進捗を迅速に共有するための便利な手段です。しかし、全てのメンバーに通知が一斉に送られるため、関係のない人々にまで通知が届くことが少なくありません。これにより、重要な通知が埋もれてしまったり、関係のない通知に煩わされることが増え、結果として通知が無視されるようになります。
この問題を解決するためには、BacklogのWebhook機能とGoogle Apps Scriptを利用して、特定の関係者にのみ通知が届くようにするのが効果的です。メンションを必要とする人にのみ通知を送ることで、情報伝達の精度を高め、プロジェクトの進行をスムーズに進めることができます。
Webhookとは?
Webhookは、あるアプリケーションやサービスから別のアプリケーションやサービスに、リアルタイムで情報を送る仕組みです。具体的には、何か特定のイベント(例えば、課題が更新された、コメントが追加されたなど)が発生したときに、その情報を自動的に別のアプリケーションに通知します。
たとえば、Backlogで新しい課題が作成されたときに、Webhookを設定しておくと、その情報が即座にSlackに送られ、指定したユーザーに通知が届くようにできます。これにより、関係者は常に最新の情報を把握でき、手動で情報を伝達する手間を省くことができます。
Webhookは、あらかじめ設定しておいたURL(Webhook URL)に情報を送るようにプログラムされています。このURLは、通知を受け取る側のアプリケーション(ここではGoogle Apps Scriptに相当します)が提供します。Webhookを使うと、異なるアプリケーション同士が自動で情報をやり取りできるようになり、作業効率が格段に向上します。
Google Workspaceの利用前提条件と設定の注意点
Google Apps Scriptを使用するにあたっては、いくつかの前提条件と設定上の注意点があります。特に、Google Workspaceを使用している組織の場合、Google Adminの設定が影響を与えることがあります。
Google Workspaceの公開設定の確認
Google Apps ScriptをWebアプリケーションとして公開し、Backlogと連携させるには、Google Workspaceの管理者によって公開設定が適切に行われている必要があります。多くの企業ではセキュリティポリシーにより、公開範囲が自社組織内に制限されています。この設定が適切に行われていないと、スクリプトを外部と連携させることができず、Slackへのメンション通知が正常に機能しない可能性があります。
手順:
- Google Workspaceの管理者に連絡し、Google Apps Scriptの公開設定が制限されていないか確認します。
- 必要に応じて、管理者に公開設定の変更を依頼します。
ここでは、Google Workspaceを例にしていますが、例えば、Microsoftの製品でも同じことが言えます。なぜなら、以下のように、Backlogのような外部サーバが他のアプリケーションのアクセスするには、そのアプリケーションが誰でもアクセスできるようなインターネットに公開されているURLでなければなりません。
このURLはインターネットからアクセスできるURLでなければなりません。Backlogのサーバーからアクセスできるようにしておいてください。 イントラネット内のサーバーなど、BacklogからアクセスできないURLは指定できません。
Backlog ヘルプセンター: https://support-ja.backlog.com/hc/ja/articles/360036147713-Webhook
セキュリティ上の注意点
Google Workspaceの公開設定を変更する際は、組織のセキュリティポリシーに従い、機密情報が外部に漏れないように注意することが重要です。公開範囲を慎重に設定し、公開するWebアプリケーションが適切なセキュリティ対策を講じていることを確認してください。
どこを見ればGoogle Apps Scriptに連携できると分かるか?
BacklogとGoogle Apps Scriptの連携さえできれば、もうこの方法がほぼ実現できたようなものです。
Google Apps Scriptへのアクセスユーザーに「全員」という選択肢が表示されていれば、BacklogとGoogle Apps Scriptと連携ができます。
Google Driveを開いて、適当な場所で良いので「Google Apps Script」を作成してください。
作成したGoogle Apps Scriptを開くと、右上に「デプロイ」というボタンがあります。そこで「新しいデプロイ」を開いてください。
新しいデプロイにて、「種類の選択」からウェブアプリを選択してください。
そうすると、設定情報が表示されます。ここでアクセスできるユーザーの選択肢に、「全員」が表示されていれば、BacklogとGoogle Apps Scriptとの連携ができます。
上記の画像では、「全員」が表示されていません。その代わり、「◯◯(組織)内の全員」という選択肢が表示されています。これは、このGoogle App Scriptへアクセスできるユーザーは◯◯(組織)のユーザーに限る、という意味で、外部ユーザーはアクセスできません。BacklogのWebhookは、誰でもアクセスできるインターネットに公開されているアプリケーションしか設定できないため、その設定である「全員」が選択肢を設定する必要があります。
こちらの例では、アクセスできるユーザーに「全員」が表示されていますね。ここを「全員」に設定しないと、BacklogからWebhookを起動したときに、BacklogからGoogle Apps Scriptにアクセスできないため、401エラー(有効な認証資格が不足していることによりリクエストが適用されないことを示すクライアントエラー)になります。
BacklogのWebhook設定方法
Backlogでは、Webhookを利用して、特定のイベントが発生した際に外部サービスに通知を送ることができます。このセクションでは、BacklogのWebhook設定方法をステップバイステップで説明します。
Webhook URLの取得
まず、通知を受け取るサービス側でWebhook URLを用意します。ここでは、Backlogから通知を受け取るサービス、Google Apps ScriptのウェブアプリのURLを使用します。このURLが、Backlogから通知を送る先となります。
Google Apps Scriptを「新しいデプロイ」としてデプロイすると、上記のようなデプロイ情報が表示されます。こちらに記載されているウェブアプリのURLをBacklogのWebhook URLに設定します。
Google Apps Scriptの書き方
Google Apps ScriptはJavascriptという言語で書かれているため以下のように以下のように記載によって、Backlogから送られてきた情報が取得閲覧します。
function doPost(e) {
const json = JSON.parse(e.postData.contents);
console.log(json);
}
BacklogでのWebhook設定
次に、Backlogのプロジェクト設定でWebhookを設定します。
手順:
- Backlogのプロジェクトページに移動し、「プロジェクト設定」を開きます。
- サイドメニューから「インテグレーション」を選択肢、「Webhook」を設定します。
- 注意: ユーザーのロールが「管理者」でのみ、サイドメニューに「インテグレーション」が表示されます。
- 「Webhookを追加する」をクリックし、必要な情報を入力します。
- 名前: Webhookの名前を入力します(例: Google Apps Script経由Slack通知用)。
- URL: 先ほど取得したWebhook URLを入力します。
- 通知するイベント: 通知を送りたいイベント(課題の追加、更新、コメントの追加など)を選択します。
- 設定が完了したら、「追加する」をクリックしてWebhookを保存します。
これで、指定したイベントが発生するたびに、Backlogから自動的にGoogle Apps Sciptに通知が送信されるようになります。
Google Apps Script とSlackの具体的な連携方法
Google Apps Script(GAS)とSlackを連携させることで、プロジェクト管理ツールからの通知やメンションを自動的にSlackチャンネルに送ることが可能になります。ここでは、具体的な連携方法について説明します。
Slack APIサイトでのアプリ作成
まず、Slack側で連携用のアプリを作成します。以下の手順に従って、Slack APIサイトでアプリを作成し、必要な権限を設定します。
- Slack APIサイトにログイン
- Slack APIサイトにアクセスし、Slackでログインしているアカウントでログインします。
- 新しいアプリの作成
- ログイン後、「Your Apps」ページに移動し、「Create New App」ボタンをクリックします。
- 「From Scratch」を選択し、アプリの名前とアプリをインストールするワークスペースを指定してアプリを作成します。
- OAuth & Permissionsの設定
- アプリ作成後、左側のメニューから「Features」セクションの「OAuth & Permissions」を選択します。
- 「Scopes」の項目で、以下のOAuthスコープを追加します:
app_mentions:read
(アプリがメンションを読み取る権限)chat:write
(チャットにメッセージを投稿する権限)chat:write.public
(パブリックチャンネルにメッセージを投稿する権限)
- これにより、SlackアプリのOAuthトークンが生成されます。このトークンは、Slack APIを利用してワークスペースと連携するための認証情報で、
xoxb-xxxxxx
のような文字列がトークンになります。
- アプリのインストール
- 生成されたOAuthトークンを使用して、Slackワークスペースにアプリをインストールします。これにより、アプリが指定したワークスペースで動作できるようになります。
Slackチャンネルでの設定
次に、通知を送りたいSlackチャンネルで設定を行います。
- チャンネルの設定を開く
- 通知を送りたいSlackチャンネルに入り、チャンネル名をクリックして設定メニューを開きます。
- アプリの追加
- 設定メニュー内の「Integrations」タブを選択し、「Apps」セクションで「Add an App」ボタンをクリックします。
- 表示されるアプリ検索モーダル画面で、先ほど作成したアプリを検索して追加します。
- もしアプリが検索にヒットしない場合は、再度ワークスペースにアプリをインストールしてみてください。
この設定が完了すると、指定したチャンネルに対して、Slackアプリが必要なタイミングで通知を送るようになります。
Google Apps Scriptでの設定
Slack側の設定が完了したら、Google Apps Script側での設定を行います。
- Slackライブラリの追加
- Google Apps Scriptプロジェクトを開き、左側のサイドメニューから「ライブラリ」を選択します。
- ライブラリ追加画面で、スクリプトID欄に
1on93YOYfSmV92R5q59NpKmsyWIQD8qnoLYk-gkQBI92C58SPyA2x1-bq
を入力して検索します。 - 検索結果に表示されたSlackAppライブラリを選択し、追加します。
2. OAuthトークンの設定
- Slack APIサイトで生成したOAuthトークンを使用して、Google Apps ScriptからSlackへの通知を行うための設定を行います。このトークンは、Slack APIに接続する際に必要です。
この手順を完了することで、Google Apps ScriptからSlackに対して通知を送る機能を実装する準備が完了です。
あとは、Backlogから受け取った情報をどのように加工し、どのようなメッセージ内容でSlackに通知するかをGoogle Apps Scriptで実装するだけです。
TODO: 具体的な実装方法については別ページで行う。
Backlogのメンション名とSlackのメンション名を紐づける
BacklogとSlackの間でメンションを連携させるには、手動でユーザー名を紐づける作業が必要です。具体的には、Backlogで使われているユーザー名と、Slackのdisplay name(表示名)を対応させるリストを作成します。
たとえば、Backlogで「山田太郎」というユーザーが、Slackでは「taro-yamada」として表示される場合、この2つの名前を次のように紐づけます:
山田太郎 - taro-yamada
このようなリストを作成しておくことで、Backlogから受信したメンション付きのコメントが、適切なSlackユーザーに通知されるようになります。
残念ながら、BacklogとSlackの間ではユーザー名を自動的に連携する機能がないため、この紐づけ作業は手動で行う必要があります。しかし、新しいメンバーが組織に追加された際に、このリストを更新するフローを整えておけば、手間を最小限に抑えることができます。
このリストは、スプレッドシートで管理するのが便利です。Google Apps Scriptを使えば、Backlogから受信したメンション名をスプレッドシート内のリストと照合し、対応するSlackのdisplay nameを自動的に抽出できます。これにより、Backlogのコメント内容や課題情報、メンション対象者が適切にSlackに通知されるようになります。
Google Apps Scriptを活用して、重要な通知を効果的に管理しよう
Backlogの課題管理にGoogle Apps ScriptとSlackの連携を導入することで、関係者のみに適切な通知を送ることができます。これにより、リアルタイムでのやり取りの効率が飛躍的に向上し、チーム全体のコミュニケーションが強化されます。Google Adminの公開設定に注意しながら、この仕組みを導入することで、チーム内での情報共有がよりスムーズになり、プロジェクトの成功に貢献できるでしょう。