講座 / 退会フロー
講座 / 退会フロー
本ページは 2 段構成。上段が biz/CS 向け(ユーザー提示可)、下段(
## 🔧 実装詳細以降)が dev 向け。biz/CS がユーザーへ提示・転用してよいのは上段のみ。
概要
講座契約を解約するための退会フロー。受講者の自身による退会と、運営アドミンによる強制退会の 2 経路がある。
重要な仕様の違い:
- 受講者の自身による退会は常に「次回更新時退会」: 解約申請後も契約満了日までは引き続き講座を利用できる。満了日に終了が確定する
- 即時退会は運営アドミンのみ: 規約違反対応・CS 連携で即時の利用停止が必要な場合に運営側で実施
- クーリングオフ: 法定要件に基づく契約取消(運営アドミン専用)。契約レコード自体を削除する
主な使い方:
- 受講者: mypage > 契約内容、または講座内の退会導線から 5 ステップフロー(開始 → 注意事項 → 解約理由アンケート → 確認 → 完了)
- 運営アドミン: 強制退会・契約削除・クーリングオフを運営アドミン専用機能で実行
退会後の挙動:
- 受講者の解約申請直後: 契約満了日まで利用継続(トーク・コンテンツとも閲覧可能)
- 契約満了後: トーク閲覧不可・コンテンツ閲覧不可になる
- 解約取消: 契約満了前であれば解約取消が可能(再入会の手続き不要で復旧)
サブスクリプション(月額・年額等)が解約フローの対象。0 円契約・一括前払い等は別経路(運営アドミン側のクーリングオフ等)で扱う。
📝 レビュー観点(draft 段階の記述ヒント、完成時に削除):
- 目的: 受講者が講座契約を解約する経路。アンケート回答 + 解約申請の 5 ステップフロー
- 誰が使うか: 受講者(自身の退会)、運営アドミン(強制退会)
- どこで使うか: mypage > 契約内容、講座内の退会導線
- 隣接機能との関係: 入会フロー(
./join.md)/ 契約管理(./contract.md)/ 全プラットフォーム退会(../user/account-lifecycle.md— 個別講座退会とは別)- CS 問い合わせで頻発する論点: 「退会したのにまだ請求された」「退会したらいつから使えなくなるか」「退会取消できるか」「退会したらトーク履歴は消えるか」
- [本機能特有] 「次回更新時退会」が基本: 受講者の退会申請は契約満了日まで利用可、満了日にバッチで終了確定
- [本機能特有] 即時退会は運営アドミンのみ: 強制退会経路を使うと指定日(または当日)に終了
- [本機能特有] 退会取消可能: 契約満了前なら取消(解約取消)API で復旧可
- [本機能特有] 退会後のデータ: 契約終了後はトーク・コンテンツとも閲覧不可(バッチ確定後)
利用シナリオ
シナリオ 1: 受講者の標準的な退会
受講者が mypage > 契約内容から「解約する」を押下し、5 ステップフロー(開始 → 注意事項 → 解約理由アンケート → 確認 → 完了)を通過。「解約手続きが完了しました」表示。契約満了日までは引き続き利用可能で、満了日に自動的に契約終了が確定する。
シナリオ 2: 解約後の取消(再開)
「やっぱり継続したい」と気づいた受講者が、契約満了前であれば解約取消の経路で復旧。次回更新も自動的に行われ、引き続きサブスクが継続する。
シナリオ 3: 一括前払い(買切)の解約 / クーリングオフ
一括前払いプランは標準の解約フローでは解約できず、クーリングオフ等の運営アドミン経由の対応となる。受講者から CS に問い合わせを受け、運営アドミンが法定クーリングオフ期間内なら契約レコードごと削除して返金処理に進む。
シナリオ 4: 運営アドミンによる強制退会
CS 対応や規約違反対応で運営アドミンが即時 / 指定日終了で受講者を強制退会させる。終了日を指定して契約終了を確定させる(指定なしの場合は当日終了)。
よくある失敗ケース
- 「退会したのにまだ請求された」: 受講者の退会は次回更新時退会のため、満了日前に新たな課金がかかる場合がある(多くは一括前払い時のケース、要 CS 説明)
- 「退会したらいつから使えなくなるか」: 契約満了日まで利用可。満了日翌日から閲覧不可
- 「退会取消できるか」: 契約満了前なら可。満了後は再入会扱いで通常の入会フローへ
- 「退会したらトーク履歴は消えるか」: 受講者本人の閲覧はできなくなるが、講師・運営側からは履歴として残る
- 「サブスクではない契約は解約できない」: 一括前払い等は CS 経由でクーリングオフ・契約削除を依頼
📝 レビュー観点:
- 標準的な退会(5 画面通過 → 次回更新時退会)
- 退会後の取消(解約取消)
- 一括前払いプランの退会(クーリングオフ運用)
- 運営アドミンによる強制退会(CS 対応 / 規約違反対応)
- 失敗ケース: サブスク以外の退会試行、既に退会済み
権限別仕様
権限定義は ../user-roles.md 参照。用語は ../terminology.md。
講座権限軸
| 操作 | 未受講者 | 受講者 | サブ講師 | メイン講師 |
|---|---|---|---|---|
| 退会フローへの遷移 | × | ○(契約者) | ×(自講座は退会不可) | ×(自講座は退会不可) |
| 解約アンケート回答 | × | ○ | — | — |
| 解約申請 | × | ○ | — | — |
| 解約取消 | × | ○ | — | — |
横断軸
| 操作 | 運営アドミン | テストユーザー | 投稿禁止 |
|---|---|---|---|
| 自身の退会 | (通常と同じ) | (通常と同じ) | (通常と同じ) |
| 強制退会(即時 or 指定日) | ○(運営アドミン専用機能) | × | × |
| 契約削除(クーリングオフ) | ○(運営アドミン専用機能) | × | × |
📝 レビュー観点:
- 講師が自講座から退会できるかは要確認(運用上想定外)
- 運営アドミン強制退会の典型用途(CS 対応 / 規約違反 / 講座終了時の一括処理)
機能詳細(ふるまい)
5 ステップフロー
| # | ステップ | 内容 |
|---|---|---|
| 1 | 開始(start) | 「本当に解約しますか?」確認 |
| 2 | 注意事項(notice) | 解約後の影響(トーク閲覧不可・コンテンツ閲覧不可・再入会条件 等) |
| 3 | 理由(reason) | 解約理由アンケート(選択式 + 自由記述) |
| 4 | 確認(confirm) | 「入会中講座の解約を行います」最終確認 |
| 5 | 完了(complete) | 「解約手続きが完了しました」 |
即時退会 vs 次回更新時退会の違い
退会経路によって終了タイミングが異なる:
| 経路 | 即時 / 次回更新 | 利用継続 | 適用対象 |
|---|---|---|---|
| 受講者の解約申請(mypage 退会フロー) | 次回更新時退会 | 契約満了日まで継続利用可 | サブスクのみ |
| 運営アドミンの強制退会 | 即時退会(または指定日) | 即時 or 指定日に終了 | 運営アドミン専用 |
| 運営アドミンのクーリングオフ | 契約削除 | 契約レコード自体を削除 | 運営アドミン専用 |
退会理由アンケート
退会フローの 3 番目(理由)ステップでアンケートに回答する:
- 選択式: あらかじめ用意された解約理由の選択肢から該当するものを選択(複数選択可の場合あり)
- 自由記述: 補足的な意見・要望を自由記述欄に入力(任意)
回答内容は運営側で集計し、CS 対応・サービス改善の参考に利用される。
退会後のデータアクセス可否
退会経路によってアクセス可否のタイミングが異なる:
- 解約申請直後(受講者経由): 契約満了日までは引き続き利用可能。トーク・コンテンツとも閲覧可
- 契約満了後 / 即時退会後: トーク閲覧不可・コンテンツ閲覧不可。トーク履歴自体は講師・運営側からは引き続き参照可能(受講者本人だけが見えなくなる)
- トーク参加者リスト: 退会後もトークルームの参加者リストには残ることがある(運用上の課題)
退会取消(解約取消)
契約満了前であれば、解約申請を取り消して再開できる:
- 取消可能期間: 契約満了日まで(満了日後は再入会扱いで通常の入会フローへ)
- 取消後の挙動: 自動更新が再開される(解約予約が解除される)
- 取消経路: 受講者向けの取消画面は限定的で、CS 経由で運営側に依頼するケースもある
📝 レビュー観点:
- 入力 → 処理 → 出力: 各ステップの状態保持と離脱挙動
- エッジケース: 解約取消の有効期限(契約満了直前のレースコンディション)、複数契約状態(プラン変更予約中の解約)
- エラー表示: サブスクでない契約の解約試行(
contract.cancel.subscription.not.exist)、二重解約(contract.already.cancel.contract)- [本機能特有] 退会後のトーク: 契約終了で閲覧不可になるが、Firestore のユーザーリストには残置(dev 改善課題)
- [本機能特有] 解約完了通知メール: 現状未実装(要件次第で追加)
admin 操作
できる操作
- 強制退会:
PUT /admin_master/withdrawal/{user_id}/{plan_id}、即時 or 指定日終了。ForcedWithdrawalUseCase - 契約削除:
DELETE /admin_master/contract/{user_id}/{plan_id}/{plan_price_id}、契約レコード自体を削除 - クーリングオフ:
DELETE /admin_master/cooling_off/{user_id}/{plan_id}/{plan_price_id}、法定クーリングオフ対応
詳細は ../admin/contract.md 参照。
実装されていない / 不明
- 運営アドミンによる解約アンケート代理登録: 専用経路なし
- 退会済みユーザーへの再入会条件設定: 個別管理は未実装
📝 レビュー観点:
- 強制退会と契約削除の使い分け(運用ルール)
- クーリングオフの運用フロー(法定 8 日等の管理)
品質 / 約束事項
- 応答性: 解約申請は同期処理で即時受理。終了確定(次回更新時退会)は契約満了日に走るバッチで自動処理(日次想定)
- 信頼性: 解約申請は契約データに直接反映されるため、二重申請は事前チェックで弾かれる。バッチ処理失敗時はリトライされ、確定は契約満了日付近に確実に走る
- 制限値: 1 講座あたり 1 解約申請まで
- データ保持: 解約後も契約レコードは保持(運営側で履歴参照可)
📝 レビュー観点:
- 応答性: 解約申請の即時反映、終了確定のバッチタイミング(日次想定)
- データ保持: 解約後の個人情報・支払い履歴の保持期間(法定要件との整合)
- [本機能特有] 解約完了通知: 現状未実装、要件確認
変更履歴(リリースノート候補)
v2.29.2: 2026-05-01(PSD 初版)
- [PSD 追加] 本ドキュメント初版作成。v2.29.2 時点の実装を起こし。機能追加・変更は含まない
📝 レビュー観点:
- 過去の主要変更(解約アンケート追加 / クーリングオフ対応 等)
関連ドキュメント
- 権限定義:
../user-roles.md - 用語辞書:
../terminology.md - 関連 PSD:
./join.md— 入会フロー(再入会の起点)./contract.md— 契約管理(プラン変更との関係)../user/account-lifecycle.md— 全プラットフォーム退会(本ページとは別)../admin/contract.md— 運営アドミン強制退会../talk/room.md— 退会後のトーク閲覧可否