ここしばらく弊社ではタスク管理に ClickUp を利用しています。

案件ごとにSpaceを作りタスク管理するのはもちろん、社内の事務作業等細々したものまで管理するようにしています。

最近Spaceやタスクが増えてきたことで、もともと設定した締切を過ぎてしまうタスクが出てきているのですが、それに気づきにくい状況になっているなと感じていました。

納品やリリースなどの大きな目標や優先度の高いタスクはいいのですが、やろうと決めたものの優先度の低いタスクが残っていたり、単純にタスクのステータスを更新していないケースもあります。


やったこと

タスクの担当者がそれぞれ締切やステータスに気をつけるというのももちろんなのですが、締切を過ぎたタスクがあるということをよりオープンにすることでタスクを進めたりステータスを更新する動機づけになればと思いSlackに通知する仕組みを作りました。

この仕組みは以下の処理を平日の10時に実行します。

  1. ClickUp APIで締切を過ぎているタスクを取得
  2. Slackに1で取得したタスクの情報をポストする

この仕組みをAWS Lambdaで動かすためのコードを以下のリポジトリにまとめたので、とりあえず同じことをしてみたいという場合はすぐ試すことができます。

これによって届いた通知がこんな感じです。

締切を過ぎたタスクごとに日付、Space(クライアントや案件などの名前)、タスク名、ステータス、担当者を羅列しています。
見栄えはまだ改善の余地がありそうですが、「締切を過ぎたタスクがこれだけあるよ!」ということがひと目でわかるようにはなりました。

これが毎日Slackに届くので、タスクを確認しようというアクションを促すことができたかなと思います。

ただこれを作って思ったのは、そもそも締切が過ぎる前に気づけないと意味がないということです。
次は締切の近いタスクを通知する機能を追加しようと考えています。


解説

AWS Lambda

毎日10時に実行するというのはAWS LambdaとCloudwatch Eventsを組み合わせて実現します。

ちょっとしたバッチ処理を開発するときなどはServerless Frameworkを使っており、最近はServerless Plugin Typescriptを使うのが簡単でよく利用します。

ClickUp API

ClickUpから情報を取得するためにAPIを利用します。

APIのリクエストにはトークンが必要になるので、Personal API Keyを取得しておきます。

SpaceなどによらずTeamの全てのタスクを取得したかったので Get Filtered Team Tasks をリクエストしており、「締切を過ぎた」という状態は due_date_lt パラメータを使うことで表現可能です。
「締切が近い」という状態は due_date_gt と組み合わせて表現できそうですね。

Slack

通知するチャンネルを動的に変えるなど機能を追加していきたいと考えているので、トークンを発行し chat.postMessage APIをリクエストすることでタスク情報をポストしています。

もっと手軽に通知するだけであればIncoming Webhooksでも可能です。