TERASU_Lab_git移行記録_2026-06-15
TERASU Lab git移行記録(Drive同期 → git + entries分割)
なぜやったか(背景)
TERASU Lab(lab.terasu.scale-group.co.jp/sections)は、制作担当が「自分が作ったHPの良い部分」を還元してためていく共有ライブラリ。
複数メンバーが各自のPCから同時にセクションを追加する場面が頻繁にある。
旧構成では事故が構造的に起きていた:
- 問題1: 1ファイル集中 — 全セクションが sections.html の SECTIONS 配列に直書き。2人が同時に同じファイルを編集すると後勝ち上書き=片方の追加が消える。
- 問題2: Drive同期 — Google Drive同期は同時編集で「ファイル名 2.ext」競合コピーを作り、本体が壊れる/消える。実際に大串PCでsections一式が欠落していた(同期ズレ)。
→ この2つを根絶するため、git管理 + 1セクション=1ファイル(entries分割) に移行した。
Before / After
| 旧(〜2026-06-14) | 新(2026-06-15〜) | |
|---|---|---|
| 正本 | Drive マイドライブ/AI/lab-terasu/(同期) |
~/dev/lab-terasu(git・GitHub: scale-group-jp/lab-terasu) |
| セクション格納 | sections.html の SECTIONS 配列に直書き(1ファイル集中) |
entries/<id>.json(1セクション=1ファイル) |
| 描画 | HTML内の配列を直接render | build.py が entries/*.json → sections-data.json を生成 → sections.html が fetch |
| 同時編集 | 競合・データ消失 | 競合ゼロ(新規ファイルなので衝突しない) |
| 同期 | Drive(不安定) | git push/pull(履歴・復元可能) |
競合ゼロの肝 = id命名規則
セクション追加 = entries/<id>.json を新規作成するだけ。新規ファイルなので、他メンバーが同時に追加してもファイルが被らない=競合が物理的に起きない。
ただし「ファイル名が被らない」ことが絶対条件。そのため id を必ずこの形式にする:
<案件>-<種別>-<担当>-<MMDD>
例: babuutalk-fv-saki-0615
petomo-press-ogushi-0615
担当名+日付が入るので、別メンバーが同じ案件の同じ種別を還元しても絶対に被らない。
(補足:claudeのアカウントは「大串垢」と「バックオフィス垢(2名共用)」があり、ファイル名からPCや個人を自動判別はできない。だからid内に担当名を手で入れる運用で competゼロを担保する。)
新しい運用フロー(制作担当・さき向け)
- 初回だけ:
git clone git@github.com:scale-group-jp/lab-terasu.git ~/dev/lab-terasu - セクション追加:
-entries/<案件>-<種別>-<担当>-<MMDD>.jsonを新規作成
- 画像img/sections/<id>.png(動きは.mp4)/ コードcode-previews/<id>.htmlを配置
-python3 build.py(entries → sections-data.json 再生成)
-git add -A && git commit -m "lab: add <id>" && git push
- デプロイ:unset CLOUDFLARE_API_TOKEN; npx wrangler pages deploy . --project-name=lab-terasu --branch=main --commit-dirty=true sections.htmlは手編集しない(entries を fetch するだけの器になった)
詳細は git版リポジトリの README_運用.md / コマンド hp-flow Step9 に記載。
Drive版は凍結
- Drive
マイドライブ/AI/lab-terasu/に_FROZEN_git移行済み_編集しないで.mdを設置 - Drive版を編集しても本番には反映されない(正本は git)
移行データ
- entries: 25件(旧 SECTIONS 配列から自動分割。cats は旧 CATS マップを優先して継承)
- メディア: png 26 / mp4 26 / code-previews 26
- 公開:
lab.terasu.scale-group.co.jp/sections(Cloudflare Pageslab-terasu)
もし壊れたら(ロールバック)
git管理なので履歴から復元可能:
cd ~/dev/lab-terasu
git log --oneline # 戻したいコミットを探す
git revert <hash> # or git reset --hard <hash>(要注意)
python3 build.py
git push
# デプロイ
自動デプロイ(GitHub Actions・2026-06-15 追加)
git push すれば自動で本番反映されるようにした(手動 wrangler 不要)。
セクション追加 → git push → GitHub Actions が build.py 実行 → Cloudflare Pages 自動デプロイ(約30秒)
- workflow:
.github/workflows/deploy.yml(push to main / 手動実行 workflow_dispatch) - 仕組み: checkout → Python setup →
python3 build.py→cloudflare/wrangler-action@v3でpages deploy - 認証: GitHub Secret
CLOUDFLARE_API_TOKEN(Cloudflare Pages:Edit 権限)/ account_id は workflow に直書き - 同時 push 対策:
concurrency: deploy-lab-terasu(デプロイは1本ずつ直列) - 稼働確認済み: 手動トリガーで build-deploy 29秒・本番25件・HTTP 200・画像200
- 既知の warning: Node.js 20 deprecation(2026-06-16〜Node24強制)。現状動作に影響なし。将来 action のバージョンを上げれば消える
- 大串/さきの運用: もう「デプロイ」を意識しなくてよい。push(or claudeに「ラボ更新して」)→ 30秒後にさきが本番で見える
関連
- コマンド:
hp-flowStep9(TERASU Lab還元・entries方式+自動デプロイに更新済み) - リポジトリ: GitHub
scale-group-jp/lab-terasu - 凍結マーカー:
マイドライブ/AI/lab-terasu/_FROZEN_git移行済み_編集しないで.md