開発者がSurfacePro3を買ったらまずやること

SurfacePro3買いました。なかなか面白いデバイスですね。

![SurfacePro3.jpg](https://qiita-image-store.s3.amazonaws.com/0/524/ed4cfb2b-aa62-c927-1c67-253c2b497714.jpeg)
こころがぴょんぴょんするんじゃ～～

SurfacePro3を機に久しぶりにWindowsを触るという方もいらっしゃるかと思うので、Windowsでの開発環境構築まとめを書いてみます。タイミング的にタイトルにSurfacePro3を入れましたが、SurfacePro3特有の話はありません。

# アカウント作成

いきなりですが、アカウント作成のときに注意点があります。ユーザー名に日本語を使ってはいけません。GNUツールの中には日本語パスやスペースを含むパスを考慮していないものが割とあります。あるいはemacsのように、プログラム自体は対応していても、プラグインの中に対応していないものがあるというケースもあります。それはそういうプログラムの問題ではあるのですが、使いたいプログラムが動かないと仕方がないですので、あらかじめユーザー名を英数字のみにしておくことを強く推奨します。

GNUツールを使わない、.NET系で行くんだという人もいるかもしれませんが、将来にわたって一切使わないという意思を固める意味もあんまりありませんし、後顧の憂いを経つ意味でも、日本語ユーザー名はやめておいたほうがいいでしょう。

もしくは、あえて日本語ユーザー名を使うことによって、日本語パスへの対応が甘いソフトウェアをあぶりだして、オープンソースへの貢献の機会を得るという考え方もあるかもしれませんが、わざわざここでやらなくても、適当なLinuxでアカウントを作ってやればよいと思います。

常識的に考えてユーザー名に日本語なんて作らないだろう、と思われるかもしれませんが、あえてこんなことを冒頭から書いているのは、Windows8.1では普通にアカウントを作ると、日本語ユーザー名のアカウントができてしまうからです。

Windows8では、初回起動時のアカウント作成のところで、MSアカウントを使わずにローカルアカウントでセットアップすることができたのですが、Windows8.1ではMSアカウントによるセットアップが必須になっているようです（使わない選択肢が見つからなかった）。MSアカウントでセットアップすると、MSアカウントに登録してある名前で自動的にユーザ名とホームディレクトリの名前が決められてしまいます。

(追記： Windows8.1でも初回セットアップ時にローカルアカウントを作ることができるようです http://engineermemo.wordpress.com/2013/09/10/windows-8-1-%E3%81%AE%E6%96%B0%E8%A6%8F%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E6%99%82%E3%81%AB-microsoft-%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%82%92%E4%BD%BF%E3%82%8F/ これは気づかなかった(´･_･`)・・・)

![MSAccount.png](https://qiita-image-store.s3.amazonaws.com/0/524/c376aa4e-7adb-f011-dbb3-ddad29ffa53e.png)
（☝こういうWebインターフェースなのでおそらくたいていの人は日本語になっていると思います。）

つまり普通にセットアップすると、日本語のユーザー名ができてしまい、日本語でホームディレクトリが掘られてしまいます。そしてWindowsでは、ホームディレクトリの変更が不可能ではないものの非常に面倒で、よしんばうまくいったとしても、いつ予期せぬ不具合が起こるとも限りませんので、なんとかして最初から英数字のユーザーを作りたいのです。

一時的にMSアカウントのユーザー名を変更してもいいのかもしれませんが、好きなユーザー名を選ぶためには、一時的とはいえ名前のところに変な文字列を設定することになって、なんだか気持ち悪いです。そこで、次のような手順でこれを解決します。

* まず、普通にMSアカウントでセットアップする

この時点では日本語のユーザーができます。

* 次に、新しく別のユーザーを作る

![new-account.png](https://qiita-image-store.s3.amazonaws.com/0/524/356262be-e9c4-b482-8ae1-e706f2a2d73c.png)

PC設定のアカウントのところにアカウント追加のページがあります。

![local-account.png](https://qiita-image-store.s3.amazonaws.com/0/524/c90a2500-3002-791c-4740-74a807978d07.png)

このとき、下のほうのにあるリンクからローカルアカウントが作れます。ここからだと、好きなユーザー名を指定してアカウントを作ることができます。

* 作ったアカウントを管理者権限にする

新しく作ったアカウントをメインのアカウントにしたいので、役割を管理者に変更します。

* ログアウトして、今作ったアカウントでログインしなおす

初見では場所が分かりにくいですが、スタート画面のユーザ名のところをクリックしてサインアウトを選択すればOKです。

![signout.png](https://qiita-image-store.s3.amazonaws.com/0/524/def9953f-016f-4dee-a65c-28aca6369e5a.png)

* 最初に作ったアカウントを削除する

最初に作ったアカウントはもう必要ないので削除します。

* 新しいほうのアカウントにMSアカウントをヒモ付ける

ローカルアカウントとして作ったアカウントには、あとからMSアカウントをヒモ付けすることができます。MSアカウントとのヒモ付けはストアアプリなどを使うときに必要になりますので、特に理由がなければ、ヒモ付けしなおしておくことをお勧めしておきます。なお、1台のマシンに同じMSアカウントにヒモ付けられたアカウントは複数作れないので（確かそうだったはず）、最初のアカウントを削除するのは、そのアカウントをフリーにするという意味もあります。

アカウントは一度作ってしまえば、ホームディレクトリの名前は変更されませんので、これで英数字のホームディレクトリのアカウントが出来上がります。あとはしばらく待てば同期が終わっていろいろ正常に動くようになるはずです。

# 定番アプリのインストール

うまくアカウントが作れれば、もうあとは特に注意するところはありません。お疲れ様でした。お好きなアプリをインストールしましょう。

とはいえ、それではなんだか寂しいので、参考のために今回のセットアップでやったことを列挙しておきます。

まず、定番アプリのインストールです。いつも使っているツールをたくさんインストールするのは面倒ですし、そもそも何のツールが必要だったかも良く思い出せなくなるので、[Ninite](http://ninite.com/)という、まとめてインストールできるサイトを使ってみました。

<http://ninite.com/>

![ninite.jpg](https://qiita-image-store.s3.amazonaws.com/0/524/6d028f02-6fd8-4ab6-424e-713f50ee734b.jpeg)

ブラウザやメッセンジャーソフトやオンラインストレージなど、ツボをついたものがまとまっているので、とても便利です。

# Chocolateyのインストール

Windowsのapt-get的な[Chocolatey](https://chocolatey.org/)というのがありまして、これを使うといろいろはかどります。トップページのコマンドをcmd.exeに張り付ければインストール完了で、choco install <パッケージ名> でいろいろインストールできるようになります。

***が！***

最近のアップデートで長らく`C:\Chocolatey\`だったインストールパスが、`C:\ProgramData\Chocolatey\`に変わったみたいで、今現在（2014/07/20）これに対応できていないらしくインストールに失敗するパッケージがものすごくたくさんあります。ご注意ください。しばらく経てば解決されるんじゃないかと思いますが、こけたら素直に手動で各個インストールしましょう。

# MinGW

Windowsでも入っていると何かと便利なGNUツールチェイン。CygwinやらGNU for WIndowsやらいろいろありますが、利便性と互換性のバランスを考えて、[MinGW](http://mingw.org/)を使っています。

[この辺](http://sourceforge.net/projects/mingw/files/Installer/) のインストーラから、GUIのパッケージマネージャが起動するので、好きなパッケージをポチポチクリックしてインストールしましょう。大した量はないので、全部選んでもいいと思います。MSYS Base Systemを選択するのを忘れずに。

# Cmder

お次は端末エミュレータです。Windowsのデフォルトの端末エミュレータは、みなさんご存じのとおり死ぬほど貧弱なので、何らかの代替をインストールしましょう。デフォルトのやつを使い続けるのは修行僧かマゾヒストでしょう。

mintty、ConEmu、Console2、TeraTerm、などなど、Windows用の端末エミュレータは結構いろいろありますが、お勧めはConEmuでしょうか。minttyも悪くないと思います。

ConEmuは機能豊富で開発も活発なので、とてもお勧めできるソフトなのですが、デフォルトのキーバインドその他いろいろな設定が劣悪だということで有名（？）です。なので、いい感じに設定されたパッケージがあって、それを使うのが便利でお勧めです。

[Cmder](http://bliker.github.io/cmder/)

![Cmder](http://bliker.github.io/cmder/img/main.jpg)

`Ctrl-t`で新しいタブや、`Ctrl-w`でタブを閉じるなど、一般的な操作体系に設定されているので、多くの人に使いやすいと思います。`Ctrl-``で端末を呼び出すコマンドが結構便利。あとアイコンがかっこいいです。

# Cmderの設定

いくつかやっておいたほうがいい設定を書いておきます。

Unicodeが表示できるフォントに設定しましょう。デフォルトでは日本語がMSゴシックにフォールバックされて、あまり具合がよくありません。フォントリンクを使うのも手ですが、レジストリを手でいじるのが面倒なので、Rictyを使うのがいろいろ考えなくてよくて楽です。

フォントの下のオプションの、"Monoscape"のチェックを外します。これがオンになっていると日本語の文字がつぶれます。

![CmderSetting.png](https://qiita-image-store.s3.amazonaws.com/0/524/a77a5916-2454-28b6-3295-0f2410c398cc.png)

新しいタブを作るときに指定できるタスクを追加しておきます。デフォルトではcmd.exe用の設定しか入っていないのですが、PowerShellや先ほどインストールしたMinGWのBashなども起動できるようにしておくと便利です。設定の`Startup > Tasks`の`Add default tasks...`をクリックすると、ご覧の通り、いい感じの設定が自動で追加されます。MinGWのbashと、Git for Windowsのbashの設定も追加されます。とても便利です。

![ConEmuTask.png](https://qiita-image-store.s3.amazonaws.com/0/524/b80c2202-1cd1-b8cf-1951-59132b6f792f.png)

cmd.exeも、

![cmder1.jpg](https://qiita-image-store.s3.amazonaws.com/0/524/7ce73d8c-ab12-492c-0191-5059c0552c83.jpeg)

bash.exeも、

![cmder-bash.png](https://qiita-image-store.s3.amazonaws.com/0/524/a261cf74-c293-de04-5007-ecfd4810d9dc.png)

sshも、

![Cmder-ssh.png](https://qiita-image-store.s3.amazonaws.com/0/524/49e5db29-31ca-eff4-b3fe-dfe573844829.png)

![cmder-ssh-2.png](https://qiita-image-store.s3.amazonaws.com/0/524/8f87bf54-7cbd-1e49-3f23-aa0c5c4496d5.png)

![cmder-ssh-3.png](https://qiita-image-store.s3.amazonaws.com/0/524/af2571c9-8945-f1df-7df5-52dbbcddf473.png)

いい感じで動いています。

# Cmderの日本語処理に関して

Cmderで日本語を正しく表示させるために、注意しておくことがいくつかあります。

Cmder（ConEmu）には文字コードの指定がありません。これは「文字コードの変換は端末エミュレータの責任ではなく、アプリケーションの責任である」という作者の意向によるもので、おそらく今後もこの機能がつくことはないでしょう。なので、標準のコードページ（たぶんShiftJIS）の文字コード以外（たとえばUTF8）を吐き出すコマンドは正しく日本語が入出力できないと思います。いまどきの普通のLinuxはUTF8ですので、これは非常に困ります。

Windowsの端末にはコードページ変更機能があります。

```
> chcp.com 65001
```

`chcp`というコマンドにコードページを渡せば、コードページが変更されます。65001はUTF8に対応するコードページです。これで、`type`コマンドなどでUTF8などのファイルを開いてもきちんと表示できるようになります。

sshについてはもう一つ気を付けるところがあって、MSYSに入っているssh.exeはどうやらマルチバイトの扱いがバグっていて、どうやってもうまく日本語が通りません。

https://code.google.com/p/conemu-maximus5/issues/detail?id=880#makechanges

Git for Windows (msysgit) に含まれているssh.exeは正しく動作するので、ワークアラウンドとして、sshはGit for Windowsから呼び出すとよいでしょう。

http://msysgit.github.io/

Gitを扱うツールはいずれかを入れることになると思うので、これも入れておきましょう。Git for Windows同梱のsshでは、コードポイントの変更なしでうまく日本語を扱えます。

# 環境変数の設定

UNIX系ツールには、環境変数`HOME`を参照するものがあるので（たとえばsshが$HOME/.sshとか）、これをホームディレクトリに設定しておくと、不要なトラブルが避けられます。

みなさんご存知のように、Windows標準のの環境変数エディターは非常に貧弱で、設定のたびにイライラしていたのですが、[Rapid Environment Editor](http://www.rapidee.com/en/about)というのを知ってから非常に楽になりました。

使用前

![environ.jpg](https://qiita-image-store.s3.amazonaws.com/0/524/d9638de7-7d6b-0efd-ae87-aee9e2d590eb.jpeg)

使用後。

![RapidEE.jpg](https://qiita-image-store.s3.amazonaws.com/0/524/e82cac49-007d-7ef1-710f-871370acfd51.jpeg)

パスが展開されたり、存在しないパスを赤表示してくれたり、かゆいところに手が届いていて、とにかく便利すぎる。

# エディターなど

好きなものを入れましょう。

私は NTEmacsを入れています。

<http://ftp.gnu.org/gnu/emacs/windows/>

`$HOME/.emacs.d` に設定を置けばWindowsでも問題なく動作します。githubなどに.emacs.dというレポジトリを作って管理しておけば、ホームにcloneするだけでLinuxでもWindowsでもサクッと同じ環境が使えるので便利です。

# Visual Studio

せっかくWindowsなのだからVisual Studioを入れましょう。そしてF#をやりましょう。

# その他便利なツール

その他あんまり開発と関係ないツール。

* Skitch Touch

http://apps.microsoft.com/windows/ja-jp/app/skitch-touch/95a8df2f-f779-4034-a995-82d8e723b246

画面をキャプチャして補正してメモ書きするのが捗りました。画面キャプチャー → 加工 → ツイートが共有チャーム経由で流れ作業で行える。

* Aristea

http://apps.microsoft.com/windows/ja-jp/app/aristea/88e09e92-fdc4-4510-96d9-649f20ad8ecf

ストアアプリのTwitterクライアントで安定して長時間動く唯一のアプリな気がする。動作も軽くてデザインもよく、機能も申し分ない、非常に素晴らしいアプリです。

* KeySwap for XP

キー入れ替えソフト。CapsLock死すべし。最後に書いてるけど一番重要なツールかもしれない、名前が古めかしいですが、最近のWindowsにも対応しています。

http://www.vector.co.jp/soft/winnt/util/se228667.html

* Steam

積みゲーがはかどる。