トーク投稿
トーク投稿
本ページは 2 段構成。上段が biz/CS 向け(ユーザー提示可)、下段(
## 🔧 実装詳細以降)が dev 向け。biz/CS がユーザーへ提示・転用してよいのは上段のみ。
概要
講座のトークルーム(チャンネル / DM)に、受講者・講師が投稿する機能。投稿は 4 種類:
- テキスト投稿: メッセージ本文(最大 5,000 文字)
- PDF 投稿: PDF ファイル + 任意のキャプション
- 画像投稿: 画像ファイル(最大 20MB)+ サムネイル + 任意のキャプション
- 動画投稿: 動画ファイル(最大 100MB)+ サムネイル + 任意のキャプション
各投稿には以下の付加情報を付けられる:
- 返信: 既存の投稿への返信を 1 件指定(投稿はチャンネル本流に流れる)
- スレッド: 特定の親投稿配下に作られたメッセージ群への投稿(デフォルトでスレッド内のみ表示、本流からは見えない)
- メンション: 特定ユーザーを名指しする(詳細は
./mention.md予定)
投稿後は テキスト本文 / キャプションのみ編集可能 で、ファイル本体は差し替えできない(差し替えしたい場合は削除して再投稿)。削除は 自分の投稿 に対しては誰でも可能、他人の投稿 は講師(メイン・サブ)のみ削除できる。
投稿に伴う通知配信は ./notification.md 参照。投稿時の権限・ルーム設定の影響は ./room.md と本ページの「権限別仕様」を併読。
利用シナリオ
シナリオ 1: 受講者が質問を投稿
受講者が講座の Q&A チャンネルにテキスト投稿で質問を書き込む。投稿後、講座の他の受講者・講師にプッシュ通知が届く。
シナリオ 2: 講師が資料 PDF を共有
メイン講師が講義資料の PDF をチャンネルに投稿。ファイルアップロード → 投稿 の 2 段階で処理が走り、受講者は PDF をダウンロード可能になる。
シナリオ 3: 受講者が演習結果の画像を投稿
受講者が演習結果のスクショ画像を投稿。サムネイルが生成され一覧で確認しやすくなる。
シナリオ 4: スレッドでの議論
既存の親投稿に対してスレッド指定で返信を投稿。スレッド内の参加者・親投稿者に通知が届く(./thread.md 予定参照)。
シナリオ 5: 誤投稿の編集・削除
自分の投稿の誤字を編集(テキスト部分のみ)、または投稿そのものを削除。削除しても受講者・講師の一覧から消えるが、内部的にはデータが残るため運営側で確認可能。
シナリオ 6: 講師による不適切投稿の削除
メイン講師またはサブ講師が、受講者の不適切投稿を削除する。削除は論理削除で、内部的にはデータが残る。
権限別仕様
権限定義は ../../user-roles.md、用語は ../../terminology.md 参照。
ルーム設定(講師限定投稿・スレッド限定投稿・アーカイブ・公開状態)に依存する挙動は ./room.md も併読。
講座権限軸
投稿(テキスト / PDF / 画像 / 動画 共通)
| 操作 | 未受講者 | 受講者 | サブ講師 | メイン講師 |
|---|---|---|---|---|
| 通常ルームへの投稿 | × | ○(※1) | ○ | ○ |
| 講師限定投稿ルームへの投稿 | × | × | ○ | ○ |
| スレッド限定投稿ルーム(スレッド外)への投稿 | × | × | ○ | ○ |
| スレッド限定投稿ルーム(スレッド内)への投稿 | × | ○ | ○ | ○ |
| アーカイブ済みルームへの投稿 | × | × | × | × |
- ※1: 投稿禁止フラグ(横断軸参照)が立っているユーザーは投稿不可(アクセス拒否エラー)
編集(自分の投稿のみ、テキスト部分のみ)
| 操作 | 未受講者 | 受講者 | サブ講師 | メイン講師 |
|---|---|---|---|---|
| 自分の投稿のテキスト編集 | × | ○ | ○ | ○ |
| 他人の投稿の編集 | × | × | × | × |
| ファイル本体の差し替え | × | × | × | × |
| アーカイブ済みルーム内の編集 | × | × | × | × |
削除
| 操作 | 未受講者 | 受講者 | サブ講師 | メイン講師 |
|---|---|---|---|---|
| 自分の投稿削除 | × | ○ | ○ | ○ |
| 他人の投稿削除 | × | × | ○(※2) | ○(※2) |
| アーカイブ済みルーム内の削除 | × | × | × | × |
- ※2: 講師は自分の講座内の他ユーザー投稿を削除可能。サブ講師ケースの実挙動は テストで固定する作業を FIN-422 で追跡中
横断軸
| 操作 | 運営アドミン | テストユーザー | 投稿禁止 |
|---|---|---|---|
| 投稿全般 | ×(運営アドミン経由の管理操作のみ、直接投稿権限なし) | (通常と同じ) | × |
| 編集 | × | (通常と同じ) | × |
| 削除 | ×(自分の操作で代理削除する経路はない、要運営アドミン改善) | (通常と同じ) | × |
投稿禁止フラグの影響: 立っているユーザーは投稿の入口でアクセス拒否される。編集・削除は自分の投稿に対しても不可。受信側(閲覧)には影響しない。
機能詳細(ふるまい)
テキスト投稿
- 本文は 最大 5,000 文字 まで
- 必須項目(本文)。空白のみは不可
- 任意で 返信指定 / スレッド指定 / メンション を付加できる
- 投稿成功後、配信対象ユーザーに非同期でプッシュ通知(
./notification.md)
PDF 投稿
- ファイル本体(PDF)+ 任意のキャプションを投稿
- ファイルサイズ上限: 20MB
- 受講者は投稿された PDF を一覧から開いてダウンロード可能(ダウンロード用の一時 URL は 24 時間有効)
画像投稿
- ファイル本体(画像)+ サムネイル + 任意のキャプション
- ファイルサイズ上限: 20MB
- アップロード時に FE 側でサムネイルを自動生成して送信、一覧表示はサムネイルが使われる
動画投稿
- ファイル本体(動画)+ サムネイル + 任意のキャプション
- ファイルサイズ上限: 100MB
- 動画は専用の保存先に格納される(一般的なファイルとは別の経路)
ファイル投稿の流れ(biz 視点)
ファイル投稿(PDF / 画像 / 動画)は以下の 2 段階で処理が走る:
- アップロード用 URL の取得 → 取得した一時 URL に直接ファイル本体をアップロード
- 投稿登録 → アップロード完了後、ファイルの参照キーを送って投稿レコードを作成
この間に通信エラーが起きると、ファイルだけアップロードされて投稿が成立しないケースがありえる。残ったファイルの自動削除はないため、運用上は気にならないが、ストレージに孤立ファイルが残る可能性はある。
投稿の付加情報
返信指定
特定の既存投稿への返信を 1 件指定。返信元投稿は同一ルーム内かつ削除済みでないことが必要。返信元の投稿者には自動的にメンション通知が飛ぶ。返信付き投稿はチャンネル本流に流れる。
スレッド指定
特定の親投稿の配下に作られたスレッド(メッセージ群)への投稿。スレッド限定投稿ルームでの受講者投稿は、スレッド指定が必須となる。詳細は ./thread.md 予定参照。
返信とスレッドは別物:
- 返信: 任意の既存投稿に対する 1 対 1 の返信。投稿自体はチャンネル本流に表示される
- スレッド: 親投稿配下にぶら下がるメッセージ群。デフォルトではスレッド内のみ表示で、チャンネル本流には流れない
メンション
投稿テキスト内に特殊タグでユーザーを名指しできる。メンション対象には個別に通知が飛ぶ(メンション通知 ON の場合)。詳細は ./mention.md 予定参照。
スレッド投稿時の表示範囲フラグ(チャンネルにも表示)
スレッド内に投稿する際、デフォルトはスレッド内のみ表示(チャンネル本流には流れない)。投稿時にチェックボックス「チャンネルにも表示」を有効にすると、チャンネル本流にも同時表示される。本フラグはスレッド内投稿時のみユーザーが操作でき、スレッド外(チャンネル本流)の通常投稿には関係しない。スレッド内のみ表示の投稿は、ルーム購読者へのチャンネル通知対象からは除外される。
編集
- テキスト本文 / キャプションのみ編集可能(テキスト投稿は本文、ファイル投稿はキャプション部分)
- ファイル本体は編集できない(差し替え不可、必要なら削除して再投稿)
- 編集できるのは自分の投稿のみ(講師でも他人の投稿は編集不可)
- アーカイブ済みルーム内の投稿は編集不可
- 編集時に通知は再発火しない(
./notification.md参照) - 編集中にメンション対象を追加 / 削除できる(メンション差分の追跡)
- 編集後は編集日時が記録される(投稿の最終編集時刻として保持。FE 側で「編集済み」を表示するかは UI 仕様次第)
削除
- 論理削除: 削除扱いのフラグが立つだけで、内部的にはデータが残る(運営側は後から参照可能)
- 受講者・講師ともに 自分の投稿 は削除できる
- 講師(メイン・サブ)は自分の講座内の 他ユーザー投稿 も削除できる
- 削除種別が記録される: 「自己削除」(受講者 / 講師が自分の投稿を削除)と「講師削除」(講師が他人の投稿を削除)の 2 種類があり、運営側で識別可能。CS 対応で「誰が削除したか」の判別に使える
- アーカイブ済みルーム内の投稿は削除不可
- アナウンスに設定済みの投稿は、解除してから削除する流れになる
- スレッド親投稿が削除された場合、子のスレッド投稿は残るが「親が消えた」状態になる
- スレッド内の投稿が削除されると、親投稿の スレッド投稿数・参加者・最新日時 が自動的に再集計される
- 削除時に通知は発火しない(新規投稿時のみ)
ルーム設定との関係
ルーム設定によって投稿の挙動が制限される(詳細は ./room.md):
- 講師限定投稿ルーム: 受講者は投稿不可、講師のみ
- スレッド限定投稿ルーム: 受講者はスレッド外投稿不可、講師は例外でスレッド外も可
- 公開 / 非公開: 非公開ルームでは投稿はできるが通知は発火しない
- アーカイブ: 投稿・編集・削除すべて不可
admin 操作
できる操作
- トーク一覧閲覧(削除済み含む): 運営が内容確認・問題のある投稿の特定に使用
- トークアクセス管理情報の一括更新
- 画像サムネイルの再生成: ストレージ側でサムネイルが破損した時等のバッチ補修
- ルームの最新トーク情報の再計算: キャッシュ不整合の対応
- Firestore 側ユーザー情報の同期: 整合性メンテナンス
実装されていない / 不明(CS 判定に有用)
- 運営アドミン専用の投稿削除: 専用の操作経路は存在しない。運営が不適切投稿を削除するには講師に依頼するしかない — 今後の改善課題(CS 対応上の必要性あり)
- 削除済み投稿の復旧: ユーザー操作での復旧手段なし。論理削除なので内部的にはデータが残る
- 投稿の代理編集: 実装不在
品質 / 約束事項
応答性
- テキスト投稿・編集・削除は同期処理で、操作結果は即時返る
- ファイル投稿はアップロードと投稿の 2 段階で、アップロード時間はファイルサイズと回線速度に依存
- プッシュ通知は非同期で配信(数秒以内を想定、
./notification.md参照)
制限値
- テキスト本文: 最大 5,000 文字
- 画像 / PDF: 最大 20MB
- 動画: 最大 100MB
- 同時投稿可能ファイル数: 10 ファイルまで(一度の操作で)
- ファイル参照 URL の有効期限: 24 時間(期限切れ後は再取得が必要)
データ保持
- 削除は論理削除。内部的にはデータが残るため、運営は確認可能
- ファイル本体(PDF / 画像 / 動画)の自動削除はない(投稿レコード削除後もストレージにファイルは残る、要運用)
- 物理削除(完全削除)は当面非対応
信頼性
- 投稿時のデータ書き込みと検索基盤への同期の 2 経路で永続化
- 不整合発生時は運営アドミン経由で同期リカバリ可能
- ファイルアップロードと投稿登録の間で失敗した場合の自動クリーンアップは未実装(孤立ファイル発生の可能性)
変更履歴(リリースノート候補)
v2.29.2: 2026-04-25(PSD 初版)
- [PSD 追加] 本ドキュメント初版作成。v2.29.2 時点の実装を起こし。機能追加・変更は含まない
関連ドキュメント
- 権限定義:
../../user-roles.md - 用語辞書:
../../terminology.md - 関連 PSD:
./room.md(ルーム管理・設定),./notification.md(通知発火・対象決定),./announcement.md(アナウンス),./mention.md(メンション、未作成),./thread.md(スレッド、未作成)