Windowsをクリーンインストール後に入れるツール12個(2016年版)


レジストリ蛾ぶっ壊れて再インストールが必要になったのでWindowsをクリーンインストール後に入れた開発ツールなどを忘備録として。あと軽く各ツールについて解説。

## 環境

- Windows 10 Pro
  - バージョン 1607
  - build 14393.51

## Tools

### Development

#### [Babun](http://babun.github.io/)

zshとか[ohmyzsh](https://github.com/robbyrussell/oh-my-zsh)とかgitなどのモダンっぽいツールをまるっと入れたのをパッケージングしたcygwin環境。

モダンらしくパッケージマネージャを備えているので必要に応じて追加でツールをインストール出来る。

```bash
pact find unzip
pact install unzip
```

#### [Docker-Toolbox](https://www.docker.com/products/docker-toolbox)

`docker`, `docker-compose`, `docker-machine`, VirtualBox, Git for Windowsやらをまとめてインストール出来る。

[Docker for Windows](https://docs.docker.com/docker-for-windows/)が最近GAになったもののマウント周りで微妙にバグを抱えていたり挙動が怪しかったのでまだDocker-Toolboxを使っている。(Hyper-VとVT-Xが排他的なので同時に使えないのが辛い)

アプリ開発においてはDockerさえホストOSに入っていれば最近はMacもWindowsもほぼ差異はなくなってきた感じはする。
例えばささっと`npm install`したいってなったらnode.jsをホストOSにインストールしなくても

```bash
docker run -v $(pwd):/code -w /code node npm install
```

でホストOSの環境を汚さずにnpmコマンドを実行出来る。
いい時代になった。

babun上からも利用出来る。

```bash
$ docker-machine create -d virtualbox default
$ docker-machine env >> ~/.zshrc
$ source ~/.zshrc
$ docker ps
```

※babun上から利用する場合はtty周りにバグがあるので別途[babun-docker](https://github.com/tiangolo/babun-docker)のインストールが必要。

```bash
$ curl -s https://raw.githubusercontent.com/tiangolo/babun-docker/master/setup.sh | source /dev/stdin
$ babun-docker-update
```

#### [Bash on Windows](https://msdn.microsoft.com/ja-jp/commandline/wsl/about) (Windows Subsystem for Linux)

WindowsにSubsystemとしてそのままLinuxが入っているのでLinuxにインストールが可能なものなら大体何でも入る。
逆にいえばWindows用バイナリはWSL(Windows Subsystem for Linux)上からは間接的にしか使えないので、既存のソフトウェア資産との使い分けが必要。

Babunはcygwin特有のforkの遅さでもっさり感はあるものの基本的にWindowsカーネル上で動作しているので`.exe`も実行出来るが、WSL上ではLinux用バイナリしか使えないのでWSLを使う場合はLinuxで開発するぞいという鋼の意志が必要。

ただ[xilun/cbwin](https://github.com/xilun/cbwin)でWSL上から`wcmd`でWindowsバイナリを間接的に叩く事もできる。

```bash
➜  wcmd dir
 Volume in drive C has no label.
 Volume Serial Number is 44BC-2877

 Directory of c:\Program Files\Cmder

2016/08/10  13:29    <DIR>          .
2016/08/10  13:29    <DIR>          ..
2016/07/14  16:22    <DIR>          bin
2016/07/14  16:22            53,439 CHANGELOG.md
2016/07/14  16:22           129,536 Cmder.exe
2016/08/10  13:30    <DIR>          config
2016/07/14  16:22             1,784 CONTRIBUTING.md
2016/07/14  16:22    <DIR>          icons
2016/07/14  16:22            10,035 README.md
2016/07/14  16:22    <DIR>          vendor
2016/07/14  16:22                 0 Version v1.3.0
               5 File(s)        194,794 bytes
               6 Dir(s)  180,430,159,872 bytes free
```

##### Docker対応について

WSL上にLinux用のdockerバイナリをインストールしてDocker ToolboxやDocker for WindowsのDocker daemonを叩くことも出来るが、自分の環境では以下のような`docker-compose.yml`定義でファイル単位でマウントをしようとしたら`oci runtime error`, `not a directory`エラーなどが出て一部コンテナの作成に失敗することがあった。

`docker-compose.yml`

```yaml
volumes:
  - "./nginx.conf:/etc/nginx/nginx.conf"
```

Docker Toolbox付属のdockerバイナリではこの問題は起こらなかったのでWorkaroundとしてcbwinで以下のようにWindows側にインストールしたdockerバイナリを`wcmd`経由で叩いたところ問題なくマウント出来た。

```bash
 wcmd --env DOCKER_HOST=tcp://192.168.99.101:2376 DOCKER_CERT_PATH="C:\Users\shufo\.docker\machine\machines\default" DOCKER_TLS_VERIFY=1 DOCKER_MACHINE_NAME=default docker ps
```

ここまでしてWindows資産を使いたいかは別としてどうしてもWindowsバイナリを使いたいときのWorkaroundにはなりそう。

#### [Cmder](http://cmder.net/)

タブなどが使えるコンソールエミュレータ。
コマンドプロンプトからもbashを立ち上げられるが、こちらの方がコピー＆ペーストなどやりやすい。WSLでbashを使いたい場合はCmder経由で起動する。

#### [Redis Desktop Manager](https://redisdesktop.com/)

RedisのGUIクライアント。
Redisデータを階層的に可視化出来る。(`data:1`のようなキーを`set`するとネストされて表示される)

#### [HeidiSQL](http://www.heidisql.com/)

MySQLのGUIクライアント。

#### [Hosts File Manager](http://softwarefactory.jp/ja/products/hostsfilemanager/)

GUIでhostsファイルの編集が出来る。

#### [Atom](https://atom.io/)

定番だけど最近ElixirをいじっているのでAtomに乗り換えた。
そこそこElixir向けプラグインが揃っている。

### Utilities

#### [Wox](http://www.getwox.com/)

個人的にはこれがないと困るツールの一つ。
Macでいうところの[Alfred](https://www.alfredapp.com/)風のランチャー。
[Everything](https://www.voidtools.com/)をバックグラウンドサービスとして使い全ドライブのインデックスからファイルを高速に検索が出来る。

#### [AutoHotKey](https://autohotkey.com/)

キーマッピングの変更やキーの組み合わせでキーイベントなどを発生させたり出来る。

以前書いた
[Windowsで英字配列のApple Wireless KeyboardをMac風キーバインドにする](http://qiita.com/shufo/items/84447520973dfc27733d#autohotkey)
でApple Wireless Keyboard(US)のキーのマッピングを変えたりIME切り替えon/offをCommandキーで出来るようにしたのもこれで行っている。

#### [Clibor](http://www.amunsnet.com/soft.html)    

クリップボード履歴をインクリメンタル検索出来る。
[Alfred Powerpack](https://www.alfredapp.com/powerpack/)のクリップボード機能だけ切り出したような感じ。

#### [Screenpresso](http://www.screenpresso.com/)

スクリーンショット撮影ツール。

### Packages

#### [Chocolatey](https://chocolatey.org/)

Windowsでのパッケージ管理ツール。
コマンドプロンプトやPowershellで

```bash
choco install python
```

と叩けばパッケージを入れられる。利用可能なパッケージ一覧は[こちら](https://chocolatey.org/packages)。
インストールしたソフトはChocolatey管理下になるのでパッケージのデフォルトのインストールディレクトリから外れることや、Chocolateyリポジトリによってはソフトの最新版がインストールされないこともあるので注意。