作ったツールは、だいたい使われなくなる
家族が受験勉強に使うための学習アプリを作った。過去問を解いて、記録が残って、成績の推移が見える。自分で言うのもなんだが、機能としては悪くない。
最初の数日はよく使われた。そのあと、開かれなくなった。
原因を機能不足だと思って、機能を足した。復習モード、通知、レコメンド。結果、さらに使われなくなった。選択肢が増えたぶん、起動してから何をするか決めるコストが上がっただけだった。
そこで方針を変えて、「機能」じゃなくて「やる理由」と「始めるコスト」のほうを設計することにした。
ご褒美を通貨にする
いちばん効いたのは、報酬をアプリ内のクレジットとして発行する仕組みだ。
タスクをひとつ終える、あるいは集中セッションを完走すると、休憩時間のクレジットが自動で付く。5分・10分・20分・30分・45分の5段階。貯まったクレジットは、アプリ上のボタンひとつで娯楽の時間として使える。
大事なのは、このクレジットが現実に換金できることだった。アプリの中だけで意味を持つポイントやバッジは、最初の数日しか効かない。「これを貯めると実際に何ができるのか」が現実側にないと、ただの数字になる。
付与量の基準は、集中25分に対して休憩5分という比率に置いた。ここは体感で決めた部分もあるが、働いた量に対して報酬が多すぎないことだけは守っている。
ただし、貯金させてはいけない
実装していていちばん意外だったのがここだ。クレジットに3つの上限を入れた。
| 上限 | 値の例 | 理由 |
|---|---|---|
| 1日の合計 | 60分まで | 報酬のインフレを防ぐ |
| 1回の使用 | 30分まで | 休憩が休憩でなくなるのを防ぐ |
| 有効期限 | 当日失効 | 貯め込みを防ぐ |
3つめが肝だ。繰り越せるようにすると、「今週末にまとめて使う」が始まる。そうなった瞬間、今日やったことと今日もらえるものが切り離されて、報酬の即時性が失われる。報酬設計で効いているのは量じゃなくて即時性のほうなので、これは効果を根こそぎ削る。
しかも貯まった残高は、それ自体が目的になりがちだ。使わずに眺めて満足する、あるいは「もう十分貯まったから今日はやらなくていい」が起きる。本来の目的は残高を増やすことじゃなくて、今日やることだった。貯金できる通貨は、いずれ投機の対象になる。
1日の合計に上限を置いたのも同じ理屈だ。上限がないと、頑張った日に報酬が積み上がって、翌日以降の同じ努力が相対的に安く感じられる。報酬にもインフレがある。
「始めるまで」と「戻るまで」を設計する
続かない原因を観察していると、勉強そのものより前後の切り替えで止まっていることに気づいた。特に、休憩から戻るところ。
そこで復帰専用の画面を作って、4ステップを固定の順番で並べた。60秒の呼吸、直前にやっていたことの想起、1分だけの小さな課題を3択から選ぶ、選んだ瞬間に集中タイマーが自動で始まる。
3番目が本体だ。「1分だけ」という選択肢を必ず置く。目的は1分の学習量じゃなくて、始める閾値を下げること。1分で終わってもかまわない。実際には、始めてしまえばそのまま続くことのほうが多いので。
3択にしたのにも理由がある。選択肢が5つ以上あると、選ぶこと自体が新しい先延ばしになる。弱点に寄せて並べ替えたうえで、上から3つだけ見せている。
やることは、聞かずに決める
同じ発想で、「今日は何をやる?」を人間に聞くのをやめた。
正答率の低い分野ほど重みを上げて、その日の中心を比例配分で自動的に決める。実装は単純な重み付けだ。
// 目標正答率に届いていない分だけ重みを上げ、上下をクリップする
const weight = clamp(1 + (TARGET_ACCURACY - accuracy) * SCALE, 1.0, 3.0);
// 試行回数が少ないうちは信用しない(早期のノイズで極端な重みが付くのを防ぐ)
const usable = attempts >= MIN_ATTEMPTS ? weight : DEFAULT_WEIGHT;
凝ったアルゴリズムじゃない。ただ、2回外しただけの分野に重み3.0が付くようなことが起きると、提案の信頼が一気に落ちる。足切りの MIN_ATTEMPTS は、精度のためというより信頼を壊さないために入れた。
推薦の質がそこそこでも、「決めてくれる」こと自体に価値がある。人間側の仕事を「やるかどうか」の1択に減らすのが目的だった。
機能を足す前に
他人に使ってもらうための仕組みとして作ったのだが、書いているうちに自分のタスク管理にもそのまま当てはまることに気づいた。
報酬は現実に換金できると効く。貯金させない。上限は報酬のインフレを防ぐためにある。「1分だけ」の選択肢を置いて始める閾値を下げる。選択肢は3つまで。少ないデータで極端な判断をしない。
使われないツールの問題は、たいてい機能の不足じゃなかった。やる理由が現実側にあるか、始めるまでに何ステップあるか。機能を足す前にこの2つを見直すほうが、たぶん近道だ。