GitHub Codespaces を Organization で使ってみた

## 前置き

2021 年 8 月 11 日、ブラウザから利用可能な統合開発環境 [GitHub Codespaces](https://github.com/features/codespaces/?WT.mc_id=AZ-MVP-5001601) (以下 Codespaces) が GA(一般公開) されました。

当初、GitHub Pro の契約をしている個人アカウントで利用しようとしたのですが、書いてある手順を実行しても使えない事態に遭遇しました。

「(ﾟДﾟ)ﾊｧ?」と思いつつ、色々古い情報のあるサイトから有効化するURLをクリックすると、以下の表示がされました。。。

> XXXX has Codespaces access but has not enabled it for your account. Contact your organization admin to enable access.

自分のアカウントはある Organization のオーナー権限も持っているのですが、それが悪影響を出しているのか？と思いつつ、以下の公式ドキュメントの通りにしたら、**やっと** 組織配下のリポジトリ限定で使えたので、ここは開き直って、[GitHub Codespaces](https://github.com/features/codespaces/?WT.mc_id=AZ-MVP-5001601) を Organization で使ってみたらどう感じたのか？という視点で書くことにします。

https://docs.github.com/ja/codespaces/managing-codespaces-for-your-organization/enabling-codespaces-for-your-organization/?WT.mc_id=AZ-MVP-5001601

## What is [GitHub Codespaces](https://github.com/features/codespaces/?WT.mc_id=AZ-MVP-5001601) ?

[GitHub Codespaces](https://github.com/features/codespaces/?WT.mc_id=AZ-MVP-5001601) とは、クラウドでホスティングされる開発環境です。[GitHub Codespaces](https://github.com/features/codespaces/?WT.mc_id=AZ-MVP-5001601) は、GitHub が提供するさまざまな VM ベースの コンピューター上で動作し、2 Core から最大 32 Core まで設定することが可能です。[GitHub Codespaces](https://github.com/features/codespaces/?WT.mc_id=AZ-MVP-5001601) への接続は、ブラウザからでも、[Visual Studio Code](https://azure.microsoft.com/ja-jp/products/visual-studio-code/?WT.mc_id=AZ-MVP-5001601) を使ってローカルからでも行えます。

## [GitHub Codespaces](https://github.com/features/codespaces/?WT.mc_id=AZ-MVP-5001601) を使うと何がメリットなの？

これを表現するのに一番よい例は、GitHub の開発チーム自身の事例でしょう。GitHub 自身も開発環境を [GitHub Codespaces](https://github.com/features/codespaces/?WT.mc_id=AZ-MVP-5001601) に移行しているのです。14 年にわたって開発されてきた github.com はディスクサイズが 13GB 以上と大きく、コミット数も 100 万超と超巨大なプロジェクトです。このリポジトリのクローンには 20 分もかかっている状況とのことで、苦労がよくわかります。

それが [GitHub Codespaces](https://github.com/features/codespaces/?WT.mc_id=AZ-MVP-5001601) に移行したことで、20 分から 90 秒に短縮することができるようになり、設定済みの [GitHub Codespaces](https://github.com/features/codespaces/?WT.mc_id=AZ-MVP-5001601) を作成することで、github.com の開発の準備をわずか 10 秒で行うことができるようになったとのことです。

https://github.blog/2021-08-11-githubs-engineering-team-moved-codespaces/?WT.mc_id=AZ-MVP-5001601

中々 OSS でここまで巨大なリポジトリへの貢献経験がある人は少ないかもしれません。

実際に、私自身がこれに近い経験としてあるのが、Microsoft Docs への貢献です。

https://github.com/MicrosoftDocs/azure-docs

* ディスクサイズ: 13.76 GB
* コミット数: 79万超

このプロジェクトによく貢献していますが、クローンするのにも時間がかかりますし（60分以上、スタバやマックの回線だと落ちきる前に回線が切断される）、ローカルのディスクをかなり消費してしまいます。

特に英語版の問題ではなく、翻訳の問題の場合もあるので、以下のリポジトリなどへの貢献もしているので、Microsoft Docs への貢献のためだけに 20GB 以上のディスクサイズを消費しています。

https://github.com/MicrosoftDocs/azure-docs.ja-jp

こういったプロジェクト（リポジトリ）への貢献を考えると、ローカルに落とさずにすぐに貢献を開始できる [GitHub Codespaces](https://github.com/features/codespaces/?WT.mc_id=AZ-MVP-5001601) というのは、とても便利だと感じます。

### メリット1: とにかく高速で開発に着手できる

あらかじめ用意されたイメージを使って、ディスクサイズやコミット数に依存せず、数秒で新しい開発環境を立ち上げることができます。実際に、10GB 程度の開発イメージが、10 秒未満で起動しました。

### メリット2: 選択肢が豊富

リソースは 32 コア、64GB の RAM まで拡張可能です。そのため、用途に応じてリソースを変更することで、ローカル環境ではないことを忘れてしまうほど、従来のクラウド開発環境に比べてよい体験ができます。

### メリット3: オンボーディングが楽

環境やランタイム要件、ハードウェア仕様、拡張機能、エディタ設定などを設定ファイルで標準化することが可能です。ということは、新入社員のジョイン、または今までの開発チームから異なる開発チームへの異動が発生しても、遅延なく、すぐに開発に着手することが可能になります。

### メリット4: 標準化しつつも、個々人の環境の設定も可能

標準を守りつつ、個々人の好み（ライト/ダークなどテーマ、Tabが 2 space なのか 4 space なのかなど）を反映が可能です。

## 価格

https://docs.github.com/en/billing/managing-billing-for-github-codespaces/about-billing-for-codespaces/?WT.mc_id=AZ-MVP-5001601

気になる価格ですが、2021 年 9 月 10 日以降に課金開始のため、まだ費用対効果がはかれていない状況ではあります。これに関してはある程度使ってみてからコスパがよいのかどうかの判断になるかなと思っています。

## 所感

* ローカル環境がハイスペック、または巨大なプロジェクトやリポジトリに貢献していないのであればすぐには必要はない
* 一方で、以下の場合は導入した場合の費用対効果はかなり大きくなる
    * ローカル環境がハイスペックではない
    * VPN経由でのリモート開発ワークをしている