Appearance
C-10: コーチセッション設計(テーマ設定〜分岐〜まとめ〜終了〜アーカイブ)
| 項目 | 内容 |
|---|---|
| ステータス | 📝 Refinement |
| カテゴリ | Coach |
| 優先度 | P1 |
実装状況(main 基準)
| 領域 | 状況 |
|---|---|
| セッション保存 | /coach 送信時に Firestore sessions/{id}/messages へ保存済み |
| 履歴一覧 | /sessions と SessionHistoryView で一覧取得は実装済み |
| 詳細取得 | /sessions/{id} と CoachStore.fetchSessionDetail は実装済み |
| 要約/タイトル | 現状は title がほぼ未生成。ローカルでは最初のユーザーメッセージを summary にするのみ |
| テーマ | cycle_element はあるが、ユーザー向けの sessionTheme は未実装 |
| 分岐 | 深める / 次の行動 / 立ち止まるの状態・UI・API は未実装 |
| まとめ | セッション終了時の要約・気づき・次の一歩は未実装 |
リファインメント結果
このアイテムはコーチ体験の中核だが、API・データモデル・UI を同時に変更するため、1 PR で完了させない。先に「保存できるセッション」から「意味のあるセッション」へ進めるため、MVP ではテーマ・分岐・まとめを明示的なデータとして追加する。
実装単位
- データモデル追加:
session_theme,branch_choice,summary,insight,closing_itemを Firestore セッションに保存できるようにする。 - API追加: セッション終了/まとめ生成用のエンドポイントを追加する。候補は
POST /sessions/{session_id}/close。 - AI出力: 会話履歴からテーマ、気づき、分岐別の最後の要素を JSON で返す専用プロンプトを追加する。
- UI追加:
CoachChatView終了時に即 dismiss せず、まとめ画面へ遷移する。 - 履歴表示:
SessionRowView/ 詳細画面でテーマと分岐結果を見返せるようにする。
受け入れ条件
- セッション終了時に、テーマ・気づき・分岐種別・最後の要素が保存される。
- 「深める」「次の行動へ進む」「立ち止まる」のいずれかをユーザーが選べる。
- 選択しないまま終了した場合でも、デフォルトで「立ち止まる」または「未選択」として破綻しない。
- 履歴一覧から過去セッションのテーマを確認できる。
- AI 生成に失敗した場合も、会話履歴自体は失われず終了できる。
非対象
- セッションの途中分岐を AI が自動で強制表示する高度な判定
- タスク自動作成
- まとめ内容の手動編集
- セッション間の長期記憶最適化
全体方針
Cycleのセッションは、単なるチャットの往復ではなく、 「今の自分の状態を見つける → 必要に応じて深める / 動く / 立ち止まる → 整理して閉じる」 という流れを持つ体験として設計する。
セッションの目的は、答えを即座に出すことではなく、 今の状態や本音を整理し、自然な着地点を見つけることにある。
1. テーマの設定
基本方針
テーマは、セッション開始前に必須入力させるのではなく、 会話の中から徐々に見えてくるものとして扱う。
Cycleでは、最初からユーザーが明確なテーマを言語化できているとは限らない。 そのため、テーマはAIが会話の流れから抽出し、途中で確定表示する。
初期状態
セッション開始直後は、テーマは未確定状態とする。
表示例:
- 今日のテーマを見つけています
- いまの話からテーマを整理しています
確定タイミング
会話が数往復進み、ユーザーの悩み・感情・問いの方向性がある程度見えた段階で、 AIがそのセッションのテーマを短く要約して表示する。
テーマの条件
- 一目で内容がわかる
- 抽象的すぎない
- 結論ではなく、その回の中心的な問いや状態を表す
- 1行〜2行以内に収める
例:
- 自分を責めずに進むこと
- 焦りの奥にある本音
- 動けない理由を見つめること
- 答えを急がず整えること
実装方針
sessionTheme: String?- 初期値は nil または仮表示文言
- 一定条件のメッセージ数またはAI判定で確定表示する
2. 対話フェーズ
役割
- ユーザーの思考や感情を受け取る
- テーマを明らかにしていく
- すぐに答えを出さず、問いを通じて整理を促す
方針
- 対話は「解決の押しつけ」ではなく「輪郭を見つける場」とする
- AIは結論を急がず、ユーザーの状態に合わせて問いを返す
- 会話の進行に応じて、深める・行動する・立ち止まるのどれが自然かを見極める
3. セッション途中の分岐
基本方針
セッション途中で、進行方向を選べる分岐を設ける。 分岐は以下の3つとする。
- 深める
- 次の行動へ進む
- 立ち止まる
これにより、ユーザーを常に行動や結論へ急がせず、 その時の状態に合った自然な着地をつくる。
3-1. 深める
意味
- まだ整理しきれていない
- もう少し問いを重ねたい
- 本音や構造を見つけたい
役割
- 感情の奥にあるものを見つめる
- 表面的な悩みの背後にあるテーマを明らかにする
- ユーザーが自分の言葉で気づけるように支える
向いている状態
- まだモヤモヤしている
- 言語化しきれていない
- 行動に進むには早い
3-2. 次の行動へ進む
意味
- 十分に整理されてきた
- 小さくても行動に移せそう
- 現実の一歩につなげたい
役割
- セッションを行動につなぐ
- 大きな目標ではなく、負荷の低い一歩を定める
- 行動のハードルを下げる
向いている状態
- 少し整理された
- 次に何をするか考えられる
- 今なら小さく動ける
行動提案の条件
- 1つだけ
- すぐに実行できる
- 重くない
- 自分を追い込まない
例:
- いちばん気になっていることを1行だけ書く
- 今夜は判断より休息を優先する
- 明日の朝5分だけ向き合う時間を取る
3-3. 立ち止まる
意味
- 今は無理に深めなくてよい
- 今は行動に進まなくてよい
- この状態のまま一度閉じる
役割
- 保留ではなく、意図的な余白を持つ選択肢
- 結論や行動を急がず、今の感覚を持ち帰る
- Cycleを「急がせるアプリ」にしないための重要な分岐
向いている状態
- まだ揺れている
- 少し疲れている
- 言葉になりきっていない
- 今はそのまま閉じたい
重要な考え方 「立ち止まる」は停滞ではない。 今はここに留まり、答えを急がずに受け取るための前向きな選択として扱う。
4. 分岐UIの考え方
表示タイミング
分岐は、会話の途中で自然に出す。 常時表示ではなく、ある程度テーマが見えてきた段階で出す。
表示形式
3つの選択肢をカードまたはボタンで提示する。
表示候補:
- 深める
- 次の行動へ進む
- 立ち止まる
または柔らかくする場合:
- もう少し深める
- 小さく動き出す
- ここで立ち止まる
意図
ユーザーに「今どの方向が自然か」を選ばせる。 AIが決め打ちするのではなく、ユーザーの主体性を残す。
5. まとめ画面
基本方針
どの分岐を選んだ場合でも、最後は必ずまとめ画面に着地させる。 終了画面ではなく、「今回のセッションを定着させる画面」として扱う。
役割
- セッションを静かに閉じる
- 今回の気づきを短く輪郭化する
- 行動または余白を持ち帰れる形にする
共通表示要素
- クロージングメッセージ
- 今日のテーマ
- 今回の気づき
- 分岐に応じた最後の要素
- 終了アクション
5-1. クロージングメッセージ
例:
- 今日の対話を閉じます
- 今回のセッションをまとめます
- 少し見えてきたものを持ち帰りましょう
短く静かで、評価しない文言にする。
5-2. 今日のテーマ
AIが抽出したテーマを表示する。
例:
- 今日のテーマ:焦りの奥にある本音
- 今日のテーマ:動けない理由を見つめること
5-3. 今回の気づき
対話全体を短く要約して返す。
条件:
- 断定しすぎない
- 長すぎない
- 「こう見えていた」を返す
- ユーザーの状態を少し整理できる文にする
例:
- あなたは前に進みたい気持ちと、失敗したくない気持ちの間で揺れていました。
- 今必要なのは、答えを急ぐことよりも、自分の負荷を正しく見ることかもしれません。
5-4. 分岐に応じた最後の要素
A. 深めるを選んだ場合
見出し例:
- これから深めたいこと
- 次に見つめる問い
内容例:
- 本当に怖れているものは何か
- 自分に厳しくしている理由は何か
B. 次の行動へ進むを選んだ場合
見出し例:
- 次の一歩
- 今日の小さな行動
内容例:
- 明日の朝、5分だけ今の気持ちを書く
- ひとつだけ先延ばししていることに手をつける
C. 立ち止まるを選んだ場合
見出し例:
- 今は持ち帰ること
- このままでよいこと
内容例:
- すぐに答えを出さなくてよい
- いま感じている揺れを、そのまま置いておいてよい
6. セッション終了
基本方針
セッションは、達成演出ではなく、静かに閉じる。 「解決しました」「成長しました」のような評価的な終わり方は避ける。
下部アクション
- セッションを終える
- アーカイブを見る
または:
- 閉じる
MVPでは最小限でよい。
7. アーカイブ
基本方針
セッション終了後、内容はアーカイブへ保存される。 これにより、その場限りの会話で終わらず、内省の蓄積として残る。
保存したい要素
- セッション日時
- 今日のテーマ
- 今回の気づき
- 分岐の種類(深める / 次の行動へ進む / 立ち止まる)
- 最後に表示した内容(次に見つめる問い / 次の一歩 / 今は持ち帰ること)
アクセス方法
コーチ画面(ホーム)の右上3点メニュー内に格納する。
アーカイブの役割
- 過去のテーマの変化を見返せる
- どこで立ち止まり、どこで動いたかを振り返れる
- セッションが循環として蓄積される
8. この設計の核
Cycleのセッションは、 「整える → テーマが見えてくる → 深める / 動く / 立ち止まる → まとめる → アーカイブする」 という流れで構成する。
この構造により、Cycleは単なる相談チャットではなく、 自分の状態を見つめ、無理なく着地し、あとから振り返れる内省体験として成立する。