開発環境としてのWindowsとMac

Quoraというサイトで「ぶっちゃけM1 macって開発環境が整ってなくて使いづらくないですか?開発メインで使ってる人の意見を聞いてみたいです。今現在Windowsに移行しようか迷い中です。」という質問があって、回答もなかなか興味深いので、私見を書いてみようと思います。

私もMacユーザでした

そうなのです。私も2012年くらいにMacBook Airを買ってMacデビューしてからというもの、ずっとMacユーザでした。やっぱり、ITエンジニアはMacでしょ・・・みたいな。
たしかに、Macは開発マシンとして優れていました。MacOSはBSDベースなので、いわゆるサーバマシンとして活用されているLinuxに近い。(近いだけで、そのものではない。)イケてる開発用ソフトウェアは大抵Mac用である。Homebrewというなかなかイカしたパッケージマネージャもある。そして、iOSアプリが開発できる・・・(この壁だけは今後ずっと変わらないだろう)。

MacBook Airをかなり長く使って、その後、まだ少しだけ分厚かったMacBook Proに移行して、バタフライキーボードで思いっきりカッコ良くなった(そしてキーボードは微妙になった)MacBook Proは最上位モデル買って悦に入っていました。iPhoneとiPadとの連携も素晴らしい。Apple Watchを付けていれば自動的にログインできるのもハラショー!

当初はUSB-Cに無理矢理慣れようとして頑張った頃もあったけれど、いまやUSB-Cがないとダメな体になってしまった。iPadはUSB-C搭載のiPad Proじゃないとダメだし(いまのiPad Airも可)、なんでiPhoneはいまだにLightningなんだ・・・。

いまはWindows / Androidメインになりました

だけど、そんなMac Love、Apple Loveな期間の後、ここ半年くらいはWindowsとAndroidメインで過ごしています。
LTEを搭載したMacはいつまで待っても出てこない。タッチパネルを搭載したMacもそう。そんな思いはLet’s noteを買えば満たされる。Let’s noteは小さい、軽い、どこにでも持ち歩ける、タッチパネルが付いているからタブレット代わりとしても使える(モデルによる)。LTEが付いている(モデルによる)から、どこでもLet’s noteを開いた瞬間に仕事が始められる!USB-C経由でPD充電もできるから(モデルによる)、スマホ用のような圧倒的に小さい充電器を持ち運べばバッテリー切れの心配もなくなる!(ちなみに、上記の条件を満たしているモデルが我がLet’s note QV。)

そして、ある時からWindowsはAndroidととても仲良しになりました。あたかもiPhoneとMacのように。まだまだ不十分なところはあるけれど、通知と電話、SMSくらいは充分連携してくれます。リビングやオフィスでは、Let’s note QVさえ持っていれば何でもできる。

Windowsの開発マシンとしての魅力が向上

開発マシンとしての魅力はどうしてもMacの方が上だったから、どうしてもWindowsに戻りきれない時期も長かったのですが、いまは違います。Macに感じていた開発マシンとしてのメリットが、Windowsでも満たせる(もしくはWindowsの方が上)という状態になってきています。

Windows Subsystem for Linux(WSL)

まず、Windows反撃のターニングポイントとなったのは、Windows Subsystem for Linux。WSLというやつです。
WSLの出始めはWindows上で仮想マシンより圧倒的に高速にUbuntu(CentOSでも可)が動き、ApacheとMySQL、PHPが動いているぞ!というだけで大満足だったのが、そのうちDockerも完璧に動いて、WSL環境とWindows環境のどちらからも使えるようになった。

以前、書いたように、ちょっとした工夫でX Windowも動く。もう少ししたら、Windowsアプリと同じような感覚でLinuxのGUIアプリが動くようになる。(ついでに、Windows 11ではAndroidアプリも動くらしい。)

Macの開発マシンとして魅力的な要素の1つであるUNIXに近いというのは、WSLによって完全に代替することができるようになりました。というか、MacはUNIXに近いだけである一方、WSLは完全なUbuntuでありCentOSなので、WSLの方が良いのです。しかも、WSLはWindowsとは別の世界で動いているので環境を作るのも壊すのも簡単。別の環境をいくつ作っても問題ないというのも素晴らしい。

また、WSLからWindowsアプリも呼び出せるんですね。WSLのUbuntu上からexplorer.exeでWindowsのエクスプローラが立ち上がってファイル操作できますし、この間、TTSの実験をやっている時はvlc.exeを起動して音声ファイルの再生もできました。

Visual Studio Code

Visual Studio Code自体はWindowsだけでなく、MacでもLinuxでも使えるようになっているのですが、この高性能エディタの存在は重要。特にWSLとの連携が素晴らしいと思います。WSL上のUbuntuからcode .とするだけで立ち上がって、完璧にコーディングできるし、Visual Studio Code内のターミナルを立ち上げてUbuntuを操作することももちろん可能。

PowerShellでも、WSLでもとにかく、code .をやってからコーディング作業が始まります。

Chocolatey

MacにHomebrewというパッケージマネージャがあるなら、WindowsにはChocolateyがあります。ChocolateyがあればWindowsのGUIアプリも、開発で使う様々なツールもコマンドラインでだいたいインストールできます。
もちろん、パッケージマネージャだから、導入したパッケージ(アプリやツール)のバージョンアップも一気にできる。

Windows Terminal

ITエンジニアたるもの、いつまでもマウス(or トラックパッド)ばかりいじっているわけにはいきません。CUI、いわゆる黒い画面を使ってこそナンボ。WSLでUbuntuを操作するにも、ChocolateyをPowerShellで動かすにも、とにかくターミナルソフトの良いやつがないとダメなんです。

以前は、Windows 3.1の頃から使っているコマンドプロンプトくらいしかなくて、Git for WindowsのGit Bashをコマンドプロンプトで使っている時期も長かったのですが、いまはWindows Terminal一択でしょう。Microsoft純正のターミナルソフトで、Microsoft Store経由でどんどんバージョンアップしています。まだ、もう一声・・・という部分もありますが、充分実用になります。

また、いつからかPowerShell上でsshやcurl、さらにはlsといったコマンドが使えるようになりましたし、vimやsudo(gsudo)をChocolatey経由でインストールすれば、PowerShell上の操作も違和感なく行えます。

Windows Sandbox

WSLを中心にLinux環境の話が多くなっていますが、Windows環境でも面白い機能があります。Windows SandboxはHyper-Vの仮想マシンとしてWindowsを使えるというもの。まっさらな状態で立ち上がって、仮想マシンをシャットダウンすると環境はきれいさっぱりクリーンになるというものですが、執筆業、講師業でスクリーンキャプチャとかを撮る際に、まっさらな環境が必要になることが多いので重宝しています。こういう環境が純正で提供されているというのも、最近のWindowsがイケているところだと思います。

Windows PCを開発マシンとして使うために

開発環境としてのWindowsはかなりイケているのですが、そんなイケてる環境を使うためには少しの努力が必要です。
やっぱりWSLを導入する手間はあるし(ちょっとコマンド打って再起動するだけだけど・・・)、パッケージマネージャのメリットも使ってみないとわからない。その辺は、やっぱり勉強というかITエンジニアとしての好奇心が必要ですね。(MacユーザだってHomebrew使わずに開発環境を作っている人もいると思うので、Windowsだから・・・というわけではないのですが。)

Windowsユーザーは、きちんとスペックを見て性能の良いPCを買う必要があります。Windows PCはメーカーもいろいろで千差万別。Core i7+16GBメモリ機を持っている人もいるし、Celeron+4GBメモリという人もいる(今でもそういうPCが普通に新製品として出ている)。同じアーキテクチャだけど性能差がありすぎて、プログラミングスクールの現場では同じように扱えないのですね。ちなみに、Macは何を買ってもだいたい大丈夫で、環境もほとんど違わないというメリットがあったけど、Intel MacとM1 Macの併存期に入ったことで、一概には言えないようになっています。

このように、Windowsを開発環境としてきちんと使うには、Macよりもより積極的、自発的に環境構築に取り組んでいく必要があるとは思います。ただ、以前と比べるとその難易度は下がってきているし、受けられる恩恵も良いものになっています。
iOSアプリ開発に関与するならMacが必須になるのはやむを得ませんが、それ以外であればWindowsはとても良い開発環境を提供してくれます。実際、私は普段はLet’s noteばかり使っていて、iOSアプリ開発の時だけオフィスに置いてあるM1 Mac miniにリモートでつなぐという環境で仕事をしています。

そんなわけで、今日は開発環境としてのWindowsの魅力を書いてみました。

この記事を書いた人

井上 研一

株式会社ビビンコ代表取締役、ITエンジニア/経済産業省推進資格ITコーディネータ。AI・IoTに強いITコーディネータとして活動。2018年、株式会社ビビンコを北九州市に創業。IoTソリューションの開発・導入や、画像認識モデルを活用したアプリの開発などを行っている。近著に「使ってわかった AWSのAI」、「ワトソンで体感する人工知能」。日本全国でセミナー・研修講師としての登壇も多数。