最近メインの開発環境を Windows 10 にしたので、入れたソフトウェアのメモ。
MSYS2
UNIX的なシェル環境。ターミナル(mintty)、シェル(bash)、パッケージマネージャ(pacman)が標準で入れるだけで使えるようになる。シェル操作は MYSY2 上に含まれる ターミナル mintty 上で bash を動かしてその上で screen やら git やら ssh やらいろいろ。
にまとめれているので、その他いくつかを。
ホームディレクトリ
標準だと C:\mysy64\home\ユーザ名 だが、自分は %USERPROFILE% (win のユーザディレクトリ)と同一のところをホームディレクトリとして使いたいので、環境変数 HOME を %USERPROFILE% に指定する。(環境変数 HOME は UNIX 環境の ENV での指定ではなく、windows 側の詳細設定での指定)
見た目
そのままだと見にくいので ~/.minttyrc で色やフォントを指定する。この .minttyrc 例ではフォントは Ricty Diminished を使ってる。
パッケージのインストール
pacman で。update-core で最新にした後 mintty を再起動し、最新のパッケージを入れていく。とりあえず最低必要そうなのを適当に。
pacman -S vim git wget tmux ruby tar
ssh
普通に ~/.ssh/鍵 を置けば使える、が OpenSSH が環境変数 HOME は見ずに、直接 /home/ユーザ名 を見るため、上記の設定でホームディレクトリを変更した場合は対応が必要。
/etc/fstab に設定を書き込んで対応した。
C:/Users /home ntfs binary,noacl,auto 1 1
keychain
毎回 ssh (git fetch とかでもね)するとパスワード聞かれて面倒なので ssh-agent 管理の keychain を入れる。
これで毎回パスワードを聞かれず (ssh 経由の) git fetch できる。
cmder
そのままの cmd.exe が使いにくいので、それをラップするため cmder を使う。
様々な機能を持ってるが、ヒストリー検索と、ターミナルキーバインドが cmd.exe でも使えるだけでも利用価値が高い。
なお msys2 も Cmder 上で使おうと思ったが、tmux や screen が使えない、挙動が怪しいため断念した。
Vim
gvim は香り屋版、ターミナルでの vim は前述の MYSY2 の pacman で入れた vim を使ってる。MacOS などと dotifile は共有して使ってるため、それらを hardlink / symlink して使う
.vimrc, .gvimrc は ~/_vimrc, ~/_gvimrc へと hardlink を張る。
fsutil hardlink create %USERPROFILE%\_vimrc %USERPROFILE%\dotfiles\vim\.vimrc
fsutil hardlink create %USERPROFILE%\_gvimrc %USERPROFILE%\dotfiles\vim\.gvimrc
.vim は ~/.vim へ symlink を張る。こちらは管理者権限が必要。
mklink /d %USERPROFILE%\.vim %USERPROFILE%\dotfiles\vim\.vim
キーボードカスタマイズ
Change Key
まずは Change Key でレジストリレベルでの単体キーを押したときのキーコードの変更を。Ctrl <-> Caps Lock とか、その他簡単な変更のみなら Change Key (管理者権限で実行する) で対応する。
なお Win は Vista 以降キーボードのカスタマイズがいろいろ大変になった。詳しくは Vista/Windows 7におけるキーボードカスタマイズ問題 を。
keyhac
python でコンフィグを指定できカスタマイズできる、ユーザモード上で動くソフトウェア。AutoHotKey のようにいろんなことができる。三ヶ月ぐらい使ってるけど、そんなに複雑なこともしていないためか、特に不安定になることなく使えてる。
たとえば mintty.exe のみでキーバーインドを変更したい場合 (LWin-c でコピー、LWin-v でペーストなど)、こんな感じに変えられる
mintty_keymap = keymap.defineWindowKeymap( exe_name="mintty.exe", class_name="mintty" )
# copy
mintty_keymap["LWin-c"] = ["C-Insert"]
# paste
mintty_keymap["LWin-v"] = ["S-Insert"]
# new window
mintty_keymap["C-S-t"] = ["A-F2"]
右ALTキーでATOKのIME切り替えをトグルする
右ALTキーでATOKのIMEのオンオフをトグルしたいだけ、なんだけど以外と大変だったのでメモ。
まず Change Key で右ALTを普段使わない F13のスキャンコード ( 0x0064 ) を割り当て、右ALTをF13に変更する。
続いて F13 が押されたときに Ctrl-Shift-F12 を送出するように keyhac で変更する。124 は keyhac の内部ログをオンにすると押された値がわかるのでそこから。
keymap_global = keymap.defineWindowKeymap()
# 124 = F13, C-S-F12 = IME on/off
keymap_global[ "124" ] = "C-Shift-F12"
あとは ATOK の設定で IME on/off を C-S-F12 にすればおk。
Windows 上での開発雑感
移行してだいたい3ヶ月ぐらいたつけど、Mac と比べそれほど不便なく開発できてる。
Win 環境を使い始めたのは、組み込み開発のハードウェアベンダーが提供してるツール群が Windows のみ、というものが割とあって、それをすんなり使いたかったのが一つ。もう一つは最近 Win 周りの開発者を取り巻く環境が面白そうだなー、と思ったのが一つ。
結局のところ Linux 的な Web 開発は、 仮想環境上の Ubuntu で行ってるんだけど、裏を返せば Windows Subsystem for Linux の出来がよくなれば、それも必要なくなるなー、という感じがしてる。