kubell Creator's Note

ビジネスチャット「Chatwork」のエンジニアのブログです。

ビジネスチャット「Chatwork」のエンジニアのブログです。

読者になる

ノーコードで簡単タスクリマインダーを作ってみた

おはようございます、こんにちは、こんばんは。サーバーサイド開発部(PHP)のチバです。

社内で一番ヤバイやつ、真面目だけどクズ、なんて周りからは言われていますが私は元気です。 私が一番普通だと思っているので納得はできてないですけれど。 こんな記事を書いたりしているので興味がある方は読んでみてください。

www.wantedly.com

話題は変わりますが、Chatwork のタスクの管理ってみなさんどうされてますでしょうか。

ものぐさな私は Chatwork のタスクが溜まりがちです。

やらなければならないタスクを確認するために、毎朝もしくは毎晩、タスク一覧を確認すれば良いだけなのだけれど…この行為すらものぐさな私にはハードルが高い。どうしたらタスクが溜まらないのだろうか…

やれって話ではあるんですが無理なんですよ、だってものぐさなんだもん。

ということで、ものぐさな私にでもタスクの確認ができるような仕組みがあったら良いのではないだろうかと思いつきました。

毎日の習慣に組み込もう

仕組みを作ったところでタスクを毎日確認しにいかなければ意味がない。 自ら見に行くのは無理だということは分かっている。ものぐさだし。

じゃあどうしようか…どうしたらいいんだ…

ふと思いついた。私は業務開始の一番最初に前営業日の退勤後から今までになにが起こったかを確認している。退勤後にも社内のチャットは活発に動いている。退勤後に何が起こっていたのか、返信しておくことはないか、という感じで未読メッセージがあるものを確認している。毎朝のルーティンだ。

あれ?このルーティンにタスクの確認を組み込んでしまえば良いんじゃない?

毎朝行っていることだから新たに特別にやることが発生するわけではないし、習慣になっているから苦でもない。チャットを見たときにやるべきタスクが見えるし!見るし!特定のチャットに私のやるべきタスクを送信するようにすればいいじゃんか。

これならものぐさな私でも自然にタスクの確認をすることができる

朝見る、終わらせられるものは終わらせる。終わっていないものは次の日も来る。毎日チャットを見るくらいならできる。

あーはん。これですね

コードを書いたら負け

とはいえです。とはいえ。タスクリマインダーを作るとはいえです。そもそも、自分専用のこのようなものに対してコードを書きたくないのです。自分一人のために丁寧な晩御飯を作るのがめんどくさいからポテチを食べるお母さんの感覚です。

コードを書いたりデプロイしたりというのがもう面倒。ものぐさな私には無理だ。楽をするための仕組みを作るんだから、作るとこから楽したい。

つーか、誰か作ってくれないかなって思ってしまう程度に私はものぐさだ。

タスクリマインダーを作る

私が大好きな Integromat というサービスを使ってノーコードでタスクリマインダーを作ることにします。ありがたいことに、先日 Integromat に Chatwork モジュールが出来たので、超簡単に作ることができそうです。

仕様を決める

どのようなタスクリマインダーがあったら良いだろうか。

例えば期限が指定されているタスク、それらがメッセージとして投稿されたら良い?でも、今日以降だと期限切れになっちゃったタスクが出てこない。じゃあ、2週間など一定期間前に期限が設定されているものも含めちゃおう

それで、1タスク1メッセージにしてしまおう。毎日確認する際に未読数 = やるべきタスク数になる。やるべきタスクの数もわかるし、タスクの内容もわかる。

ついでにタスクが発生したメッセージへのリンクもつけちゃおう

やってみよう

仕様も決まった。 アカウント登録の時間を除けば30分もかからないはずだ。

グループチャットを作る

マイチャットに投稿するというのも楽で良いですが、タスクの数を把握したいのでそのためのグループチャットをを作りましょう。

やらなければいけないタスクの数が未読メッセージ数として表示されるため、タスクを把握するのに便利です

ログインする

まずは Integromat にログインしましょう。アカウントがなければ作りましょう。

アカウント作成についてはやまごしが書いた【ノーコード】通知用ルームに自分へのメンションをまとめてChatworkを使いこなそう!を参考に頑張ってください。

Integromat のシナリオを作る

Integromat にログインできたらタスクリマインダー用のシナリオを作りましょう。

f:id:cw-chiba:20201115092754p:plain
Chatwork を選ぶだけ

完成形はこちらです

f:id:cw-chiba:20201115092419p:plain

タスクを取得して、毎日定時にメッセージを送信するだけです。それでは作っていきましょう。

タスクを取得する

まずは Chatwork モジュールをセットします。

f:id:cw-chiba:20201115093011p:plain

セットする際は List My Tasks を選択してください

f:id:cw-chiba:20201115093715p:plain

タスク取得のモジュールが設定できたら、Chatwork の OAuth の仕組みを使って使ってタスクを取得する Chatwork アカウントと Integromat を接続しましょう。モジュールをクリックするとダイアログが出てくるので、Add ボタンを押してください。

f:id:cw-chiba:20201115094203p:plain

ボタンを押すとまた別のダイアログが出てくるので、接続用の名前を設定し continue ボタンを押しましょう。

f:id:cw-chiba:20201115094248p:plain

以下のような画面が出てくるので、許可ボタンを押してください。

f:id:cw-chiba:20201115094616p:plain

このままだと、完了済みのタスクも取得してしまうので、Status を Open に変更します。Open にすることで未完了のタスクのみの取得が可能になります。Limit の欄は適当に変えてください。上の画像だと接続名が「私」なのに、この画像では「俺」になっているっていうのはものぐさな私がスクリーンショットを取り直すのを面倒くさがっているだけなので気にしないでください。

f:id:cw-chiba:20201115094845p:plain

これでタスクの取得は完璧です。

タスクをリマインドする

タスクの取得ができたので、次は取得したタスクをメッセージとして投稿する部分を作っていきましょう。ゴールはもうすぐです。

最初に作ったモジュールにさらにメッセージを投稿するための Chatwork モジュールを追加します。

最初に作った Chatwork モジュールにマウスを乗せると + というのが出てくるのでクリックしてください。

f:id:cw-chiba:20201115095652p:plain

クリックするとまたモジュールの追加のダイアログが表示されるので、Chatwork を選択。

f:id:cw-chiba:20201115095747p:plain

ここでは Create a Room Message を選んでください。

f:id:cw-chiba:20201115100012p:plain

モジュールの追加ができたらモジュールの設定をします

まずはメッセージを投稿するルームを選択しましょう。Room ID の項目から最初に作成したタスクリマインド用のグループチャットを選択します。

f:id:cw-chiba:20201115100536p:plain

投稿するルームの選択が終わったら、その下の Set the Message StatusUnread にしてください。これで自分自身が送信してもメッセージは未読の状態になります。本当はタスクリマインダー用の bot を作ってメッセージを投稿すれば良いのですが、アカウントを切り替えて OAuth の設定してなんて…ものぐさな私にはとてもとても…

f:id:cw-chiba:20201115100814p:plain

次は投稿するメッセージ内容を考えます。Message Body に色々書いていきましょう。

f:id:cw-chiba:20201116185429p:plain

私はこんな感じのメッセージにしました。

[info][title]期限:{{formatDate(parseDate(1.limit_time; "X"; "Asia/Tokyo"); "YYYY-MM-DD HH:mm")}}[/title]{{1.body}}
[hr]
👉 https://www.chatwork.com/#!rid{{1.room.room_id}}-{{1.message_id}}[/info]

これで、メッセージの投稿ができるようになりました。

試しにこのようなタスクを登録し、タスクリマインダーを実行したところこんな感じになりました。

f:id:cw-chiba:20201115101517p:plain f:id:cw-chiba:20201115101609p:plain

リマインドするタスクを絞り込む

完成だ!と思ったけれど、昔のタスクが出てきちゃってる…2週間前以降という仕様を満たしていない…

ということで、タスクの期限を元に投稿するタスクを絞り込んでいきます。

2つのチャットワークモジュールをつなげている線の間にあるアイコンをクリックして Filter を作ります。

f:id:cw-chiba:20201115102148p:plain

クリックをするとメニューが出てくるので Set up a Filter を選んでください。選択すると以下のようなダイアログが表示されるので、絞り込みのための条件を書いていきましょう

f:id:cw-chiba:20201115102323p:plain

今回はタスクの期限を元に判定するのでこんな感じでいってみましょう。

f:id:cw-chiba:20201115191823p:plain

実は入力欄の間の文字列の部分も選択できます。クリックすると変更できるので変更必須です。DatetimeLater than を選んでください

f:id:cw-chiba:20201115192414p:plain

条件の部分は取得したタスクの Limit Timeを基準にして、Limit Time が14 日前以降だったら投稿するって感じですね。14日っていうのは私の場合なので、使いやすいように適当に決めちゃってください。

今回の設定はこんなです。コピーして使えると思います。

{{addDays(now; -14)}}

この設定を反映したところ、先程は投稿されていた古いタスクは投稿されなくなりました。

f:id:cw-chiba:20201115195223p:plain

ここまでで、タスクリマインダーの基本機能は完成です。

リマインドする時間を設定する

機能は完成したとはいえ、毎日教えてよーというところまではできていません。

なので、何曜日にリマインドするか何時にリマインドするかという設定をしましょう。これで完璧に行けるはず。

最初に追加した Chatwork モジュールに時計のアイコンが付いているのでそこをクリックしてください。そうするとダイアログが出てくるので設定をしていきましょう。

f:id:cw-chiba:20201115193259p:plain

まずは Run scenarioDays of the week に変更します。そうすると、リマインドする曜日を選択できるので、土日にはリマインドしないということができるようになります

f:id:cw-chiba:20201115194712p:plain

次に Time をクリックし、通知して欲しい時間を決めます。ここは自分でリマインドして欲しいタイミングで自由に決めちゃってください。

f:id:cw-chiba:20201115194750p:plain

これで完成。一発実行してみましょう。画面の左下にある再生ボタンを押しましょう。

f:id:cw-chiba:20201116095240p:plain

最後に

完成しちゃいましたね。タスクリマインダーが完成しちゃいました。

後はシナリオを保存して

f:id:cw-chiba:20201116095442p:plain

有効化しましょう

f:id:cw-chiba:20201116095506p:plain

まとめ

これで、毎日決まった時間にタスクのリマインドが来るようになりました。

期限切れの古いタスクや、期限が設定されていないタスクはリマインドされませんが、そこは Filter の部分を調整すればなんとかなるでしょう。

毎朝チャットを見るくらいならものぐさな私でもできそうだ。

あと、待ってる人がいるからちゃんとタスクは期日までに完了させようね

ついでに

recruit.chatwork.com

Chatworkではメンバーを絶賛募集中です!

こんなにものぐさなやつが開発できているんだ…できるんだよ!できるよ!もし興味があればカジュアルに話を聞きにきちゃってください。