Fincs

トークルーム管理

トークルーム管理

本ページは 2 段構成。上段が biz/CS 向け(ユーザー提示可)、下段(## 🔧 実装詳細 以降)が dev 向け。biz/CS がユーザーへ提示・転用してよいのは上段のみ。

概要

トーク機能の基盤となるトークルーム(チャンネル / DM)を、講師が作成・管理する機能。講師は自分の講座内に複数のルームを作り、受講者とのコミュニケーション場を用意する。

トークルームは 2 種類:

  • トークチャンネル: 講座の講師陣(メイン講師 + サブ講師)と受講者全員のコミュニケーション場
  • トーク DM: 講座の講師陣(メイン講師 + サブ講師)と特定の受講者 1 名との DM

ルームには以下の設定で振る舞いを制御できる:

  • 公開 / 非公開(下書き状態)
  • アーカイブ(運用終了後の退避)
  • 講師限定投稿(受講者は投稿不可にする)
  • スレッド限定投稿(受講者はスレッド内のみ投稿可、講師はルーム直下にも投稿可)
  • 過去トーク制限(契約開始前のトークを受講者に見せない)
  • ユーザーへのデフォルト通知設定(新規入会者の購読デフォルト)
  • 無料公開 / 有料
  • 制限プラン(特定の料金プラン契約者のみアクセス可)

管理操作(作成・更新・削除・並び順変更・詳細閲覧)は講師(メイン講師 / サブ講師)のみが行える。受講者は自分にアクセス権のあるルームを閲覧できるが、ルーム自体の管理はできない。

利用シナリオ

シナリオ 1: 講師が新しいチャンネルを作る

メイン講師が講座内に「Q&A」チャンネルを新規作成。ルーム名・説明・各種設定を決めて投稿を受け付ける。作成時に講座の契約受講者全員が通知対象として自動で購読設定される。

シナリオ 2: 個別 DM ルームの開設

講師が特定の受講者を指定して DM ルームを作成。受講者は講師陣(メイン講師 + サブ講師)との個別のやり取りができるようになる。他の受講者からは見えない。

シナリオ 3: 下書きとして準備、後で公開

講師がまずルームを「非公開」で作成、内容を整えてから「公開」に切り替えて受講者に見せる。非公開状態では投稿はできるが通知は飛ばない。

シナリオ 4: 過去コースを片付ける(アーカイブ)

募集終了した講座のルームをアーカイブに移動。受講者の一覧画面から消えるが、データは保持される。必要なら解除して戻せる(ただしルーム数上限に達していると戻せない)。

シナリオ 5: 上位プラン限定の VIP ルーム

制限プランを設定し、特定の料金プラン(例: 上位講座)に入っている受講者のみアクセスできるルームを作る。

シナリオ 6: ルームの並び替え

講師が、講座内のルーム表示順を講座ダッシュボードで並び替える。受講者側は次に一覧を開き直した時点で新しい並び順になる。

権限別仕様

権限定義は ../../user-roles.md、用語は ../../terminology.md 参照。

講座権限軸

操作 未受講者 受講者 サブ講師 メイン講師
ルーム作成(チャンネル) × × ○(※1)
ルーム作成(DM) × × ○(※1)
ルーム更新(設定変更) × × ○(※1)
ルーム削除 × × ○(※1)
ルーム並び順変更 × × ○(※1)
ルーム詳細(管理用)取得 × × ○(※1)
講座内ルーム一覧(閲覧用)取得 ○(※2) ○(※3) ○(※4) ○(※4)
ルームの中身(トーク本文)の閲覧 × ○(※3)
アーカイブ済み / 非公開ルームの閲覧 × ×
  • ※1: 仕様としてはメイン・サブ両方に許可。サブ講師ケースの実挙動をテストで固定する作業を FIN-422 で追跡中
  • ※2: 未受講者でも一覧取得は可能で、公開済み・非アーカイブのチャンネル自分宛の DM が返る。ただし「契約していない」状態が付随し、ルームの中身(トーク本文)の閲覧は別途ブロックされる
  • ※3: 「公開済み」「非アーカイブ」かつ「自分がアクセス権のあるルーム」のみ取得できる(制限プラン設定時は自身の契約プラン価格帯が合致するものに絞られる)
  • ※4: 講師は非公開・アーカイブ含め全ルームを閲覧可

横断軸

操作 運営アドミン テストユーザー 投稿禁止
ルーム管理系操作(作成 / 更新 / 削除 / 並び順) ×(運営アドミン経由の専用操作経路は存在しない) (通常と同じ) (運用上、講師が投稿禁止になるケースは想定外)
ルーム閲覧 ×(通常ユーザー経路は未実装) (通常と同じ) (通常と同じ、閲覧は可)

機能詳細(ふるまい)

ルームの作成(チャンネル)

新しいチャンネルを講座内に作る操作。講師が以下の情報を指定する:

  • ルーム名(必須、全角 1〜20 文字)
  • ルーム説明(任意、全角 50 文字まで)
  • 公開 / 非公開(必須)
  • 無料 / 有料(必須)
  • 講師限定投稿(必須)
  • スレッド限定投稿(任意、デフォルト OFF)
  • ユーザーへのデフォルト通知設定(必須。新規入会者の購読デフォルト)
  • 過去トーク制限(任意)
  • 表示順(必須)
  • 制限プラン(任意。指定した料金プラン契約者のみアクセス可に絞る)

作成時の自動処理:

  • 講座の契約受講者 + 作成した講師本人をルームの通知対象として登録(ただしデフォルト通知設定が ON の場合)
  • 制限プランを指定した場合、各プラン価格の存在チェックが走る

ルームの作成(DM)

特定の受講者 1 名を対象としたダイレクトメッセージ用ルーム。講師が DM 相手となる受講者を指名して作成する。DM ルームの特徴:

  • DM 相手(受講者)1 名を指定(複数は不可)
  • 初期値としてルーム名に「DM: {受講者名}」、説明に「講師とのダイレクトメッセージ」が設定される
  • 通知対象は「DM 相手 + メイン講師 + サブ講師」(./notification.md 参照)
  • 設定項目は一部に限定される(UI が別画面)

ルームの更新(設定変更)

既存ルームの設定を変更する操作。部分更新方式で、送信したフィールドだけが更新される。

更新できるフィールド(UI 上):

  • チャンネル名 / 概要
  • ユーザーの投稿権限(投稿可能 / スレッドのみ投稿可能 / 投稿不可 の 3 段階。※ feature flag オフ時は「投稿できる / できない」の 2 択)
  • 公開範囲(講座内限定公開 / 一般公開)
  • プラン限定公開(講座内限定公開時のみ)と対象プラン複数選択
  • 公開設定(公開 / 非公開)
  • ユーザーへのデフォルト通知設定(オン / オフ)
  • 過去トーク制限(一般公開時は設定不可)

重要な挙動:

  • アーカイブに切り替えると、そのルームの配下のトークは残ったまま、受講者の一覧から非表示になる
  • アーカイブから戻すには、講座のアクティブルーム数がチャンネル上限(50)または DM 上限(10,000)に達していないこと
  • 非公開 → 公開に切り替えると、既に投稿されていたトークも含めて受講者が閲覧可能になる(公開前投稿が自動的に見える化される)
  • 「ユーザーへのデフォルト通知設定」の挙動:
    • この設定はルーム内の新規入会ユーザーへのデフォルト適用を制御する
    • 設定変更時に既存ユーザーの通知購読は変化しない(ON → OFF で解除されない / OFF → ON で一括登録されない)
    • 新規入会(新規契約完了)時に、アクセス可能な各ルームの本設定が参照され、ON のルームは自動で購読登録される
    • 既存ユーザーが受信を止めたい / 始めたい場合は、個別に通知設定を操作する必要あり

ルームの削除

ルームを受講者・講師の一覧画面から消し、運用停止する操作。

  • 削除扱いのフラグが立つだけで、内部的にはデータが残る(運営側は後から参照可能)
  • 配下の子データ(投稿・アナウンス・通知設定・制限プラン)は連動して削除されない。ルーム自体が表示されなくなることで実質アクセス不可になるのみ
  • ユーザー操作で復旧する手段はない。削除後に取り消したい場合は dev 対応が必要
  • 実装上、子データの孤児化が起こり得るため(例: 削除したルームと同名の新ルームを作っても、旧ルームの投稿は復活しない)、完全にクリーンな状態を作りたい場合は dev 対応が必要

アーカイブ vs 削除の使い分け

操作 データ保持 受講者からの表示 講師の復帰
アーカイブ 保持 非表示 可能(上限あり)
削除 内部保持(表示はされない) 非表示 不可(復旧機能なし)

運用中に一時的に止めたいならアーカイブ、完全に撤去したいなら削除。

ルームの並び順変更

同一講座内の複数ルームを一括で並び替える操作。講座ダッシュボードの UI から講師が編集する。受講者側は次に一覧を開き直した時点で新しい並び順になる。

ルーム一覧の取得

講座ごとのルーム一覧を取得する(講師編集画面・受講者閲覧画面などで使用)。一覧取得自体は認証済みユーザーであれば誰でも実行可能(未受講者含む)。返る内容はユーザー種別で変わる:

  • 受講者 / 未受講者: 公開済み・非アーカイブのチャンネル、および自分宛の DM。ルームの中身(トーク本文)閲覧は別途契約チェックされるため、未受講者は一覧に現れても実際の投稿は見えない
  • 講師: 非公開・アーカイブ含む全ルーム

ルーム詳細(管理用)取得

ルーム編集画面で使われる詳細情報取得。制限プランなど講師用の情報も取得できる。メイン講師 / サブ講師のみ取得可能(受講者は見つからない扱い)。

ルーム設定フラグ一覧

設定 挙動 典型用途
公開 / 非公開 非公開: 受講者から見えない。投稿はできるが通知も発火しない(./notification.md 公開前の準備、一時非表示
アーカイブ 受講者の一覧から消える。講師は解除可(ルーム数上限に達していなければ) 運用終了したルームの退避
講師限定投稿 受講者は投稿不可、講師(メイン / サブ)のみ投稿可能(./post.md 予定で詳述) お知らせ専用ルーム
スレッド限定投稿 ルーム直下への新規投稿不可、スレッド内のみ投稿可(講師は例外でスレッド外にも投稿可) お題投稿 → 返信形式のルーム
過去トーク制限 受講者に、自分の契約開始日より前に投稿されたトークを見せない(講師は常に全部見える) 途中入会者に古い議論を見せない
ユーザーへのデフォルト通知設定 新規入会者の通知購読デフォルト ON / OFF。既存ユーザーには影響せず、新規入会者のみ自動購読登録される(受信挙動の詳細は ./notification.md ルーム単位の通知デフォルト。UI ラベルは「ユーザーへのデフォルト通知設定」
無料 / 有料 有料ルーム(= 無料公開 OFF)は講座契約済みでないとアクセスできない 契約者限定ルーム
制限プラン 指定した料金プラン契約者のみアクセス可(下述) VIP ルーム等の上位プラン限定

DM ルームの固有仕様

  • DM 相手は 1 名固定。複数者 DM は未サポート(講師陣は全員が受信側に含まれる、./notification.md 参照)
  • 編集画面が通常チャンネルとは別(DM 専用画面)
  • DM ルームの通知ターゲットはルーム作成時の通知設定に関わらず仕様として「DM 相手 + メイン講師 + サブ講師」に固定される(./notification.md 参照)
  • 作成後の設定変更はできない。DM 編集画面で可能な操作は「アーカイブ」「アーカイブ復旧」「削除」のみで、ルーム名・説明・公開 / 非公開・デフォルト通知設定などチャンネルの設定項目は存在しない
  • DM のルーム名は作成時に「DM: {受講者名}」で自動設定され、以後変更できない

制限プラン(料金プラン別アクセス制御)

特定の料金プラン契約者のみアクセス可能なルームを作る仕組み。

  • 講師がルーム作成・更新時に「この料金プランに入っている受講者のみアクセス可」という形で複数の料金プランを指定
  • 受講者がアクセス権を得るには、指定された料金プランのいずれかに契約している必要がある
  • 講師は制限プランに関わらず常にアクセス可
  • 設定した料金プランが後から削除された場合、ルーム側の紐付きは残る(孤児状態)が、該当契約がないため実質的にアクセス不可になる

チャンネルのカテゴリー所属(v2.31.0 で追加)

チャンネル作成・編集時にカテゴリーを指定できる。詳細は ./category.md 参照。

  • カテゴリーを指定しない(未選択)チャンネルは固定カテゴリー「チャンネル」に表示される
  • カテゴリー所属は同一講座内のカテゴリーのみ指定可(他講座のカテゴリー ID を渡しても拒否される)
  • 削除済みカテゴリー ID を持つチャンネルは固定カテゴリー「チャンネル」へフォールバック表示される(孤児化抑止)
  • DM ルームはカテゴリー所属の対象外(受講者の左ペインで最上部固定の専用枠に常駐)

ルーム数の上限

講座ごとに以下の上限が定められている:

  • チャンネル最大 50 個(アクティブ)
  • DM 最大 10,000 個(アクティブ)
  • アーカイブ最大 2,450 個(チャンネル + DM 合算)
  • 総数(上記すべて合算)最大 12,500 個

アーカイブされたルームを通常状態に戻すとき、該当するアクティブ上限(チャンネルなら 50、DM なら 10,000)に既に達している場合は復帰できない(エラーメッセージが表示される)。

エッジケース

  • 非公開ルームに投稿: 可能だが、通知は発火しない(./notification.md 参照)
  • 非公開 → 公開: 公開前の投稿も含めて一括で受講者に可視化される(公開時刻のマーキングはない)
  • 過去トーク制限と非公開の併用: 公開ルームでのみ設定可能(無料公開ルームでは設定不可の UI 制約あり)
  • 制限プラン指定中に料金プラン自体が削除: ルームの制限プラン紐付けは残るが、契約情報が消えるため実質的にアクセス者がいなくなる
  • ルーム名の重複: 同一講座内で重複が許可される(重複禁止の制約なし)。UI 上は運用で注意する想定だが、誤って同名ルームを複数作ることが可能

admin 操作

できる操作

該当なし。ルーム管理(作成・更新・削除・並び順)に対する運営アドミン専用の運用操作は現状ない。

実装されていない

  • 運営アドミンによるルームの代理作成・更新・削除・復旧: 現状、運営アドミン専用の操作経路は存在しない。ルーム管理は該当講座のメイン講師またはサブ講師に依頼する必要がある — 今後の改善課題(CS 対応上の必要性があれば)
  • 削除済みルームの復旧機能: 論理削除のためデータは残っているが、復旧の経路がない

品質 / 約束事項

応答性

  • ルーム作成 / 更新 / 削除は同期処理で、操作結果は即時返る
  • 受講者側の画面への反映タイミングは操作内容で異なる:
    • 新規投稿の到着: 受講者がルーム一覧を開いていると、新しい投稿はリアルタイムで表示される(最新投稿の変化を常時監視しているため)
    • ルーム作成 / ルーム設定変更 / 削除 / 並び順変更: 受講者側は次に一覧を開き直した時点で反映される(リアルタイム通知の対象外)

制限値

  • チャンネル名: 全角 1〜20 文字
  • チャンネル概要: 全角 50 文字まで(UI 制約)
  • DM のルーム名: 作成時に自動生成で固定(変更不可)
  • DM 相手: 1 名(複数不可)
  • 講座ごとのチャンネル数上限: 50(アクティブ)
  • 講座ごとの DM 数上限: 10,000(アクティブ)
  • 講座ごとのアーカイブ数上限: 2,450
  • 講座ごとの総ルーム数上限: 12,500

データ保持

  • 削除後も内部的にはデータが残るが、ユーザー操作での復旧手段はないため実質的に再利用不可
  • アーカイブは削除とは別扱いで、講師の復帰操作で通常状態に戻せる

信頼性

  • 変更は内部に永続化される(2 系統の保存先に同期)
  • 不整合発生時は運営アドミン向けツール経由で Firestore 同期をリカバリ可能(トーク単位、./notification.md 参照)

変更履歴(リリースノート候補)

v2.31.0: 2026-05-01

  • [追加] チャンネル作成・編集時にカテゴリーを指定できるように追加(FIN-282 / FIN-286)。詳細は ./category.md 参照

v2.29.2: 2026-04-24(PSD 初版)

  • [PSD 追加] 本ドキュメント初版作成。v2.29.2 時点の実装を起こし。機能追加・変更は含まない

関連ドキュメント


このページの内容を AI に質問しますか?
関連 spec を自動抽出して ChatGPT / Claude などに渡せます。
AI Prompt で開く →