実行計画書 / EXECUTION PLAN

写真アーカイブ移行計画

承認済み方針「軽量作業コピー方式」の詳細設計と移行手順
2026年8月20日
作成: Claude Code (#142 検討セッション) ・ 宛先: プロジェクトオーナー
前提: 戦略提案 (2026-08-20「ブログ写真アーカイブ戦略」全21枚) の決定1〜4を承認済み
位置づけ: 実行前の最終確認用 — リスクの網羅性・手順の具体性をご確認ください
00 前提承認済み決定事項と前提の更新

確定した方針と、戦略提案からの前提修正

承認済みの決定 (2026-08-20)

D1原本は repo 外へ分離承認
D2repo 内写真は長辺2400px・品質85承認
D3過去分の履歴書き換えを実施承認
D4未追跡496MBは退避→縮小版のみコミット承認

保管設計の確定 (v2・協議済み)

  • 原本庫は D:\PhotoArchive に一本化 (ブログ個別フォルダは作らず、記事との対応は images.md のファイル名参照)
  • USB 常時接続のためステージング層は廃止 (未接続時はスクリプトが中断)
  • 同期はまず「吸い上げ時+手動」で開始、定期自動化は運用が回ってから
  • 家族写真・旧Xperia・旧PCデータの整理は別issue ([scope] home) に切り出し

前提の更新・訂正 実測

項目戦略提案時確定値
PC 空き容量897GB (誤り)93.5GB (物理237GB。897GBはWSL仮想ディスクの見かけ値)
Google フォト要確認無効 (11/15GB使用・有効化しない方針)
原本庫の媒体PC内を想定USB (D:) 460GB・空き166GB。旧PC移行データが同居 (整理は home issue)
スマホPixel 128GB・63GB使用。SDなし。ブログ専用写真は同期後に削除して空きを回復

訂正の補足 (897GB の件)

WSL2 の仮想ディスクは既定で最大1TBまで膨らめる設定のため、内部の df は実容量より大きく見える。実制約は Windows 物理ディスクの空き (93.5GB)。また WSL 内でファイルを消しても仮想ディスクは自動では縮まないため、Phase 2 の削減後に仮想ディスクの圧縮工程を追加した。

写真アーカイブ移行計画 — 実行計画書 · 2026-08-202 / 21
01 全体設計完成形アーキテクチャ

完成形: 写真は D: に集約し、repo には縮小版だけが入る

Pixel (撮影)
家族写真もブログ写真も
区別せず DCIM に蓄積
photo-sync
adb で増分を吸い上げ
D:\PhotoArchive\pixel\年\月\ へ
(吸い上げ時+手動)
photo-ingest
記事採用分を選定し
2400px・q85へ縮小
images.md に原本参照を記録
repo (縮小版のみ)
notes/ → src/assets/
pre-commit ガードで再発防止
ビルド・配信
変更なし

スマホ側の後処理 (承認済みフロー)

記事の区切りで、同期検証済みのブログ専用写真の削除候補リストを提示 → 残したいものだけ指定いただく → 明示のGOで削除実行。家族写真を兼ねるものはスマホに残す (スマホ+D: の二重保管になる)。

home issue との境界

本計画が整備するのは PhotoArchive の構造・同期・縮小の道具一式。それを使って中身を移す作業 (旧PC移行データの整理・Xperia写真の取り込み・家族写真の冗長化方針) は home issue が担当。D: 上の既存データには本計画では触れない。

写真アーカイブ移行計画 — 実行計画書 · 2026-08-203 / 21
01 全体設計成果物一覧

作るもの・変えるもの

区分成果物内容
新規tools/bin/photo-syncPixel→D: の増分同期 (状態ファイルで前回同期以降のみ)。汎用ツールとして tools リポで版管理
blog scripts/photo-ingest.mjsアーカイブ→縮小→notes 配置→images.md 追記。ブログ専用のため blog リポに置く
blog scripts/check-media-size.mjs + pre-commit原寸コミットの再発防止ガード (1.5MB超 or 長辺2400px超の新規画像を停止)
blog docs/photos.md写真運用の手順書 (アーカイブ構造・同期・縮小・スマホ削除・トラブル対応)
home issue (新規起票)[scope] home — D:整理・Xperia取込・家族写真の冗長化方針
変更blog CLAUDE.mdドキュメント目次に photos.md を追加・厳守事項に媒体ファイルの扱いを1行
tools README (置き場ガイドライン表)「写真・動画の原本 → D:\PhotoArchive」「セッションを跨ぐ中間生成物 → ~/projects/scratch/<issue>-<slug>/」を追記
~/.claude/CLAUDE.md (全セッション共通)scratch の issue 別フォルダ運用+「巨大媒体を作業ツリーに未追跡のまま放置しない」を追記
定期棚卸し項目 (daily task セッションへ依頼)repo サイズ・checkpoint ref・scratch 掃除・同期/移送漏れ・D: 空き容量の点検
投書notes/README.md の写真手順変更 → #134 へ編集権限は #134 専任のため、変更内容と経緯を投書 (直接編集しない)
写真アーカイブ移行計画 — 実行計画書 · 2026-08-204 / 21
01 全体設計フェーズ構成とスケジュール

4フェーズ構成 各フェーズ末で中断・再開可能。日をまたいでよい設計

フェーズ内容工数性質実施条件
Phase 0 基盤準備・応急D: マウント・PhotoArchive 構造作成・未追跡496MB退避・checkpoint ref 掃除・home issue 起票30〜45分完全に可逆即日可
Phase 1 パイプラインphoto-sync / photo-ingest / pre-commit ガード実装 → canary 1件検証 → 退避分を縮小版でコミット半日可逆Phase 0 完了後
Phase 2 履歴書き換えバックアップ→予行演習→filter-repo→force push→環境再構築→公開チェック→仮想ディスク圧縮半日〜1日破壊的 (Gate 制御)執筆停止日の調整が必要 (#141 が並行執筆中)
Phase 3 標準化文書化一式・#134 投書・棚卸し項目追加・scratch 構造化・効果記録1〜2時間可逆Phase 2 完了後

スケジュール案

Phase 0 = 承認後すぐ / Phase 1 = 同日〜翌日 / Phase 2 = 別日で日程調整 (当日は他セッションの執筆・公開を止める) / Phase 3 = Phase 2 直後。その後、本件の検討過程をブログ記事化 (Status=Writing で継続)。

順序の意図

リスクの小さい順。Phase 0-1 完了時点で肥大の進行は止まるため、Phase 2 を急がず日程調整できる。Phase 2 を延期しても Phase 0-1 の価値は独立に成立する。

写真アーカイブ移行計画 — 実行計画書 · 2026-08-205 / 21
02 Phase 0基盤準備・応急処置

Phase 0: 30〜45分・すべて可逆

#タスク完了条件・検証方法
0-1D: を WSL にマウント (sudo mount -t drvfs D: /mnt/d)。常時接続なら次回 WSL 起動以降は自動マウント/mnt/d の読み書き確認・ファイルシステム種別を記録
0-2D:\PhotoArchive\{pixel,pc,xperia} を作成。D: 直下の既存フォルダ (旧PC移行データ) には触れない構造作成のみ・既存データへの書き込みゼロ
0-3未追跡496MB (0107/0124/0131 の写真・動画) を退避: コピー → sha256 照合 → 作業ツリーから削除。撮影日をファイル名から読んで pixel\年\月\ へ振り分け。PNG スクショ (小型) は対象外で残す件数・バイト数・ハッシュの三重照合が全件一致してから削除
0-4checkpoint ref (refs/claude/checkpoint-213c6be4) を削除し git gc --prune=now。0-3 完了後・他セッションの非稼働時間帯に実施.git が約1.4GiBへ縮小・refs/claude/* が空
0-5効果測定の基準値を記録 (du・count-objects・GitHub 側サイズ → notes へ)notes に基準値表を追記
0-6home issue を起票 (次頁スコープ・#142 と相互リンク・[scope] home)issue URL を #142 にコメント

安全設計

削除は必ず「コピー+照合の完了後」。checkpoint ref の削除は退避完了後なので、消える情報は「昨日時点の作業状態スナップショット」のみ (対象ファイルの実体は D: と作業ツリー履歴に保全済み)。

写真アーカイブ移行計画 — 実行計画書 · 2026-08-206 / 21
03 Phase 1縮小パイプライン仕様

photo-ingest: 素材別の処理仕様

素材処理
写真 (JPEG・モーション写真)sharp で再エンコード: 長辺2400px以内 (拡大なし)・品質85。再エンコードにより末尾の埋め込み動画は自動的に除去される (JPEGデータ外のため) — 剥離処理の個別実装は不要
EXIF メタデータ回転情報は画素に焼き込んだうえで全削除 (GPS等の位置情報を repo に持ち込まない)。撮影日時はファイル名が保持し、完全な EXIF は D: の原本に残る
スクリーンショット (PNG)原則そのまま (文字の鮮明さ優先)。幅2400px超のみ縮小
動画 (MP4)repo へは記事採用分のみ。ffmpeg (要導入) で 1080p/H.264 に圧縮 — 既存前例: 0081 は原本25.6MBを0.68MBに圧縮して public/media/ から配信中
ファイル名元の名前を維持 (原本との対応が自明・既存の images.md 参照も壊れない)
images.md 連携取り込み時に「原本: PhotoArchive\pixel\年\月\」の参照行を自動追記

実装方式

Node スクリプト+repo 同梱の sharp (追加インストール不要)。入力はスマホからではなく D: のアーカイブから — 必ず photo-sync (同期) が先に走る構成にし、「原本が D: にない写真が repo に入る」状態を作らない。

実行フロー (記事作業時)

  1. adb-connect (既存)
  2. photo-sync — 新規写真を D: へ増分同期
  3. photo-ingest — 記事対象を選定し縮小版を notes へ
  4. 通常の執筆フローへ (変更なし)

色・回転の検証

canary (9頁) で再エンコード後の色味・向き・精細さをユーザーの目で確認してから全体展開する。

写真アーカイブ移行計画 — 実行計画書 · 2026-08-207 / 21
03 Phase 1photo-sync とスマホ削除フロー

同期とスマホ側の後処理 削除は多重の安全弁つき

photo-sync (Pixel → D: 増分同期)

  • 対象: DCIM/CameraPictures/Screenshots
  • 前回同期時刻を D:\PhotoArchive\.sync-state.json に記録し、以降の新規のみ取得
  • adb pull -a でタイムスタンプ保持・ファイル名の撮影日で 年\月\ へ振り分け
  • 同名ファイルはサイズ比較で skip (再実行しても安全な冪等設計)
  • D: 未マウント時は何もせず中断して案内 (中途半端な状態を作らない)

運用開始の形

まず「記事の写真吸い上げ時+手動」で開始。定期自動化 (cron 等) は数記事分の運用が回ったことを確認してから検討する。

スマホ削除フロー (承認済み・5段の安全弁)

  1. 対象は「記事で使用済みのブログ専用写真」のみ
  2. 削除前に D: 側の同一ハッシュ存在を機械検証
  3. 候補一覧を提示 → 残したいものを指定いただく (家族写真兼用の見極めはユーザー判断)
  4. 明示の GO をもらってから adb で削除+メディアDB再スキャン
  5. 削除ログを notes に記録 (後から何を消したか追える)

adb の削除はゴミ箱を経由しない完全削除のため、一覧の目視確認を必須とする。誤削除時は D: から adb push で書き戻せる (メタデータの一部は戻らない)。

初回の進め方

初回は少数 (1記事分) で実施し、削除後のスマホ側表示 (Google フォトのライブラリ等) に不自然がないか確認してから通常運用に組み込む。

写真アーカイブ移行計画 — 実行計画書 · 2026-08-208 / 21
03 Phase 1検証と再発防止

1件で検証してから全体へ・仕組みで再発を防ぐ

canary 検証 (全展開の前に1件)

  1. 退避済みの 0131 (写真+動画) を先行して縮小処理
  2. dev プレビューでの表示と、原本との見比べをユーザーが確認 (色味・向き・文字の可読性)
  3. OK 後に 0107 / 0124 を処理し、縮小版をコミット (496MB → 約40MB見込み 推定)
  4. NG の場合は品質パラメータを調整して再生成 (原本は D: にあるため何度でもやり直せる)

執筆中記事への影響

縮小版は同じファイル名で同じ場所に戻るため、執筆中の 0107/0124/0131 の images.md や参照は壊れない。

再発防止ガード (pre-commit)

  • 新規追加の画像が「1.5MB超 または 長辺2400px超」ならコミットを停止し、photo-ingest の実行を案内
  • hook は core.hooksPath で repo 内に版管理 (クローン再作成時の再設定を手順書に明記)
  • 意図的な例外は --no-verify で通せる (使いどころを docs/photos.md に記載)

Phase 1 の完了条件

  • canary がユーザー確認を通過
  • 退避分の縮小版コミット完了・作業ツリーに未追跡の大型媒体ゼロ
  • ガードが誤検知なく動作 (通常コミットを妨げない)
  • この時点で .git の肥大進行が停止 (既存1.4GiBの削減は Phase 2)
写真アーカイブ移行計画 — 実行計画書 · 2026-08-209 / 21
04 Phase 2履歴書き換えの方式設計

方式: 履歴からの除去 + 縮小版の再コミット

採用方式

git filter-repo で過去の全コミットから対象媒体を除去し、最新状態に縮小版を再コミットする。

  • 対象: notes/*/photos/ の JPG・MP.jpg・MP4、src/assets/ の原寸写真
  • 対象外: テキスト全般・PNG 小物・public/ の配信用圧縮動画
  • タグ (samples-0090 等)・全ブランチ (deployed/feat) も一括で追従させる

不採用とした代替方式

「全履歴の画像バイトを縮小版に差し替える」方式 (旧コミットもビルド可能なまま残る) は、blob 単位の対応表作成など工程が複雑で検証コストが高い。旧版の完全再現の需要は低く、必要時は bundle から参照できるため、単純で検証しやすい除去方式を採る。

この方式の帰結 (了承いただきたい仕様)

  • 全コミットの SHA が変わる (issue コメント等に記録済みの旧ハッシュは辿れなくなる — bundle で参照可能)
  • 旧コミットをチェックアウトしても写真は含まれない (原本は D: と bundle に保全)
  • src/assets の縮小により、次回デプロイで配信画像のファイル名 (ハッシュ) が変わる — URL・見た目は不変のため IndexNow 送信は不要

事前保全 (二重の受け皿)

bundle バックアップ = 全履歴・全 ref の完全保存 (いつでも完全復元可能) ② 現行媒体のエクスポート = 追跡中の全写真・動画を D:\PhotoArchive へファイルとして書き出し (日常の参照用)。両方が揃ってから書き換えに入る。

写真アーカイブ移行計画 — 実行計画書 · 2026-08-2010 / 21
04 Phase 2実施手順

Phase 2 の10ステップ 実施日は執筆を止めて確保 (半日+検証)

  1. 凍結宣言 — 全セッションの執筆・公開を停止 (#141 執筆中のため要調整)。全変更を push 済みにし、作業ツリーを clean に
  2. バックアップgit bundle create (全ref) + .git の複製を D:\Backups\ へ。bundle verify と試験クローンで健全性確認
  3. 現行媒体のエクスポート — 追跡中の全写真・動画を D: へ書き出し、件数・バイト照合
  4. 予行演習 — 別クローンで filter-repo を実行し、削減後サイズ・コミット数・記事ビルドを検証
  5. 本適用 — 新しいクローン上で filter-repo + 縮小版の再コミット
  1. 検証 (Gate 2) — チェックリスト: 全記事レンダリング・タグ/ブランチ追従・サイズ実測・テキスト履歴の保全
  2. force push — 全ブランチ・全タグを origin へ
  3. 環境再構築 — 作業コピーを新クローンに置換 (node_modules・.deploy-snapshot 等の未追跡資産を移設)、worktree ~/projects/blog-deploy と deployed ブランチを再作成、hooksPath 再設定
  4. デプロイ+公開チェック — 疎通・OGP・W3C・Lighthouse を自走確認 (URL 不変のため IndexNow 不要)
  5. 後片付け — 旧作業コピーは1週間保持してから削除・WSL 仮想ディスクの圧縮 (WSL 再起動を伴うため日末に実施)

GitHub 側の表示サイズはすぐには縮まないことがある (旧オブジェクトの掃除は GitHub 側の処理待ち)。1ヶ月後の棚卸しで確認し、残る場合はサポートへ依頼。

写真アーカイブ移行計画 — 実行計画書 · 2026-08-2011 / 21
04 Phase 2Go/No-Go と切戻し

3つの関門と、各段階からの戻り方

関門通過条件
Gate 1
着手前
bundle 検証合格 / 予行演習で削減後サイズとビルドを確認 / 媒体エクスポート照合済み / 並行セッション停止を確認 / ユーザーの実施GO
Gate 2
force push 前
書き換え結果の検証チェックリスト全項目合格。不合格なら push せず破棄 — この時点まで origin は無傷
Gate 3
完了判定
公開チェック合格 + worktree からのデプロイ成功 + 全記事の表示確認

切戻し手順 (段階別)

  • Gate 2 まで: 書き換えクローンを捨てるだけ。origin・ローカル本体とも無変更
  • force push 後: bundle から復元クローンを作成し、旧履歴を force push で書き戻す (完全復元)。以降の再挑戦は原因解消後に
  • 環境再構築後に不具合: 旧作業コピーを1週間保持しているため、ディレクトリ差し替えで即時退避可能

実施中の掟

手順の途中で予期しない状態に遭遇したら、先へ進めず停止してユーザーへ報告する (原状は Gate 2 までいつでも無傷で戻せるため、粘るより止まる方が安い)。

写真アーカイブ移行計画 — 実行計画書 · 2026-08-2012 / 21
05 Phase 3標準化・文書化

Phase 3: 運用を仕組みと文書に固定する

作業内容
docs/photos.md 新設アーカイブ構造・同期・縮小・スマホ削除・履歴書き換えの記録とトラブル対応
CLAUDE.md 更新 (blog / global)目次追加・媒体ファイルの扱い・scratch の issue 別フォルダ運用
tools README 更新置き場ガイドライン表に「原本 → D:\PhotoArchive」等を追記
#134 へ投書notes/README.md の写真手順変更 (吸い上げ→同期→縮小の新フロー)。直接編集はしない
棚卸し項目の追加依頼repo サイズ・checkpoint ref・scratch 掃除・同期/移送漏れ・D: 空き (daily task セッションへ)
scratch 構造化~/projects/scratch/<issue>-<slug>/ 化と、4月から残る既存ファイルの整理

効果記録と事後レビュー

  • before/after の実測値を #142 に記録 (基準値は Phase 0 で採取済み)
  • 1ヶ月後・3ヶ月後の棚卸しで増加ペースを実測 — 期待値 約20MB/月から大きく外れたら原因調査 (反証条件)
  • GitHub 側サイズの反映を1ヶ月後に確認

issue の後処理

実装完了後も #142 は close しない — 検討過程のブログ記事化が控えるため Status=Writing で維持し、記事公開をもって close する (運用ルールどおり)。

写真アーカイブ移行計画 — 実行計画書 · 2026-08-2013 / 21
06 リスク管理① 履歴書き換え系

リスク管理表① — 履歴書き換えに伴うもの

リスク影響予防検知復旧
書き換え失敗・履歴の消失bundle+.git 複製の二重バックアップ・予行演習・Gate 2 まで origin 無傷検証チェックリストbundle から完全復元
並行セッションの push と衝突凍結宣言・実施日調整 (#141 執筆中)push 前の fetch 確認凍結からやり直し
環境の再構築漏れ (worktree・deployed・.deploy-snapshot・hooksPath・node_modules)再構築チェックリストを手順書化試験デプロイ (Gate 3)項目別に個別再作成
GitHub 側の表示サイズが縮まない— (GitHub 側処理待ちの仕様)1ヶ月後の棚卸しサポート依頼 (最終手段はリポジトリ再作成)
旧 commit hash の参照切れ (issue コメント・notes 内)事前に了承事項として明示 (10頁)bundle 内で参照可能
書き換え中の WSL 容量不足 (一時的にクローン2つ分+5GB程度)実施前に物理空き確認 (現在93.5GB — 十分)df 監視中断しても Gate 2 までは無傷
写真アーカイブ移行計画 — 実行計画書 · 2026-08-2014 / 21
06 リスク管理② ストレージ・運用系

リスク管理表② — ストレージと日常運用

リスク影響予防検知復旧
D: ドライブの故障 (原本喪失)ブログ分は repo の2400px版が残るため許容。家族写真の冗長化方針が決まるまでスマホ側を消さない棚卸しで読み出し確認ブログ用途は縮小版で継続可
スマホ写真の誤削除ハッシュ検証+一覧の目視+ユーザー承認+初回は少数 (8頁の5段安全弁)削除ログD: から adb push で書き戻し
縮小画質が後で不足 (印刷・大きな切り抜き)canary 検証+2400px の余裕設計ユーザーの目視確認D: の原本から再生成 (可逆)
D: の取り外し・未マウントスクリプトが検知して中断 (中途半端な状態を作らない)実行時チェック再マウントして再実行 (冪等)
D: の空き逼迫 (現在166GB・旧PCデータ同居)home issue でデータ整理・写真の増加は原寸でも年4GB弱棚卸しで空き監視 (目安: 50GB切りで対処)整理・媒体増設
運用のすり抜け (原寸を直接コミット)pre-commit ガード+手順書+新フローの方が手間が少ない設計棚卸しのサイズ点検縮小版で上書き・必要なら直近履歴のみ処置
checkpoint 肥大の再発 (本 repo・他 repo)原寸が作業ツリーに入らない構造で解消棚卸しで refs/claude/* を全 repo 点検ref 削除+gc (今回と同手順)
写真アーカイブ移行計画 — 実行計画書 · 2026-08-2015 / 21
06 リスク管理確認済み事項と未決事項

実施時の確認項目 本日の追加調査で判明した事実を含む

本日確認済み 実測

  • 採用動画の配信経路は public/media/ — 0081 は原本25.6MB→0.68MBに圧縮して配信中 (動画ルールの前例として整合)
  • #141 の執筆セッションが並行稼働中 (本日もコミットあり) — Phase 2 の凍結調整は必須と確定
  • checkpoint ref は現在1本のみ (checkpoint-213c6be4)
  • D: は Windows 側で認識済み。WSL には未マウント (USB 接続が WSL 起動後だったため) — Phase 0 の 0-1 で対応

実施時に確認・導入するもの

  • D: のファイルシステム種別 (NTFS/exFAT — マウント時に判明。どちらでも運用可、記録のみ)
  • git-filter-repo の導入 (未インストール・pip または apt)
  • ffmpeg の導入 (動画圧縮用・apt)
  • drvfs マウントに sudo が必要 — 権限がない場合は1コマンドだけユーザーに依頼
  • 0141 など「原寸でコミット済み・記事未公開」の写真 → Phase 2 の書き換えで縮小版に置き換わるため個別対応不要 (予行演習で確認)

home issue 起票案 (Phase 0 で起票)

「写真・データ資産の整理 — 旧PC移行データ・Xperia写真・家族写真の保管方針」: D: の既存データ棚卸し / Xperia (SD) 写真の PhotoArchive 取り込み / 家族写真の冗長化方針 (単一保管の解消) / Pixel 容量の中期運用。#142 と相互リンク。

写真アーカイブ移行計画 — 実行計画書 · 2026-08-2016 / 21
07 検証完了の定義と効果測定

完了の定義 (Definition of Done)

#条件検証方法
1.git が 0.4GB 以下du -sh .git
2作業ツリーに未追跡の大型媒体ゼロgit status + du
3全記事の表示OK+公開チェック合格疎通/OGP/W3C/Lighthouse
4worktree からのデプロイ成功試験デプロイ
5新運用の文書化+ガード導入済みdocs/photos.md・hook 動作
6全原本が D: で参照可能照合スクリプト
7home issue 起票・#134 投書済みissue URL
8効果数値を #142 に記録before/after 表

効果の期待値 (再掲) 推定

現状完了後
.git1.9 GiB約 0.3 GB
増加ペース約 300 MB/月約 20 MB/月
Pixel の空き65 GBブログ専用分を随時回復
Windows 物理空き93.5 GB仮想ディスク圧縮で +1.5GB 程度回復

事後モニタリング

1ヶ月後・3ヶ月後の棚卸しで増加ペースと GitHub 側サイズを実測。期待値から大きく外れたら「技術的に問題ない」で流さず原因を特定する。

写真アーカイブ移行計画 — 実行計画書 · 2026-08-2017 / 21
07 検証報告・記録の運用

進捗の見える化と中断・再開の設計

記録の運用

  • 各 Phase 完了時に #142 へ結果コメント+notes 追記+push (指示を待たず区切りごと)
  • 実測値・判断・想定外の事象はすべて notes に残す (ブログ記事化の一次資料を兼ねる)
  • 中断時はセッションIDと再開コマンドを issue にコメントしてから止める

ユーザーの関与ポイント (最小限)

  • Phase 1: canary の画質確認 (数分)
  • Phase 2: 実施日の決定と Gate 1 の GO (執筆停止の調整)
  • スマホ削除: 初回リストの確認と GO

作業時間の使い方 (時間切れ前提の設計)

「時間がきたらその日の作業は途中でも終わる」働き方を前提に、どのステップも中断点で状態が壊れないように組んでいる。特に Phase 2 は「予行演習まで」「本適用〜push」「環境再構築」の3ブロックに分けられ、ブロック間で日をまたげる (push 前なら origin は無傷のまま)。中間生成物は scratch の issue 別フォルダに置き、再起動で消えない。

ブログ記事化との接続

2枚のスライド資料と notes の実測記録が記事の素材になる。実装完了後に Status=Writing とし、記事は別の区切りで執筆する。

写真アーカイブ移行計画 — 実行計画書 · 2026-08-2018 / 21
08 ご確認事項

実行前にご確認いただきたいこと

#確認事項補足
C1リスク表 (14〜16頁) に漏れがないか特に「スマホ削除の安全弁」と「D: 単一保管の割り切り (家族写真はスマホ併存で担保)」の2点
C2履歴書き換え方式の帰結 (10頁) の了承旧コミットに写真が残らない・旧ハッシュ参照切れ。必要時は bundle で参照可能
C3Phase 2 の実施日執筆停止が必要 (#141 が並行執筆中)。半日+検証。Phase 0-1 完了後であればいつでも
C4スマホ削除の初回タイミングPhase 1 完了後の任意時点・少数から。急がなくてよい

ご承認後の動き

Phase 0 (30〜45分・完全可逆) から即着手 → 完了報告 → Phase 1 へ。Phase 2 のみ C3 の日程調整を待って実施する。

写真アーカイブ移行計画 — 実行計画書 · 2026-08-2019 / 21
APPENDIX A主要コマンドの骨子

付録A: 主要操作の骨子 実行時は docs/photos.md・docs/deploy.md の最新手順を正とする

操作コマンドの骨子
D: マウント (Phase 0)sudo mount -t drvfs D: /mnt/d
checkpoint 掃除 (Phase 0)git update-ref -d refs/claude/checkpoint-213c6be4 && git gc --prune=now
バックアップ (Phase 2)git bundle create /mnt/d/Backups/blog-source-YYYYMMDD.bundle --all && git bundle verify …
履歴書き換え (Phase 2)git filter-repo --invert-paths --paths-from-file media-paths.txt (対象パス一覧は予行演習で確定)
worktree 再作成 (Phase 2)git worktree add ~/projects/blog-deploy (docs/deploy.md の手順に従う)
仮想ディスク圧縮 (Phase 2)wsl --shutdown 後に Windows 側で圧縮 (実施はユーザーと時間調整)
縮小 (Phase 1・sharp)sharp: rotate() → resize(2400, 2400, fit:'inside', withoutEnlargement) → jpeg(quality:85, mozjpeg)
スマホ削除 (運用)adb shell rm (候補承認後) → メディアDB再スキャン → 削除ログ記録

いずれも本番実行前に予行演習またはドライラン相当の確認を挟む。破壊的操作 (履歴書き換え・スマホ削除) はユーザーの明示 GO を必須とする。

写真アーカイブ移行計画 — 実行計画書 · 2026-08-2020 / 21
APPENDIX B前提数値と参照

付録B: 前提数値の一覧 2026-08-20 時点

項目
.git (ローカル)1.9 GiB
うち checkpoint ref 分497 MB
追跡媒体 (notes 1,248MB / src 207MB)約 1.46 GB
未追跡媒体496 MB
増加ペース約 300 MB/月
Windows 物理ディスク237 GB (空き 93.5 GB)
USB (D:)460 GB (空き 166 GB)
Pixel128 GB (使用 63 GB)
Google フォト無効 (11/15 GB・使わない方針)

参照

  • 戦略提案資料「ブログ写真アーカイブ戦略」(2026-08-20・全21枚) — 方針決定の経緯と選択肢比較
  • 実測記録 investigation-2026-08-20.md (notes/0142)
  • git filter-repo 公式ドキュメント
  • 関連 issue: #142 (本件) / #134 (執筆フロー文書) / #52 (置き場ガイドライン) / #110・#140 (デプロイ機構) / home issue (Phase 0 で起票)

本資料について

承認済みの戦略 (決定1〜4+保管設計v2) を実行に落とした設計書。Claude Code が作成し、実行前の最終確認 (19頁の C1〜C4) を経て着手する。

写真アーカイブ移行計画 — 実行計画書 · 2026-08-2021 / 21
← → キー / クリックで移動 · 印刷で全ページ出力
1 / 21