| @@ -1,7 +1,7 @@ | |||
| --- | |||
| title: 'BTRC Hub 現行仕様書' | |||
| subtitle: '最新ソーススナップショット(btrc-hub-feature_297.zip)ベース' | |||
| date: '2026-03-22' | |||
| title: 'BTRC Hub 仕様書' | |||
| subtitle: '現行仕様と計画仕様の統合版(2026-03-23)' | |||
| date: '2026-03-23' | |||
| lang: ja-JP | |||
| toc: true | |||
| toc-depth: 2 | |||
| @@ -24,20 +24,42 @@ header-includes: | |||
| # 本書の位置づけ | |||
| 本書は、**最新ソーススナップショット btrc-hub-feature_297.zip** を起点に、BTRC Hub の現行仕様を再構成したものである。主に参照したのは次の 4 系統である。 | |||
| 本書は、**最新ソーススナップショット btrc-hub-feature_297.zip** を起点に、BTRC Hub の現行仕様を再構成したうえで、開発者ヒアリングによって得られた **未実装だが今後仕様書へ載せるべき内容** を統合したものである。 | |||
| 本書の役割は 2 つある。 | |||
| 1. **現行仕様の説明書** | |||
| 実際にコードへ存在する API・画面・永続データ・制約を整理する。 | |||
| 2. **計画仕様の設計書** | |||
| 一般公開に向けて実装予定の機能、公開段階、運用方針、未確定論点を明文化する。 | |||
| 参照元は次の 5 系統である。 | |||
| 1. バックエンド実装(Rails 8 API) | |||
| 2. フロントエンド実装(React + Vite) | |||
| 3. db/schema.rb | |||
| 4. 既存仕様書 BTRC_Hub_現行仕様書_2026-03-08.md | |||
| 4. 既存仕様書 BTRC_Hub_現行仕様書_2026-03-22.md | |||
| 5. 2026-03-23 時点の開発者ヒアリング結果 | |||
| 情報の優先順位は明確である。 | |||
| - **第 1 優先**: 現在のソースコードと db/schema.rb | |||
| - **第 2 優先**: フロントエンドの画面実装とルーティング | |||
| - **第 3 優先**: 既存仕様書の文脈整理 | |||
| - **第 3 優先**: 開発者が明示した計画仕様 | |||
| - **第 4 優先**: 既存仕様書の文脈整理 | |||
| したがって本書では、記述を次の 3 種に分ける。 | |||
| | 表記 | 意味 | | |||
| | --- | --- | | |||
| | 現行仕様 | 現在のコードとスキーマで確認できるもの | | |||
| | 計画仕様(確定) | 実装は未了だが、方針として採用済のもの | | |||
| | 計画仕様(未確定) | 方向性はあるが、具体形が今後詰まるもの | | |||
| この区別を曖昧にすると、「実装済み」と「願望」が混ざって腐る。 | |||
| 本書はそこを分離し、**開発・公開判断・将来の実装順序づけ** に耐える文書とする。 | |||
| したがって本書は、「こうしたい」ではなく **現にコードがそうなっているか** を基準に書いている。過去の設計メモや backlog は、現行仕様の証拠には使っていない。 | |||
| # システム概要 | |||
| @@ -956,7 +978,7 @@ wiki:migrate は Gollum 形式の旧 Wiki を DB 版管理へ移行するタス | |||
| nico:sync は外部 DB からニコニコ動画情報を引き込み、投稿・ニコタグ・内部タグ連携を更新する中核バッチである。 | |||
| # 非機能要件と既知のギャップ | |||
| # 非機能要件・既知のギャップ・計画への接続 | |||
| ## 整合性・監査性 | |||
| @@ -1034,6 +1056,336 @@ BTRC Hub は、表面上は「タグ付きリンク集」だが、内部実装 | |||
| 要するに現行 BTRC Hub の正体は、**リンク集 UI を持つタグ・Wiki・外部同期・共同視聴の複合基盤** である。 | |||
| # 計画仕様 | |||
| 本章は、現行コードにはまだ全面反映されていないが、今後の BTRC Hub にとって重要な仕様をまとめる。 | |||
| 公開判断や実装優先度を考える際は、現行仕様だけでなく本章を合わせて参照する。 | |||
| ## 公開方針 | |||
| ### 公開段階 | |||
| BTRC Hub の公開は一気に完全一般公開へ進めるのではなく、段階的に引き上げる。 | |||
| | 段階 | 意味 | 想定時期 | | |||
| | --- | --- | --- | | |||
| | 第 3 段階 | 誰でも閲覧可、投稿・編集は申請制 | 初回一般公開 | | |||
| | 第 4 段階 | 履歴管理・差し戻し・BAN 運用が整った後、閲覧中心以外の開放範囲を拡張 | 将来 | | |||
| 計画仕様(確定)として、**初回一般公開は第 3 段階** を前提とする。 | |||
| いきなり広く編集を開けるのではなく、履歴管理と運用装備が整ってから第 4 段階へ進む。 | |||
| ### 公開時の主役 | |||
| BTRC Hub が一般公開時に前面へ出す主役は **タグ整理基盤** である。 | |||
| 投稿・Wiki・ニコニコ連携・上映会はその周辺機能ではあるが、中心価値は「タグを軸にコンテンツと知識を整理し、再発見しやすくすること」に置く。 | |||
| ### 公開前に必須とするもの | |||
| 開発者ヒアリング時点で、一般公開前に必要と認識されている主要項目は次である。 | |||
| - 利用規約 | |||
| - プライバシーポリシー | |||
| - 御意見番 | |||
| - banned user / banned IP の強制適用 | |||
| - 管理画面 | |||
| - Wiki 本文検索 | |||
| - Wiki の事前整備 | |||
| - タグ別名管理 UI | |||
| - タグ別名解除 UI | |||
| - 履歴管理の表示・差し戻し | |||
| - お遊び機能としてのアキネータ風機能 | |||
| このうち、利用規約・プライバシーポリシー・BAN・管理画面・履歴管理は、公開後の運用破綻を防ぐための最低装備である。 | |||
| ## 運営・モデレーション計画 | |||
| ### 御意見番 | |||
| 計画仕様(確定)として、**御意見番** という意見送信機能を用意する。これは単なるお問い合わせフォームではなく、次を自動添付できることを目標とする。 | |||
| - 直前の操作ログ | |||
| - 画面スクリーンショット | |||
| - 必要に応じた環境情報 | |||
| 狙いは、バグ報告・使い勝手の不満・誤操作報告を、再現に使える材料つきで受け取ることにある。 | |||
| 一般公開後の保守効率へ直結するため、通常の問い合わせ導線より重要度が高い。 | |||
| ### BAN と差し戻し | |||
| 計画仕様(確定)として、次の管理系操作を整備する。 | |||
| - ユーザ BAN | |||
| - IP BAN | |||
| - 投稿削除 | |||
| - Wiki 等の差し戻し | |||
| - 履歴表示からの復元導線 | |||
| guest の権限は初期公開時点では閲覧のみとするが、履歴管理と BAN 運用が十分に整った後は、限定的な編集権限を与える余地を残す。 | |||
| ### 管理画面 | |||
| 計画仕様(確定)として、少なくとも次を扱える管理画面を整備する。 | |||
| - BAN の付与と解除 | |||
| - 問題投稿・問題編集の確認 | |||
| - 履歴閲覧と差し戻し | |||
| - タグ別名・サニタイズ規則の管理 | |||
| - 送信された御意見番の確認 | |||
| ## 履歴管理・監査性の拡張 | |||
| 現行実装でも post_tags と wiki_revisions を中心とした履歴基盤は存在する。 | |||
| 今後はこれを、内部保持だけでなく **公開サービスとして使える履歴機能** に引き上げる。 | |||
| ### 対象 | |||
| 計画仕様(確定)として、次の履歴を重視する。 | |||
| - タグ記載履歴 | |||
| - 投稿情報の変更履歴 | |||
| - 変更者の表示 | |||
| - 差分表示 | |||
| - 版ごとの復元 | |||
| Wiki については版管理が既に中核であるため、表示・差し戻し・競合検出が整って初めて一般公開に耐える。 | |||
| ### 公開段階との関係 | |||
| 第 4 段階へ移る条件の一つは、履歴が「保存されている」だけでなく、**閲覧・追跡・差し戻しが運用できる水準** に達することである。 | |||
| ## Wiki 計画仕様 | |||
| ### 位置づけ | |||
| Wiki はタグへの説明を蓄積する知識基盤である。 | |||
| 「主要タグに説明が付いていること」がタグ整理基盤としての説得力を決める。 | |||
| ### 主要ページ整備方針 | |||
| 開発者ヒアリングでは、主要タグに対して **約 5000 ページ規模** の説明ページが最終的に必要とされている。 | |||
| これは「公開前に必ず 5000 ページ作る」という意味ではなく、**主要タグ群をカバーするための目標規模** と位置づける。 | |||
| 計画仕様(確定)として、 | |||
| - 主な対象は **タグへの説明ページ** | |||
| - 主要タグが概ね 5000 程度存在する想定 | |||
| - 初期整備は手作業で行う | |||
| - 1 ページの最小要件は **1 行説明でもよい** | |||
| とする。 | |||
| したがって、量よりもまず「主要導線上のタグに最低限の説明がある」状態を目指す。 | |||
| ### リダイレクトと別名の関係 | |||
| 計画仕様(確定)として、Wiki のリダイレクトは **タグ別名機能をリダイレクトとして使う** 方向で整理する。履歴の主たる管理責任は `tag_names` 側に置く。 | |||
| この方針により、少なくとも次の整合が期待される。 | |||
| - タグ別名検索と Wiki 参照先の連動 | |||
| - 別名から正規名ページへの自然な到達 | |||
| - 履歴の責務を Wiki 側へ分散させないこと | |||
| ### Wiki の追加実装項目 | |||
| 計画仕様(確定)として、次を重点実装対象とする。 | |||
| - 本文検索 | |||
| - 版の巻き戻し | |||
| - 競合検出 | |||
| - 下書き保存 | |||
| - 画像埋め込み | |||
| 画像埋め込みは、単なるMarkdown拡張ではなく、説明ページの情報密度と可読性を上げるための要件である。 | |||
| ## タグ機能の計画仕様 | |||
| ### 別名管理 | |||
| 計画仕様(確定)として、タグ別名について少なくとも次を実現する。 | |||
| - 別名の作成 | |||
| - 別名の解除 | |||
| - 別名を含む検索 | |||
| - Wiki 参照先の連動 | |||
| - 別名からの参照解決の連動 | |||
| ここでいう「Wiki 連動」は、単にタグ詳細にリンクを出すだけではなく、別名経由で参照しても正規の説明へ辿り着けることを意味する。 | |||
| ### タグ詳細ページの位置づけ | |||
| タグ詳細ページについては、現時点で **「そもそも詳細ページが必須か」自体が再検討事項** である。 | |||
| 現行には `/tags/:id` が存在するが、将来設計では次のどちらを主にするかは未確定である。 | |||
| - タグ詳細ページを知識・管理の中心に育てる | |||
| - Wiki ページを実質的な詳細ページとして扱う | |||
| よって、タグ詳細ページの最終的な責務は **計画仕様(未確定)** とする。 | |||
| ### タグ名サニタイズ | |||
| tag_name_sanitisation_rules は基本的に内部運用向け機能とする。 | |||
| 計画仕様(確定)として、サニタイズ規則の操作は **鯖缶専用** の管理経路で行う。 | |||
| 想定用途は次である。 | |||
| - ルール変更時に一括適用する | |||
| - 命名揺れの整理を管理側で行う | |||
| - 一般ユーザへ細かいルールを露出しすぎない | |||
| ## 投稿・検索の計画仕様 | |||
| ### 投稿詳細 | |||
| 投稿詳細ページでは、今後も次を重視する。 | |||
| - 埋め込み | |||
| - 関聯タグ | |||
| - 履歴 | |||
| - ブックマーク | |||
| 特に履歴は、「投稿にどのタグがどのように付け替えられたか」を追えるようにする意味で重要である。 | |||
| ### 検索 | |||
| 開発者ヒアリング時点で、検索の最重要追加項目は **Wiki 本文検索** である。 | |||
| 他の検索拡張もありうるが、本仕様書では本文検索を最優先の計画仕様として扱う。 | |||
| ### 閲覧済・マイリスト | |||
| 閲覧済フラグは将来的にも重要だが、そのまま独立機能として肥大化させるか、**マイリスト機能と統合するか** は未確定である。 | |||
| したがって閲覧済管理の最終形は **計画仕様(未確定)** とする。 | |||
| ## 上映会(Theatre)の計画仕様 | |||
| ### 位置づけ | |||
| 一般公開時の上映会は **実験機能** と位置づける。 | |||
| サイトの看板機能として押し出すのではなく、タグ整理基盤の周辺にある遊び・共同視聴機能として扱う。 | |||
| ### 必要機能 | |||
| 計画仕様(確定)として、次を将来的に整備する。 | |||
| - 会場一覧 | |||
| - 会場作成 | |||
| - 会場編集 | |||
| - 複数会場 | |||
| - チャット | |||
| - 誰かが見ている通知 | |||
| 「誰かが見ている通知」は上映会だけでなく、サイト全体の通知機能の一部として発展する余地がある。 | |||
| ### マイリストとの関係 | |||
| 上映会は、以前から構想されている **マイリストをみんなでリアルタイム視聴する機能** の延長線上にある。 | |||
| したがって、今後の Theatre は単独の会場機能というより、マイリストと連動するウォッチパーティ基盤へ寄る可能性が高い。 | |||
| ## 権限・公開範囲の計画仕様 | |||
| ### ロール | |||
| 現行どおり `guest / member / admin` の 3 ロールを基本とする。 | |||
| moderator 等の中間ロールは、現時点では採用済み方針ではない。 | |||
| ### guest の扱い | |||
| 計画仕様(確定)として、初回一般公開時の guest は閲覧のみである。 | |||
| ただし、履歴機能と BAN が十分に整った場合には、guest でも一部編集を認める余地を残す。 | |||
| ## 法務・ポリシー文書 | |||
| ### 利用規約 | |||
| 計画仕様(確定)として、利用規約には少なくとも次を含める。 | |||
| - 禁止コンテンツ | |||
| - 著作権侵害禁止 | |||
| - 外部リンク先の扱い | |||
| - 埋め込みの扱い | |||
| - ユーザ生成コンテンツの責任 | |||
| - アカウント停止条件 | |||
| - データ削除方針 | |||
| - 免責 | |||
| - 未成年配慮 | |||
| - 準拠法 / 管轄 | |||
| ### プライバシーポリシー | |||
| 計画仕様(確定)として、プライバシーポリシーでは少なくとも次を収集情報として明示する。 | |||
| - IP アドレス | |||
| - 引継ぎコード | |||
| - Cookie / localStorage | |||
| - 編集履歴 | |||
| - アクセスログ | |||
| - 外部埋め込み先との通信 | |||
| - お問い合わせ内容 | |||
| ## 外部連携の計画仕様 | |||
| ### 優先する埋め込み先 | |||
| 計画仕様(確定)として、今後の埋め込み対応優先順は次のとおりとする。 | |||
| 1. ニコニコ | |||
| 2. YouTube | |||
| 3. Pixiv | |||
| 4. ニジカ投稿局 | |||
| 5. Twitter | |||
| 6. Bluesky | |||
| 7. その他 | |||
| ### preview API | |||
| preview API は、**今の便利さを保ったまま安全化する** ことを目標とする。 | |||
| したがって、単純な停止ではなく、利便性をできるだけ落とさない安全化が望まれる。 | |||
| ## 設定機能の計画仕様 | |||
| 計画仕様(確定)として、設定機能では次のようなユーザ別カスタマイズを扱う想定である。 | |||
| - テーマ | |||
| - タグカテゴリごとの色設定 | |||
| - ミュートタグ | |||
| - 非表示タグ | |||
| - 埋め込み自動再生の可否 | |||
| タグカテゴリ色設定は、現状ハードコードされている色をユーザごとに調整できるようにする意図を持つ。 | |||
| ## 通知機能 | |||
| 通知機能の必要性自体は認識されているが、具体的に何をどの粒度で通知するかは **未定** である。 | |||
| 上映会の在席通知や「誰かが見ている」通知と結びつく可能性があるため、将来の横断基盤として検討する。 | |||
| ## スマートフォン対応 | |||
| 計画仕様(確定)として、スマートフォン環境でも **PC 同等の快適さ** を要求する。 | |||
| 単に閲覧できるだけでは足りず、主要な投稿・編集・検索操作が実用的である必要がある。 | |||
| ## お遊び機能 | |||
| 開発者ヒアリングでは、一般公開前の必須候補として **アキネータ風のお遊び機能** が挙げられている。 | |||
| これは中核機能ではないが、公開時の導入体験や話題性に寄与する可能性がある。 | |||
| ただし、仕様詳細はまだ固まっていないため、現時点では **計画仕様(未確定)** とする。 | |||
| ## 計画仕様の要約 | |||
| 現行 BTRC Hub は「タグ付きリンク集 UI を持つ知識統合基盤」だが、計画仕様まで含めると、その目標像はもう少しはっきりする。 | |||
| - 主役はタグ整理基盤 | |||
| - Wiki は主要タグへ説明を付す知識基盤 | |||
| - 履歴管理は保存だけでなく表示・差し戻しまで含める | |||
| - 公開は申請制から始め、履歴と運営装備の成熟に応じて広げる | |||
| - 埋め込み、プレビュー、上映会、お遊び機能は基盤の上に乗る周辺価値である | |||
| したがって、BTRC Hub の将来像は単なるリンク集ではない。 | |||
| **タグ・Wiki・履歴・運営導線を中核に持つ、共同編集型の整理基盤** と捉えるのが最も正確である。 | |||
| # 付録 A: 現行 API 一覧 | |||
| ## 投稿系 | |||