この記事が良かったら
「チップをリクエスト」で著者にチップの受け取り設定をお願いできます
続けてもらうために機能を足すのではなく、上限を先に決めた話。目のトレーニングアプリ FocusGym の設計メモです。
この記事が良かったら
「チップをリクエスト」で著者にチップの受け取り設定をお願いできます
スマホもPCも、目は一日中「近く」にピントを合わせっぱなしです。そこを休ませるために、遠近ピント切替・追従運動・寄り目トレーニング・ガボールパッチ・ぼかしくっきり訓練の5種類を入れました。どれも1回数十秒で終わります。
習慣化アプリを作るとき、普通は「もっと使ってもらう」方向に機能を足します。でも目のトレーニングは、やりすぎれば目が疲れるだけです。長く使わせることがユーザーの得にならない。
そこで DailyLimitService という仕組みを入れて、1日の合計トレーニング時間を5分(300秒)で打ち切ることにしました。4分を超えると「残り1分」の警告が出て、5分を使い切ると、その日はトレーニングを開始できません。日付が変わればリセットされます。
5分しかないと決めると、別のところが自動的に決まります。1回のトレーニングは長くできないし、ホームでは「今日あと何分できるか」を常に見せる必要があります。広告も同じで、インタースティシャルは「1日の初回トレーニング完了後に1回だけ」にしました。5分の体験の中で何度も広告を出す余地はありません。
短い分、手ごたえはゼロになりがちです。そこを連続達成日数(ストリーク)と月間カレンダーで埋めています。「今日もやった」が見えることが、短い習慣を続ける唯一の報酬になります。毎日のリマインダー通知も入れています。
Flutter + Hive + go_router で実装しています。トレーニング履歴は端末内の Hive にのみ保存し、サーバーには送っていません。ハマったのはアニメーションで、AnimationController.animateTo() に Cubic を渡したときに CurvedAnimation 側でもカーブをかけると二重適用になる、という点です。対応は iOS 16.0 以上です。
全機能を無料で使えます(広告付き)。広告を消したい場合のみ300円の買い切りがあります。なお、本アプリは医療行為ではなく、視力の改善や老眼の治癒を保証するものではありません。目に異常を感じた場合は医療機関を受診してください。各トレーニングの参考にした研究はサポートサイトに載せています。
App Store: https://apps.apple.com/jp/app/focus-gym/id6760606419