Windows11の開発用セットアップ手順

最近Windowsで開発環境をセットアップしたので、その時の手順をメモとして残します。

## 環境
- Windows 11 Home 21H2（Windows Update後）

なお筆者はWindowsの他にChromeOS/Linuxをよく使うので、特にChromeOSとのシナジーを重視するため必然的にOSに依存したアプリケーションを使うことが少なくなります。要するに**Chromeブラウザ**さえあればだいたい何とかなるという人です。

## wingetでChromeをインストールするまで
まず新しいWindowsマシンを起動したら、最初にWindows Updateをします。何度か再起動を挟みます。

最初はMicrosoft Storeで **「アプリ インストーラー」** を探して、インストールします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50391/a4f18861-ba84-7715-4bbe-5428f537d750.png)


これに`winget`というCLIツールが含まれています。`winget`はWindows用のCLIパッケージマネージャ。`apt-get`とか`yum`とか`dnf`みたいなものです。
Windowsでも過去に類似した物はいくつかありましたが、`winget`はMicrosoft謹製であり主要なアプリケーションはここから安定してインストールできます。

https://docs.microsoft.com/ja-jp/windows/package-manager/winget/

Windows 11なら **Windows Terminal** が標準で入っていると思うので、PowerShellを起動して`winget`を使います。
`winget search <appname>`で欲しいパッケージのIDを探して、`winget install <appid>`でインストールします。

たとえば`winget search chrome`をしてみると

```powershell:powershell
> winget search chrome
名前                       ID                         バージョン    一致                  ソース
-------------------------------------------------------------------------------------------------
Streamer to Chromecast     9MTTSZ74DBRS               Unknown                             msstore
Google Chrome              Google.Chrome              104.0.5112.81 Moniker: chrome       winget
Dichromate                 Dichromate.Browser         104.0.5112.81 Command: chrome       winget
Google Chrome Dev          Google.Chrome.Dev          105.0.5195.19 Command: chrome       winget
Google Chrome Beta         Google.Chrome.Beta         105.0.5195.19 Command: chrome       winget
Chrome Remote Desktop Host Google.ChromeRemoteDesktop 105.0.5195.5  Tag: chrome           winget
Ginger Chrome              Saxo_Broko.GingerChrome    93.0.4529.0                         winget
ICBCChromeExtension        ICBC.ICBCChromeExtension   1.2.0.0                             winget
360 极速浏览器X            360.360Chrome.X            21.0.1120.0                         winget
360极速浏览器              360.360Chrome              13.5.2022.0                         winget
115浏览器                  115.115Chrome              25.0.2.1                            winget
Google Chrome Canary       Google.Chrome.Canary       106.0.5210.0                        winget
Inssist                    SlashedIo.Inssist          16.1.0        Tag: chrome-extension winget
```

名前「Google Chrome」のIDは`Google.Chrome`なので、`winget install Google.Chrome`します。

```powershell:powershell
> winget install Google.Chrome
見つかりました Google Chrome [Google.Chrome] バージョン 103.0.5060.134
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
Downloading https://dl.google.com/dl/chrome/install/googlechromestandaloneenterprise64.msi
  ██████████████████████████████  83.7 MB / 83.7 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました
```

これでChromeのインストールが完了です。

ブラウザがインストールできればだいたいやりたいことはできます。

## wingetで必要なものをインストール
wingetがあればほかにも主要なソフトウェアを簡単にインストールできます。

```powershell:powershell
> winget install Google.JapaneseIME
> winget install Microsoft.VisualStudioCode
> winget install SlackTechnologies.Slack
```

## ctrl2cap
CapsLockをCtrlキーに入れ替えます。ctrl2capを使えばできます。

https://docs.microsoft.com/ja-jp/sysinternals/downloads/ctrl2cap

Microsoft公式の便利ツール[PowerToys](https://docs.microsoft.com/ja-jp/windows/powertoys/install)でもできるようなのですが、私の環境ではちょっとうまく動作しませんでした。

## フォントのインストール
以下のフォントをインストールしています。

https://moji.or.jp/ipafont/

https://myrica.estable.jp/

## WSLのセットアップ

https://docs.microsoft.com/ja-jp/windows/wsl/install

WSL用のLinuxもwingetでインストールできます。

```powershell:powershell
> winget install Canonical.Ubuntu
```

WSL自体のインストールには、別途PowerShellを管理者権限で起動してから`wsl --install`する必要があります。

```powershell:powershell（管理者権限で起動）
> wsl --install
```

実行後にWindowsを再起動すると、Linux用のユーザIDとパスワードを設定してWSLを使い始められます。

## Dockerのインストール
Docker Desktop for Windowsもwingetでインストールできます。

```powershell:powershell
> winget install Docker.DockerDesktop
```

インストール後に再起動すると、使えるようになります。

必要に応じて、WSL側でLinux向けpostinstallの設定をします。

https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user