背景
私はM3 MacBook Air(メモリ16GB)を使用し、普段以下のようなツールを利用して開発しています。
特にClaude Codeを複数立ち上げていることも多く、若干のスペック不足(主にメモリ不足)を感じており、「新しいMacも発表されたことだし買い替えるか〜」とApple公式サイトでスペックを選んだところ、なんと40万円オーバー!
高い…
【私の環境】
M3 macbook air メモリ16GB SSD512GB
よく使うもの
- Chrome
- VS Code / Cursor
- Docker (コンテナ常時稼働 3~5)
- Claude Code
- Figma
- Slack
- Notion
どう考えてもメモリ16GBでは足りません
最近、Xで「M4 Mac mini を自宅サーバー化し、外出先リモート接続してClaude Codeで開発。みたいなことをしている人を見かけます。
しかし、MacでDockerを動かすと裏でLinux VMが動くため、構造上どうしてもメモリを爆食いしてしまう問題は変わりません。
そこで目をつけたのが、最近ゲームをしていなくて持て余していたゲーミングPC(Windows) です。
【自宅で眠っていたゲーミングPCのスペック】
- CPU: i7-10700F (8コア / 16スレッド)
- メモリ: 64GB DDR4
- グラボ: RTX3060ti
- SSD: 1TB / HDD: 2TB
開発で使うには十分すぎるスペックです。
グラボも積んであるのでローカルLLMも動かせそう。
ゲーミングPCを活用してMacから利用する選択肢の比較
-
Windows Proにアップグレードしてリモートデスクトップで接続
- ✖ リモート特有のラグがある。OS代がかかる。操作感やターミナルがWindowsのままになるので今回は除外。
-
Linuxをネイティブインストールする
- ✖ パフォーマンスは最高だが、ゲームデータを含むWindows環境を消しかデュアルブートにする必要があり、ハードルが高い。
-
Windows WSL2上のUbuntuにSSH接続する(★今回採用!)
- 〇 デスクトップ上にはWindows環境を残しつつ、Macからは完全なUbuntuサーバーとして利用できる!
リモート接続する上でVPNの契約が必要になってくると思いますが、今回はTailscaleを使う方法を紹介します。
無料VPNは怪しいものもありますが、Tailscaleのビジネスモデルは「個人利用(3ユーザー、100デバイスまで)」無料となっており、主に法人向けで収益を得ているようです。通信はP2Pなので運営側も通信内容を見れません。
参考記事
今回は、デスクトップのWindows環境は残しつつ、WSL2上のUbuntuへMacからTailscale経由でSSH接続し、**「見た目と身軽さはMacBook Air、中身の処理能力と広大なメモリはWindowsデスクトップ」**という両者のいいとこ取りをした最強環境を構築する手順をまとめました。
雑なイメージ図
1. Windows側のクリーンアップ
すでにDocker Desktop経由などでWSLが入っている場合は、まっさらな状態にするために削除しましょう。
-
Windows版 Docker Desktop がある場合はアンインストールします。
-
Windowsの「ターミナル(管理者)」を開き、以下のコマンドで現在インストールされているWSLの一覧を確認します。
wsl -l -v -
もし
Ubuntuやdocker-desktopなどの名前が表示されたら、以下のコマンドですべて一つずつ削除(初期化)します。wsl --unregister <削除したい名前> # 例: wsl --unregister Ubuntu -
再度
wsl -l -vを実行し、「Linux 用 Windows サブシステムには、インストール済みのディストリビューションがありません。」と表示されればOK!
2. Ubuntuのインストール
1. 引き続き「ターミナル (管理者)」で以下のコマンドを入力します。
wsl --install
2. インストールが完了したら、Windowsを再起動します。
3. 再起動後、自動的にUbuntuの初期設定画面(黒い画面)が開きます。
4. 好きなユーザー名(例: ubuntu-user など小文字英数字)とパスワードを設定します。
(※このユーザー名とパスワードは、後でMacからSSH接続する際に使います)
5. スペック確認
# メモリ確認
$ free -h
total used free shared buff/cache available
Mem: 31Gi 736Mi 29Gi 3.5Mi 945Mi 30Gi
Swap: 8.0Gi 0B 8.0Gi
# ストレージ確認
$ df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/sdd 1007G 2.4G 954G 1% /
3. WSL2のメモリ確認と割り当て
デフォルトではホストOSの半分のメモリしか使えないため、64GB中48GBをWSL2に割り当てるよう設定します。
-
PowerShellを立ち上げて以下のコマンドで設定ファイルを作成・編集します。
notepad $env:USERPROFILE\.wslconfig -
メモ帳が起動するので、以下の3行をコピーして貼り付け、上書き保存(Ctrl + S)して閉じます。
[wsl2] memory=48GB swap=16GB -
設定を反映させるために、PowerShell上で以下のコマンドを実行し、WSL2を完全にシャットダウンします。
wsl --shutdown -
再度ターミナルで
wslと入力してUbuntuを起動し、メモリを確認します。free -h
出力
total used free shared buff/cache available
Mem: 47Gi 1.4Gi 45Gi 3.5Mi 330Mi 45Gi
Swap: 16Gi 0B 16Gi
Mem: の total が 47G や 48G に増えていれば成功です!
4. システム管理機能(systemd)の有効化
SSHサーバーやVPNを自動起動させるために、systemdを有効にします。
-
WSL(Ubuntu)上で以下のコマンドを実行し、設定ファイルを開きます。
sudo vi /etc/wsl.conf -
以下の2行を記述します
[boot] systemd=true -
Escキーを押し、:wqと入力して保存・終了します。 -
Windows側のPowerShellで
wsl --shutdownを実行し、再起動して設定を反映させます。
5. SSHサーバーとTailscaleのインストール
-
SSHサーバーのインストール
Macからコマンドで入り込むための「受け口」を作ります。sudo apt update && sudo apt install openssh-server -y -
Tailscale(VPN)のインストール
外出先からでも安全に接続できるようにTailscaleを導入します。curl -fsSL [https://tailscale.com/install.sh](https://tailscale.com/install.sh) | sh -
Tailscaleの起動とネットワーク参加
sudo tailscale upターミナル上に
https://login.tailscale.com/a/xxxxxxのような認証URLが表示されます。これをWindowsのブラウザにコピペして開き、GitHubアカウント等でログイン(Authorize)してください。 -
IPアドレスの取得
認証が成功したら、ターミナルに戻って以下のコマンドでIPアドレスを取得し、メモしておきます。tailscale ip -4
(※ Windows側の準備はこれで完了です!モニター出力は外して構いませんが、PCはスリープにならないようWindowsの電源設定を変更しておいてください)
6. Macから接続する
-
Macにも Tailscale公式サイト からアプリをインストールします。
-
アプリを起動し、Windows側と同じアカウントでログインしてネットワークに参加します。
-
Macの「ターミナル」を開き、SSH接続テストを行います。
(※ubuntu-userと100.xx.xxx.xxはご自身の環境に置き換えてください)ssh ubuntu-user@100.xx.xxx.xx -
初回は
Are you sure you want to continue connecting?と聞かれるのでyesと入力します。 -
パスワードを入力し、
ubuntu-user@マシン名:~$と表示されればログイン成功です!
7. VS Code / Cursor から接続する
ターミナルで接続できたら、エディタからも直接繋げるようにします。
- Macの VS Code (または Cursor) を開き、拡張機能 「Remote - SSH」 をインストールします。
- 左下の青い
><マークをクリックし、「ホストに接続する (Connect to Host...)」 > 「新規 SSH ホストを追加する (Add New SSH Host...)」 を選択します。 - 接続コマンド
ssh ubuntu-user@100.xx.xxx.xxを入力し、設定ファイル(~/.ssh/config)に保存します。 - 右下の「接続」をクリックし、OSを聞かれたら「Linux」を選んでパスワードを入力します。
完了
セットアップ
ご自身の環境に合わせてセットアップしてください。
Docker Engine のインストール
WindowsのDocker Desktopではなく、WSL Ubuntu側に直接Docker Engineをインストールすることで爆速になります。
# 古いバージョンを削除
sudo apt-get remove docker docker-engine docker.io containerd runc
# 必要なパッケージをインストール
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg -y
# Dockerの公式GPG鍵を追加
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL [https://download.docker.com/linux/ubuntu/gpg](https://download.docker.com/linux/ubuntu/gpg) | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# リポジトリを設定
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] [https://download.docker.com/linux/ubuntu](https://download.docker.com/linux/ubuntu) \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# インストール
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
# sudoなしでdockerコマンドを使えるようにする(重要!)
sudo usermod -aG docker $USER
(※ 実行後、ターミナルを開き直すと設定が反映されます)
作業ディレクトリ
wslで作業する時 widnowsマウントディレクトリ上で作業しないようにしましょう。
(読み込み書き込みが遅くなるため)
ubuntu-user@Dell-G5000-i710700F:~$
Claude Code のインストール
公式手順に従ってインストールしましょう
curl -fsSL [https://claude.ai/install.sh](https://claude.ai/install.sh) | bash
これで開発環境はUbuntuのリソースを使いつつ、ターミナルやVSCodeの操作感はMacのままという環境が完成しました!
余談
約1年前、まだメモリが安かった時期に、32GB×2枚のメモリを約16,000円で購入して交換していました(現在同じものを買うと45,000円ほどに高騰しています…!)。さらに、元々刺さっていた8GB×2枚のメモリはメルカリで5,000円で売却したため、実質11,000円で64GBにアップグレードした計算になります。
ゲーミングPC自体も16万程度で買っていたので周辺機器諸々合わせても20万行かないくらいです。
Macを買い替えていたら48万くらいかかったのでいい節約ができました。
