macOS → Windows セットアップメモ

MacBook Pro から数年ぶりに Windows に戻ってきました。
新しいPCは Lenovo の [ThinkPad T490](https://www.lenovo.com/jp/ja/notebooks/thinkpad/t-series/T490/p/22TP2TT4900) です。
スペックは 14inch Monitor, CPU:Core i7, Mem:32GBytes, SSD:512GBytes って感じ。
MacBook Pro を買うまでは ThinkPad 愛用者でしたのでトラックポイントを指が覚えてる、最高。タッチパッドは無効にしています。

その初期セットアップ手順をメモ。

## 主な使用用途

モバイル、Web系のソフトウェア開発が主です。使用技術は概ね以下の通り。

* node.js: TypeScript/JavaScript でバックエンド(FaaS) の開発
* Angular: TypeScript/JavaScript で Web フロントエンドの開発
* AWS: Lambda, API Gateway, S3, EC2, DynamoDB など
* C#(Xamarin, .NET): Android/iOS アプリの開発、Bot の開発 [^1]
* Kotlin: Android アプリの開発
* PostgreSQL, SQL Server: だいたい RDB(プロトタイプでは Firestore も使う)
* Java: Servlet, JSP などの開発

[^1]: iOSアプリ開発もまだするけど古いMac+VS2019のリモートビルド＋リモートiOSシミュレータを使う

## インストールするソフトウェア

### 開発ツール関連

#### ngrock

* https://ngrok.com/
* 適当なディレクトリに解凍してパスを通す

#### Chocolatey

* https://chocolatey.org/
* Windows 向けのパッケージマネージャ

#### SourceTree

* ご存じ GUI Git クライアント
* Win版はあまりよい評判を聞かないけどとりあえずこれでいく

#### Visual Studio Code

* node.js, Angular などの開発はこれで。
* 設定で Enable Preview の2つの項目はチェックを外しておく。プレビュー状態だと OPEN EDITORS からすぐに消えちゃうのがキライ。

#### VSCode のプラグイン

* Debugger for Chrome - Webフロントエンドのデバッグに
* Visual Studio Intelli Code - AI とやらで候補出してくれるやつ
* Rainbow CSV - CSV ファイルの列を見やすく着色してくれる
* Angular Support - html と ts を行ったり来たりできる
* EditorConfig for VS Code - editorconfig を効かせる
* GitLens - Visual Studio みたく git log をコード中に表示
* Peacock - 画面の色を変えられる
* Remote-WSL - リモートモードで VSCode が使える。WSL 内開発もこれで。
* REST Client - REST Client
* vscode-angular-html - Angular 用の syntax hilight。


#### Java

* ~~https://openjdk.java.net/~~
* ~~Oracle の Java は入れなくても大丈夫かな。~~

どうせ AWS が主なので Amazon Corretto を使うことにしました

* https://aws.amazon.com/jp/corretto/
* [Amazon Corretto 8 のダウンロード](https://docs.aws.amazon.com/ja_jp/corretto/latest/corretto-8-ug/downloads-list.html) から Windows x64 の zip をダウンロード

環境変数 ``JAVA_HOME`` に、解凍先を指定。
Path に ``%JAVA_HOME%\bin`` を追加。

#### Android Studio

* Android アプリ開発に使う
* Kotlin たのしいれす
* Android SDK はこれを基準にする

環境変数 ``ANDROID_SDK_HOME`` に、インストール先（例: ``%USERPROFILE%\AppData\Local\Android\Sdk``）を指定。
Path に ``%ANDROID_SDK_HOME%\platform-tools`` を追加。

#### Visual Studio 2019

* 今のところ Xamarin で Android/iOS アプリを作るのに使うだけ
* 古い MacBook Pro を iOS アプリのビルドマシンにしてリモートビルドできる
* しかも [Remoted iOS シミュレータ](https://docs.microsoft.com/ja-jp/xamarin/tools/ios-simulator/index) で、「Windows で」「iOS アプリの」動作確認もできる(便利！)
* Android SDK は入れずに、Android Studio が入れた SDK を参照する
* ``msbuild.exe`` があるディレクトリ(例: ``C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin``) に Path を通しておく

#### JetBrains Rider

* https://www.jetbrains.com/rider
* C#(.NET) の IDE
* コードの書き味は実は JetBrains 系 IDE が好きなので。
* Xamarin もメインはこっちでいきたい(iOS 版の動作確認は VS2019 使う)。

#### nuget

* .NET プロジェクト用のパッケージマネージャ
* Xamarin 製アプリの CLI ビルドに使う
* https://www.nuget.org/downloads からダウンロードして適当なディレクトリに置き、Path を通しておく。

#### Eclipse

* https://www.eclipse.org/
* なんだかんだで Java系システム開発にはこれを使っている

#### JetBrains DataGrip

* https://www.jetbrains.com/datagrip/
* RDB 用の GUI ツール
* Android Studio, Rider などと同じ操作感で使えるのがよい

#### nodist 

* https://github.com/nullivex/nodist
* Windows 向けの Node.js のバージョン管理ツール
* macOS では [ndenv](https://github.com/riywo/ndenv) を使っていて、それと同じ ``.node-version`` ファイルを読んでくれるので。

#### node.js/npm 

* chocolatey 経由でインストールした（気がする）
* node.js の global には [AWS Lambda の実行環境](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-runtimes.html) に合わせて v10.15.3 に。
* TypeScript, Angular も global にインストール

#### pyenv-win

* python 2.x <-> 3.x のために
* [Windowsでpyenv（pyenv-win） - 山ｐの楽しいお勉強生活](http://yamap55.hatenablog.com/entry/2019/09/12/080000)

### WSL(Windows Subsystem for Linux)

* 1 だけど
* Ubuntu をインストール
* node や SDK の類は WSL に入れておｋ
* VSCode + WSL拡張環境だと、bash から code . で VSCode 内が Linux モードで動くので Win 感を払拭できる

### Bash

#### エイリアス(``.bashrc``)

* ``alias open='explorer.exe'`` : ``open .`` で Explorer 起動
    * MDIE に Path を通して、explorer.exe の代わりに mdie.exe としたらさらにシアワセに
        * ただしその場合 ``open .`` は使えず ``open $(wpwd)`` が必要

* ``alias wpwd='wslpath -w `pwd`'`` : ``wpwd`` で現在ディレクトリを Win 形式で

#### パッケージ

以下は apt-get で入れた気がする(``dpkg -l`` の結果からそれらしいものを抽出)。

```
ii  awscli                         1.14.44-1ubuntu1                   all          Universal Command Line Environment for AWS
ii  gcc                            4:7.4.0-1ubuntu2.3                 amd64        GNU C compiler
ii  git                            1:2.17.1-1ubuntu0.4                amd64        fast, scalable, distributed revision control system
ii  gzip                           1.6-5ubuntu1                       amd64        GNU compression utilities
ii  openssl                        1.1.0g-2ubuntu4.3                  amd64        Secure Sockets Layer toolkit - cryptographic utility
ii  perl                           5.26.1-6ubuntu0.3                  amd64        Larry Wall's Practical Extraction and Report Language
ii  python3                        3.6.7-1~18.04                      amd64        interactive high-level object-oriented language (default python3 version)
```

#### node.js

* nodenv - https://gitpress.io/@ippei8jp/20190628_1

#### npm

global に入れたのはこんだけ。

```
$npm ls --depth=0 -g

/home/hoge/dev/.nodenv/versions/12.14.1/lib
├── @angular/cli@8.3.23
├── npm@6.13.7
├── to@0.2.9
└── update@0.7.4
```

### Windows Terminal/コマンドプロンプト/PowerShell

まだ Preview だけど Windows Terminal を使っていこうと思う。
WSL を入れると Ubuntu が増えるので、既定は Ubuntu で。

``profiles.json`` はここ→ https://gist.github.com/amay077/0dddc1099c793ced62aa0852a8b5f7fd

* [「Windows Terminal」v0.4がリリース](https://forest.watch.impress.co.jp/docs/news/1203872.html)
* [PowerShell Core](https://github.com/PowerShell/PowerShell) を使っていこう(macOS でも使ってた)
* [neilpa/cmd-colors-solarized: Solarized color settings for Windows command prompt](https://github.com/neilpa/cmd-colors-solarized) で コマンドプロンプトとPowerShellのフォントと色設定を Solarize に変える。

repo を clone して ``regedit /s solarized-dark.reg`` を実行。

コマンドプロンプトは 

``cd %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\System Tools``

に移動して、

``<cloneしたrepo>\Update-Link "Command Prompt.lnk" dark``

を実行。Visual Studio 2019 をインストールすると「Developer Command Prompt for VS 2019」というコマンドプロンプトもできるので、そちらも同様に行う。

PowerShell も同じく、設定はコマンドプロンプトで行える。

例:

```
cd "%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell"
C:\repo\cmd-colors-solarized\Update-Link.cmd "Windows PowerShell.lnk" dark
```

##### エイリアス

* ``Set-Alias -Name open -Value explorer.exe`` で ``open .`` で Explorer 起動
* MDIE に Path を通して、explorer.exe の代わりに mdie.exe としたらさらにシアワセに
    * ただしその場合 ``open .`` は使えず ``open $(pwd)`` が必要


#### AWS CLI

* [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-windows.html#awscli-install-windows-pip)
* AWS 関連の操作をあれこれ行うので
* pip 経由でインストールするために Python 3.x(3.7) もインストールした

macOS では ``~/.aws/credentials`` にプロファイルが保存されているので、これを Win の ``%USERPROFILE%\.aws\credentials`` にコピーする(via [名前付きプロファイル - AWS Command Line Interface](https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-profiles.html))。

#### Windows HyperVisor Platform

* https://docs.microsoft.com/ja-jp/xamarin/android/get-started/installation/android-emulator/hardware-acceleration?pivots=windows#accelerating-with-hyper-v
* Android エミュレータを Hyper-V を使って高速化するために導入


### その他一般

#### ThinkPad のトラックポイントの速度設定

なぜかプリインストールされているOSを消して、USBから新規インストールしてしまったので、コントロールパネルにあるはずにトラックパッドの設定画面が表示されなくなってしまった。

のでレジストリを操作して回避。

* [UltraNav TrackPoint sensitivity hack – iki.fi/o](http://yehar.com/blog/?p=4080)

#### Windows で MagicTrackPad2 を使う

まだ半分 macOS も使うので、キーボード、トラックパッドは mac のを使う。
Windows でも3本指ドラッグとか、2本指スクロールがしたいと思って、Magic Utilities を使うことにした。

* [Magic Utilities](https://magicutilities.net/)

年額 14.9$ だが、その価値はあると判断した。

#### Windows で Apple Wireless Keyboard を使う

ちょっと古めの Apple 純正 Bluetooth キーボード。
これを Windows で良い感じに使うまでが苦労した。

##### デバイスドライバーをインストール

1. どうにかして ``keymagic64.inf`` を入手する（Bootstrap のサポートソフトウェアに入ってるとのことだったが、自分の場合そこにはなかった）
2. ``keymagic64.inf`` をインストールする
3. デバイスマネージャーの ヒューマン インターフェイス デバイス に「Apple Keyboard」が表れる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/8227/e2fd618f-0d83-5666-ce25-d21152b2ef81.png)

これで 英数 キーと かな キー が機能するようになった。
~~しかし、PCを再起動すると、「Apple Keyboard」が「Apple Wireless Keyboard」になってしまい効かなくなる。
その時は、その「Apple Wireless Keyboard」を削除し、「ハードウェア変更のスキャン」を実行すると、「Apple Keyboard」が復活する。~~ ←Magic Utility で Magic Keyboard Utilities を削除したら解消した。

##### キーコンフィグの変更

[KeySwap](https://keyswap.softonic.jp/) を使って下図のように。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/8227/66af9bbb-8949-0863-1335-a09873a260f3.png)

* 左右の Command キーを ctrl キーとして
* control キーを 半角全角 キーとして
* caps キーを Windows キー

にそれぞれ割り当てている。

##### Fn キーのロック

fn キーを押しながらでないと、F1 ~ F12 キーが "いつもの" 機能を果たしてくれないので、

* [備忘録: Apple Keyboard をwindowsで使う : Cafe latincar](http://latincar.blog.jp/archives/67780615.html)

を参考に下記レジストリを変更。

```
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\KeyMagic]
"OSXFnBehavior"=hex:00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\KeyMagic]
"OSXFnBehavior"=hex:00
```
#### Google IME

macOS でも Google IME を使ってたので。

* キーコンフィグは ATOK をベースに。現在の設定はここ → https://gist.github.com/amay077/27305e6dfb2f05533b1c42f30e1cafeb
* スペースは常に半角
* 「変換」キーで IME を 有効、「無変換」キーで IME を無効にするように

#### HotClip 

クリップボード履歴。

* [HotClip ～クリップボードのデータを保存して活用](http://talk-pc.sakura.ne.jp/hotclip.html#outline)

ものすごく古いフリーウェアなのだけど昔から愛用している。
Windows 標準にも搭載された(Winキー＋V)けど、PC再起動で消えちゃうので。
ホットキーは、Ctrl+S に履歴を、Ctrl+D に定型文呼び出しを設定するのがお気に入り。

#### MDIE

* http://cres.s28.xrea.com/soft/mdie.html
* エクスプローラより使いやすいタブ型ファイラー
* もう 10 年以上お世話になっとります

#### Explzh

* https://www.ponsoftware.com/
* 圧縮・解凍ソフト

#### EmEditor

* https://jp.emeditor.com/
* VSCode と併用する感じで。
* CSV/TSV や巨大ファイルの扱いは VSCode を超える

#### Office 2019

* まあ要るですよ

#### Skype

* 捨てたもんじゃない、(非IT系の人も)みんな知ってるメッセージングソフト