今日も爽快な打鍵音を

ITエンジニアのブログ

エンジニア向けWindowsのターミナルとシェル環境

エンジニア向けWindowsのターミナルとShell環境

エンジニアは何かとターミナルやシェルを使うことが多い。
MacLinuxをクライアントOSとして好む人も多いが、会社の方針やプロジェクトの要件等でWindowsを使わないといけないケースも多い。
文句を言っても仕方ないので、Windowsで快適に使える環境を調べた。

やりたいこと

Shellを使いたい

エンジニアはとにかくShellを使う場面が多く、かつ好んで使う。
とはいってもShellと言ってもWindowsコマンドプロンプトを指すことはない。
Linuxで使われているbashzsh等のshellだ。
残念ながらMacには標準で入っているが、Windowsには入っていない。 Shellには、find, grep, xargs, awk 等々便利なコマンドがある。
サーバーサイドと同じ操作がクライアントOSでできることは価値が高い。

使いやすいターミナルがほしい

仮にShellが使えたとしても、使いづらい状態では不満だ。
私はMacのiTerm2を愛用している。
スタイルを変更したり、標準出力から任意の文字列検索が出来たり、多くのユーザビリティ向上の機能が備わっている。
WindowsコマンドプロンプトPowerShellは標準ではなにもできない。拡張ソフトを入れることで多少マシになるが、目指すゴールには程遠い。
やはりWindowsにも使いやすいターミナルソフトが必要だ。

理想

つまりWindowsで自由に使えるbashユーザビリティに優れるターミナルが欲しいということになる。
要件をまとめると以下だ。

  • Windowsで不自由ないshellが使える。
    • bashが動く
    • package管理ができる
    • Windowsバイナリとして動作する(VMはなし)
  • 便利なターミナル
    • 標準出力検索ができる
    • コピペが楽
    • テーマ等のpluginがある
    • 画面分割・タブが使える
    • OS環境を問わないクロスプラットフォーム

Shellの比較

結論から書くとMSYS2が良い。
パッケージマネージャとしてpacmanが利用可能なことと、Windowsとの親和性が良く、扱いやすい。

Windows Subsystem for Linux

通称WSLはWindows10に組み込まれたUbuntuだ。
WSL1は少々野心的な実装をしており、Linuxカーネルを利用せずにWindows上で動作する。 一部Linuxカーネルを必要とするネットワーク系コマンド等が動作しない。
大抵の操作は可能だがサブシステムとしてubuntuがあるということを意識しないといけないのがデメリットと感じる。 WSL2ではどちらかというとLinuxカーネルを組み込み、Hyper-V使ったVMに近い構成をとっている。
このためコンテナ技術等が利用可能になる。

Git for Windows

Git for Windows
これはWindows向けのGitクライアントソフト。 gitはCUIツールであり、Windowsで動作するbashが同梱された状態で配布される。 標準状態でminttyによるターミナルが操作可能で、使い勝手は良い。
ただ、git以外のパッケージ管理ができずそのままでの利用は難しい。

MSYS2

MSYS2
Git for Windowsからgitを取り払い、パッケージマネージャとしてpacmanを導入したもの。 シンプルな構成でかつpacman経由でパッケージ導入が可能なため、使いやすい。
ArchLinuxが好みの人には非常に大きなメリットとなるだろう。

同様なものにcygwinがあるが、独自のライブラリある等で少々Windowsとの分離性が大きく、WLS同様少々サブシステムとして意識した構成となる。

ターミナルの比較

mintty

mintty
MSYS2やGit for Windowsで採用されている。 文字列の拡大機能や右クリックでのペースト機能、文字色のテーマ等が備わっている。 使いやすいが、タブや画面分割機能はなく少々物足りない。

cmder

cmder
名の知れたWindows向けターミナルソフト。 とにかく設定が豊富で細かいところまで調整可能。 Github上の開発も盛んで今後も安心して使えそう。 mini版とfull版が提供されている。 標準でgit for windowsPowerShellをサポートしており、安定した動作が期待できる。

Hyper

Hyper
最近聞くようになったのがこのHyperというターミナル。 特徴はレンダリングWebGLを使っており、Electron等のWeb系の技術で構成されている。このため、クロスプラットフォームで動作しMac, Linux, Windowsで利用可能。 またPluginやテーマも豊富だ。 すでにVersionは3で、githubのStar数も多く、OSSLicenseはMITのため、業務でも安心して使える。 MacユーザでHyperを使う人も多く、これがWindowsで使えるというのは非常にメリットだろう。

まとめ

Windowsで使えるShellとターミナルを比較した。
ShellはWindowsとの親和性とパッケージ管理が可能なMSYS2を使うことにした。
ターミナルはクロスプラットフォームでかつ機能も豊富なHyperを使うことにした。