依頼の一元管理について疾く書き連ねる
Housmartの鈴木です。
私は現在取締役 兼 管理責任者という役割を拝命し、なかなか広めの管掌範囲を守っております。
プレイヤーとして担当しているリーガル周りや稟議などから、salesforceの設計相談など、slackのありとあらゆるチャンネルから確認事項が飛んできます。
基本的には、よほど重いものを除いて、即時処理をして、スタックしないように心がけています。
それでも会議や面接が数時間連続してしまうと、メッセージで依頼が埋もれてしまい、過去の処理してる間に次の依頼がきて、ということで、完全に抜けてしまい迷惑をかけるということがありました。
重めのタスク等はカンバンで管理をしてるので、さすがに漏らしませんが、ちょっとした質問、確認、レビュー等、タスク管理に積むほどではないもの(以下、小タスク)の処理が悩ましい。
そこで、以下の方針で小タスク管理の方針を定めました。
1. 最も利用頻度の高いツールで管理する
2. 小タスクを一箇所に集約する
3. 残りの小タスクを見える化する
4. 誰にとっても運用負荷が軽い
最も利用頻度の高いツールで管理する
これは、小タスクは、通常、ひとつ5分もかからないような業務であり、隙間時間に処理を行うのが自分の性に合っていたため、会議の隙間時間などにシームレスに小タスク処理に移行するために必要でした。
私にとって、そのツールはslackでした。
小タスクを一箇所に集約する
これは、処理すべき小タスクが散逸していると、そもそも漏れが生じたり、探すコストがかかるため、必要です。
slackのリマインダー機能でもひょっとしたら実現可能だったかもしれませんが、小タスク処理用のチャンネルを作成し、そこに集約をすることで抜け漏れを防ぐこととしました。
残りの小タスクを見える化する
さて、一つのチャンネルに小タスクを集約することにしたので、ToDoが一目でわかる状態になりました。このうち未処理のものを一目でわかるようにするためにはいくつか選択肢があります。
スタンプを押して完了したものを明確にすることも考えたのですが、小タスクの処理が前後すると漏れるリスクが生じます。
そこで、処理をしたタスクはチャンネルから削除し、同チャンネルには、未了タスクだけが残るという情報を作りました。
もちろん小タスク処理の過程で生じたやりとりごと処理するわけにはいかないので、チャンネルには依頼を直接書き込むのではなく、然るべきチャンネルで行った依頼のLINKを小タスク処理チャンネルに貼り付けることにしました。
誰にとっても運用負荷が軽い
さて、上記の運用のため、依頼をする人は、依頼とあわせて、小タスク処理チャンネルに、メッセージへのLINKを投稿する必要があるのかというところですが、その運用は依頼者側に負荷が高く、間違いなく定着しない。
では、私が自ら依頼を受けたらLINKをコピーして、別チャンネルに貼るか、これも面倒。
ここをなんとか自動化したい。
ということで、特定のキーワードを含めると、自動でそのthreadへのLINKを小タスク処理チャンネルに投稿する仕組みを作ることにしました。
余計なものを拾わないように、キーワードは#依頼としました。ハッシュタグ形式でわかりやすいかなと思ったのですが、チャンネルがリコメンドされてしまうので、もっといいキーワードがあった気もします。
基本的には、依頼者側に依頼をする際にキーワードをつけてもらうことを前提としているのですが、やはり徹底はできないでしょう。
そうすると、小タスクに漏れが生じてしまうので、#依頼のついていない依頼に対して、自分から積みにいくために#やりますもキーワードとして追加します。
短文なので打つのも楽ですし、一時受けのメッセージ的にも機能するので、結構良さそうです。
まだスタートしたばかりではありますが、小タスクを探す時間、処理漏れなどに劇的な効果がありそうだと感じています。
以下に実装を記載しますので、興味がある方は是非お試しください。
実装
①slack api から bot を作成
②Incoming webhooks を登録
投稿したいチャンネルでIncoming webhooks を登録します
③GASを作成
SlackからのEventを受信するサーバー側として、GASを準備します。
function doPost(e) {
// Slackから受信したデータをparamに格納
var params = JSON.parse(e.postData.getDataAsString());
try{
// 文章に#やります、または#依頼が含まれていたら処理を実行
if(params.event.text.match("#やります") || params.event.text.match("#依頼")){
var body = 'https://housmart-inc.slack.com/archives/' + params.event.channel +'/p' + params.event.thread_ts
var url = {Incoming-webhooksのURL}
slackPost(body,url)
}
}catch(e){}
//Event Subscriptionsに必要な文
return ContentService.createTextOutput(params.challenge);
}
function slackPost(body,url){
var payload = {
'text' : body,
};
var options = {
'method' : 'post' ,
'contentType' : 'application/json' ,
'payload' : JSON.stringify(payload),
};
if (body != ""){
UrlFetchApp.fetch(url, options);
}
}
④GASをデプロイしてURLを取得
⑤ BOTのEvent SubscriptionsにデプロイしたアプリのURLを貼り付けて設定
この設定で自分の入っているpublic, privateのメッセージから反応
⑥他BOTの諸々を設定してワークスペースにインストール
疾く書き連ねているので割愛します
この記事が気に入ったらサポートをしてみませんか?