中古のデスクトップPCへ開発環境を引っ越す作業の続きをしました。前日に旧PCを棚卸しして手順書を作っておき、今日はその手順書に沿って、WSL2 と Docker から Node・Python・Rust、各 CLI のログイン、Claude Code、Hermes Agent まで最後まで通しました。
手順書どおりに進まなかったところが5つあり、いちばん大きかったのは Hermes Agent のデータの置き場所を取り違えていたことでした。
今日やったこと
- WSL2 の更新と Docker の動作確認(WSL2 バックエンドで hello-world まで)
- Node.js と npm のグローバルパッケージ8件、pnpm の初期設定
- Python 3.14 と uv、よく使う pip パッケージ21件
- Rust と tauri-cli
- wrangler・Supabase・Neon・Stripe など各 CLI のログイン
- Claude Code を npm 版からネイティブ版へ切り替え
- Hermes Agent の入れ直しと、旧PCからのデータの引っ越し
- Chrome と Antigravity CLI の追加
- 最後に19項目のバージョン確認
詰まったところと、どう解いたか
1つ目は npm です。npm 11.20 では、パッケージの install スクリプトが既定で実行されません。wrangler や esbuild、pnpm はこのスクリプトで実行ファイルを取ってくるので、インストールは成功したように見えるのに動かない、という状態になりました。警告に出た名前を確かめてから、必要な分だけ --allow-scripts で1回だけ許可して入れ直しました。常に許可する設定にはしていません。
npm i -g --allow-scripts=pnpm,esbuild,workerd wrangler pnpm2つ目は Python です。Python install manager を入れておいたところ、いつの間にか 3.15 が入り、それが既定になっていました。手順書では 3.14 を既定にする予定だったので、3.14 を入れたうえで、環境変数 PYTHON_MANAGER_DEFAULT で 3.14 に固定しました。
3つ目は Visual Studio Build Tools です。winget で入れただけでは「C++ によるデスクトップ開発」のワークロードが入っておらず、リンカ(link.exe)がありませんでした。Rust の MSVC 向けビルドにはこれが要るので、ワークロードを追加してから tauri-cli をビルドし、5分52秒で通りました。
4つ目は Chrome です。winget の MSI 版は、ダウンロードしたインストーラーのハッシュが一致せずに失敗しました。ハッシュの検証を外せば入りますが、それはせず、同じく winget にある Google 公式のオンラインインストーラー版(Google.Chrome.EXE)で入れました。こちらは検証が通り、署名も Google LLC で有効でした。
5つ目、いちばん大きかったのが Hermes Agent です。旧PCから ~/.hermes を運んでいたのですが、中を見るとファイルの日付が9月14日で止まっていて、10月に変えた設定も、プロファイルや cron、会話履歴のデータベースも入っていませんでした。README を確認すると、Windows ネイティブ版はコードもデータも %LOCALAPPDATA%\hermes に置く作りでした。棚卸しのときに、Claude がこのフォルダを「本体だから入れ直せばいい」と判断して、運ばない側に入れていたのが原因です。
このフォルダは約7.2GBありますが、大半はコード本体・同梱ツール・キャッシュで、インストールし直せば作られます。それらを除いたデータだけを robocopy でコピーすると 1,159 ファイル・87MB で、旧PCで取った SHA256 の一覧と新PCで1件ずつ照合して、すべて一致しました。コピーの前には旧PCのゲートウェイを止め、自動起動も無効にしました。同じボットで2台が動くと、メッセージに二重に返信してしまうためです。

Hermes Agent のフォルダ約7.2GBのうち、新PCへ運ぶ必要があったデータは87MB・1,159ファイルだけだったことを示す棒グラフ。

新PCのセットアップで手順書どおりに行かなかった5つと、それぞれの対処をまとめた表。
気づき
手順書どおりに運んでも、手順書を作ったときの判断が間違っていれば、そのまま間違ったものが運ばれます。Hermes の件は、運んだフォルダの日付を見て初めて気づきました。データを移したあとは、中身が新しいかどうかを日付や件数で確かめる必要がある、というのが今回の教訓です。
もう1つは、Claude Code の自動モードの安全チェックです。ネットから取ってきたインストールスクリプトを Claude が実行しようとすると、中身を読んで確認したあとのファイルでも止められました。そこで、Claude がスクリプトの中身を読んで、どこに何を置くかを確かめ、実行は自分のターミナルで行う、という分担にしました。
最後に19項目のバージョン確認がすべて通ったので、つまずいた点を手順書に書き足して、引っ越しはひと区切りです。
次にやること
- 各リポジトリの依存パッケージは、使うときに入れる
- GitHub に登録してある旧PCの SSH 鍵を削除するか決める
- 移行用の手順書リポジトリを GitHub でアーカイブする
