クラウド開発環境 - 実際の使用感

#はじめに

手元の端末からクラウド上の開発サーバに接続して開発を行うクラウド開発。導入方法や周辺ツールの紹介は多々(?)ありますが、実際に使ってみてどうなのか、という情報があまりない気がするのでそこら辺について書いてみたいと思います。

思ったことをそのまま書き連ねただけなので、文章がわりと適当ですがどうかご容赦を。

#利用用途/ツール等

主にフロントエンド開発に用いています。アプリや Electron 開発は行っていません。
エンド向けのアプリケーション以外にライブラリや開発用ツール等の開発も行っています。

Google Compute Engine のインスタンス(4 vCPUs, 4.75GB memory)を使っており、SSH 接続には GCP のコンソール(管理画面)から起動できるブラウザターミナルを利用しています。テキストエディタは基本的にcode-server(VSCode の OSS 版を web クライアント-サーバ形式にしたもの)で、英語での簡単な編集であれば vim を使っています。
インスタンスへの SSH 以外の接続は VPN 経由で接続しており、専用のドメインにクラウド側の内部 IP を振っています。

サーバ上の OS は Debian で、クライアントは ChromeOS(Pixelbook)ときどき Windows って感じです。

#ローカル開発と比較した際のデメリット

多くの人が先に気になるであろうデメリットから書いていきます。

#低品質ネットワーク環境下でのラグ

あrぐがおおkるおtけっこうつあり。

よくやり玉に挙げられるこれ、機会としてはぶっちゃけそんなにありません。VDSL+WiFi(5GHz)でもラグを感じることは殆どありません。帯域幅よりも応答速度が肝心(なはず)なので、家庭用ネットワークではまずストレスを感じることはないでしょう。

問題は低品質なネットワークにあたってしまったときです。ほんの少しのラグであったとしても、それが普段行っている行動に生じたものである場合、人間はそれを過剰に感じ取ります。しかもそれがテキスト編集、つまり開発の基本アクションであった場合は最悪です。そのストレスは、足で 7/8-5/4 拍子を刻みながら利き手じゃない手でイライラ棒をするレベルに匹敵します。

対策としては以下のようなものが考えられます。個人的には 2 番をよく採用しています。

  • ネットワークを変える(物理的な場所移動も含む)
  • どうにかなるまで開発しない
  • そこそこのストレス耐性を会得する

まぁ、そこまで遭遇するものでもないので個人的には"そこまでは"気にならないです。慣れたり忘れたりしてるだけかもしれませんが...。

#使えるツール(特にエディタ)が限られる

ちょっとした縛りプレイです。

ChromeOS や iPadOS 等で開発をしなければそこまでの制約はありませんが、それでも基本 SSH 越しに操作をするので多少の制限はあります。

特にエディタに関してはクライアント-サーバ方式のものがまだ少ないのである程度のリサーチと選別が必要になってきます。ただまあ、現状多くの人が利用しているであろう VSCode がクライアント-サーバ方式で動くので、大抵のケースではさほど問題にならないとも言えます。

#クラウドの利用料がかかる

お金がかかります。

自分の環境はコスト最適化をしていないのもあって、平均して毎日 8 時間くらいの利用で 4000 円近くかかっています。無駄に確保したストレージ周りをすっきりさせても 3000 円くらいはかかるかと思います。

個人的にはあまりデメリットとして捉えてはいませんが、人によっては、というか大抵の人にはデメリット(downside)となるでしょう。

#いいこと/メリット

個人的に感じているメリットの中で、特に恩恵を受けているなーというものに絞ってみました。

#プラットフォームの呪縛から解放される

ソフトウェア的にもハードウェア的にも。

まともなブラウザさえ動けばマシン/OS はどれでもよくなるため、好きなマシンを選ぶことができます。別のマシンに乗り換えたり、複数台で使う場合でも接続情報さえあれば完全に同じ環境で作業することができます。

これは実感してみないとあまりメリットと感じられないことだと思います。個人的に感じているのは「いつマシンが壊れても大丈夫」「どんなマシンでも大丈夫」という安心感が一番大きいです。選択肢が広がるメリットというよりは精神衛生的なメリットといえるでしょうか。

#マシンの負荷が下がる

サクサクです。

開発サーバや Language Server といった開発で使う重いプログラムが全てクラウド上で動くため、ローカルマシンの負荷が下がる、というかほぼ消え去ります。マシンに必要なのはエディタのフロントエンドと確認用のブラウザプロセス(web 開発の場合)を動かすリソースくらいです。

スペックの高いマシンなら変わんないじゃん、と思う人もいるかもせれません。超絶変わります。具体的には発熱とバッテリー持ちが別人のように改善します。

ファンが回らずメーカー公称値通りのバッテリー駆動時間で開発マシンが動くというのは想像以上に快適です。

#クリーンな Linux 環境で開発できる

ピュアピュアです。

クラウド上に構えるサーバは基本的に Linux で、GUI を用いないことが多いため余計なものが殆ど入っていません。デスクトップ Linux やラップトップ Linux を使ったことのある人ならわかると思いますが、Linux での GUI とかやろうとすると相当に messy になります。そういった汚い部分が一切ない、いうなれば「開発用 Linux に欲しいとこだけまとめた」環境が自然に手に入ります。

開発で使うコマンドラインツールが動かない/エラーになったり、環境依存の問題に当たることは滅多にありません。

#総合的な満足度は?

10 out of 10.

今まで何年もかけて Linux や ChromiumOS、Windows 等を色々渡り歩きながら最適な開発環境を追い求めてきて、ようやく最適解に辿り着いたという感じです。

コストやらネットワークの問題やらはありますが、これらはクラウド界隈の発展や技術レベルの向上によって解決できる問題なので、個人的には大した問題ではないと考えています。

ランニングコストがかかったり、初期の構築にある程度手間と知識が必要だったりするので、正直万人にオススメできるものではないです。しかし、今よりも進んだ未来の中の一つの形ではあると思います。興味がある人は試してみてこの麻薬のような快適さを味わってみてはどうでしょうか。