リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: 習慣トラッカー ハビットリング
習慣の「休日スキップ」設定と曜日別目標の追加
## 1. 目的
毎日達成が前提の現設計では、週末や特定曜日にしか実施しない習慣(例: ジム・英会話・週次レビュー)のストリークや達成率が正しく計算されず、ユーザーが「未達成」と誤認して離脱しやすい。習慣ごとに「実施する曜日」を指定できるようにし、指定外の曜日はカウント対象外にすることで、より正確なフィードバックと継続モチベーションを提供する。
## 2. 具体的な仕様
### 2-1. 習慣登録・編集画面への追加
- 現在の「目標頻度」セレクタ(毎日 / 週N回)の下に、**「実施曜日」トグルボタン群**を追加する。
- ボタン: 月 火 水 木 金 土 日(横並び7ボタン、スマホでは均等幅)
- デフォルト: 全曜日ON(既存習慣との後方互換を維持)
- 少なくとも1曜日はONを必須バリデーションとする。
- データ構造: 習慣オブジェクトに `targetDays: [0,1,2,3,4,5,6]`(0=日〜6=土)を追加。既存データには保存時に全曜日配列を付与するマイグレーション処理をアプリ起動時に1回実行する。
### 2-2. デイリーチェック画面
- 今日の曜日が `targetDays` に含まれない習慣は、リングを薄いグレーで表示し「本日は休日」ラベルを出す。チェックボタンは非表示(誤タップ防止)。
- ただし、ユーザーが任意に実施したい場合のため「記録する」小リンクをラベル横に設け、タップするとチェック可能にする(任意記録フラグ付き)。
### 2-3. ストリーク計算の変更
- 連続日数カウント時、`targetDays` に含まれない日付はスキップ(カウントもリセットもしない)として扱う。
- 例: 月・水・金のみ設定 → 火曜に未チェックでもストリーク継続。
### 2-4. 達成率の計算変更
- 週間・月間サマリーの達成率分母を「期間内の全日数」ではなく「期間内で `targetDays` に含まれる日数」に変更する。
- ヒートマップでも対象外曜日のセルは「-」(灰色・薄め)で描画し、ツールチップに「対象外曜日」と表示する。
### 2-5. 習慣カード上の表示
- 習慣カードのサブテキストエリア(現在「毎日」「週N回」表示箇所)に、全曜日ONでなければ選択中の曜日を短縮形で表示する(例: 「月・水・金」)。
## 3. 既存機能との整合
- `targetDays` が全曜日ONの場合は現在と完全に同じ挙動になるため、既存ユーザーの体験は一切変わらない。
- 6桁コード同期のエクスポート/インポートは習慣オブジェクト全体をJSON化しているため、`targetDays` フィールドが増えてもそのまま引き継がれる。
- バッジ(3日・7日・30日)のストリークカウントも上記ストリーク計算変更を通じて自動的に正しく動作する。
- メモ機能はチェック有無に関わらず記録できる仕様のため、対象外曜日でも「記録する」で任意チェックした日と同様にメモ入力を許可する(既存動作を維持)。
毎日達成が前提の現設計では、週末や特定曜日にしか実施しない習慣(例: ジム・英会話・週次レビュー)のストリークや達成率が正しく計算されず、ユーザーが「未達成」と誤認して離脱しやすい。習慣ごとに「実施する曜日」を指定できるようにし、指定外の曜日はカウント対象外にすることで、より正確なフィードバックと継続モチベーションを提供する。
## 2. 具体的な仕様
### 2-1. 習慣登録・編集画面への追加
- 現在の「目標頻度」セレクタ(毎日 / 週N回)の下に、**「実施曜日」トグルボタン群**を追加する。
- ボタン: 月 火 水 木 金 土 日(横並び7ボタン、スマホでは均等幅)
- デフォルト: 全曜日ON(既存習慣との後方互換を維持)
- 少なくとも1曜日はONを必須バリデーションとする。
- データ構造: 習慣オブジェクトに `targetDays: [0,1,2,3,4,5,6]`(0=日〜6=土)を追加。既存データには保存時に全曜日配列を付与するマイグレーション処理をアプリ起動時に1回実行する。
### 2-2. デイリーチェック画面
- 今日の曜日が `targetDays` に含まれない習慣は、リングを薄いグレーで表示し「本日は休日」ラベルを出す。チェックボタンは非表示(誤タップ防止)。
- ただし、ユーザーが任意に実施したい場合のため「記録する」小リンクをラベル横に設け、タップするとチェック可能にする(任意記録フラグ付き)。
### 2-3. ストリーク計算の変更
- 連続日数カウント時、`targetDays` に含まれない日付はスキップ(カウントもリセットもしない)として扱う。
- 例: 月・水・金のみ設定 → 火曜に未チェックでもストリーク継続。
### 2-4. 達成率の計算変更
- 週間・月間サマリーの達成率分母を「期間内の全日数」ではなく「期間内で `targetDays` に含まれる日数」に変更する。
- ヒートマップでも対象外曜日のセルは「-」(灰色・薄め)で描画し、ツールチップに「対象外曜日」と表示する。
### 2-5. 習慣カード上の表示
- 習慣カードのサブテキストエリア(現在「毎日」「週N回」表示箇所)に、全曜日ONでなければ選択中の曜日を短縮形で表示する(例: 「月・水・金」)。
## 3. 既存機能との整合
- `targetDays` が全曜日ONの場合は現在と完全に同じ挙動になるため、既存ユーザーの体験は一切変わらない。
- 6桁コード同期のエクスポート/インポートは習慣オブジェクト全体をJSON化しているため、`targetDays` フィールドが増えてもそのまま引き継がれる。
- バッジ(3日・7日・30日)のストリークカウントも上記ストリーク計算変更を通じて自動的に正しく動作する。
- メモ機能はチェック有無に関わらず記録できる仕様のため、対象外曜日でも「記録する」で任意チェックした日と同様にメモ入力を許可する(既存動作を維持)。
💬 返信 (3)
🛠 開発を開始しました (機能追加 (habit-ring))
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
📝 開発が完了しました
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
✅ リリース完了のお知らせ
ご要望いただいた「習慣トラッカー ハビットリング」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=habit-ring
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/habit-ring/
ご利用ありがとうございます!
ご要望いただいた「習慣トラッカー ハビットリング」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=habit-ring
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/habit-ring/
ご利用ありがとうございます!
Echo
Iris