Windowsで開発環境作るのが嫌なのでVMでUbuntuを使っています
読書と編集 千葉直樹です
Windowsはパッケージ管理が弱いので
開発環境作ると色々辛い
環境汚染が……
Linux系の環境に慣れるとWindowsの開発環境は汚くて困る
Windowsのネイティブアプリケーションを作るのなら仕方がないところがあるのですが、最近のネットを使ったアプリケーションの開発をしようとしたとき、素のWindowsで開発環境を作るのはとてもじゃないけどやっていられません。
例えば、流行りのPythonを使ったプログラミングをしようと思ったときでもWindowsに導入するためにはPythonを動かすためのアプリケーションをインストールするというカタチになります。
まあ、これはこれでGUI使ってインストールできるのでいいのですが、最近は単に言語があればいいってもんでもなくて、フレームワーク入れたり、他のコンポーネントを導入することになります。
そうすると、いちいちそれらのコンポーネントのインストーラを持ってきて実行してインストールするということになります。
これ、やってみると面倒なんです。
いや、多分Windowsの世界しか知らない人はそういうものだと思っているんでしょうけど、LinuxやMacはこういうのコマンドラインでやるんですよ。
「コマンドラインなんて!」って思う人もいるでしょう。
でもコマンドライン使えると、大抵は環境構築の方法をググって、良さげなページに載っているコマンドをコピペして実行するだけなんです。
Windowsネイティブ環境だと、インストーラをダウンロードして、それを実行して、画面でポチポチ操作してってことになりますよね?LinuxとかMacのコマンドラインだと起動してから一回’y’を押すくらいでサクサクインストールが進みます。
パッケージ管理というのが行き届いていますので、関連する必要なパッケージを芋づる式にインストールしてくれたりもします。
Windowsのパッケージは一元管理されているとは言えないところがとにかく難点なんです。最近はWindowsパッケージになったコンポーネントが多いですけど、そうなっていないものもまだまだある。
こういうの入れるとディスクの中がどんどん汚くなっていきます。様子にどこに何が入っているのかわからなくなるのです。
パッケージ管理されたものだけ使えばマシになりますが、なぜかきちんとアンインストールできないモノが相変わらずあります。
ストレージ内でのOSの領域とアプリケーションの領域が曖昧で、ある程度時間が立つとゴミがたまってくるのです。
対策は
Windows内には最低限のアプリケーションしかインストールしない
なにが最低限かはもちろん人によるでしょう。
ただ、今どきのネットが絡むアプリケーションの開発なら、プログラミング言語を含めてWindowsに直接入れるのは得策ではありません。
ではどうするかというと、Linuxが動くようにしてしまうのです。ごく簡単に言うと、Windowsの中にLinuxPCを作って、開発環境はその中に閉じるようにするのです。
Microsoftも、インターネット環境でのプログラミング、特にクラウドのアプリケーションを動かすのはLinuxと腹をくくったようです。Windows10ではWSL(Windows Subsystem for Linux)というものが使えるようになりました。
これをセットアップすると、Windows内にLinuxの仮想マシンが立ち上がります。一台のパソコンの中に2つのマシンが立ち上がっていて、それぞれWindowsとLinuxが動いているという感じの環境です。
Windows内から、PowershellなどでLinux側につないでやると、独立したマシンにつないでいるのと同じような環境になるわけです。
コマンドラインというのは、クラウドを使うときの常套手段なので、覚えておいて損はありません。
実は、Macでもターミナルを起動したらLinuxに近い環境になるのです。Windows上でLinux動かしても、Macでも、クラウド上のLinuxでも、開発時の見た目ややることはほぼ同じなんですね。
そういうことがあるから、開発環境の構築が楽になるのです。
僕はWindows10 Proを使っていて、Windowsが提供しているHyper-Vという仮想マシンを作れる仕組みを使ってUbuntuを立ち上げています。これがとても安定していて、Windowsを普通に再起動したり電源を落としたりするときに仮想マシン側を気にする必要がありません。Windowsが立ち上がったらUbuntu側も普通に立ち上がっているのでなにも気にせずに接続して使うことができます。
開発するときに、今は単純なテキストエディタではなくて、IDE(統合開発環境)を使うことが一般的になっていますが、僕の場合、Windows上でVSCode(Visual Studio Code)を動かして、開発環境自体はUbuntu側を使うというちょっとトリッキーなことをしています。
画面を使うアプリケーションはWindows側で動かすようにすると、コピーペーストなどがシームレスにできる良さがあるからです。
ずいぶんややこしいようですけど、実際ややこしいのです。
そういうことがあるので、最近はWebとかクラウドとかのアプリケーション開発をする人はWindowsマシンよりMacを使うほうが楽なはずです。
Windowsマシンは制約が少ない分、自由度は高いですが、人によって作った環境が違うという問題が起きやすいのでややこしいのですね。
それでもきちんとした知識があると、同じ金額を出したときによりパワフルなマシンが買えるのがWindowsでもあるのです。
ごく端折った話しかしていませんが、これからクラウドを使った開発も視野に入れようという方はちょっと頭に入れておくと良い話でした。