GitHub は昨日の仮想 Satellite イベントで自社の計画について多くのことを語ったが、最も広範だったのは、GitHub ユーザー インターフェースに統合され、オンラインでコードを編集できる機能である Codespaces の登場だった。
紛らわしい名前を避けることを決して避ける企業ではないMicrosoftは、わずか1週間前に独自のCodespacesを発表しました。これは、以前(2019年11月に)発表されたVisual Studio Onlineのリブランディングです。Visual Studio Onlineという名称自体が、後にAzure DevOpsとなるものの名前として使われていたため、再利用されたものです。
MicrosoftのプリンシパルプログラムマネージャーであるNik Molnar氏は、Visual Studio Codespacesの発表でGitHubについて言及していませんでしたが、GitHubと全く同じ名前を選んだのは偶然ではないようです(GitHubはMicrosoftの所有物です)。とはいえ、Visual Studio CodespacesとGitHub Codespacesは同じ製品のバージョンのように見えますが、実際には完全に同じものではありません。
Visual Studio コードスペースの作成
検討すべき明確な技術がいくつかあります。一つは、ブラウザでコードを編集するというアイデアです。Visual Studio CodeはJavaScript互換のTypeScript言語で記述され、Chromiumブラウザエンジン上に構築されたElectronフレームワークを使用しているため、この用途に最適です。MicrosoftのProject Monacoはまさにこの目的のために開発され、IBMがスポンサーとなったEclipseプロジェクトに携わった後、IBMからMicrosoftに入社したErich Gamma氏によって開発されました。
2013年、ジャーナリストのメアリー・ジョー・フォーリー氏がGamma氏にインタビューした際、最初のユースケースは開発者がブラウザーからAzureのウェブサイトを編集できるようにすることだと説明されました。フォーリー氏はまた、「MonacoチームはVisual StudioのMetroスタイル/Windowsストア版の開発を断念しました。ブラウザー/ツールボックス版の方が理にかなっているとGamma氏は述べていました」と報告しています。これは良い判断と言えるでしょう。
Monaco ブランドは Visual Studio Code のコード エディター コンポーネントとして存続していますが、VS Code 自体は 2015 年 4 月までリリースされていなかったことに注意してください。5 年経ってこれが最も人気のあるエディターになるとは予想した人はほとんどいませんでしたが、エディターという用語はもはやその範囲を正しく表していません。
ブラウザでコードを編集できることは重要ですが、Codespacesの唯一の機能、あるいはコア機能ではありません。開発者はエディタだけでなく、コードの実行とデバッグを行う機能も必要とします。さらに、VS Code拡張機能(VS Codeの優れた機能を支える機能)は、VS Codeが実行されるマシン上で動作するコンパイラやSDKなど、依存関係を持つ場合があります。そのため、Codespaces(Microsoft版とGitHub版の両方)は専用のLinux仮想マシン(またはVM上のコンテナ)として機能します。
Microsoft Codespacesの最小スペックは、2コア、4GB RAM、64GB SSDストレージです。デスクトップ版のVS Codeとそのリモート機能を使用することで、ブラウザでVS Codeを実行せずに使用できます。GitHubの説明には、「VS Codeまたはブラウザを使用して、あらゆるデバイスからコードを投稿できます」と記載されています。VSをローカルで実行すると、ローカルコードエディタと同等のパフォーマンスが得られますが、JavaやNode.js SDKなどの複雑な処理はリモートサーバー上で実行されます。複数のプロジェクトのランタイムとSDKの正しい構成を1台の開発者マシンで維持するのは面倒な作業となるため、これは非常に便利です。
Codespace 対応 GitHub リポジトリのコード ボタン
ブラウザでの編集にも依然として役割があり、これが Codespace 対応プロジェクトの新しいコード ボタンの魅力です。このボタンをクリックすると、前述のように VM で実行されているコンテナを基盤とするブラウザベースの VS Code が開きます。devcontainer 構成ファイルを編集することで、プロジェクトごとにこれをカスタマイズできます。また、Codespaces 環境の設定を保存する dotfiles リポジトリを持つこともできます。これは自動的に取得されます。実質的にはリモートで実行される VS Code であるため、どの VS Code 拡張機能とも互換性があり、デスクトップの場合とほぼ同じように動作します。GitHub と Codespaces の統合は、主に既存の拡張機能である GitHub Pull Requests and Issues の拡張バージョンに基づいているようです。リモート サーバーからローカル マシンにポートを転送して、Web アプリケーションをテストおよびデバッグすることもできます。
このGitHub拡張機能はGitHub Codespacesで事前設定されています
Microsoft のパートナー ソフトウェア アーキテクトである David Fowler 氏は、次のように述べています。「VS Code を開発したチームは、最初からこのビジョンを念頭に置いて設計しました。アウトプロセス言語サーバー モデルによって、これを実現するのがはるかに容易になりました。」
まだ明らかにされていない詳細がいくつかあります。一つは価格です。GitHubのFAQには「プランと価格はベータ版の進捗に合わせて発表されます」と記載されています。もう一つはVMの仕様です。GitHubのCEO、ナット・フリードマン氏はSatellite基調講演で、並列プログラミング向けのGPUオプションを含む様々な構成が用意されると述べました。また、将来の計画についても言及し、「クラウドリソースを消費することなく」ブラウザ内で動作するサーバーレスオプションも含め、いくつか問題点がありました。GitHub Codespacesには現在、Chromiumベースのブラウザを使用する必要があるなど、いくつかの問題点があります。トラブルシューティングガイドには「Firefoxは現在サポートされておらず、Safariの使用時に既知の問題があります」と記載されていますが、プレビュー版のリリース時にはこの状況は改善される可能性があります。
MicrosoftがVisual Studio Onlineをリリースした当初は、特に価格が比較的高かったこともあり、大きな意味合いは感じられませんでした。しかし、現在では価格も引き下げられています。しかし、GitHubとの統合により、このコンセプトはより魅力的なものになっています。コーディング時にクラウドVMを起動するコストを許容できるのであれば、適切なWebブラウザさえあれば、どのデバイスからでも同じように使える便利な選択肢となります。VS Codeの魅力は、多くの開発者にとって馴染みのある環境であるということです。
なぜマイクロソフトはVisual Studio Onlineの名称を変更したのでしょうか?これは、GitHubがマイクロソフトプラットフォームのサービスではなく、特定のテクノロジーに依存しないサービスとして認識されることを強く望んでいるという、デリケートな問題が関係しているのかもしれません。もしフリードマン氏がVisual Studio Online for GitHubを発表していたら、そのメッセージは曖昧になっていたでしょう。CodespacesはGitHubのサービスとして発表されていますが、両者が同じテクノロジーを基盤としていることは明らかです。そのため、プラットフォームが中立ではないという批判に説得力を持たせることになるでしょう。もっとも、CodespacesはLinux上で動作するVS Codeに過ぎず、特にマイクロソフト色を帯びているわけではありません。
ライバルのオンライン開発サービスGitpodは、その独立性を強調し、次のように述べている。「プロフェッショナルな開発のほとんどは、GitLab、Atlassianのスタック、そしてもちろん古き良きGitWebといった他のプラットフォームで行われています。企業によっては、これらのプラットフォームを組み合わせて使用しているケースも少なくありません。GitHub以外のユーザーにもサービスを提供するため、Gitpodを他のプラットフォームと統合することにも注力しています。」
IBM と Red Hat の関係以上に、Microsoft と GitHub の統合は、同社がプラットフォーム上の開発者 (フリードマン氏によると現在 5,000 万人) から戦略的な利益を得ることと、競合他社や同盟国にとって快適なプラットフォームであり続けることの間で、慎重なバランスを取らなければならないことを意味します。®