並行セッションが走っていても、本番サイトを壊さずにデプロイする
WorkPilot の LP は、複数の AI セッションが同時に触っています。便利な反面、「ローカルが最新だと思って上げたら、本番にしか無い作業を消した」が簡単に起きる。実際に2回起きかけてから決めた、静的サイトのデプロイ手順を3つのルールにまとめました。
ON THIS PAGE
01何が起きかけたか
WorkPilot の LP は、複数の AI セッションがそれぞれのスレッドから触っています。その結果、本番サーバーのほうがリポジトリより新しい状態が、実際に2回ありました。
- 8月末:「作った人」セクションの新しい版が本番にだけあり、リポジトリの
site/は3日前の版のまま。新しい版は git に一度もコミットされていなかった - 9月9日:プレス資料ページのスクリーンショット5枚(計 2.7MB)が、本番サーバーにしか無かった。著者写真も同じ状態だった
どちらも、site/ をフォルダごと同期していたら黙って消えていました。エラーは出ません。コマンドは「成功した」ように見えるのが厄介なところです。
もう1つ、本番の .htaccess はサーバー上で直接編集して HTTPS 強制を有効にしています。ローカルに古い設定が残っていれば、同期した瞬間に HTTPS 強制が外れます。
02ルール1:フォルダごと同期しない
転送するのは、今回変えたファイルだけ。名指しで送ります。
$ rsync -av --delete site-deploy/ server:public_html/
# 変えたファイルだけを名指しで送る $ rsync -v --stats index.html press.html server:public_html/
⚠ GOTCHA
--delete は「ローカルに無いものは不要」とみなします。サーバー側にだけある認証用ファイルや、サーバー上で直した設定は、ローカルに無いという理由だけで消えます。
03ルール2:上書きの前に、サーバー側で固める
ローカルにバックアップがあっても、壊れるのはサーバー側です。戻す材料もサーバーに置きます。
$ ssh server 'cd ~/site && tar czf backup_2026-09-11_before_blog.tar.gz -C public_html .'
ファイル名に日付と「何の前か」を入れておくと、半年後の自分も、次のスレッドの AI も迷いません。
04ルール3:「ローカルが最新」を疑う
並行して動くセッションが、本番だけを先に直していることがあります。上げる前に本番を落として、差分を見ます。
$ curl -s "https://example.com/?cb=$(date +%s)" -o /tmp/prod.html $ diff /tmp/prod.html site/index.html && echo "same"
NOTE
?cb= はキャッシュ回避です。フロントのキャッシュが HTML を10分持つ環境だと、上げた直後の確認で古いレスポンスを見て「反映されていない」と誤判定します。
05手順を、次のスレッドに残す
この3つのルールは、WorkPilot の接続メモ(ナレッジごとの _access_playbook.md)に書いてあります。メモは、そのナレッジをつないだスレッドで毎回 AI への指示に添えられます。だから次にデプロイを頼んだ AI も、同じ地雷を避けて動きます。
「前回うまくいったやり方」を、人間が覚えておかなくていい。これが、自分の開発で WorkPilot を使い続けている一番の理由です。
| タイミング | やること | 確認 |
|---|---|---|
| 上げる前 | 本番を落として差分を見る | diff が意図した変更だけ |
| 上げる前 | サーバー側でバックアップ | tar のサイズが 0 でない |
| 上げるとき | 変えたファイルだけ名指し | --stats の転送数 |
| 上げた後 | キャッシュを避けて確認 | ?cb= 付きで 200 |
このブログの作業は、すべて WorkPilot の中でやっています。
いま契約している AI サブスクのまま、Claude・ChatGPT・Kimi・Antigravity を1つの操縦席で。
Macで無料ダウンロード