着々と整いつつあるWindows上でのウェブサービス開発環境

Touch Barを搭載したMacbookで疲弊している皆様、いかがお過ごしでしょうか。私はThinkpad X1 CarbonなのでTouch Barとは無縁の生活を過ごしております。

さて、ここ数年ウェブサービス開発者の開発機としてMacを使っていた人がLinuxにスイッチするケースが散見されます。理由としてはハードウェアスペック的にMacbook Proの値段がWindows機より高い、重量的に重い、macOS自体の動作が重くなっているなどがあるかなと思いますが、このあたりについてはTechrachoの以下の記事がよくまとめてくれていると思うので興味のある方は一読ください。

 

techracho.bpsinc.jp

 

そんな動きの中でもLinuxと比べられるでもなく華麗にスルーされていた(ようにみえる)Windows*1ですが、先日のBuild 2019に合わせてWSL2とWindows Terminalが開発中であることが明らかにされました。

 

devblogs.microsoft.com

 

devblogs.microsoft.com

 

これら2つの新しいソフトウェアを利用すると、Windows上でも現在のmacOSのように(ほぼ)OS標準の環境で「ターミナル開いてLinuxCLIで操作」ということができるようになりそうです。WSL2はVM上で動作することになるという点でmacOSDarwin)とは動作が違うわけですが、Macで開発しているウェブサービスの本番環境はLinuxであることが多いと想定され、本番環境と同じOS上で開発環境も構築できるようになる、というのはメリットでしょう。

しかし、これであれば現在でも、というかだいぶ以前からVirtualBoxVMwareVMを作れば同じことが可能です。このアプローチがMac以上にウェブ系開発者を惹き付けていない理由は、ホストOS側からゲストOSのファイルシステム上にあるファイルにアクセスして開発するという点で決定打がなかったためです。ssh + CUIエディタで開発できる人はこの限りではなかったのですが、GUIメインでの開発ではいろいろと辛いことがありました(このあたりのことも上述のTechrach記事に書かれています)。この点においてはmacOSのほうが圧倒的に開発のしやすさという点で有利といえるでしょう。

ですが、この長年解決されなかった問題がVisual Studio Codeによって解決されそうです。この5月にRemote Developmentという新機能が発表されました。

 

VSCode Remote Development(以下、Remote Development)はローカルホストでVS Codeを起動し、リモートホスト(現時点ではssh接続可能なx86_64 Linux / WSL1 / Dockerコンテナが対象) に接続し、リモートホスト上のファイルをローカルホストで動作するVSCodeで編集・開発が可能になる機能です。

code.visualstudio.com

 

まだVSCodeのInsider版でしか動作しませんが、ここ数日試してみたところ現時点でプレビュー的な位置づけとは思えないほど動作は安定しています。私はここ数ヶ月VirtualBox上のUbuntu 18.04上でGUI使って開発していたのですが、Windows上のVSCodeからVMsshして開発するというスタイルにすんなり移行できました。Remote Developmentを利用するためにはInsider版のインストールやリモートホスト側の設定が必要ですが、VSCodeのドキュメントに沿って作業を行えば大きくハマることはなかったです。Qiita等にも使ってみた系の記事が上がっているので、日本語情報が欲しい方はそちらを参照すると良いでしょう。それでも困ったらGitHub行きましょう。

github.com

Stack OverFlow Survey によると、Web DeveloperにおけるVisual Studio Codeのシェアは2018調査の38.7%でしたが、2019調査では55.6%と一気に伸びており、ウェブ開発におけるスタンダードになりつつありますが、Remote Development の登場でVSCodeが他のエディタ・IDEとの比較においてさらに頭一つ抜けるように感じています。

VSCodeのRemote Development Extensionは当然ながらWindowsだけでなく、MacLinuxでも利用できます。しかし、MacLinuxでは開発環境の独立性をVMによって担保しなければならない強い理由がない場合、それほど採用するメリットはないです。一方でWindowsの場合はWindows上でUnixライクな開発環境を動作するのが手間であったため、WSL2やWindows Terminalの登場によってこのRemote Development Extensionとの相乗効果が期待できます。

これら3つのツールが利用できるようになると、ウェブサービス開発としてのmacOS並びにMacbook / Macbook Pro の魅力は相対的に下がる可能性があります。Windows機のほうが選択の幅が広いですし、性能比で考えたときのMacbook割高感も目立ちます。比較的規模の大きな組織では管理上の観点からWindowsのほうが好ましいという見方もあるでしょう。

Linuxとの比較でいえば、OSのGUI環境という点では商用ソフトウェアの充実を考えるとWindowsのほうがLinuxよりもアプリケーションの種類が多いということと、なによりハードウェア対応という点でWindowsのほうがLinuxより苦労が少ないのは確かです。

さらに、Remote Developmentを利用すれば開発環境をクラウド上に設置するということも可能です(もちろん、常時ネット接続可能という前提で)。特に開発環境の構築にかなり手間がかかるプロジェクトや、デザイナやQA向けの環境構築やトラブルシューティングという点では手元の端末で開発環境を作るより、クラウド上で環境構築してRemote Developmentで作業する、というほうが効率が良いケースもあるでしょう。このスタイルだと、開発端末はこれまでほどハードウェアスペックの高い端末はいらない、ということにもなってくるかもしれません。Remote Developmentでリモートホストでの環境設定はホストごとになるため、ホスト間で個々の開発者が利用するExtensionをどうセットアップするかなどの課題はありそうですが、それほど時間はかからず解決されるでしょう(ローカルホスト用にはすでに Settings Sync がありますが、現時点ではリモートホストには対応していないようです。Remote DevelopmentがそもそもInsider版でしか動かないですしね)

私自身、今年のはじめくらいまではずっとMacを開発に使っていて、ひょんなことから10数年ぶりにWindowsに乗り換えたわけですが、最近のmacOSよりもWindows10のほうが安定して動いているように感じます(Officeは相変わらずよく落ちますが)。macOSのほうが使い勝手良いアプリが多いようにも感じますが、それほど困らないという印象です。UIはmacOSに比べると野暮ったいところはあるわけですが、macOSのほうも最近は一貫性が崩れたり作り込み甘いと感じる箇所もあるので、どっちもどっちでしょうか。当然OSの移行となるといろいろ調べなければならないこともありますが、Macをお使いの方でWindowsでの開発に興味がある方は WSL2 / Windows Terminal / Remote Development が出揃ったあたりで一度検討してもいいのではないでしょうか。

 

Windows TerminalはすでにGitHubソースコードが公開されているので自分でビルドすれば最新版が動くようですが、Microsoft Storeで公開されるのは今年の夏とのこと。

If you’re not a developer but would still like to try out the Terminal, download the Terminal from the Microsoft store after we publish it this summer and be sure to send us feedback on what you like, what you don’t like, etc.

devblogs.microsoft.com

 

Build 2019の動画によると今年の冬にはWindows Terminal V1.0リリースを目指しているようです。

youtu.be

WSL2は今年の6月までにWindows Insiderでプレビュー版が登場。正式リリースがいつになるかの情報はなさそう(見落としてるかもです)。

devblogs.microsoft.com

*1:.NETで開発してたりする場合は最初からWindowsだと思います。