Skip to content

C-10: コーチセッション設計(テーマ設定〜分岐〜まとめ〜終了〜アーカイブ)

項目内容
ステータス📝 Refinement
カテゴリCoach
優先度P1

実装状況(main 基準)

領域状況
セッション保存/coach 送信時に Firestore sessions/{id}/messages へ保存済み
履歴一覧/sessionsSessionHistoryView で一覧取得は実装済み
詳細取得/sessions/{id}CoachStore.fetchSessionDetail は実装済み
要約/タイトル現状は title がほぼ未生成。ローカルでは最初のユーザーメッセージを summary にするのみ
テーマcycle_element はあるが、ユーザー向けの sessionTheme は未実装
分岐深める / 次の行動 / 立ち止まるの状態・UI・API は未実装
まとめセッション終了時の要約・気づき・次の一歩は未実装

リファインメント結果

このアイテムはコーチ体験の中核だが、API・データモデル・UI を同時に変更するため、1 PR で完了させない。先に「保存できるセッション」から「意味のあるセッション」へ進めるため、MVP ではテーマ・分岐・まとめを明示的なデータとして追加する。

実装単位

  1. データモデル追加: session_theme, branch_choice, summary, insight, closing_item を Firestore セッションに保存できるようにする。
  2. API追加: セッション終了/まとめ生成用のエンドポイントを追加する。候補は POST /sessions/{session_id}/close
  3. AI出力: 会話履歴からテーマ、気づき、分岐別の最後の要素を JSON で返す専用プロンプトを追加する。
  4. UI追加: CoachChatView 終了時に即 dismiss せず、まとめ画面へ遷移する。
  5. 履歴表示: SessionRowView / 詳細画面でテーマと分岐結果を見返せるようにする。

受け入れ条件

  • セッション終了時に、テーマ・気づき・分岐種別・最後の要素が保存される。
  • 「深める」「次の行動へ進む」「立ち止まる」のいずれかをユーザーが選べる。
  • 選択しないまま終了した場合でも、デフォルトで「立ち止まる」または「未選択」として破綻しない。
  • 履歴一覧から過去セッションのテーマを確認できる。
  • AI 生成に失敗した場合も、会話履歴自体は失われず終了できる。

非対象

  • セッションの途中分岐を AI が自動で強制表示する高度な判定
  • タスク自動作成
  • まとめ内容の手動編集
  • セッション間の長期記憶最適化

全体方針

Cycleのセッションは、単なるチャットの往復ではなく、 「今の自分の状態を見つける → 必要に応じて深める / 動く / 立ち止まる → 整理して閉じる」 という流れを持つ体験として設計する。

セッションの目的は、答えを即座に出すことではなく、 今の状態や本音を整理し、自然な着地点を見つけることにある。


1. テーマの設定

基本方針

テーマは、セッション開始前に必須入力させるのではなく、 会話の中から徐々に見えてくるものとして扱う。

Cycleでは、最初からユーザーが明確なテーマを言語化できているとは限らない。 そのため、テーマはAIが会話の流れから抽出し、途中で確定表示する。

初期状態

セッション開始直後は、テーマは未確定状態とする。

表示例:

  • 今日のテーマを見つけています
  • いまの話からテーマを整理しています

確定タイミング

会話が数往復進み、ユーザーの悩み・感情・問いの方向性がある程度見えた段階で、 AIがそのセッションのテーマを短く要約して表示する。

テーマの条件

  • 一目で内容がわかる
  • 抽象的すぎない
  • 結論ではなく、その回の中心的な問いや状態を表す
  • 1行〜2行以内に収める

例:

  • 自分を責めずに進むこと
  • 焦りの奥にある本音
  • 動けない理由を見つめること
  • 答えを急がず整えること

実装方針

  • sessionTheme: String?
  • 初期値は nil または仮表示文言
  • 一定条件のメッセージ数またはAI判定で確定表示する

2. 対話フェーズ

役割

  • ユーザーの思考や感情を受け取る
  • テーマを明らかにしていく
  • すぐに答えを出さず、問いを通じて整理を促す

方針

  • 対話は「解決の押しつけ」ではなく「輪郭を見つける場」とする
  • AIは結論を急がず、ユーザーの状態に合わせて問いを返す
  • 会話の進行に応じて、深める・行動する・立ち止まるのどれが自然かを見極める

3. セッション途中の分岐

基本方針

セッション途中で、進行方向を選べる分岐を設ける。 分岐は以下の3つとする。

  1. 深める
  2. 次の行動へ進む
  3. 立ち止まる

これにより、ユーザーを常に行動や結論へ急がせず、 その時の状態に合った自然な着地をつくる。

3-1. 深める

意味

  • まだ整理しきれていない
  • もう少し問いを重ねたい
  • 本音や構造を見つけたい

役割

  • 感情の奥にあるものを見つめる
  • 表面的な悩みの背後にあるテーマを明らかにする
  • ユーザーが自分の言葉で気づけるように支える

向いている状態

  • まだモヤモヤしている
  • 言語化しきれていない
  • 行動に進むには早い

3-2. 次の行動へ進む

意味

  • 十分に整理されてきた
  • 小さくても行動に移せそう
  • 現実の一歩につなげたい

役割

  • セッションを行動につなぐ
  • 大きな目標ではなく、負荷の低い一歩を定める
  • 行動のハードルを下げる

向いている状態

  • 少し整理された
  • 次に何をするか考えられる
  • 今なら小さく動ける

行動提案の条件

  • 1つだけ
  • すぐに実行できる
  • 重くない
  • 自分を追い込まない

例:

  • いちばん気になっていることを1行だけ書く
  • 今夜は判断より休息を優先する
  • 明日の朝5分だけ向き合う時間を取る

3-3. 立ち止まる

意味

  • 今は無理に深めなくてよい
  • 今は行動に進まなくてよい
  • この状態のまま一度閉じる

役割

  • 保留ではなく、意図的な余白を持つ選択肢
  • 結論や行動を急がず、今の感覚を持ち帰る
  • Cycleを「急がせるアプリ」にしないための重要な分岐

向いている状態

  • まだ揺れている
  • 少し疲れている
  • 言葉になりきっていない
  • 今はそのまま閉じたい

重要な考え方 「立ち止まる」は停滞ではない。 今はここに留まり、答えを急がずに受け取るための前向きな選択として扱う。


4. 分岐UIの考え方

表示タイミング

分岐は、会話の途中で自然に出す。 常時表示ではなく、ある程度テーマが見えてきた段階で出す。

表示形式

3つの選択肢をカードまたはボタンで提示する。

表示候補:

  • 深める
  • 次の行動へ進む
  • 立ち止まる

または柔らかくする場合:

  • もう少し深める
  • 小さく動き出す
  • ここで立ち止まる

意図

ユーザーに「今どの方向が自然か」を選ばせる。 AIが決め打ちするのではなく、ユーザーの主体性を残す。


5. まとめ画面

基本方針

どの分岐を選んだ場合でも、最後は必ずまとめ画面に着地させる。 終了画面ではなく、「今回のセッションを定着させる画面」として扱う。

役割

  • セッションを静かに閉じる
  • 今回の気づきを短く輪郭化する
  • 行動または余白を持ち帰れる形にする

共通表示要素

  1. クロージングメッセージ
  2. 今日のテーマ
  3. 今回の気づき
  4. 分岐に応じた最後の要素
  5. 終了アクション

5-1. クロージングメッセージ

例:

  • 今日の対話を閉じます
  • 今回のセッションをまとめます
  • 少し見えてきたものを持ち帰りましょう

短く静かで、評価しない文言にする。

5-2. 今日のテーマ

AIが抽出したテーマを表示する。

例:

  • 今日のテーマ:焦りの奥にある本音
  • 今日のテーマ:動けない理由を見つめること

5-3. 今回の気づき

対話全体を短く要約して返す。

条件:

  • 断定しすぎない
  • 長すぎない
  • 「こう見えていた」を返す
  • ユーザーの状態を少し整理できる文にする

例:

  • あなたは前に進みたい気持ちと、失敗したくない気持ちの間で揺れていました。
  • 今必要なのは、答えを急ぐことよりも、自分の負荷を正しく見ることかもしれません。

5-4. 分岐に応じた最後の要素

A. 深めるを選んだ場合

見出し例:

  • これから深めたいこと
  • 次に見つめる問い

内容例:

  • 本当に怖れているものは何か
  • 自分に厳しくしている理由は何か

B. 次の行動へ進むを選んだ場合

見出し例:

  • 次の一歩
  • 今日の小さな行動

内容例:

  • 明日の朝、5分だけ今の気持ちを書く
  • ひとつだけ先延ばししていることに手をつける

C. 立ち止まるを選んだ場合

見出し例:

  • 今は持ち帰ること
  • このままでよいこと

内容例:

  • すぐに答えを出さなくてよい
  • いま感じている揺れを、そのまま置いておいてよい

6. セッション終了

基本方針

セッションは、達成演出ではなく、静かに閉じる。 「解決しました」「成長しました」のような評価的な終わり方は避ける。

下部アクション

  • セッションを終える
  • アーカイブを見る

または:

  • 閉じる

MVPでは最小限でよい。


7. アーカイブ

基本方針

セッション終了後、内容はアーカイブへ保存される。 これにより、その場限りの会話で終わらず、内省の蓄積として残る。

保存したい要素

  • セッション日時
  • 今日のテーマ
  • 今回の気づき
  • 分岐の種類(深める / 次の行動へ進む / 立ち止まる)
  • 最後に表示した内容(次に見つめる問い / 次の一歩 / 今は持ち帰ること)

アクセス方法

コーチ画面(ホーム)の右上3点メニュー内に格納する。

アーカイブの役割

  • 過去のテーマの変化を見返せる
  • どこで立ち止まり、どこで動いたかを振り返れる
  • セッションが循環として蓄積される

8. この設計の核

Cycleのセッションは、 「整える → テーマが見えてくる → 深める / 動く / 立ち止まる → まとめる → アーカイブする」 という流れで構成する。

この構造により、Cycleは単なる相談チャットではなく、 自分の状態を見つめ、無理なく着地し、あとから振り返れる内省体験として成立する。