Monaco エディタ系クラウドIDEを整理する

数年前から存在していたものの、クラウド IDE が実用になる環境として注目され始めたのは至近 1 〜 2 年くらいかと思います。
その起爆剤の一つとして、エディタ・エンジン Monaco の存在があります。

web で使えるエディタ・エンジンは、Monaco 登場以前から、ACE や Eclipse/Orion などいくつか有りました。しかし Monaco は、その完成度の高さに加え、無料で使える Visual Studio Code (VSCode) が採用したことから、一気にデファクト・スタンダードの地位を確立した感があります。

Monaco の登場でクラウド IDE が使いやすくなったのは喜ばしいことですが、反面、どの製品の画面を見ても、VSCode の ~~パクり~~ _インスパイヤ_ のように見えてしまい、環境としての特徴が見えづらくなっている面もあるかなという気もしています。

たとえば、GitPod と Visual Studio Online の画面を、それぞれのランディング・ページで比べてみましょう。

![Screenshot 2019-11-17 at 12.18.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5414/96f1cf80-56ae-3255-3a48-7a75370c8684.png)

![Screenshot 2019-11-17 at 12.19.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5414/bafc7228-6231-0a9c-55ce-d4d39d24763a.png)

エディタの表示だけで区別付きますか? …ですよね、似すぎですよね。
 
そこで、本稿では、Monaco をエディタ・エンジンとして採用しているクラウド IDE の、それぞれ特徴を紹介していきます。

なお、筆者は本文中に登場する Eclipse/Che の [committer](https://accounts.eclipse.org/users/mmuranaka) であり、Eclipse/Che ベースの Cloud IDE PaaS [PizzaFactory/Camino](https://camino.pizzafactory.jp/) のオーナーです。中立を保つよう心がけますが、何らかのバイアスがかかっている可能性は予め白状しておきます。

# Microsoft 系と Theia 系

Monaco 系エディタは、Microsoft 系と Theia 系に大別できます。

Monaco は単なるエンジンですから、キー入力の処理等、外部で行う必要がある部分が存在します。

以下、それぞれ、細分化して解説いきます。

## Microsoft 系

Microsoft 系は、Monaco エンジンの作者でもある Microsoft が実装を進めた製品の流れです。

先日プレビューが始まった Visual Studio Online、先行して存在していた Coder、そして Azure Cloud Shell が代表的な製品となります。

### Visual Studio Online (VSO)

* [公式サイト](https://visualstudio.microsoft.com/services/visual-studio-online/)

もうこれは説明するまでもないでしょう。無償で配布していた Visual Studio Code をクラウドに置き、マシンリソース分を課金するというモデルの製品です。

Visual Studio Code で開発していた人は、設定をまるごとクラウドに持ち込め、またクラウドで行った設定もローカルに戻せます。プラグインも完全互換のようです。

Linux コンソールが使えます。sudo も可能です。

…まじかよ極楽かよ。

「もうこれが決定版で他のクラウド IDE は死滅するのではないか」という意見もあるようですが、以下の cons も挙げられます。

* どうやら Linux コンソール用のコンテナは替えられない?
* DB 等のコンテナはセルフホストできない or 手間がかかる
 * これらは Azure を使ってくださいね、というステルスなメッセージを感じる
* プレビュー時点でも月額 2,000 円〜 6,000 円くらいのコストがかかる。
 * (Azure はプレビューよりも GA 後のほうがお高くなる傾向)
 * 実開発では DB 等のバックエンドの調達が要るので追加コストがかかるはず。
* コラボレーション機能はあるが、現時点では、使える OS が限られる。
 * ChromeOS では使えませんでした。

これは完全に私見なのですが、VSO は、本稿で挙げる他の IDE との競合ではなく、AWS Cloud9 との競合とみたほうが良いように思っています。

### Coder

* [公式サイト](https://coder.com/)

以前 Qiita のエントリ [ブラウザでVS codeが使えるクラウド IDEの大本命「Coder」](https://qiita.com/MegaBlackLabel/items/bbec97db769667962bce) がバズったのでご記憶にある方もいらっしゃるでしょう。特徴は、リンク先をご覧いただいたほうが解りやすいでしょう。

これも VSCode をクラウドで動作させる製品です。VSCode にある一部機能は非対応となっています。

以前は VSCode 互換クラウド IDE を一押ししていたと思うのですが、よりインフラ寄りの、チームの生産性や監査を支援するツールとして進化(or ピボット?)しているように見えます。

どちらかというと、ここに挙げる他の IDE との競合ではなく、Red Hat の OpenShift (+ CodeReady で UI 補完) の方面でありつつ、しかし割と孤高の線を目指している感があります。

### Azure Cloud Shell

* [公式サイト](https://docs.microsoft.com/ja-jp/azure/cloud-shell/using-cloud-shell-editor)

厳密には IDE と呼べるかどうか微妙ですが。Azure クラウドでの作業を支援する目的で Azure が用意しているシェル環境に、Monaco ベースのエディタがついています。

後述する通り、Google Cloud Shell (GCS)にも Monaco ベースのエディタがついていますが、GCS は Theia 系で、挙動が微妙に異なります。(例えば本稿執筆時点で Theia 系に存在している、日本語変換周りの酷いバグは、Microsoft 系にはありません。)

競合は Google Cloud Shell ですね。クラウドの運用支援という点で、用途が全く一緒なので。

sudo は使えません。コンテナの変更もできません。

## Theia 系

Theia は TypeFox 社が開発した Monaco ベースのエディタです。
TypeFox は、日本ではあまりプレゼンスが無いような気もしますが、Eclipse のモデリング系のフレームワークで大きな貢献が続いている企業で、そちら方面に興味のある方には以前から名は知られています。
Theia もまた、Eclipse プロジェクトに移管されました。

Theia 自身も web や Electron のアプリとしてビルド可能です。立ち位置としては、Microsft 系における VSCode と概ね同じです。

Theia は独自の拡張手段を有しているのと同時に、VSCode Plugin (*.vsix) の一部もサポートしています。
これから紹介するサービスの全てが、ユーザにその恩恵を開放しているわけではないのですが、開放されている場合、VSCode のロックインからも開放される道があります。
(VSCode そのものではなく、プラグインが便利すぎて離れられない方もいらっしゃるでしょう?)

### Gitpod

* [公式サイト](https://www.gitpod.io/)

Theia を開発した TypeFox が運営しているサービスです。
GitHub と連携することに全振りしているところに特徴があります。
認証は GitHub を使います。また、URL に GitHub のリポジトリへの URL を加えると、自動的に clone してくれます。プルリクを支援する UI もあります。

その他、特徴的な機能として、CI 用のビルド・ランタイムとしても使えるようになっています。開発環境とビルド環境の差異で CI テストが通らず困った、ということはしばしばあることなので、環境が完全に統一できることはメリットでしょう。

どうやら sudo はできないようです。しかし、作業環境用のコンテナをカスタマイズすることはできるので、特殊なツールが必要な際でも困ることは少ないでしょう。

本稿執筆時点では、[パブリック・リポジトリに対しては時間制限付きで無料、プライベートリポジトリに対しては有料です](https://www.gitpod.io/pricing/)。

このサービスも、孤高を歩んでいるように思えます。GitHub を常用しているユーザにとっては、かなり便利に使える一方で、GitHub を使っていない人は、まったくユーザに成り得ません。

ここまで GitHub にベッタリにするのは勇気のいる判断だと思いますが、GitHub が膨大なユーザを抱えていることを思うと、妥当な判断とも思えます。

### Google Cloud Shell

すでに Azure Cloud Shell の項で軽く触れましたが、Google も同様の作業用シェル環境を用意しており、Theia ベースのエディタを用意しています。
この件は、以前 [Qiita に記事を書きました](https://qiita.com/monamour555/items/47d623ce51e8fda58c4c)。

sudo が使えます。また、(本稿執筆時点ではα版扱いですが)作業環境のコンテナを変更できます。
インスタンスの性能を一時的にブーストできます。

競合は、Azure Cloud Shell ですね、お互いに。ただし Google Cloud Shell のほうが多機能です。

### Che-Theia 系

最後に Che-Theia 系があります。
Che-Theia は、Eclipse/Che が、Theia をベースに、よりコンテナ度を高くしたエディタです。よって、これを採用しているのは Eclipse/Che を基盤としているものになります。

> 余談ですが、Eclipse/Che もまた、立ち位置が特殊です。上記のいずれもが、使えるエディタは Monaco ベースのエディタのみです。ふつう IDE といえば、エディタは替えられません。
> 
> しかし、Che は、エディタさえもプラグインの一種になっており、入れ替えられます。Jupyter Notebook に入れ替える例は[以前 Qiita に書きました](https://qiita.com/monamour555/items/8f1ca34dc1e33916b70a)。
> 
> 最近だと [vim を動作させた例がある](https://twitter.com/mikoto2000/status/1190769387390636032) ようです。
> 
><blockquote class="twitter-tweet"><p lang="ja" dir="ltr">Eclipse Che で Vim を動かした。左のメニュー開閉できなかったり、サイドカーコンテナ使えなかったりで、実用できないけれども。 <a href="https://t.co/CNt1ykLn8h">pic.twitter.com/CNt1ykLn8h</a></p>&mdash; 大雪 命 (@mikoto2000) <a href="https://twitter.com/mikoto2000/status/1190769387390636032?ref_src=twsrc%5Etfw">November 2, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
> 
> ~~こんな感じで、おそらく Microsoft 系で紹介した Coder の [code-server](https://github.com/cdr/code-server) も動作してしまいそうです。分類した意味が崩壊しそうですが…まあ続けます。~~

【2019年11月19日追記】 Code-server は既に Eclipse/Che のエディタ・プラグインとして[提供](https://github.com/eclipse/che-plugin-registry/tree/master/v3/plugins/cdr/code-server)されていました。Eclipse/Che、柔軟すぎ…。

#### Red Hat CodeReady Workspaces

* [公式サイト](https://developers.redhat.com/products/codeready-workspaces/overview)

ここまで紹介してきたクラウドIDEは、いずれも PaaS / SaaS として提供されているものでした。CodeReady は、それらとは異なり、パッケージ・ソフトウェアの形態を取っています。

事実上のデモサイトとして、 https://che.codeshift.io (無償)が用意されています…が、製品の全体を試せるというわけではなく、あくまでも Eclipse/Che の部分だけ試せるだけです。

現在のところカスタマイズ版 Kubernetes である OpenShift に対応した製品になっています。しかし Red Hat としては OpenShift に拘るふうでもないようです。(なので、正式名称には "for OpenShift" が付いています)

IDE 部分はほぼ Che なので、コンテナ周りではかなり自由度の高いのですが、OpenShift の仕様上、sudo はできません。
開発環境では sudo 使いたい局面は結構あると思うので…ここだけは痛いかも。

競合としては、前述の Coder 辺りになりそうです…が、PaaS / SaaS とパッケージソフトウェアが競合になるかというと、微妙…。
CodeReady もまた、孤高な感じがします。

#### PizzaFactory/Camino

* [公式サイト](https://camino.pizzafactory.jp/)

冒頭で白状したとおり、筆者が運営している PaaS です。
裏側では、セキュリティはキツめにした素の Kubernetes クラスタ上に、マルチユーザ版の Eclipse/Che をデプロイしています。オープンソース版に存在するいくつかの問題について、先回りしてパッチが当たっていたりもします。

OpenShift ではない Kubernetes なので、sudo は使えます。

ながらくオープンαの無償版が続きましたが、本稿執筆後から数日程度で、[有償サブスクリプション版が追加](https://cassiere.pizzafactory.jp/#/en/camino)されます。有償版では、ストレージが遅すぎる問題が解決される見込み。

競合は、オンプレミスやプライベートクラウドにデプロイされたオープンソース版の Eclipse/Che、そして CodeReady Workspaces でしょう。
Eclipse/Che は意外とリソース食いなので、PaaS と自前とどちらがコストが安くなるかという辺りが、一つの判断基準になりそうです。

# まとめ

このように各製品を見てみると、同じなのは見た目だけで、目指すところは随分と差があることがお分かり頂けるかと思います。孤高なプロジェクトも。
見た目で「あー、なんか VSCode のパクりだねー」と流さず、クラウド IDE にご注目頂けると、久しぶりに長文書いた時間が大いに報われます。

補足やツッコミは、コメントでいただければ幸いです。