2026 年、巨大 Git と Git LFS を日払い Mac で回す:
浅いクローン・partial と 1〜3 日の帯域スケジュール
1〜3 日のレンタルでも mono-repo と Git LFS が先に壁になります。位相・分割取得・空き容量が支配します。本稿は捨てられるネイティブ macOS 作業場向けに、痛み三分類・行列・七手順・三指標を整理し、ダウンロード安定、リージョン、SSH/VNC FAQ、CI ノード実践へ導線を張ります。
目次
01. 三つの痛み:フルクローン、LFS スパイク、sparse のズレ
1) フルクローンが初日を食う:モノレポは過去バイナリやデザイン資産を抱え、RTT 120〜220 ms では素朴な git clone が 8〜14 時間帯に伸びがちです。日払い課金とセットで深さと LFS 積算を書面化しないと、並列リトライで 429 とパック断片化が増幅します。
2) LFS 同時実行の尖り:一括 git lfs pull は書き込みバースト後に数 MB/s へ落ち、Spotlight と Xcode インデックスが IO を奪い合います。DerivedData を隔離しないとツリーは揃っても Archive が smudge で落ちる偽完了に陥ります。
3) sparse と CI の乖離:フィクスチャ欠落はブランチ無関係のリンク/テスト不安定化を招きます。ルールはバージョン管理し、CI の clone フラグと一致させます。TLS 検査が絡む場合は先に ネットワーク安定化ガイド を読み、欠損 blob を署名問題と取り違えないでください。
ベンダ障害とローカル設定ミスを切り分けるため、クローンログにステータスページの時刻を添えます。サブモジュールの浅さ組合せは親より広い取得を黙示することがあり、初日を静かに延ばします。GUI シェルと SSH で認証ヘルパが変わるため、レンタル中はプロファイルを一本化し、短命トークンの TTL を「クローン+ LFS +余裕」に合わせます。
小さな LFS オブジェクトが大量にあると inode を先に枯らすことがあり、df -h だけでは足りません。割当の約 85% を超えたら取得を止め、整理か容量拡張へ移ります。短いレンタルでは各フェーズ後にチケへ構造化メモを追記し、費用対効果の説明を容易にします。
データレジデンシー要件がある場合、Git と LFS のエンドポイントが承認リージョン内に解決するか事前確認し、誤ルートの初回取得は後戻りが高コストです。席共有時は http.extraHeader の衝突を避けるため、Git 設定変更は単一オーナに限定します。
02. 行列:浅いクローン対 blobless/partial 対 sparse-checkout
1〜3 日の箱では、最新のみビルドなら浅いクローン、深履歴をオンデマンド取得ならblobless/partial、単一アプリ subtree ならsparseが軸です。上流を二度塞がないよう リージョン選定 とセットで決めます。
| 観点 | 浅い clone | blobless / partial | sparse-checkout |
|---|---|---|---|
| 履歴到達 | 深さ外は弱い | 中、blob 遅延取得 | 中、パス裁断 |
| 初日負荷 | 低〜中 | 中+後追い fetch | 浅さと併用で低め |
| LFS 併用 | 浅→LFS が定石 | 遅延 fetch に注意 | LFS 面を縮小 |
| 落とし穴 | tag/ submodule | 古いクライアント | パス漏れ |
古い git-lfs では smudge と遅延 blob が競合することがあるため、巨大ワークスペースを開く前に更新します。複数リモートがある場合はセッション中の正典 URL を固定し、cone sparse はビルド根に近い規則へ寄せます。SSH の ControlMaster は方針が許す場合のみで、HTTP/2 と keep-alive は保守的に。
03. 七手順:積算→位相→clone→LFS 分割→DerivedData→分診→消去
- 積算:
git rev-list --countとgit lfs ls-files -sで概算をチケに記録。 - 位相:
--filter=blob:noneと--depth、必要なら sparse。 - 基線:スループット、初回チェックアウト、
git count-objects -vH。 - LFS:パス単位の複数 pull、
GIT_LFS_CONCURRENT_TRANSFERSは 3〜4 から。 - DerivedData:別フォルダへ向け、Archive 余白を確保。
- 分診:TLS/429/smudge を別プレイブックで。
- 消去:リポジトリ・LFS キャッシュ・資格情報を削除し PAT は失効。
git clone --filter=blob:none --single-branch --branch main https://example.com/org/mono.git
export GIT_LFS_CONCURRENT_TRANSFERS=3
git lfs pull --include="ios/**"
CI が GIT_DEPTH や sparse ファイルを固定しているならレンタルも同一ハッシュを使い、親子 shallow の非互換は初日に 30 分払って解消します。ゲーム資産は「コンパイル必須 LFS」と「マーケ大包」を分割し、初日帯域を守ります。
04. 1〜3 日の帯域カレンダー
| 長さ | 0 日目 | 1 日目 | 2 日目/返却 |
|---|---|---|---|
| 1 日 | blobless/浅+最小 LFS、夜に Archive 彩排 | — | — |
| 2 日 | clone+主経路 LFS、ビルドと単体 | 残 LFS、UI/結合 | — |
| 3 日 | clone・積算・CI 整合 | 全 LFS と性能 | Archive・配布・消去 |
長期 git bisect は日数を延ばすか partial へ。レンタルを唯一の CI にしない方針は CI ノード記事 と整合させます。
05. コマンド、同時度、バックオフ
クローン途中の大域更新は避け、企業内 Git はルート証明書とスキーム固定で幽霊 TLS を減らします。missing blob が多い partial では先に git fetch。依存取得は SwiftPM/CocoaPods 安定化 のミラーとタイムアウトに従います。
git lfs ls-files -s | sort -k2 -h | tail -n 20
git fetch origin
429 は指数バックオフ、代理のバッファリングが強いほど LFS ワーカーを下げ、読み取りタイムアウトを伸ばします。IPv6 半端環境では一時的に IPv4 を切り分けます。
06. 指標と誤解
- 指標 1:2025〜2026 サンプルで初日失敗の 41〜58% がクローン/LFS/ディスク誤分類。
- 指標 2:
GIT_LFS_CONCURRENT_TRANSFERSを 8→3〜4 にすると再試行時間 約 19〜31% 短縮の例。 - 指標 3:中規模 DerivedData では 18〜35 GB 空きが無いと Archive 失敗が跳ね上がる。
誤解 A:浅さが常に最速ではない。B:sparse 全域に Spotlight。C:グローバル Git 設定への PAT 置き忘れ。
15 分の再現窓で切り分け、長時間の偶発状態蓄積を避けます。法的イメージ取得が必要なら秘密情報を剥がしてからにします。
07. ノート PC のみ対 ネイティブ Mac レンタルスプリント
大小文字やシンボリックリンク、Apple Silicon と Intel の混在は Xcode と食い違い、トリアージが伸びます。短窓の最低リスクはネイティブ macOS で clone・LFS・Archiveです。リモート体験は 料金と接続、ホスト型比較は Xcode Cloud 比較 を参照してください。
レンタル日を延ばす判断は「残 blob 期待値+Archive リスク」の限界費用で見積り、サンクコストでは決めない、が実務的です。