コロナ禍におけるエンジニアのためのCloud IDE

2020年3月頃からコロナが流行りだし、もう12月になります。働き方が大きく変わり、リモートワークが当たり前の時代となりました。 エンジニアの働き方も同様に変わりました。そこで、今回はCloud IDEというものを紹介しようと思います。

リモートワークとDaaS

リモートワークが増えると、DaaSのようなサービスを利用する企業が増えたのではないでしょうか。 DaaSの簡単な説明を引用しますと、次のとおりです。

DaaSとは、“Desktop as a Service”の頭文字を取った略語で「ダース」と読みます。 普通ならば個人のPCにデスクトップは存在し、データは個人のPC内に保存されていますが、DaaSにおいては個人のデスクトップがクラウド上に構築され、ネットワークを通じてそのデスクトップを呼び出して利用することになります。 ここでは、DaaSとはどういう仕組みなのかを説明し、その必要性、メリットについて詳しく述べていきます。

DaaSはクラウドサービスの一種で、特定のソフトウェアを端末にインストールすることなく、ネットワークを通じて利用できるという特徴があります。 クラウド上にあるデスクトップ環境を呼び出して利用できるため、個人のPCはディスプレイとキーボードなど必要最低限の機能があれば良いので、テレワークをするために高いスペックのPCを用意する必要はありません。

https://www.ascentech.co.jp/solution/column/daas.html

例えば、クラウド上で開発環境(お気に入りのエディタ, プログラミング言語, 使い慣れたツール, etc)を構築して、そこにアクセスして仕事をするようになります。アクセス元は、私物のPCや会社から支給されているPCなどが多いと思います。

Cloud IDE

Cloud IDEは、クラウドにある統合開発環境(IDE)のことで、主にブラウザから操作できるようなものが多いです。 ざっと有名なものをリストアップしてみました。

提供元 IDE
Microsoft Azure Visual Studio Codespaces
Github Codespaces
Amazon Web Services Cloud9
Google Cloud Platform Cloud Shell Editor
Coder Coder
OSS Gitpod

ブラウザで見ると、どんなUIでしょうか。いくつか例を載せておきます。

visual studio codespaces
Codespaces | GitHub

cloud shell editor
新しい Cloud Shell エディタ: クラウドネイティブ アプリを数分で実行 | Google Cloud 公式ブログ

gitpod
Gitpod: Always ready to code.

Cloud Shell EditorやGitpodは、OSSTheia というものを使っています。 また、全体的にUIがとても似ていますよね。これは、次の記事でわかりやすく説明されていますので、ご興味があればお読みください。

qiita.com

これらのCloud IDEは、ここ最近Publickeyでよく目にします。記事と投稿日時をまとめてみました。

稚拙な推測ですが、リモートワークが普及し、働く環境も変化したためかなと思っています。 物理的なPCで開発するのではなく、クラウド上にあるPCで開発する、それが当たり前になるのかなと。

Theia

Theiaとは何か、Githubのaboutより引用します。

Eclipse Theia is a cloud & desktop IDE framework implemented in TypeScript

https://github.com/eclipse-theia/theia

このOSSの興味深いところの1つに、設計書が公開されているところです。

docs.google.com

Theiaは、ローカルで動かすことができます。Webアプリだけじゃなく、ネイティブアプリ(Electron)もあります。

github.com

また、Dockerコンテナも公開されています。

github.com

ベンダーニュートラルなので、VMインスタンスにTheiaを入れて独自に運用するなど、ベンダーに依存しません。

個人的な話

個人的に、Gitpodを使いたいのですが無料だと月50時間までしか使えません。

www.gitpod.io

"Professional Open Source" というものを応募したところ、Gitpodの組織 へ招待頂き、公開リポジトリの無制限利用ができるようになりました。

Gitpodを使い続けて思うこと

Gitpodは、.gitpod.ymlというファイルで環境構築されます。

www.gitpod.io

ベースとなるDockerイメージを指定して、必要なライブラリを事前にインストールできたりします。 公式ブログに、Gitpodの完全ガイドがあります。

www.gitpod.io

また、様々なOSSをGitpodで簡単に動作確認できます。

https://contribute.dev/

実際にGitpodを使ってみると、確かに便利です。 アクセス元のPCは、非力なノートPCでも良く、GithubのRepository毎にGitpodのコンテナがあるため、相互に影響しません。 ただ、ネットワーク遅延でちょっと待ったり、Gitpodのショートカットキーより、ブラウザのショートカットキーが上書きされて困ることが多少あります。

終わりに

ブラウザ上で開発するのって、昔からあったように思いますが、あんまり注目されていなかったのでしょうか(私が無知なだけかもしれません)。 AWSGCPGithubなど各社が積極的に手を出しているところを見ると、これからますます期待できる分野なのだと思います。