Mac使いがWindows開発環境構築してみたログ

## あらすじ

普段はMacBook Airを使っています。ただ、MBAでなにかを開発しようとするとスペック不足を感じていました。

最近はWindowsもWSL2やWindows Terminalなどが使えて、[Visual Studio Code Remote Development](https://code.visualstudio.com/docs/remote/remote-overview) を使えば開発もしやすいという話も聞くようになりました。

ゲーム用にWindows デスクトップPCを持っていたので、イチから開発環境構築しました。

![2020-08-16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3464/43b833a7-a9d6-c8e1-f89c-fcecfa03de42.png)
↑ WSL2(Ubuntu 20.04) で create-react-appを動かしてVSCode, Chrome を開いている様子

2020/08/31 追記 セットアップをdotfiles化

## 概要

- 各種アプリのインストール・設定
  - PowerShellスクリプト, Chocolatey, Scoop でほぼ自動化
- キーバインドをMac風に変更
  - Change Key, Keyhac, AutoHotKey でカスタマイズ
- Linux環境, Docker
  - WSL2, Docker Desktop for Windows
  - VSCode Remote Development
- その他
  - Terminal, Font
  - デスクトップ設定
     - 夜間モード、ダークモード
     - 仮想デスクトップ
  - PowerToys
     - ウィンドウ配置: FancyZones
     - ランチャー: PowerToys Run 

## スペック

- 2017年ごろに買ったデスクトップ BTO PC
  - Windows 10 Home
- キーボード: HHKB Professional HYBRID Type-S US配列
- 4Kモニタ（Windows だとフォントの描画が微妙ですが、4Kモニタを使うことで解決）

## 作業ログ

### クリーンインストール

イチから環境構築したかったのでクリーンインストールしました。

必要なファイルを別の場所に退避させてから、[Windows 10 を再インストールする - Windows Help](https://support.microsoft.com/ja-jp/help/4000735/windows-10-reinstall) の `インストール メディアを使って Windows 10 のクリーン インストールを実行する` を参照

### 各種アプリのインストール・設定

- https://github.com/hushin/dotfiles-windows
- dotfiles 解説
  - PowerShellスクリプト で拡張子表示 など設定
  - [Chocolatey](https://chocolatey.org/), [Scoop](https://scoop.sh/) でアプリやフォントをインストール
     - なるべく Scoop を使いつつ、アプリ内に更新機能があるものはChocolateyを使用

#### 手動でインストール

* [Google 日本語入力](https://www.google.co.jp/ime/)
* [QTTabBar](http://qttabbar-ja.wikidot.com/)
  * エクスプローラーにタブ表示を追加するソフト
  * エクスプローラーの表示→オプション で設定

### キーバインドをMac風に変更

Mac に慣れてから Windows を使うと一番戸惑うのがキーバインドですね。Mac風になるように寄せていきます。

- 左右のWinキー単押しで英字/日本語のIME切り替え
- 左Win キーで Cmd のショートカット
- 右Win キーで Windows の元のショートカット（`Win-R` など）
- Winキー単体押しは `Ctrl-Esc` で代用
- Emacs風のカーソル操作

#### Change Key, Keyhac, AutoHotKey でカスタマイズ

* [Change Key](https://forest.watch.impress.co.jp/library/software/changekey/)
  * 後述する Keyhac と AutoHotKey でキーバンドの変更ができるのですが、`Win-L`と`Win-U`は上書きできません。
  * なので Change Key を使って左WinキーをF13キーに変更し、F13キーとの組み合わせるようにします。
     * 管理者として実行→左Windowsキーを選択→Scan codeで0064(F13キー)を指定→登録→（反映にPC再起動）
     * 参考[ChangeKeyを使用してWindowsキーをF13キーに変更する方法 - 情報科学屋さんを目指す人のメモ（FC2ブログ版）](http://did2.blog64.fc2.com/blog-entry-349.html)
* [Keyhac](https://sites.google.com/site/craftware/keyhac-ja)
  * キーバインドの変更ができるアプリ。クリップボードの履歴も管理できる。
  * スタートアップにexeのショートカットを張る
  * スタートアップは Win+R で `shell:startup` で開ける
  * https://github.com/hushin/dotfiles-windows/blob/master/config-win/keyhac/config.py
* [AutoHotKey](https://www.autohotkey.com/)
  * Win + 左クリック → Ctrl + 左クリック、音量変更のショートカット担当
  * スタートアップに MacLikeKeybind.ahk のショートカットを張る
  * https://github.com/hushin/dotfiles-windows/blob/master/config-win/ahk/MacLikeKeybind.ahk

### Linux環境, Docker

#### WSL2, Docker Desktop for Windows

- WSL2 の設定はこちらを参考にしました [Windows Subsystem for Linux 2(WSL 2)をセットアップしてみた | Developers.IO](https://dev.classmethod.jp/articles/how-to-setup-wsl2/)
  - 自分は Ubuntu 20.04 LTS をインストール
  - `[ユーザープロファイル]\.wslconfig` の設定
  
```
[wsl2]
memory=4GB
processors=2
localhostForwarding=True
```
- Docker Desktop for Windows の設定はこちらを参考にしました [Docker Desktop for WindowsのバックエンドとしてWSL2を使用する | Developers.IO](https://dev.classmethod.jp/articles/docker-desktop-for-windows-on-wsl2/)
- Ubuntu用 のdotfiles https://github.com/hushin/dotfiles-ubuntu
  - fish, tmux, fzf, ghq, asdf あたりをインストール 

#### VSCode Remote Development

- [Remote Development - Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack) をインストールしておく
- ちなみに最近VSCodeに設定同期機能が入ったので、他のPCから設定を引き継げる
  - [Settings Sync in Visual Studio Code](https://code.visualstudio.com/docs/editor/settings-sync)
- WSLのTerminal から `code .` とするとVSCodeが起動でき、編集できる

### その他

- Font
  - [Cica](https://github.com/miiton/Cica), [Cascadia Code PL](https://github.com/microsoft/cascadia-code)
     - Chocolatey でインストール可能
- Terminal
  - [Windows Terminal](https://www.microsoft.com/ja-jp/p/windows-terminal/9n0dx20hk701?activetab=pivot:overviewtab)
     - 設定 https://github.com/hushin/dotfiles-windows/blob/master/config-win/WindowsTerminal/LocalState/settings.json
- デスクトップ設定
  - 夜間モード（ブルーライトカット）
     - デスクトップを右クリック→ディスプレイ設定→夜間モードをオン
  - ダークモード
     - デスクトップを右クリック→個人用設定→色 黒に設定
  - 仮想デスクトップ
     - `Win-Tab` から仮想デスクトップを追加
     - `Ctrl-左右` で切り替えできるように Keyhac で設定
- [PowerToys](https://github.com/microsoft/PowerToys)
  - ウィンドウ配置: FancyZones
     - Shiftキーを押しながらウィンドウを動かすと決まった枠にウィンドウ配置できる
  - ランチャー: PowerToys Run 
     - `Alt-Space` でSpotlight 風にアプリを起動できる
  - （余談） Keyboard Manager でもキーバインドを変えられるが、Keyhac に比べてできることが少なく、バグっぽい挙動もあったので見送った

## 感想

Terminalなど多少使いにくいところがあるものの、Mac よりも高スペックな開発環境が手に入ったので個人的には満足しています。

## 参考

- [Windows向けにdotfilesセットアップスクリプトを作る - Qiita](https://qiita.com/kentac55/items/733bdc21e66b44904332) のように、セットアップスクリプトの整備
- [MacOS ユーザが WSL では無い Windows のコンソール環境を整える - 2nd life](https://secondlife.hatenablog.jp/entry/2020/08/17/070735) のように、PowerShell 周りの環境構築
- [個人用Windowsマシンでの開発環境構築メモ - マルシテイア](https://blog.amagi.dev/entry/2018/08/22/164537)