Fincs

コンテンツ / ドキュメント

コンテンツ / ドキュメント

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

概要

ドキュメントは、講座の補助教材として PDF ファイルを配信するコンテンツ種別。講師がブラウザから PDF をアップロードして公開し、受講者は専用ビューアでブラウザ内プレビューできる。プラン側の設定でダウンロード可否を切り替えられ、ダウンロード許可プランでは受講者がローカル保存、許可外プランでは閲覧のみに制限される。講師は常時ダウンロード可能。

主な利用想定は、講座テキスト・補助資料・チェックリスト等の配信。動画(./movie.md)や記事(./article.md)と同じくコンテンツタブから提供され、公開範囲(一般公開 / 受講者限定 / プラン限定)と入会後 X 日制限の組み合わせで提供範囲を制御できる。アップロード時に PDF の総ページ数が自動的に算出され、一覧やコンテンツ詳細でページ数情報として利用される。

📝 レビュー観点(draft 段階の記述ヒント、完成時に削除):

  • 目的: 講座の補助教材として PDF ドキュメントを配信、ブラウザ内プレビュー + ダウンロード
  • 誰が使うか: 受講者・未受講者(公開設定次第)/ メイン講師・サブ講師(作成・編集)
  • どこで使うか: 講座コンテンツタブからドキュメント一覧 → 個別ドキュメント
  • 隣接機能との関係: 動画(./movie.md)/ 記事(./article.md)/ ライブラリ(./library.md
  • CS 問い合わせで頻発する論点: 「PDF が表示されない」「ダウンロードボタンが出ない」(プラン設定)「アップロードできない」
  • [本機能特有] FE/BE のサイズ制限大きく乖離: FE 5GB / BE 30MB(直 PUT 経路では BE 検証が効かない可能性)
  • [本機能特有] PDF 限定: アップロード可能形式は PDF のみ
  • [本機能特有] ダウンロード可否はプラン設定: 講座ごとに is_downloadable_document で切替、講師は常時可
  • [本機能特有] PDF 総ページ数を保持: アップロード時に自動計算

利用シナリオ

シナリオ 1: 講師が PDF をアップロードして公開する

メイン講師またはサブ講師が、講座のドキュメント配信作成画面から PDF ファイルを選択してアップロード。タイトル・サムネイル・公開範囲(一般公開 / 受講者限定 / プラン限定)・公開日時を設定して保存すると、PDF の総ページ数が自動算出され、コンテンツ一覧に並ぶ。公開後は受講者が一覧から開いて内容を確認できる。

シナリオ 2: 受講者がブラウザで PDF を確認する

受講者がコンテンツ一覧からドキュメントを選択すると、専用ビューアで PDF がブラウザ内に表示される。ページ送りやズームでブラウザを離れずに内容を確認できる。学習途中で受講完了をマークすると、受講履歴に反映される。

シナリオ 3: ダウンロード許可プランで PDF をローカル保存する

ダウンロードを許可しているプランでは、ドキュメント詳細画面にダウンロードボタンが表示される。受講者がボタンを押すと PDF がローカルにダウンロードされ、オフラインや印刷で利用できる。ダウンロードを許可していないプランでは、画面上に閲覧用ビューアのみ表示され、ダウンロードボタンは出ない。

シナリオ 4: ファイルを差し替える

公開済みドキュメントの内容を更新したい場合、講師が編集画面から PDF ファイルを差し替える。差し替え後はビューアの表示・ダウンロード対象ともに新しいファイルに切り替わり、総ページ数も自動的に再計算される。タイトルや公開範囲は維持されるため、URL や受講履歴に影響しない。

よくある失敗ケース

  • PDF 以外のファイル選択: 拡張子が .pdf でないファイルはアップロード前に弾かれ、エラー表示
  • サイズ超過: 上限を超えるファイルはアップロード前に弾かれる
  • 破損 PDF: 総ページ数の自動算出に失敗するケースあり、運営アドミンの一括再計算機能で補修可能

権限別仕様

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

講座権限軸

閲覧

操作 未受講者 受講者 サブ講師 メイン講師
ドキュメント閲覧(一般公開)
ドキュメント閲覧(受講者限定) ×
ドキュメント閲覧(プラン限定) × ○(指定プラン契約者のみ)
ダウンロード × ○(プラン設定 ON 時のみ) ○(常時可) ○(常時可)

作成・編集

操作 未受講者 受講者 サブ講師 メイン講師
ドキュメントアップロード × ×
メタ情報編集 × ×
ファイル差し替え × ×

横断軸

操作 運営アドミン テストユーザー 投稿禁止
ドキュメント閲覧 (通常と同じ) (通常と同じ) (通常と同じ)
ドキュメント削除 ○(運営アドミン専用機能) × ×
ダウンロード可否プラン設定の切替 ○(運営アドミン専用機能) × ×
PDF 総ページ数の一括再計算 ○(運営アドミン専用機能) × ×

📝 レビュー観点:

  • ダウンロード可否のプラン設定(is_downloadable_document)の運用フロー
  • 講師は常にダウンロード可、受講者はプラン設定次第

機能詳細(ふるまい)

PDF アップロード

  • 対応形式: PDF のみ(拡張子 .pdf
  • アップロード経路: 講師がブラウザから直接ファイルを選択 → 内部でストレージへ直接送信し、画面側で進捗表示
  • 総ページ数の自動算出: アップロード完了後、PDF を解析してページ数を自動的に保存。コンテンツ一覧や詳細でページ数情報として表示される
  • 入力チェック: 拡張子が PDF でない場合、サイズ超過の場合は送信前にエラー表示

ブラウザプレビュー

  • 専用ビューアで PDF をブラウザ内表示し、受講者はページ送り・拡大縮小で内容を確認できる
  • 別アプリやブラウザ外ダウンロードを経由せずに閲覧でき、ダウンロード不可プランでも内容確認は可能

ダウンロード

  • 講師(メイン / サブ): 常時ダウンロード可
  • 受講者: 講座のプラン設定でドキュメントダウンロードが許可されている場合のみ可。許可されていない場合は画面上にダウンロードボタンが表示されない
  • ダウンロード手段: 一時的に有効な保存先 URL を発行する方式(24 時間で失効)。期限切れ後は再度ダウンロード操作が必要
  • プラン設定の切替: 講座のプラン設定画面で、ドキュメントダウンロード可否を切り替え可能。切替は即時反映

公開範囲

公開範囲は 3 軸の組み合わせで制御:

  • 公開設定: 一般公開(未受講者を含め誰でも閲覧可)/ 受講者限定(その講座の受講者のみ)
  • プラン限定: 特定プラン契約者のみに限定(記事・動画と同様の仕組み)
  • 入会後 X 日制限: 受講開始から N 日経過後に閲覧可能とする時限公開
  • 公開日時予約: 指定日時に自動公開

ファイル差し替え

  • 公開済みドキュメントの編集画面から PDF を差し替え可能
  • 差し替え後、ビューア表示・ダウンロード対象ともに新ファイルに切り替わる
  • 総ページ数は新ファイルに合わせて自動的に再計算される
  • タイトル・公開範囲・受講履歴・コンテンツ識別子は維持されるため、URL は変わらず、既存の受講者の閲覧履歴に影響しない
  • 旧ファイルは内部で論理的に切り離される

📝 レビュー観点:

  • 入力 → 処理 → 出力: PDF アップロード → 総ページ数計算 → メタ情報登録
  • エッジケース: 破損 PDF、ページ数 0 PDF、サイズ超過、PDF 以外のファイル試行
  • エラー表示: 形式エラー、サイズエラー、アップロード失敗
  • 編集・削除の挙動: ファイル差し替え時の旧ファイル削除、削除後の閲覧不可化
  • [本機能特有] FE/BE サイズ制限の乖離: dev 下段の改善課題で記録

admin 操作

できる操作

  • ドキュメント削除: 運営アドミン専用機能で対応
  • 無料公開フラグ切替: 受講者限定 ↔ 一般公開
  • ダウンロード可否プラン設定の切替: 運営アドミン代理操作
  • PDF 総ページ数の一括再計算: バッチ的な補修機能

詳細は ../admin/contents.md 参照。

実装されていない / 不明

  • 運営アドミンによるドキュメント代理編集: 専用経路なし

📝 レビュー観点:

  • 不適切ドキュメントの強制非公開化の運用フロー

品質 / 約束事項

  • 応答性: アップロードは外部直 PUT、プレビューは PDF レンダリング即時
  • 信頼性: ファイルは Wasabi 優先・S3 フォールバック
  • 制限値:
    • アップロード上限: 1 ファイルあたり 5GB(画面表示の上限値。実運用は数 MB〜数十 MB が中心)
    • 対応形式: PDF のみ
    • ダウンロード署名付き URL 有効期限: 24 時間
  • データ保持: 削除は論理削除、ファイル本体は当面保持

📝 レビュー観点:

  • 応答性: 大容量 PDF(数百ページ)のプレビュー時間
  • [本機能特有] FE/BE 上限の乖離: 実質ユーザーに適用される値の確定(dev 改善課題)

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

v2.29.2: 2026-05-01(PSD 初版)

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

📝 レビュー観点:

  • 過去の主要変更(ダウンロード可否プラン設定追加 / 総ページ数取得追加 等)

関連ドキュメント


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