Typetalk に Backlogポリスのボットを走らせて期限切れタスクをパトロールしている話

最終更新日

  • サイト構築案件や超重点顧客、社内の超重要プロジェクトなど、期限切れタスクが発生すると炎上必至な Backlog プロジェクトがある場合は、期限切れ課題が発生しないようにするべし
  • 万が一期限切れ課題が発生した場合は、早期に巻き返しが図れるように、定期的に Typetalk(または Slack など)に通知し、適切にパトロールすべし

というのはわかっているんだけど、めんどくさいしつらい、という PMO の備忘録です。

Backlog期限切れタスクのパトロールイメージ

弊社では、毎週火曜日の午前中10-11時くらいに、各プロジェクトの期限切れ課題をお知らせする Bot(通称『T-1000』)を Typetalk に走らせて、自動パトロールを行なっています。期限切れの課題があれば、彼がお知らせしてくれます。

自分の担当課題の場合は自分宛にメンションがくるので、見逃しも防げます。

なおT-1000 を知らない人は、ターミネーターシリーズを全部観るか「ターミネーター2 T-1000」などのキーワードで ググるか Youtube で彼がバイクで主人公を追いかける動画などを見てください。

通知したプロジェクトに期限切れ課題が何件あるかと、各課題番号・タイトル・担当者がメンション付きで送られます。

以前は PMO 担当 (私) が全て手動で期限切れ課題をお知らせするようにしていましたが、地味に時間がかかるしメンタルにくるので、手動はそこそこにして、ある程度自動的にチェックできるように切り替えていきました。

参考にさせていただいている記事

Backlogの期限切れ課題をTypetalkに自動でお知らせしよう!

↑ヌーラボのYoshizawaさんの記事です。いつもありがとうございます。物覚えが悪くて、毎回参考にさせていただいています。

このボットを使って、プロジェクトメンバーが参加している対象トピックに Backlog の期限切れの課題を通知することで、メンバー同士で課題の期限切れを認識して、迅速な対応ができます。

最終的なアクションは、プロジェクトマネージャーが決めるかもしれませんが、プロジェクトメンバー同士で進捗の遅れを把握したり意識したりすることで、作業分担やチームのコミュニケーションを円滑にできます。

超ありがたいです。

しかし私にはさらなる補足が必要なので、ここからは、参考にさせていただいている記事の個人的な覚書です。

上記ブログ「期限切れ課題を通知するTypetalkボットの作成方法」の手順についての覚書

1. Backlogの個人設定ページからAPIキーを発行する

Backlogの課題情報をAPIを使って取得するために、Backlogの個人設定ページからAPIキーを発行します。

参考にするドキュメント: https://support-ja.backlog.com/hc/ja/articles/360035641754

  • APIキーを発行する「メモ」欄には、T-1000を発動させたいプロジェクトキーやプロジェクト名を入れておくと見分けやすい

2. Typetalkに通知したいトピック上でボットを作成する

TypetalkにBacklogの期限切れ課題一覧を投稿するために、Typetalkのトピック設定ページからAPIキーを発行します。

参考にするドキュメント: https://developer.nulab.com/ja/docs/typetalk/

  • API スコープは「topic.post – メッセージを投稿したり、いいね!したりできます」にチェック
  • Outgoing Webhook はチェックなしでOK
  • 登録すると、Typetalk Token が発行される
Typetalk側でBotを作成中の画像
Typetalk側でBotを作成中
Typetalk側でBotを作成後の画像
Typetalk側でBotを作成後

3. Google Apps Scriptにコードを貼り付ける

Google Apps Scriptのサイトにアクセスし、「New Script」をクリックします。ブログの最後に貼ってあるソースコードをコピーして、作成したプロジェクトにソースコードを貼り付けます。貼り付けたら、先の手順で取得したAPIキーなどの設定をソースコード先頭に設定します。設定する変数名は以下のとおりです。

  • Google Apps Script は「Google Apps Script(略称GAS/ガス)とは、Googleによって開発されたスクリプトプラットフォームである軽量のアプリケーション開発のためのGoogleのワークスペースプラットフォーム。(Wikipedia より)」らしいが、そんなことを知らなくても Google アカウントがあればどうにかなったのでとりあえず気にせずやってみるでOK
  • ソースコードは、参考記事の一番下にある「ソースコード」欄を参照
  • Google Apps Script を開く前でも後でも良いけど、個人的にはTypetalk/ Backlog/ Script …と画面をあっちこっち見てソースコードを完成させるのは無理なので、Script に先に入れる情報を用意しておいた方がスムーズ。下記のような感じで、★から★までのコメントをあらかじめ入れ替えておくなど。
var backlogApiKey = '★BacklogAPIキー入れる★';
var backlogSpaceUrl = '★https://example.backlog.com(BacklogスペースのURL、末尾に/不要)★';
var backlogProjectKey = '★Backlogプロジェクトキー★' // TYPETALK
var typetalkTopicId = ★TypetalkのトピックID入れる★;
var typetalkToken = '★Typetalkで発行したトークン★';
  • 上の Script にも書いたけど、Backlog スペースの URL は末尾に/不要。(入っていると Script が動かない)

4. 定期実行するタイマーを設定する

実行がうまくいったら、そのコードを定期的に実行するようにしてみましょう。メニュー「Edit」->「Current project’s triggers」からトリガー設定ページを開きます。

「Add Trigger」からトリガーを作成します。毎週月曜日、朝10時に定期実行したい場合は以下のような設定をしてみてください。

参考記事は、Google App Script が英語表記の場合の説明で、どこかのタイミングからか日本語ユーザーは日本語版の画面に切り替わっているようなので、日本語の場合はたぶんこう。

  1. 3のスクリプトを設定したら、メニュー [ 実行 ] > [ 関数を実行 ] > [ main ] でテスト
  2. Typetalk に通知が届いたのが確認できたら、メニュー [ 編集 ] > [ 現在のプロジェクトのトリガー ] をクリック
  3. 右下 [ +トリガーを追加 ] をクリック
  4. 以下「毎週火曜日10〜11時に通知を受け取りたい場合」の設定。
    実行する関数を選択: [ main ]
    実行するデプロイを選択: [ Head ]
    イベントのソースを選択: [ 時間手動型 ]
    時間ベースのトリガーのタイプを選択: [ 週ベースのタイマー ]
    曜日を選択: [ 毎週火曜日 ]
    時刻を選択: [ 午前10時〜11時 ]
  5. [ 保存 ]

以上、Typetalk に Backlogポリス(bot)を走らせて期限切れタスクをパトロールする、という個人的な覚書でした。