コードのテストとデバッグのためのリモート環境を提供する Gitpod は、Eclipse Theia から Visual Studio Code に移行し、開発者エクスペリエンスに重点を置いた DevX Conf という新しいイベントを後援しています。
オープンソースの Gitpod プラットフォームの背後にある考え方は、開発者が Docker コンテナとして実装され、Kubernetes 上で実行され、Web ブラウザ経由でアクセスされるリモート ワークスペースでコーディング、ビルド、テスト、デバッグを行うというものです。
GitLab、GitHub、Bitbucketとの統合が可能で、公式IDEはEclipse Theia(もしくはそれ以前)です。「今回提供されるIDEは、オリジナルのVS Codeです」と共同創設者のSven Efftinge氏は語りました。
以前はTheiaを使用していましたが、少し遅れており、拡張機能のサポートにも若干の課題がありました。しかし、今ではIDEはローカル環境と完全に同等の機能を備えています。
Eclipse の責任者である Mike Milinkovich 氏は、「VS Code に頼る人は誰でも、Microsoft の将来の投資に依存することになる」と述べていたが、Gitpod は Theia の最も著名なユーザーの 1 つであったため、失望しているかもしれない。
GitHub の待望の Codespaces が Gitpod の最大の競合相手になる可能性が高いことを考慮すると、Efftinge 氏は Microsoft の影響力をもう心配していないのだろうか?
「少し変わりました。私たちはMicrosoftのオープンソース基盤を利用しています。GitpodはIDEというよりは、自動化された開発環境であり、誰もが自分の好きなIDEを使えるようにすることは非常に理にかなっています。」
エフティンゲ氏は、ブラウザでの編集要件は撤廃されると付け加えた。「第2四半期の次のステップでは、ローカルデスクトップIDEがGitpodのクラウドワークスペースに簡単に接続できるようになる予定です。」
これはSSHトンネル経由で行われ、リモートコンテナ上で実行されるIDE固有のコンポーネントが使用されます。「VS Codeにはすでに優れたリモートSSHモードが搭載されています」とEfftinge氏は述べています。「JetBrainsも同様の開発に取り組んでいることは承知しています。これは数年前に言語サーバーで見られたトレンドに似ています。この種のリモートクライアントサーバーモデルは、すべての主要なIDEに導入されるでしょう。」
Gitpodもプレビュー版を終了し、12月に導入された機能、つまりリモートワークスペースでルート権限で実行できる機能を備えて正式版がリリースされます。「私たちは、誰もが安全にsudo権限を取得できるようにする名前空間階層化システムに取り組んできました」とエフティンゲ氏は述べています。「ルート権限でDockerを実行したり、Dockerイメージを作成したり、Docker Composeを実行したり、ローカルで実行できるすべての操作を実行できます。」
Eclipse の責任者は Visual Studio Code はオープンソースのポーズだと主張しているが、そう言うつもりはないのだろうか?
続きを読む
Gitpodのコンセプトの根底にあるのは、開発マシンの維持管理は大変な作業であり、特に複数のSDKを扱うコーダーにとっては脆弱になり得るという考え方です。Gitpodのワークスペースは一時的なもので、設定はコードで定義されます。起動の遅延、リモートワークの制限、サブスクリプションのコストといったトレードオフがある一方で、プロジェクトごとにカスタマイズされた予測可能な開発環境や、様々なPCやタブレットをクライアントとして利用し、場所を問わず作業できるといったメリットもあります。
リモートワーク?開発者のエクスペリエンスが向上します...
Gitpodは、リモート開発は開発者エクスペリエンスを向上させると主張しており、今月末にこのテーマでバーチャルDevX Confをスポンサーする理由もそこにあるのかもしれません。同社はこれを「開発者エクスペリエンスに特化した初のコミュニティイベント」と謳っています。なぜこのトピックが注目に値するのでしょうか?
「これはあらゆる側面からの開発者エクスペリエンスに関するものです」とエフティンゲ氏は言う。「開発者環境だけでなく、優れた API とは何か、Vi と Emacs と IDE の比較など、そういったことも関係します。」
開発者エクスペリエンスとは何でしょうか?「それはエンジニアとしての日々のワークフローに影響を与えるすべてのものです。ユーザーインターフェース、グラフィカルインターフェースだけでなく、コマンドラインツールや開発パイプラインも含まれます。何が起こっているのかわからない状況、つまり『自分のマシンでは動作する』という状況はどれくらいありますか?どのようにコラボレーションするかといったことも考えます。
ヤクの毛を剃る?それは、特定のハイパーバイザー上でのみ動作する仮想マシンでのみ動作するユーティリティを実行する必要がある場合、つまり、特定のハイパーバイザーが動作するように再起動して BIOS 設定を変更する必要があるときです…そのユーティリティは何でしたっけ?
摩擦、有益な作業、無駄な作業、無駄な待ち時間など、あらゆるところに効率化に力を入れたいと思っています。世界中のエンジニアが時間を無駄にしています…どうすれば自分のレベルアップができるでしょうか?生産性を向上させ、仕事の喜びも高めるためには、どんなツールを使うべきでしょうか?あるいは、特定のツールをどのように活用すれば良いでしょうか?
ヤクの毛を剃る?それは、特定のハイパーバイザー上でのみ動作する仮想マシンでのみ動作するユーティリティを実行する必要がある場合、つまり、特定のハイパーバイザーが動作するように再起動して BIOS 設定を変更する必要があるときです…そのユーティリティは何でしたっけ?
エフティンゲ氏の見解は、開発者エクスペリエンスはこれまでも時折検討されてきたものの、更なる改善が必要だというものだ。「パターンを導き出すことは可能です」と彼は述べた。「例えば、適切なCLI(コマンドラインインターフェース)を構築するにはどうすれば良いでしょうか? 開発者にとって、コンポーザビリティ(構成可能性)などは重要で、構成要素として必要なものです。CLIもAPIも、そのように構築する必要があります。IDEなどのツールも同様です。かつてはモノリシックで、すべてをユーザーインターフェースで構築していました。しかし今は、より簡素化され、リッチなエディタを備え、言語サーバーに接続してCLIを使えるようになっています。進化したパターンも存在します。」
ということは、Visual StudioではなくVS Codeですね。カンファレンスの詳細は、マニフェストとトピックリスト(一時的な開発環境、リモートワーク、再現可能なビルド、即時の継続的デプロイなど)とともにこちらに掲載されています。これらはすべて、Gitpodのアプローチとまさに合致するものです。®