Fincs

トーク投稿

トーク投稿

本ページは 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 段階で処理が走る:

  1. アップロード用 URL の取得 → 取得した一時 URL に直接ファイル本体をアップロード
  2. 投稿登録 → アップロード完了後、ファイルの参照キーを送って投稿レコードを作成

この間に通信エラーが起きると、ファイルだけアップロードされて投稿が成立しないケースがありえる。残ったファイルの自動削除はないため、運用上は気にならないが、ストレージに孤立ファイルが残る可能性はある。

投稿の付加情報

返信指定

特定の既存投稿への返信を 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 時点の実装を起こし。機能追加・変更は含まない

関連ドキュメント


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