へんてこのブログ

日々気づいたことや、最近やっていることを書いています

Codespacesが便利すぎる話

みなさんCodespaces使ってますか?

CodespacesとはGitHubが提供するリモート開発環境です。
今回はそんなCodespacesが便利すぎる、という話です。

github.co.jp

便利な点まとめ

  1. ローカルに開発環境を整える必要がない
  2. リモートなのにローカルと変わらない速度/環境で開発ができる
  3. 環境が壊れたら立て直しで完全に元通りになる

1つずつ見ていきます。

1. ローカルに開発環境を整える必要がない

まずこれ、何と言ってもこれ。
ローカルのパソコンにはほとんど何も準備せずに、最悪ブラウザさえあれば開発できるのが最高です。

ただ何も入れなくていいかと言うとそういうわけではないです。
CodespacesではVisual Studio Codeを使うことになるんですが、Visual Studio Codeに日本語化拡張を入れていると、ブラウザで表示が盛大にバグります。(もしかしたら直ってるかも)

なので基本はローカルにVisual Studio Codeをインストールしています。
CodespacesではローカルにインストールしたVisual Studio Code経由でアクセスすることもできるので、そちらを使っています。

2. リモートなのにローカルと変わらない速度/環境で開発ができる

これはGitHubがMicrosoftに買収された恩恵がかなりある話です。(恐らく)

Codespacesでは裏側でMicrosoft Azureのインスタンスが起動しています。
そのインスタンスにコードやその他開発に必要な依存がインストールされ、Visual Studio Code経由でアクセスすることができます。

Microsoft Azureを利用しているおかげで、Codespacesではアクセスに適したリージョンにインスタンスが配置されるようになっているようです。
そのおかげで、リモート開発なのにローカルと同じ速度でコードを書いたり、実行することができます。

正直ローカルなのかリモートなのか判断つかないレイテンシーで開発できてます、すごい。

またローカルにインストールしたVisual Studio Code経由でCodespacesにアクセスすると、Codespaces内で立ち上げたサーバーにlocalhostでアクセスすることができます。
これはVisual Studio Codeが自動でPortマッピングしてくれてるんですが、便利すぎです。
localhostが使えるおかげで、より一層ローカルと変わらない開発環境になっています。

3. 環境が壊れたら立て直しで完全に元通りになる

これはリモート開発の最大の利点だと思います。

例えばローカル開発中に依存するミドルウェアをアップデートしてしまい、開発環境がおかしくなってしまった……直すのめんどくさい……みたいな経験あると思います。

そんな時にCodespacesでは今まで使っていたCodespacesとは別のインスタンスを立ち上げ直すだけで簡単にリセットできます。
Codespacesのカスタムイメージにもよりますが、立ち上げ直しもそこまで時間はかからないので、この点はローカルよりも楽です。

あとはチームメンバーが変なバグが出て困っている時に、開発中とは別インスタンスのCodespacesを立ち上げてサクッと検証できてしまうのも最高です。
問題の切り分け(環境が悪いのかコードが悪いのかなど)が簡単にできます。

本当はIntellij系を使いたい

ここまで散々Codespacesが便利という話をしてきました。
ですが本当はIntellij系を使いたいんです……。

CodespacesではVisual Studio Codeを使う制約上、その他のエディタは使えません。(vimやemacsなどは使えます)
ですがRubyなどを書く場合は、コード補完などの関係上、Rubymineなどを使いたい……。

と思ったので最初はCodespacesではなく、JetBrains SpaceのDev Environmentsを試しました。

www.jetbrains.com

しかし使ってみると……。

  • マルチリージョン対応していないので遅延しまくり
  • プラグインの入れ方が分かりづらい
  • 開発にDockerを使用するとボリュームマウントの関係上ローカルと若干設定を変えないといけない

などの問題がありました。

これはJetBrains SpaceのDev EnvironmentsがCodespacesよりも後発なので、まだ整っていないのだろうなと思うので仕方ないです。
ロードマップが一応公開されていて、マルチリージョン対応などは現在開発中なので今後に期待したいです。

www.jetbrains.com

現在全ての開発でCodespaces使っています

全ての開発作業でCodespacesを使っていて、Codespacesがないと開発できない体になってしまいました。

以下のプライベートの開発ではもちろん100%Codespaceで行いました。

blog.henteko07.com

現在自分のGitHubアカウントが昔のProプランを継続利用中なんですが、その影響なのかCodespacesが無料で使えています、便利すぎない?
いつまで無料で使えるのか謎ですが、使えるだけ使っていきたいです。

そしてもちろんDeployGateの開発でもCodespacesが使われています。
この間も友達が会社に入社してくれたんですが、Codespacesを使うことで開発環境を整えるのが楽だったと言っていました、便利すぎ。

まとめ

Codespacesが便利すぎるというお話でした。
ただ本当はJetBrains SpaceのDev Environmentsが使いたいため、JetBrainsさんには期待しかないです、よろしくお願いします。