YAMAGUCHI::weblog

海水パンツとゴーグルで、巨万の富を築きました。カリブの怪物、フリーアルバイター瞳です。

Windows 10の開発環境を整えた

はじめに

こんにちは、大正デモクラシーです。年末年始に実家に帰るにあたって、Windows 10がインストールされているXPS 13を持って行ったんですが、実家で庭木の剪定以外にやることがなかったので、それ以外の時間はずっとコード書いてました。しかし、持って行ったマシンの開発環境がまったく整ってなかったのでいろいろ設定しなおしてとりあえずいい感じになったので、その作業メモを書いておきます。

TL;DR

これまでLinuxmacOSで育ててきた環境をWindows 10で使うことはあきらめて、これらのツールをとりあえず入れました。

MSYS2を入れて捨てた

はじめはMSYS2を使ってLinuxMacと似たような環境にしようかなと思ってごちゃごちゃやってたんですが、中に入ってるパッケージが古かったり、いろんなものとの相性が悪かったので捨てました。入れて作業して捨てるまでに1日半くらい使った気がします。まあMSYS2のいろいろな設定を見て回って一通り触ってみて良し悪しがわかったので、それは良かったとしましょう。

PowerShell on cmderで生きていくことにした

@ryushi と @aodag にどうしよっかねえ、と相談した結果、WindowsWindowsの世界で生きたほうが楽になれそうだったので、全部すっぱり捨ててPowerShellに移行することにしました。bash on Windowsなどを使う、という方法もあるかもしれませんが、どうもしっくりこないなと思ったのでやめました。今度暇なときに触ってみようと思う。

さて、Windowsを使っていくとはいえ、素のPowerShellはフォント回りをいじるのにレジストリいじったりしないといけない感じだったので、10年前とかに無駄にRegseekerで遊びまくって何度もWindows XPを再起不能にしていた身としては、極力レジストリはいじりたくない気持ちがあったので、ターミナルエミュレータのcmderを使っていくことにしました。

cmderを入れた理由はこんな感じです。

  • デフォルトでもろもろのコンソールを立ち上げられる
  • タブで各コンソールを管理できる
  • フォント回りを柔軟に設定できる
  • デフォルトで設定されている profile.ps1 がいい感じにGit for Windowsと連携してくれる
  • 上記の profile.ps1 が追加でカスタムの profile.ps1 を読み込む口を用意してくれている

Git Credential Manager for Windows

PowerShellで生きていく設定はできたので、次はコードを持ってくるために必要なGitの設定。ここで問題になるのは、自分はGitHubで2FAを使ってるので、そこをどうするか。LinuxmacOSではいい具合にcredential managerを使えるので、HTTPSであってもパスワード入力なしにpushもできるんですが、Windowsではデフォルトではそれをサポートしていません。で、いい方法ないかなと思って探したらやはりありました。

インストーラーがあって、Gitのインストールも一緒にしてくれる。これを入れたら2FAにしたGitHubアカウントでも快適にコードの管理ができるようになりました。

nvm for Windows

正月休みにVisual Studio Codeの拡張を更新するかと思っていたので、node.jsの環境をまず整えることにした。nvmを使って入れたいと思っていたら、ちゃんとWindowsに対応したものがあったのでこれを使ってインストール。

chocolatey

Windowsの環境をまじめに設定するのがWindows XP以来なので変化に驚いています。Visual Studio向けにはNuGetがあってなんかいい感じらしい、ということは聞いていたのですが、それ以外の普通のツール(パッケージ)管理用にchocolateyというツールがあるのをいまさらながら知りました。これでいちいち自分でパッケージを探してきて入れなくても済むんですね。本当に便利。

posh-git

PowerShell上でGitを扱うためにposh-gitをインストールしました。これはchocolateyにパッケージとして登録されているのでそちら経由でインストールしました。

> choco install poshgit

Python 3.6

Pythonをちょろっと書く必要があったのでPythonもchocolatey経由でインストール。

> choco install python3

Go 1.7.3

当然Goもインストールした。最新版がパッケージ登録されている。

> choco install golang

細かなこと

権限回り

Windowsは権限回りがかなり厳しく、PowerShellでいろいろなことを行うにはもろもろの設定が必要でした。ただしこれらもコマンド1つで設定を変えられるのでかなり楽な印象。

> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

(追記: 2017/01/05 18:13:00)

Windows 10の開発環境を整えた - YAMAGUCHI::weblog

powershellはset-exectionpolicyでガバガバにするの止めて、powershell.exeの起動時のオプションに「-exectionpolicy remotesigned」付けて権限をプロセス単位に閉じ込める方が良いと思う。

2017/01/05 17:30
b.hatena.ne.jp

なるほどそういう方法があったのですね!早速cmderのPowerShellの起動オプションに追加します!

コマンドレット

PowerShellのコマンドレットを覚えるのは大変 *1 だけれども、Get-Help コマンドレットで対象のコマンドのオプションはすぐにわかるし *2 、オプションで -Online をつければ、ブラウザで詳細なドキュメントがすぐに読めるのでとても良い。

*1:Unixシェル的なエイリアスが用意されているけれど、なるべくWindowsの世界で生きてみるために使わないことにしている

*2: ところで Get-Help のエイリアスは man になっているあたりが優しい