Windows での開発環境を構築する

windows

大学時代に MacBook Air を買ってもらってから 14 年間 Mac で開発してきたが、ThinkPad X1 Carbon Gen 13 ​Aura Edition を購入した。

ThinkPad にしたのは、数少ない個人でも買える US 配列対応の Windows ラップトップなのと、家で使っている HHKB Studio と同様にポインティングデバイスが使えるからというのがある。ポインティングデバイスを使っているのは Windows ラップトップのトラックパッドが期待できず、移動時にマウスを持ち歩くのも面倒だったためだが、ThinkPad のトラックパッドは想像より良かった。キーボードも打ちやすいし高いだけのことはある。思ったよりポインティングデバイスやクリックボタンが薄いのと、カーソルキーの↑の横にPgUpとPgDownがあるのはやや違和感があるが、14 インチで 1kg を切るのは素晴らしい。今のところ満足している。

IME

Ctrl2Cap をダウンロードし PowerShell を管理者権限で開いてインストールする。

> .\ctrl2cap.exe /install

日本語 IME を Ctrl+Space でオン/オフできるようにする。なお Alt+Tab でウィンドウを切り替えられて、Win+Shift+←→で他の画面に移動できる。

Git

Microsoft Store から 1Password をインストールして、 OpenSSH Authentication Agent が有効なら無効にして、1Password SSH Agent を有効にする

Git for Windows をインストールして 1Password SSH Agent が対応している Microsoft OpenSSH を使うように設定すると 1Password に登録した鍵を使って git clone などできるようになる。gcm は Get-Command のエイリアス。

> gcm git

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Application     git.exe                                            2.51.1.1   C:\Program Files\Git\cmd\git.exe

> git config --global core.sshCommand ssh.exe

Docker

Store から Docker Desktop をインストールする。WSLが有効になってなかったり古すぎると動かないので更新する。

> wsl --update
> docker run ubuntu /bin/echo 'Hello world'
...
Hello world

WSL2

素の Windows だと改行コードが CRLF だったり WinGet でダウンロードできるツールのバージョンが古かったり、標準で入っている Windows PowerShell の文字コードがデフォルトで Shift-JIS だったり、mise activate が PowerShell に対応していないため mise.toml の環境変数がシェルから参照できるようにならなかったりと色々面倒なので WSL2 上に環境を構築する。

mise で asdf のような開発言語のバージョン管理と direnv のようなディレクトリごとの環境変数の適用を行う - sambaiz-net

WSL2 は軽量な仮想マシンで Linux を動かす。Windows のドライブは /mnt/ にマウントされ、ファイルを VSCode で開くと WSL エクステンションによって devcontainer のように接続される。

> wsl --install -d Ubuntu
$ sudo apt install make
$ code /mnt/c/Users/***

ssh.exe で Windows OpenSSH クライアントを呼べるので、同じ .gitconfig で WSL からも Windows の 1Password SSH Agent を利用できる

$ ln -s /mnt/c/Users/(user_name)/.gitconfig ~/.gitconfig
$ which ssh.exe
/mnt/c/Windows/System32/OpenSSH//ssh.exe
$ which ssh
/usr/bin/ssh

Homebrew を入れて Mac のときと同様に開発環境を作っていく。

$ sudo apt update && sudo apt install -y build-essential
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
$ echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.bashrc
$ brew install mise
$ echo 'eval "$(mise activate bash)"' >> ~/.bashrc
$ mise use --global node@22
$ node --version
v22.21.0
$ npm install -g @anthropic-ai/claude-code
$ claude --version
2.0.27 (Claude Code)