WSL2とOneDrive、役割分担して使ったらファイル管理がスッキリした
CLIはWSL2、GUIはOneDrive。このブログ自体がその構成で動いている。node_modulesをOneDriveに置いてはいけない理由も含めて整理した。
WSL2を使い始めてしばらく経つが、「どのファイルをどこに置くか」で最初は混乱した。WindowsのOneDriveにも置けるし、WSL2(Linux)側にも置ける。なんとなく使っていたら迷子になる。
結論から言うと、今はCLIで触るものはWSL2、GUIで触るものはOneDriveという役割分担で落ち着いている。
なぜOneDriveとWSL2を分けることにしたのか
ダウンロードしたファイルや画像は、エクスプローラーで確認したいことが多い。そういうデータはOneDriveに置いておくのが直観的だった。
一方、コマンドラインから操作するデータ——コードや設定ファイル——はWSL2で直接触ったほうが速い。WSL2からOneDriveのファイルを見に行くことはできるが(/mnt/c/Users/username/OneDrive/)、毎回そこを叩くのは手間だ。
「CLIで使うものはWSL2」「それ以外はOneDrive、必要なときだけWSL2から参照する」というルールにしたら、GUI・CLI両方の観点でバランスが取れた。
この構成にしようと思ったのも、Claude Codeに「どう整理するのがいいか」と相談したのがきっかけ。自分で考えるより先に聞いたほうが早い。
実際の構成(このブログを例に)
このブログはまさにその構成で動いている。
/mnt/c/Users/username/OneDrive/blogs/my-blog/ ← ソースコード(OneDrive)
├── src/content/posts/ ← 記事Markdown
├── src/components/ ← Astroコンポーネント
└── public/images/ ← OGP画像など
/home/username/blogs/my-blog/ ← ビルド環境(WSL2)
├── node_modules/ ← 依存パッケージ
├── dist/ ← ビルド成果物
└── astro.config.mjs ← Astro設定ファイル
ソースコードをOneDriveに置いているのは、記事に使う画像ファイルをエクスプローラーで確認したいから。Markdownの中で画像パスを書くとき、エクスプローラーでサクッと確認できると便利だ。
ビルドはClaude Code経由でしかやらないので、WSL2側に閉じ込めておけばいい。
Astroの設定はこうなっている(astro.config.mjsはWSL2側に置く):
export default defineConfig({
site: 'https://my-blog.pages.dev',
srcDir: '/mnt/c/Users/username/OneDrive/blogs/my-blog/src',
publicDir: '/mnt/c/Users/username/OneDrive/blogs/my-blog/public',
outDir: '/home/username/blogs/my-blog/dist/',
cacheDir: '/home/username/blogs/my-blog/.astro/',
});
srcDirとpublicDirでOneDrive側を参照し、outDirとcacheDirはWSL2側に出力する。詳しくはAstroのセットアップ記事にも書いた。
シンボリックリンクで迷子を防ぐ
最初に詰まったのがシンボリックリンクを設定する前だった。WSL2のターミナルで ls ~/ を打つと、見慣れないディレクトリ名が並んでいて直観と合わない。「OneDriveはどこだ」となる。
シンボリックリンクを作っておくとかなり楽になる:
# OneDriveへのショートカット
ln -s /mnt/c/Users/username/OneDrive ~/onedrive
# Windowsユーザーフォルダへのショートカット
ln -s /mnt/c/Users/username ~/win-home
これで cd ~/onedrive でOneDriveに飛べる。WSL2とOneDriveのつながりが頭の中でわからなくなりそうなとき、ls ~/ を見れば onedrive というリンクが見えるので迷いにくい。
シンボリックリンクについてはWSL2の環境構築記事でも触れた。
node_modulesをOneDriveに置いてはいけない
これは実際にやらかしたわけじゃないけど、OneDriveにnode_modulesを置くのは絶対にやめたほうがいい。理由は2つ。
同期が地獄になる。 node_modulesには数万〜数十万個のファイルが入っている。OneDriveがそれを全部クラウドと同期しようとするので、CPUとネットワーク帯域を食いまくる。プライベートPCで開発するならなおさら避けたい。
Windowsファイルシステムのパフォーマンスが遅い。 WSL2からOneDrive(/mnt/c/以下)にアクセスするとき、Linuxネイティブのファイルシステムより読み書きが遅い。node_modulesのような大量の小さいファイルをここに置くと、npm installやnpm run buildが体感できるレベルで遅くなる。
node_modulesとdistは常にWSL2側に置く。これは鉄則。
この構成はClaude Codeに相談して決めた
正直に言うと、この構成を自分で考えたわけじゃない。「こういう環境でこういうことをやりたい」とClaude Codeに伝えたら、こういう分け方を提案してくれた。
思うのは、自分がやりたいことをはっきり持っておくことが大事だということ。「OneDriveも使いたいしWSL2も使いたい、画像はエクスプローラーで確認したい、ビルドはCLIでやる」と具体的に伝えれば、Claude Codeはちゃんと整理してくれる。
「どうすればいいか」を自分でwebで調べてぽちぽちするより、全部Claude Codeに話した方が早くて精度が高いことが多い。運用の中で「あれ?」と思うことがあれば、それもそのままClaude Codeに投げればいい。
ハマってる人の参考になれば。