ネットサービス

GitHub開発チームの開発環境がCodespacesに移行、セットアップ時間が45分から10秒に


GitHubがTeamおよびEnterprise Cloudプランについて、ブラウザからアクセスできる統合開発環境「Codespaces」を利用可能にすると、2021年8月11日に発表しました。その上で、GitHubはgithub.com開発の大部分でmacOSベースからCodespacesに移行したことを明らかにしました。

GitHub’s Engineering Team has moved to Codespaces | The GitHub Blog
https://github.blog/2021-08-11-githubs-engineering-team-moved-codespaces/


およそ14年間にわたって開発が行われてきたgithub.comのコアリポジトリは100万を超えるコミットがあり、その大部分がmacOSでビルドやテストを行う開発者からのものでした。

github.comのリポジトリはディスク上で13GB近くもあり、クローンの作成だけで20分ほどかかってしまいます。さらに依存関係の設定と合わせると、Codespacesでgithub.comの開発環境を立ち上げるのに45分以上かかってしまうとのこと。また、あるコミットオブジェクトからブランチを作成すると、その都度にブートストラップが1時間近くが必要になることもよくあったそうです。


そこで、GitHubは、14年間にわたるmacOS中心のgithub.com開発環境を、Codespacesに移行することを決定しました。まず最初にCodespacesでgithub/githubをクローンする時は、リポジトリ全てをローカルに複製するフルクローンではなく、最新版だけを取得するシャロークローンを行い、最新のコミットでCodespaceが立ち上がった後にバックグラウンドでリポジトリの履歴をアンシャローする仕組みに切り替えたとのこと。これでクローン作成にかかる時間が20分からわずか90秒に短縮したそうです。

次に行われたのは、github.comをサポートするソフトウェアとサービスのネットワークをキャッシュすることでした。これらのソフトウェアやサービスには、従来のGemfileベースの依存関係だけではなく、C・Go・Rubyのカスタムビルドで書かれたものも含まれています。そこで、GitHubは「GitHub Action」で、「リポジトリのクローンを作成して依存関係をブートストラップし、その結果のDockerイメージをビルドしてプッシュする」という流れを自動化し、このDockerイメージがgithub/githubのdevcontainerに、Codespaces開発環境用に調整されたベースイメージとして使われるようにしました。これによって、github.comのCodespaces開発環境の95%以上がブートストラップで作成されることとなりました。

さらにアプリやサービスの最適化を重ねることで、github.comのCodespaces開発環境の立ち上げが45分から5分にまで短縮されたとのこと。しかし、GitHubは「5分という時間は即立ち上げというには長すぎます。ある研究では、人が集中してフロー状態に移行するのには10秒しかかからないそうです。飛躍的進歩を遂げてきましたが、まだ道半ばでした」と述べています。

シャロークローンを行うことでクローン作成にかかる時間を大幅短縮するという試みはCodespaceを素早く立ち上げるのに役立ちますが、どこかでフルクローン作成を行う必要がありました。そこで、クローンとブートストラップが完了したプレビルドを事前に作成することで、開発者のCodespaces環境が10秒で準備完了するようになったとのこと。


開発環境を切り替えたことについて、GitHubのエンジニアは「これまではCodespacesに懐疑的でしたが、今は違います」「CPUがソースからRubyをコンパイルする必要は二度とないことを厳粛に誓います」などと語り、すぐに受け入れたそうです。

GitHubは「私たちは日々、より多くのサービスとより多くのエンジニアをGitHubに迎え入れており、その過程でCodespacesが生み出す価値についての新しいストーリーを発見しています。しかし、それぞれのストーリーの中心には、すべてのエンジニアの心に響く一貫したテーマがあります。より良いツールが発見され、より生産的になったので、もう元には戻りません」と語りました。

この記事のタイトルとURLをコピーする

・関連記事
OpenAIが入力した自然言語から自動でコードを出力するAIシステム「Codex」をリリース - GIGAZINE

70万行以上のコードを20年かけて1人でコツコツ開発してきたゲームプログラマーへのインタビュー - GIGAZINE

GitHubのソースコードで学習したプログラミングAI「Copilot」は著作権侵害なのか? - GIGAZINE

Gitの操作を間違ってしまった時に簡単に元に戻せる「git undo」を使う方法 - GIGAZINE

SSH接続でGitHubにアクセスする際にセキュリティキーによる認証が利用可能に - GIGAZINE

in ソフトウェア,   ネットサービス, Posted by log1i_yk

You can read the machine translated English article here.