機能カタログ 自動更新の仕組み 設計書

作成日: 2026-08-21 / 起案: 加藤 / 対象: 機能カタログ(75機能・14分類) ステータス: PM 確認待ち

1. 目的

本番リリース(master 更新)で機能が変わったとき、機能カタログが古いまま残らないよう自動で追従させる

2. 現状と課題

項目現状課題
カタログ実体 加藤の個人リポジトリ内(catalog.json ほか) 個人資産になっており、チームで見えない・引き継げない
公開ページ 加藤の個人 Cloudflare アカウントの Pages(ランダム URL・noindex) アカウント管理が個人依存
更新 手動(「更新して」と依頼したときだけ) リリースに気付かないと古いまま残る。基準コミットは 8/14 のまま

3. 論点: カタログを「個人資産」のままにするか「チーム資産」にするか

この選択で、置き場所・自動化の作り・費用・立ち上げ速度がすべて変わる。本設計書の最大の分岐点。

観点案A: チーム資産にする案B: 個人資産のまま
データ・スクリプトの置き場所 組織の専用リポ the-online-class/feature-catalog(新設・private) 加藤の個人リポ(現状のまま)
公開ページのホスティング オンクラスの Cloudflare アカウント(Git 連携で push = 自動デプロイ) 加藤の個人 Cloudflare(現状のまま)
リリース検知 GitHub Actions が毎朝チェックし、影響機能リスト付き Issue を自動起票。チームの誰でも見える 加藤のローカル環境が毎朝チェック。検知結果は加藤にしか見えない
カタログ更新(AI 再検証) 当面は加藤のローカルで半自動 → 安定後は組織用 Claude Code アカウントで CI 内全自動化(追加費用 0 円・§6) 加藤のローカルのみ。全自動化の受け皿がない
費用 検知まで 0 円。全自動化も組織用 Claude Code アカウントのサブスク内で 0 円運用可 0 円(Claude 定額プラン内)
立ち上げ速度 方針合意 1 回で即日開始できる(§7 権限調査のとおり技術的な障害はほぼ無い) 最速(誰の承認も不要)
属人性 チームで引き継げる。加藤の Mac・アカウント・稼働に依存しない形へ育てられる 加藤に完全依存(Mac が止まれば更新も止まる。退職・異動で資産ごと失われる)
起案者(加藤)の意見
チーム資産(案A)にすべきと考えている。カタログは検証・サポート業務のためのリファレンスであり、 個人のアカウントや稼働に依存させるべきものではない。本番のデプロイ先はどこでもよいが、 管理の主体はチーム側に置きたい。以降の章(§4〜)は案A を前提に詳細化している。

4. チーム資産案(案A)の骨子

  • 専用リポジトリを組織に新設the-online-class/feature-catalog(private・名称は仮)。カタログのデータ・生成スクリプト・自動化をここに集約する
  • 更新の手順(AI スキル)もリポに同梱 — データだけでなく「更新のやり方」自体をチーム資産にする。CI でも各メンバーのローカル Claude Code でも、同じスキルで同じ品質の更新が回る(加藤の個人環境固有の依存は切り離して移植する)
  • 製品リポ(online-class-api)には手を入れない — 検知はカタログリポ側から master を読み取り比較する方式(read-only)。製品側の開発フローに一切影響しない
  • ホスティングは Cloudflare Pages の Git 連携 — リポに push すると自動デプロイ。手動デプロイと完了確認が不要になる
  • PDF 出力は廃止 — 今後の利用予定がないため。閲覧は Web ページに一本化(Chrome 依存のビルドが消え、構成が軽くなる)
  • 段階投入 — 「チーム資産化」→「自動検知」→「更新の自動化」の順に、価値が出る単位で早く出す(§6)

実現方式の比較(チーム資産にする場合)

方式立ち上げ速度製品リポへの影響備考
専用リポ新設(本案) ○ 合意後すぐ○ 変更ゼロ(read-only) secrets・自動更新をカタログリポに閉じられる
製品モノレポに同居 △ PR レビュー・CI 審査が挟まる× 自動更新 PR や AI 用 secrets が製品リポに入る カタログ編集をチーム全員で回す段階になったら再検討

5. 全体像(案A の完成形の動き)

機械① リリース検知 毎朝、製品リポの master を取得し、カタログの基準コミットとの差分ファイル一覧を取る(AI 不使用)
機械② 影響判定(逆引き) カタログ全記述の根拠パス(file:line)から「ファイル→機能」逆引き表を作り、差分と突合して影響機能を特定
AI③ 再検証・更新 影響機能だけコードを読み直して記述を更新。根拠に無い新規ファイルは「新機能か」を判定して追加
自動④ 公開・報告 push すると Pages が自動デプロイ。何をどう変えたかのレポートを Issue に残す

①②は GitHub Actions(無料枠内・AI 不使用)で毎朝実行。差分ゼロなら即終了するため、コストはほぼゼロ。 ③は当面ローカル(Claude Code)での半自動運用から始め、軌道に乗ったら CI 内実行に育てる(§6 Phase 3)。

6. 段階投入プラン

Phase 1チーム資産化(作業目安: 半日)

  • 組織リポ the-online-class/feature-catalog を新設(private)
  • カタログ実体を移行: catalog.json(データ本体)/生成スクリプト/データ規約 README/検証証跡(claims)/マニュアル照合結果
  • 更新スキル一式(.claude/skills/feature-inventory)も移植して同梱 — 検証手順・データ規約を含む
  • Cloudflare Pages の Git 連携でこのリポを接続 → 以後 push だけで自動公開
  • PDF 関連(生成スクリプト・既存 PDF)は移行対象外として廃止

この時点で「チームのもの」という目的は達成。以降の自動化が止まっても資産は残る。

Phase 2リリース自動検知(作業目安: 1日)

  • カタログリポの GitHub Actions が毎朝、製品リポ master と基準コミットを比較(read-only)
  • 差分があれば 影響機能リスト付きの Issue を自動起票(例:「8/25 リリース検知 — 影響: 動画教材・招待URL、新規ファイル 3 件」)
  • チームの誰でも「カタログが古くなった」ことと影響範囲に気付ける状態になる

Phase 3更新の自動化(半自動 → 全自動)

  • 半自動(すぐ開始): 検知 Issue を受けて、加藤のローカル環境(Claude Code・定額プラン内)が影響機能を再検証してカタログを更新 → push → 自動デプロイ。1回 30 分程度・追加費用なし
  • 全自動(運用が安定したら判断): 再検証・更新も GitHub Actions 内で AI 実行(claude-code-action)。リポ同梱のスキルをそのまま使う。認証は組織用 Claude Code アカウントの OAuth トークンclaude setup-token で発行)を第一候補とする — 追加費用 0 円・個人依存なし。組織アカウントの利用枠を CI が消費するため、半自動運用で消費量を実測してから移行する(代替: Anthropic API キー・従量課金)(確認事項③)

7. 権限調査の結果(2026-08-21 実測)

対象加藤の現在の権限判定
GitHub 組織 the-online-class admin(オーナー)。組織設定でもメンバーの private リポ作成が許可されている リポ新設・secrets 設定・read-only トークン発行まで自力で可能
製品リポ online-class-api admin 検知用の読み取り設定も自力で可能(本設計では書き込みはしない)
Cloudflare 個人アカウントに加え、オンクラスの組織アカウントも操作権限あり(8/24 本人確認。ローカル CLI のログインは個人側のため、Pages 設定時は組織アカウントで作業する) ギャップなし。Pages プロジェクトは組織アカウント側に作成できる

技術的な権限はすべて揃っている。PM に確認したいのは権限付与ではなく「方針の合意」のみ。

8. PM への確認事項

  1. 方針の合意(最重要) — カタログを個人資産のままにするか、チーム資産にするか(§3)。起案者はチーム資産(案A)を推奨
  2. リポジトリ名the-online-class/feature-catalog(private)でよいか。命名規則があれば従います (作成権限は加藤にあり、合意後すぐ着手可)
  3. (後日で可)全自動化の実行アカウント — 組織用の Claude Code アカウントの OAuth トークンで CI 実行する想定(追加費用 0 円・個人依存なし)。組織アカウントの利用枠を CI が消費するため、消費量は半自動運用で実測してから移行判断する (Phase 3 全自動化の判断時)

①②の合意があれば追加費用ゼロで Phase 2(自動検知)まで到達できます。

9. 運用イメージ(Phase 2 + 半自動運用時)

タイミング起きること誰が
火曜 リリースdevelop → master マージ(通常のリリース作業。追加作業なし)実装チーム
水曜 朝検知 Action が差分を発見し、影響機能リスト付き Issue を自動起票自動
水曜 午前Issue を受けて影響機能を再検証・カタログ更新 → push加藤(ローカル)
push 直後Pages が自動デプロイ、Issue に更新レポートを記録してクローズ自動

全自動化後は 3 行目も自動になり、リリース翌朝には更新済みカタログが公開されている状態になる。

10. リスクと対策

リスク対策
社外への情報露出(カタログは内部情報) リポは private・ページは noindex + 推測不能 URL を維持(現行と同等)。より堅くする場合は Cloudflare Access でメール制限(任意・オンクラスアカウント移行後に選択可)
検知の見逃し(逆引き表に無い新規ファイル) 既存機能に紐づかない差分は「新機能候補」として Issue に必ず列挙し、機械判定でこぼさない。新機能かどうかの判断は AI/人が行う
コード行番号のずれ(master が進むと根拠の file:line がずれる) 更新した機能は新コミット基準で根拠を引き直す。未更新機能は「基準コミット時点の行番号」として README に明記(現行運用の踏襲)
デプロイの未完了(過去に公開版が5日間古いままの事故) Pages Git 連携により「push = デプロイ」になり、手動デプロイの完了確認漏れという事故要因自体が消える

11. 未決事項

本設計書は方針決定後、カタログリポ内(docs/)へ移して管理する。