やりたいこと・やらなきゃいけないことをゲーム感覚でこなす仕組みを考えてみたよ。

January 23, 2022

はじめに

一人暮らしをすると思ったよりも時間を自由に使える。その一方で、自由に使える時間をすべて文字通り「自由」に使ってしまうと、快適な生活ができなくなってしまうのは、周知の事実だと思う。 そう、「自由」には常に「責任」が伴うのだ。

一人暮らしで背負わないといけない責任とは、自分の居住空間を清潔に保ったり、洗濯、自炊などの家事が主にある。これらをサボれば… これに関しては、まぁ語る必要は特にないだろう…

ではなぜ、これらのことをサボりガチなのか、そこを問いかけてみた。

  • 仕事で疲れちゃってやる気がでない
  • 夜更かししすぎてそもそも生活リズムが崩れちゃってて元気がない…
  • 早起きができず、ゴミ収集に間に合わない
  • そもそも、やる・やらないは完全に自分で決めることができてしまう
  • YouTubeを見ていたり、誰かと話していたりしている方が楽しい
  • 何をやるのか考えるのがそもそもだるい。
  • やってもだれも褒めてくれない…

特に最後の「やっても誰も褒めてくれない」が本質的な問題な気がしている。 誰も褒めてくれないから、やらないし、やらなくてもしばらくは自分が困ることは少ないから放置しがち。 部屋が散らかってきてはじめて片付けなきゃ、ってなるから大体労力が発生する… 部屋の片付け・洗濯、めんどい… ってなっている気がしている。

お、っていうことは、

  • やらなきゃいけないこと(タスク)を列挙する
  • タスクを実際にやる
  • タスクをこなしたら、なんらかの形で報酬を与える!

これをするだけでこの問題は改善に向かっていくのでは?

というわけで、今回はこれを解決する方法を考えてみた。

目的

日常のどんなささいなことでもタスク化して、それを達成するということをやっていけば、こんなにタスクこなしてるんだぜ!ってなれるのではないか。自己肯定感を上げつつ、家の中を綺麗に保つための家事ややらなきゃいけないことを達成する可能性をあげるための仕組みを作って運用する。

方針

結局、これってタスク管理の話だよね。じゃあ、タスク管理アプリのAsana使ってやってみるか! → Asanaで仕事同様タスク管理してみることにする。

報酬ね… ゲーミフィケーションのようにスコア化して過去の自分と競わせれば勝手にモチベ上がるんじゃね?ってことで、タスクごとに「やったらえらいポイント」という頭の悪いネーミンングのポイントを付与することにしてみる。

ゲーミフィケーションとは ゲーミフィケーションとは、英語の「gamification」から来たもので、日本語では「ゲーム化」と訳されることもあります。ゲームを本来の目的としないサービス等にゲーム要素を応用することで、利用者の意欲の向上やロイヤリティーの強化を図ることを言います。

ゲーム要素とは、アイテムの獲得やレベルアップ、利用者同士の競争のように、利用者を楽しませて熱中させる要素のことを指します。

対応方法

日常的にやらなきゃいけないことを期限付きで定義する。 「朝9時半までに仕事を開始する」「夜寝る前に次の日のゴミ出しの準備をしておく」など、タスクによってはいつまでにやれば「えらい」のかが異なってくるので、達成期限を設けることにする。

また、朝やるべきことと、夜やるべきことはだいぶ性質が異なるので、「朝のタスク」、「夜のタスク」で分けることも結構重要である。夜にやればいいタスクを朝から意識するのはちょっと認知的に負荷になりうるので、 朝と夜にそれぞれやるべきタスクを定義し、自動で追加するようにする。

つまり、朝のタスクは07:00くらいにセットされて、夜のタスクは21:00くらいに自動でAsanaに追加されるようにする。

といったことをまとめて、このタスクをこなすゲームのルールを以下のように制定した。

ルール

  1. すべてのやらなきゃいけないこと・やっていきたいこと(以後タスク)をスプレッドシートに定義する。
  2. タスクには大きく分けて「朝やること」「夜やること」があり、それぞれシートを分けて定義する。
  3. それぞれのタスクには、「タスク名」「達成期限」「やったらえらいポイント」をそれぞれ定義する。
  4. 朝のタスクは、毎日07:00頃に自動でAsanaに追加される。夜のタスクは21時頃に追加される。
  5. 「朝のタスク」の成功・失敗の判定は21:00の夜タスク追加時に同時に行われ、「夜タスク」の判定は00:00の集計タイムに行われる。
  6. タスクを「成功」させるには、前述のタスク結果判定処理が走る時間までに、Asanaでタスクを完了させれば良い。
  7. タスクの「失敗」判定は、「期限超過」されたタスクが、タスク結果判定処理が走った時点で、「未完了」だった場合に行われる。「期限超過」しても完了していれば、自分の判断で「完了」にしても良いものとする。
  8. 1日の終わりの集計タイムでは、成功したタスク・失敗したタスクごとにやったらえらいポイントを集計し、それをLINEで通知する。あとで見直せるようにスプレッドシートにも記録しておく。
  9. 集計タイムでは、最後に不要なタスクを削除する。
  10. 失敗判定されたタスクに関しては、タスク内容に一度目を通すという意味も込めて、手動で完了させる必要がある。(勝手に削除してはならない)

実装

AsanaのAPIをGASで叩いて、タスクの追加、状況の取得、削除などを行う。 スプレッドシートに定義してある「やったらえらいポイント」の集計、タスクの追加などを行うclassを定義し、直接APIをリクエストするクラスとリクエストを投げてレスポンスを操作するクラスに分割して処理を実装している。

詳細の実装はこちら。 アクセストークンなど環境によって変わるものは例によってPropertyに定義することでどの環境でも動かすことができるはず… my-home-work-task

実際の運用の様子

タスク定義の例

成功判定されると、成功セクションに移動するようにしてある。 失敗判定されると失敗セクションに。

セクションは3つ用意した

Asanaでのタスク(例)

実運用で報告される「やったらえらいポイント」の集計結果。 「やれてえらいポイント」と「やれたらえらかったポイント」になってるのもポイント。

LINENotifyに来る通知

土日は土日でまた異なるタスクになるはずなので、ちょっと運用はストップさせて検討中だが、平日はちゃんとやったよ。3日ぼうずってやつだけど…

スプレッドシートに毎日記録される

まとめ

家事とかやっていきたいこととかを明確にタスクに起こして、タスクをどのくらい完了できたかを可視化することでゲーム感覚でタスクを完了できるようにしてみたよ、というお話でした。

たぶん、こんなアホなAsanaの使い方する人はそんなにいないと思うけど、個人的には気に入ってる。


Written by Blackcat ひよっこエンジニア, いつかは自分でサービスを作りたいとずっと言ってる Twitter