クラウド開発環境 - 概要編

公開日時
更新日時

概要編

この記事では「クラウド開発環境とはなんぞや?」「どんなメリットがあんじゃろけ?」という人に向けて、 そもそもクラウド開発環境とは何か、そのメリット/デメリット(向き/不向き)等について説明します。

対象読者は

くらいの人を想定しています。

クラウド開発環境とは

「クラウド開発環境」とは読んで字の如く「開発環境をクラウド上に構築したもの」です。 ...少し雑ですかね。

普通の開発環境である「ローカル開発環境」は以下のように全てを手元の PC 上で実行します。当たり前ですが。

ローカル開発環境の概要図

それに対して「クラウド開発環境」では、コマンド実行等やエディタといった開発で行う作業の一部/全部をクラウド上で実行します。

クラウド開発環境の概要図

手元の PC では、基本的にクラウド上のマシンにブラウザや SSH でアクセスするだけになります。

どうしてそんなことするの?

なんで手元の PC でできることをわざわざクラウド上でやるのでしょうか?

環境構築コストが低い

ローカルマシンで開発をしている時の一番の悩みは環境構築の面倒くささです。 「この言語の開発には A というソフトウェアが必要で、A を使うためには B をインストールして設定を書き換えて...」というように開発マシンには依存と設定が積み重なっていきます。

ではもしもこのマシンが突然動かなくなった時はどうしましょう? もしくは新しい魅力的なモデルが出てきた場合は?

ローカルマシンに依存している場合は、今までの設定やインストールを一からやり直す必要があります。一ヶ月周期で PC をクリーンインストールしている人でもなければ何をしたかなんて覚えてないですよね。

バックアップサービスなんかを使う手もあるかもしれませんが、違う OS のマシンにしたりすることが難しくなるでしょう。

クラウド開発環境の場合は全てがクラウド上にあるため、いくらローカルマシンを替えようが壊そうが設定は変わりません。また、しっかりと管理していればプロジェクトメンバのために自分と同じ環境を用意することも簡単にできます。

環境構築系のメリットは詳しくいうと他にも色々あるんですが、「とにかく楽」これに尽きます。

マシンの縛りがない

開発マシンを選ぶ際に気にすることといえばスペック、そして OS でしょう。

開発、特に web 開発をする場合のソフトウェアのサポートは Linux が最も優れています(Docker 等)。しかしそのためだけに OS を Linux にするのはちょっと...という人が多いかと思います。というかやめたほうがいいです、デバイス周りとか UI とか結構酷いですし。

またスペックについてもある程度のものを選ばないと、終わりの見えないコンパイルや開発系ツールによるメモリ消費で非常にストレスフルな環境になってしまいます。

しかし、クラウド開発環境ならスペックも自由に選べて途中で変えることもできる上、OS は基本的に Linux、必要なら Windows を選ぶことだってできます。エディタもクラウドで賄う場合はローカルマシンはブラウザさえ動けばいいため、Chromebook(Chrome OS)や Raspberry PI を使うこともできます。

その他

たくさんメリットがありますが書くと長くなるので箇条書きで。

じゃあデメリットは?

もちろんデメリットもあります。

コストがかかる

メリットで言ってることと矛盾しているようですが、クラウド環境を動かすためのコストがかかります。どんな方式をとってどの程度の時間開発環境を利用するのかにもよりますが、実用的なスペックだと月 300 円~4000 円くらいはかかるかと思います。

ローカルマシンをどのくらいの期間使う予定なのか、どの程度の値段だったのか等を基準にコスト比較をすることになるでしょう。

ラグがある

いくら高性能なマシンで高速なネットワークを使っていたとしてもラグは発生します。基本的にはクラウド関係のソフトウェアはラグを感じさせないように作られていますが(キー入力はサーバの応答を待たない等)、一部そういった処置がされていないソフトウェア(移植等)を使うとイライラするかもしれません。

クラウド開発系の SaaS だと基本的にそのあたりは対策されているので、基本的に気になりません。

インターネットが必要

デメリットとしてよく言われる(?)これですが、ぶっちゃけ今の時代デメリットじゃないですよね。web 開発しているならインターネットがないと実質的に開発できない(npm installもできないなんて...)ので、「オフラインでも開発できないと駄目だ!」って人以外は無視していいデメリットです。

ただ、ある程度の品質の回線は必要になります。

具体的にはどうやるの?

ひと口にクラウド開発環境といっても色々な構成があります。ここでは大まかに 4 タイプに分けて紹介したいと思います。 詳細なやり方については別記事(未作成)にて説明する予定です。

SaaS を使う方式以外ではセキュリティと利便さのために VPN を利用します。

フルクラウド型 (Type A)

フルクラウド型(Type A)の説明図

開発環境からエディタ(IDE)まで全てをクラウド上で動かす方式です。

エディタはブラウザから利用できるものを利用する必要があります。代表的なもの(というか現存する実用可能なレベルのもの)は以下の通りです。普通に利用することを考えれば code-server 一択かな、という感じがします。

その他クラウド開発系 SaaS が OSS バージョンとして自身で提供しているサービスを自前で立ち上げられるようにしているケースがあります(Eclipse Che や Koding 等)。ただ、エディタだけではなくワークスペース機能までも搭載したフル装備でかなり使いづらいのでここでは紹介しません。興味がある人は調べてみてください。

SSH 接続については普通に繋いでも、クラウドプロバイダやブラウザプラグインの提供する web コンソールを使っても問題ないです。web コンソールを使えば完全にブラウザだけで完結することができます。ちなみに web コンソールを使用しない場合、インターネットに面したポートは全て塞いでも大丈夫です(外部 IP すらいらないかも?)。

クラウド上にサーバを立ち上げるので、そこそこの知識を必要とします。

フルクラウド型 (Type B)

フルクラウド型(Type B)の説明図

エディタは SaaS を使い、その他の部分はクラウド上のサーバを用意してそこで賄う方式です。

外部のプロジェクトを編集できるエディタな SaaS は自分の知る限りではcodeanywhereだけです。

クラウド上にサーバを立ち上げるので、そこそこの知識を必要とします。

フルクラウド型 (Type C)

フルクラウド型(Type C)の説明図

SaaS を使う方式です。

開発環境からエディタまで全て SaaS に面倒を見てもらいます。非常に楽でセットアップや管理も不要な一方、サービスにロックインされます。基本的にはリポジトリベースでプロジェクトを作るサービスを選んでおけば、サービスを変えるとしても以降にはほぼ手間がかからないと思います。有名どこは以下の通りです。

「AWS とか GCP とかよくわかんないけどクラウド開発したい!」という場合はこの方式が一番でしょう。

注意すべき点としては、これらのサービスは基本的にプロジェクト(ワークスペース)毎に開発を行うため、グローバルなソフトウェアや設定(gitignore とか)に依存することができないので注意が必要です。

部分クラウド型

部分クラウド型の説明図

エディタはローカルマシンのエディタを使い、リモート編集機能によってクラウド上のファイルを編集する方式です。もちろん開発コマンド等はクラウド上で実行します。

ブラウザ IDE/エディタでは満足できない場合はこの方式が良いでしょう。

クラウド上にサーバを立ち上げるので、そこそこの知識を必要とします。

おわりに

ローカルで開発することに比べ、クラウド開発においてはセキュリティや利用料金、可用性など色々と考えることがあります。しかし、一度それを覚え/考えてしまえば PC の故障やクリーンインストールが怖くなくなり、環境構築のハードルも下がります。さらば、オールドタイプ。

SaaS にしろクラウドプロバイダ(GCP とか AWS とか)にしろ基本的に無料枠があるので一度試してみてはいかがでしょうか?

参考記事