2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【個人開発】挫折しやすい人のために、あえて“毎日”を捨てた習慣管理アプリを作った話 【Rails7】

2
Posted at

はじめに

はじめまして。
Ruby on Rails を中心に学習している さとう です。

今回は
「毎日できなくてもいい。行動をゼロにしない」
をコンセプトにした習慣管理アプリ Step Log を個人開発しました。

この記事では、
なぜ「毎日」を捨てたのか
そしてそれを どう仕様・設計・実装に落としたのか を中心に書いています。

※ 技術的な内容も出てきますが、
「なぜそう考えたか」を重視して書いています。


サービスはこちら

GitHubリポジトリ

Pro and Con Graphic Organiser in Blue Green Yellow Playful Shapes Style.png


なぜ「毎日」という前提を捨てたのか

習慣化において最大の敵は、
一度できなかっただけで「自分はダメだ」と感じてしまう 完璧主義 だと思っています。

私自身、

  • 毎日やれなかった日を「失敗」と捉えてしまう
  • 罪悪感が強くなり、再開する気力がなくなる
  • 結果、習慣そのものを諦めてしまう

という経験を何度も繰り返してきました。

転機になったのは、
「毎日やる」ことを目標にするのをやめたことです。

  • 週に数日でもいいから続ける
  • できなかった日を責めない
  • 行動をゼロにしない

この考え方に切り替えた結果、

  • 食事改善を「週に数日」から始め、4ヶ月で5kg減量
  • 資格学習の過去問正解率が 約3割 → 6割以上に向上

という成果が出ました。

この経験から、

毎日できていなくても、
再開しやすい状態を保てていれば、それは習慣化のプロセスである

と考えるようになり、
この思想をそのまま形にしたのが Step Log です。


UXの思想を、どう仕様に落としたか

「続ける」より「再開できる」を優先する

多くの習慣管理アプリは「連続記録(ストリーク)」を重視しています。
しかしこれは、挫折した人にとって 再開を妨げる負債 になりがちです。

Step Log では、あえて次のような仕様にしました。

  • 記録がない日を「失敗」と見なさない
  • できた日だけを肯定する
  • 連続性より「積み上げ」を重視する

習慣は「1件だけ」に限定する

複数の習慣を同時に管理すると、
結局すべて中途半端になって挫折しやすくなります。

そこで Step Log では、

  • 1ユーザー1習慣のみ
  • 「まずは一つを大切にする」体験に集中

という割り切った仕様にしました。

Rails ではルーティングに resource :habit(単数形)を採用し、
思想をコード構造そのものに反映しています。


記録は3択。「お休み」も肯定する

行動記録は以下の3択です。

  • できた
  • 少しだけ
  • お休み

「お休み」を選んだ場合でも、
否定的な扱いはせず、肯定的なメッセージを表示します。

また、累計日数のカウントからは除外することで、
連続記録のプレッシャーを生まない設計にしています。


設計思想を「壊れない形」で守る

DB制約で「1日1記録」を物理的に保証

「1日1記録」という仕様を守るため、

  • Rails のバリデーション
  • DB レベルでの複合ユニーク制約
    habit_id × recorded_on

を両方設定しています。

アプリケーション側の実装ミスがあっても、
データとして壊れない ことを重視しました。


「未来に落ちない」テストを書く

日付に依存する処理は、
実行するタイミングによってテストが壊れがちです。

そこで ActiveSupport::Testing::TimeHelpers を使い、
時間を固定した状態で RSpec を書いています。

これにより、

  • 今日実行しても
  • 数ヶ月後に実行しても

同じ結果が得られるテストになっています。


作ってみて学んだこと

今回の個人開発で一番学びが大きかったのは、

思想は、仕様にしないと簡単に崩れる

ということでした。

  • 仕様に落とさなければ、ただの気持ちで終わる
  • 実装に落とさなければ、簡単にブレる
  • DB制約やテストが、最後の砦になる

「優しさ」や「再開しやすさ」も、
きちんと設計すればコードで守れると実感しました。


おわりに

「完璧であること」よりも
「ゼロにしないこと」。

Step Log が、
挫折しやすい誰かの 再開のきっかけ になれば嬉しいです。

最後まで読んでいただき、ありがとうございました。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?