方針提案 / DECISION BRIEF

ブログ写真アーカイブ戦略

source リポジトリ肥大 (1.9GiB) への対応と、個人開発全体のデータ配置標準の提案
2026年8月20日
作成: Claude Code (#142 検討セッション) ・ 宛先: プロジェクトオーナー
位置づけ: 意思決定用資料 (4つのご判断 + 1つのご確認をお願いします)
EXECUTIVE SUMMARY

提案: リポジトリを「執筆の作業場」に再定義し、原本保管を切り離す

現状

ブログ source repo の .git1.9GiB。原因はスマホ原寸写真 (1枚3〜7MB・モーション写真は動画埋め込み) をそのままコミットする運用で、増加は約300MB/月。GitHub の推奨上限 5GB には約1年で到達する見込み。

推奨案 — 軽量作業コピー方式

① 写真は取り込み時に長辺2400px へ縮小してからコミット ② 原寸の原本は repo 外の原本庫へ (スマホ+Google フォトを一次バックアップとして活用) ③ 過去分も履歴書き換えで縮小版に差し替え。追加費用ゼロ・原本は失わない。

より重要な狙い

本件を「repo の容量問題」でなく「データの種類ごとに置き場が未定義」という構造の問題として解決する。scratchpad 消失問題 (派生課題) も同じ標準で解消する。

1.9GiB → 0.3GB.git サイズ (履歴整理後・見込み)
300 → 20MB/月増加ペース (約1/15)
1年 → 15年超GitHub 推奨上限 5GB までの猶予
¥0追加ランニング費用
ブログ写真アーカイブ戦略 — 方針提案 · 2026-08-202 / 21
AGENDA

本日の構成

01現状分析実測数値と、本検討で新たに判明した事実
02課題の本質なぜ肥大するのか — 「版管理」と「原本保管」の役割混在
03推奨案軽量作業コピー方式 (3本柱) と効果試算
04対抗案と比較Git LFS 全面移行との比較評価
05実行とガバナンスリスク対策・個人開発全体のデータ配置標準・実行計画
06ご判断事項決定 4点 + 事前確認 1点

表記ルール: 実測 = 本セッションまたは #142 起票時に検証済みの事実 / 推定 = 計算・見込み (前提を併記) / 要確認 = 実施前に確認が必要な前提

ブログ写真アーカイブ戦略 — 方針提案 · 2026-08-203 / 21
01 現状分析実測サマリ

リポジトリの現在地 2026-08-20 実測 (前日比 +0.5GiB)

項目
.git サイズ (ローカル) 実測1.9 GiB
GitHub 側 repo サイズ (8/19) 実測約 1.27 GiB
追跡ファイル合計 (notes 1,248MB / src 207MB)約 1.5 GB
うち画像・動画の占める割合93%
モーション写真 (.MP.jpg・動画埋め込み)233 枚
未追跡の写真・動画 (コミット判断待ち)496 MB
コミット数 / 運用期間562 / 134日
増加ペース 実測約 300 MB/月

.git 1.9GiB の内訳 実測

履歴上のコンテンツ 1,415MB
497MB

右の497MBは Claude Code のチェックポイント (次頁)。ごみや重複はほぼなく、中身は既に圧縮済みの JPEG/MP4 のため git gc では減らない (#142 起票時に検証済み)。

到達予測

GitHub の公式ガイダンスは「理想 1GB 未満・5GB 未満を強く推奨」。理想値は既に超過し、現ペースでは 5GB に約1年で到達 (未追跡分をコミットするとさらに前倒し)。

ブログ写真アーカイブ戦略 — 方針提案 · 2026-08-204 / 21
01 現状分析本検討で新たに判明した事実

起票時の想定を更新する4つの事実

1. Claude Code のチェックポイントが .git を二次肥大させていた 実測

8/19 のセッションが利用制限到達時に作業状態を退避した checkpoint ref (refs/claude/*) が、未追跡の写真496MBを .git 内に取り込んでいた (一晩で+0.5GiB)。巨大な未追跡ファイルを置いたままセッションを回すだけで .git が膨らむ — 「コミットしなければ安全」ではない。

2. 旧記事12本に原寸級の画像配信が残っている 実測

新しい記事はレスポンシブ配信 (上限1680px・本文幅720px) 済みだが、テンプレ改善前の12本は widths 未指定で原寸級 (最大4032px) が配信されている。素材を縮小すれば、これらの配信も自動的に軽くなる (副次効果)。

3. 写真の撮影原本はスマホ側にも存在する見込み 要確認

repo の写真はスマホ (Pixel) から吸い上げたコピーであり、撮影原本は端末+Google フォト (バックアップ有効なら) に残っている見込み。つまり「repo が唯一の原本置き場」という前提は成立していない可能性が高い。バックアップ設定と画質モードの確認が実施の前提

4. ローカルディスクには十分な余裕がある 実測

作業マシンの空き容量は 897GB。repo 外にローカル原本庫を設けるうえで容量制約はない。制約があるのは GitHub 側 (推奨5GB) と、git の仕組み上「一度コミットした容量は履歴に残り続ける」点。

ブログ写真アーカイブ戦略 — 方針提案 · 2026-08-205 / 21
02 課題の本質問題の構造

現行フロー: 原寸データが3箇所に滞留する

スマホで撮影
原寸 3〜7MB/枚
モーション写真は動画内蔵
notes/<issue>/photos/
原寸のまま全量コミット
1,248MB (repo の86%)
src/assets/posts/
記事採用分を原寸コピー
207MB
ビルド・配信
Astro が縮小・最適化
実際に必要なのは最大1680px

滞留ポイント +1 (見えない3箇所目)

コミットを保留した未追跡写真も、Claude Code のチェックポイント経由で .git に複製される (前頁1)。つまり現行フローでは、原寸を repo の作業ツリーに置いた時点で容量問題が始まる

数字で見る非効率

配信に必要な画素数に対して素材は面積比で約6〜9倍。モーション写真は容量の約半分が「記事では使わない埋め込み動画」。保存している容量の9割超は、ブログ用途では一度も使われない

ブログ写真アーカイブ戦略 — 方針提案 · 2026-08-206 / 21
02 課題の本質問題の再定義

1つのリポジトリに、性質の異なる2つの役割を同居させていた

役割A: 版管理 — git の得意分野

  • 記事・メモ・コード・設定 (テキスト)
  • 差分が小さく、履歴に価値がある
  • 複数セッションでの並行作業に必要

役割B: 原本保管 — git の不得意分野

  • 原寸写真・動画 (巨大バイナリ)
  • 撮影後は不変で、差分も履歴も不要
  • 一度コミットすると履歴から消すのに履歴書き換えが必要

したがって、解くべき問いを変える

「repo をどう軽くするか」ではなく「データの種類ごとに、どこに置き・いつ掃除するかの標準を定める」。写真の原本・執筆用の作業コピー・セッションを跨ぐ中間生成物 (scratchpad 派生課題)・一時ファイル — それぞれに適所を与えれば、repo 肥大もファイル消失も同じ枠組みで解消する。

ブログ写真アーカイブ戦略 — 方針提案 · 2026-08-207 / 21
02 課題の本質放置した場合

成長予測: 対応しなければ約1年で GitHub 推奨上限へ 推定

0 1GB 3GB 5GB 2026-08 2027-02 2027-08 2028-02 2028-08 GitHub 強い推奨上限 5GB 理想 1GB 2027年夏 5GB 到達 現状維持 (+300MB/月) 推奨案 (履歴整理後 +20MB/月)

放置のコストは時間とともに増える

  • 履歴書き換えの対象コミット・検証範囲が毎月広がる
  • チェックポイント経由の二次肥大が繰り返し発生する
  • バックアップ・clone・修復、あらゆる保守作業が重くなる

ただし「今日壊れる」問題ではない

5GB は即遮断の閾値ではなく推奨値。日々の執筆への体感影響も現時点では限定的。緊急対応ではなく、コストが最小の今のうちに構造を直す提案である。

ブログ写真アーカイブ戦略 — 方針提案 · 2026-08-208 / 21
03 推奨案選択肢の全体評価

起票時の選択肢 A〜F を新事実を踏まえて再評価

評価判定
A. 今後の写真だけ縮小増加は止まるが既存1.9GiBとチェックポイント問題が残る。単独では不足、部品としては必須採用 (柱①)
B. photos を git 管理外に「別マシンで写真がない」以前に、縮小版すら repo に無いと執筆・レビューの一次資料が分散する不採用
C. Git LFS へ移行成立する。ただし約2年で無料枠に達し、履歴書き換えはどのみち必要 (詳細は対抗案として後述)対抗案
D. 写真を別リポジトリへ総量は変わらず置き場が移るだけ。2リポジトリ運用の手間が純増不採用
E. 履歴書き換えで過去分も縮小既存1.9GiBを実際に減らせる唯一の手段。対象が少ない今が最安。A と組みで再発防止採用 (柱③)
F. 現状維持チェックポイント二次肥大の判明により、起票時の想定より悪化が速い不採用
+G. 原本庫の分離 (新)「原本はスマホ+Google フォト+PC 原本庫、repo は縮小版」— B の弱点 (一次資料の喪失) を縮小版の常置で解消する新しい柱採用 (柱②)

推奨案 = A + G + E の組み合わせ。単独案の比較では決まらず、「取り込み・保管・過去分」の3点を同時に押さえる必要がある。

ブログ写真アーカイブ戦略 — 方針提案 · 2026-08-209 / 21
03 推奨案全体像

推奨: 軽量作業コピー方式 repo には「執筆に必要なサイズ」だけを置く

スマホで撮影
原本はスマホ+Google フォトに残す
要確認
取り込みパイプライン
吸い上げ時に自動で
動画剥離+長辺2400pxへ縮小
原寸は PC 原本庫へ全量保存
repo (縮小版のみ)
notes/ も src/ も作業サイズ
チェックポイント問題も構造的に解消
ビルド・配信
変更なし
旧記事の配信は軽くなる
柱 ①

取り込みパイプライン

写真を repo に入れる前に縮小する自動処理。増加ペースを約1/15に。

柱 ②

原本の三層保管

スマホ+Google フォト / PC 原本庫 / repo 作業コピー。原寸・モーション動画は失わない。

柱 ③

過去分の履歴整理

既存の原寸を原本庫へ退避し、履歴書き換えで縮小版に差し替え。1.9GiB→約0.3GB。

ブログ写真アーカイブ戦略 — 方針提案 · 2026-08-2010 / 21
03 推奨案柱① 取り込みパイプライン

縮小の基準: 長辺2400px・品質85 0141 の実写真9枚 (38.6MB) での削減実測 (2026-08-19)

元のまま (原寸)
38.6MB
モーション動画の剥離のみ
17.8MB
長辺3840px・q88
13.0MB
長辺2400px・q85 (推奨)
4.2MB
長辺1600px・q85
2.0MB
長辺1200px・q82
1.1MB

2400px を推す理由

配信上の必要幅は最大1680px (本文720px × 高精細画面)。2400px はその1.4倍で、将来のデザイン変更や切り抜きに耐える余裕を持ちつつ削減率89%を確保できる。1600px との差は月あたり約10MB — 絞り込む価値より余裕を優先する。

素材ルール
写真 (JPEG)モーション動画を剥離 → 長辺2400px・q85 で再エンコード
スクリーンショット (PNG)原則そのまま (元々小さく、文字の鮮明さが重要)
動画 (MP4)記事採用分のみ repo へ。1080p 目安・素材段階は原本庫のみ
ファイル名元の名前を維持 (原本との対応を自明に)

実装 推定

既存の写真吸い上げフローに Node スクリプトを組み込む。画像処理は Astro 同梱の sharp を利用でき、追加インストールなしで実装できる見込み。適用は1件で検証してから全体へ展開する。

ブログ写真アーカイブ戦略 — 方針提案 · 2026-08-2011 / 21
03 推奨案柱② 原本の三層保管

原寸の価値は「家族の記録」— その保管は git より適した場所へ

置き場役割
L1スマホ + Google フォト 要確認撮影原本の一次バックアップ。モーション写真の再生・アルバム・検索など、写真としての価値はここで守るのが最も自然
L2PC 原本庫 ~/projects/blog-originals/<issue>-<slug>/吸い上げ時に原寸+モーションを全量保存 (git 外・空き897GB)。縮小のやり直し・履歴整理時の退避先。ローカルのみでクラウドには置かない
L3repo 作業コピー notes/<issue>-<slug>/photos/縮小版のみコミット。執筆・レビュー・セッション間の受け渡しはこれまで通り repo 内で完結

「一次情報置き場」の位置づけは守られるか

notes/ の一次情報の本体は発言メモと画像インベントリ (テキスト) であり、これは従来どおり repo に残る。写真も縮小版が常に repo にあるため、執筆に必要な一次資料は分散しない。失うのは「原寸が repo にあること」だけで、原寸自体は L1/L2 に残る。

実施前のご確認 (1点)

スマホの Google フォト バックアップが有効か・画質モードはどちらか (元の画質 / 保存容量の節約)。無効または節約画質の場合でも L2 原本庫が受け皿になるため方式は変わらないが、L1 に期待できる範囲を確定してから過去分の整理に入る

ブログ写真アーカイブ戦略 — 方針提案 · 2026-08-2012 / 21
03 推奨案柱③ 過去分の履歴整理

履歴書き換えで既存 1.9GiB を約0.3GB へ git filter-repo による一括整理

手順の骨子

  1. フルバックアップ — 現在の .git 一式と bundle を原本庫へ保存 (旧履歴は消えるのではなく「別置き」になる)
  2. 複製リポジトリで予行演習 — 書き換え結果・サイズ・全記事のビルドを検証してから本番に適用
  3. filter-repo 適用 — 過去履歴から原寸画像を除去し、縮小版を再コミット (タグ・ブランチも追従)
  4. force push + 周辺の再構築 — 常設 worktree・deployed ブランチ・チェックポイント ref の掃除
  5. 公開チェック — デプロイ後に全記事の表示確認 (見た目は同一・画像ファイル名のみ変わる)

今やる理由

書き換えコストは履歴の量に比例する。現在は562コミット・影響する常設環境も worktree 1つで、今後のどの時点より安く・検証しやすい

破壊的操作への安全弁

  • 全コミットの SHA が変わる操作のため、実施前にバックアップと予行演習を必須とする
  • solo 運用のため他者への影響なし。並行セッションは実施日に止める
  • 失敗時は bundle から完全に復元できる (可逆)

サイズ見込み 推定

notes 写真 1,248MB→約140MB、src 207MB→約40MB、テキスト等 約20MB。合計 約0.2〜0.3GB (削減実測89%を既存分に適用した試算)。

ブログ写真アーカイブ戦略 — 方針提案 · 2026-08-2013 / 21
03 推奨案効果まとめ

Before / After

現状推奨案 実施後 推定
.git サイズ1.9 GiB約 0.3 GB
増加ペース約 300 MB/月約 20 MB/月
GitHub 推奨上限 5GB までの猶予約 1 年15 年超
チェックポイント経由の二次肥大発生する (実測+0.5GiB)構造的に解消
原寸・モーション動画の保全repo のみ (単一保管)スマホ+Google フォト / PC 原本庫の多重化
旧記事12本の画像配信原寸級 (最大4032px)最大2400pxに自動改善 (完全対応は別課題)
ランニング費用¥0¥0
執筆フローの変化なし (吸い上げ処理の内部が変わるのみ)

試算前提: 記事ペースと写真量が直近134日と同水準 / 縮小率は 0141 実測 (89%) を適用 / 動画の大量利用が始まった場合は再検討 (17頁)。

ブログ写真アーカイブ戦略 — 方針提案 · 2026-08-2014 / 21
04 対抗案と比較対抗案

対抗案: Git LFS 全面移行 「原寸を repo の意味論のまま持ち続ける」道

概要

画像・動画を Git LFS 管理に切り替え、実体は GitHub の LFS ストレージへ。repo 本体は軽量なポインタのみになる。既存分の移行には履歴書き換え (git lfs migrate) を伴う。

持ち味

  • 原寸のまま版管理の意味論を保てる (解像度の判断が不要)
  • 標準ツールで手順が確立している
  • clone は必要な分だけ取得でき軽い

採用しなかった理由

  • 無料枠 10GiB に現ペースで約2年で到達し、以降は有料 (データパック月額)。LFS ストレージは削除しても課金対象から外しにくい
  • 履歴書き換えが必要な点は推奨案と同じ (「破壊的操作を避けられる」わけではない)
  • 「保存容量の9割超が使われない」という本質の非効率が残る
  • 作業環境すべてに git-lfs 導入が必要になり、solo 運用の道具立てが増える

LFS が優位になる条件

「原寸を必ず repo 内で管理したい」「クラウド写真サービスに依存したくない」が要件になる場合。または動画中心の運用に変わり、縮小の効果が薄れる場合。

ブログ写真アーカイブ戦略 — 方針提案 · 2026-08-2015 / 21
04 対抗案と比較3案比較

比較評価: 推奨案 / Git LFS / 現状維持

評価軸推奨案 (軽量作業コピー)対抗案 (Git LFS)現状維持
初期工数約2人日 (履歴整理含む)約1〜1.5人日 (履歴書き換え含む)0
継続の運用負荷低 (取り込みが自動化される分、現状より下がる)中 (lfs 導入・枠残量の監視)
費用¥0約2年後から月額発生¥0
GitHub 上限への耐性15年超枠10GiBまで約2年、以後は課金で延命約1年
原本の保全多重化 (スマホ+フォト+原本庫)repo 内に単一保管のままrepo 内に単一保管のまま
破壊的操作履歴書き換え1回 (予行演習つき)履歴書き換え1回 (同左)なし
チェックポイント二次肥大解消解消 (ポインタ化されるため)再発し続ける
個人開発全体への波及データ配置標準として他領域にも展開できるブログ repo 個別の対処に留まる

総合: 費用・持続性・全体最適の3点で推奨案が優位。LFS は「原寸の repo 内管理」を要件とする場合の確かな次点。

ブログ写真アーカイブ戦略 — 方針提案 · 2026-08-2016 / 21
05 実行とガバナンスリスクと対策

リスク対策と、この方針を見直す条件

リスク対策
履歴書き換えの失敗・データ消失実施前フルバックアップ (bundle) + 複製リポでの予行演習。失敗時は完全復元
縮小が足りなかったと後で判明
(印刷・大きな切り抜き等)
原本庫から原寸を再取得して差し替え可能 (可逆)
モーション写真の動画価値の喪失剥離前の原本を L1/L2 に保持。repo から消えるだけで失われない
worktree・デプロイ環境の再構築漏れデプロイ文書の手順に沿って再構築 → 公開チェック (疎通・表示) で検証
Google フォト前提の不成立実施前に確認 (12頁)。不成立でも PC 原本庫が受け皿となり方式は不変
WSL 環境ごと消えて原本庫を失う写真原本は L1 (スマホ+フォト) と二重。PC 起点のスクショ類は喪失影響が小さい。必要なら外部同期を追加 (任意)

この方針を再検討する条件 (反証条件)

  • 動画中心の記事が増える — 縮小の効果が薄れるため、LFS や外部ストレージ配信を再比較
  • 複数マシンでの執筆が始まる — 原本庫の同期方式を設計に追加
  • GitHub の制限・料金体系が変わる — 前提数値を更新して再評価
  • 実施後1年で .git が 1GB を超える — 想定 (20MB/月) から外れており原因を調査
ブログ写真アーカイブ戦略 — 方針提案 · 2026-08-2017 / 21
05 実行とガバナンス全体最適

個人開発のデータ配置標準 本件と scratchpad 派生課題への共通回答

データの種類置き場掃除・保全
コード・記事・メモ・設定git repo恒久 (版管理)
記事用写真の作業コピー (縮小版)git repo notes/・src/assets/恒久 (取り込み時に縮小)
写真・動画の原本 (原寸)スマホ+Google フォト / PC 原本庫 ~/projects/blog-originals/恒久 (repo に入れない)
セッションを跨ぐ中間生成物
(受け渡し文書・検証スクショ等 — 派生課題)
~/projects/scratch/<issue>-<slug>/ (git 外・再起動で消えない)issue クローズ時に削除 + 定期棚卸しで回収
そのターン限りの一時ファイルセッション scratchpad (/tmp)自動消滅を許容
ビルド産物・デプロイスナップショットdeployed ブランチ / 配信基盤デプロイスクリプト管理

派生課題 (scratchpad 消失) への回答

写真は「縮小版を repo に常置」で決着するため、意向どおり案1+案2の併用で確定できる。中間生成物は scratch の issue 別フォルダへ、リポがある作業はリポ内へ。

継続ガバナンス

定期棚卸しに「repo サイズ点検・チェックポイント ref の掃除・scratch の残骸回収」を追加し、標準からの逸脱を仕組みで検出する。

ブログ写真アーカイブ戦略 — 方針提案 · 2026-08-2018 / 21
05 実行とガバナンス実行計画

実行計画: 4フェーズ・約2人日 各フェーズ完了時点で中断・再開できる構成

フェーズ内容工数目安性質
Phase 0 応急処置チェックポイント ref の掃除 (−0.5GiB)・未追跡496MBを原本庫へ退避・Google フォト設定の確認30分完全に可逆
Phase 1 パイプライン取り込みスクリプト実装 (縮小+動画剥離+原本庫保存)。1案件で先行検証 → 退避済み496MB分を縮小版でコミット半日可逆
Phase 2 履歴整理バックアップ → 複製で予行演習 → filter-repo 本適用 → force push → worktree/deployed 再構築 → 公開チェック半日〜1日破壊的 (安全弁つき)
Phase 3 標準化運用文書へ反映 (グローバル設定・ツール置き場ガイド・執筆フロー文書は担当セッションへ投書)・棚卸し項目の追加・scratch のフォルダ構造化1〜2時間可逆

順序の意図

効果の大きい順ではなくリスクの小さい順。Phase 0-1 だけでも増加は止まり (1.9GiBは残る)、Phase 2 を後日に切り離す判断も可能。Phase 2 実施日は他セッションの執筆・公開を止めて臨む。

ブログ写真アーカイブ戦略 — 方針提案 · 2026-08-2019 / 21
06 ご判断事項

ご判断いただきたいこと 起票時の4つの検討事項に対応

決定 1 — 原本の置き場
repo 外へ分離 (三層保管) を採用するか
推奨: 採用。スマホ+Google フォト+PC 原本庫で多重化し、repo は作業コピー専用に
決定 2 — repo 内写真の上限
長辺2400px・品質85 でよいか
推奨: 2400px。1600px 案との差は月10MB程度で、将来の使い回しの余裕を優先
決定 3 — 過去分の扱い
履歴書き換え (Phase 2) を実施するか
推奨: 実施。今が最も安く、バックアップ+予行演習で復元可能性を担保
決定 4 — 未追跡の496MB
原本庫へ退避し、縮小版のみコミットするか
推奨: 採用。原寸のままのコミットは行わない (チェックポイント対策も兼ねる)

ご確認 (実施の前提・1点)

スマホの Google フォト バックアップの有効/無効と画質モード。ご承認いただければ Phase 0 から着手し、Phase 2 のみ実施日を別途調整する。

ブログ写真アーカイブ戦略 — 方針提案 · 2026-08-2020 / 21
APPENDIX

付録: 計測方法と参照情報

主な計測コマンド (2026-08-20 実施)

du -sh .gitディスク上のサイズ (1.9GiB)
git count-objects -vHオブジェクト数と loose/pack 内訳
git rev-list --objects … | cat-file --batch-checkref 別の到達可能 blob 実サイズ集計
git for-each-refチェックポイント ref の発見 (refs/claude/*)
git ls-tree -r -l main追跡ファイルの最大サイズ (25.6MB) 確認

数値の出典

  • 削減実測 (0141・9枚): 2026-08-19 の検討セッションで計測
  • 配信幅の実態: 全記事 mdx の widths/sizes 指定を 8/20 に走査
  • 成長予測: GitHub 側 1.27GiB を起点に 300MB/月の線形外挿

参照

  • GitHub Docs — About large files on GitHub (理想1GB・強い推奨5GB)
  • GitHub Docs — About billing for Git LFS (無料枠 10GiB / 帯域 10GiB/月)
  • git filter-repo 公式ドキュメント (履歴書き換え手順)
  • 関連 issue: #142 (本件) / #134 (執筆フロー文書の管轄) / #52 (ツール置き場ガイドライン) / #110・#140 (デプロイ機構)

本資料について

Claude Code が issue #142 の実測データと本セッションの追加検証をもとに作成した意思決定用資料。数値ラベル (実測/推定/要確認) の定義は3頁を参照。

ブログ写真アーカイブ戦略 — 方針提案 · 2026-08-2021 / 21
← → キー / クリックで移動 · 印刷で全ページ出力
1 / 21