Windows

Windowsマシンの開発関係セットアップ

More than 1 year has passed since last update.

最近メインの開発環境を 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 の出来がよくなれば、それも必要なくなるなー、という感じがしてる。