GitHub Codespaces と Visual Studio Code を使ったリモートでの開発環境構築

# はじめに
私が普段使っている、`PC` のローカルストレージが一杯になってしまいました。(スクリーンショットは不要なアプリや、コンテナのイメージファイル、ダウンロードやごみ箱のファイル、などを削除した後でこの状態です。)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/f29f629e-8c82-e876-65ee-bf040075bc12.png)

写真や動画で容量が一杯なら外部ディスクという選択肢もありましたが、開発に必要なアプリケーションやライブラリで一杯になっていると思われます。それでいて新しい PC を買いたくありません。これ以上ローカルに開発ツール等をインストールすることもできないので、仕方ないですがこれからは際にローカル開発ではなく `GitHub Codespaces` を使ったリモートでのコンテナ開発に慣れていこう、と思い立ったのがこの記事を書いたきっかけになります。本記事では、`GitHub Codespaces` と `Visual Studio Code` を使ったリモートでの開発環境構築をするための手順をまとめました。

# GitHub Codespaces とは
`GitHub Codespaces` は、`GitHub` が提供するクラウドベースの開発環境サービスです。`Web` ブラウザや `Visual Studio Code` からアクセス可能で、コードの編集、ビルド、デバッグが可能です。`Visual Studio Code` の拡張機能の利用や、リモートからのコーディングも可能で、`GitHub` の連携により、シームレスな開発ができます。

https://github.com/features/codespaces

# GitHub Codespaces 拡張機能をインストール
`Visual Studio Code` から、以下の拡張機能をインストールしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/a0ff952a-8170-d400-8bd4-a92d4dd47203.png)

# Visual Studio Code で GitHub にログインする
`Visual Studio Code` のアクティビティバーでリモートエクスプローラーのアイコンを押した後、「REMOTE EXPLORER」で「GitHub Codespaces」を選択し、「Sign in to GitHub」を押してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/d5351554-0442-0003-f00c-872b52633e14.png)

モダールが表示されるので、「Allow」を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/a7a2f655-64be-b730-3513-5cf3b2348163.png)

`Organization` に所属している場合は、以下のような画面が表示されるので「Authorize」を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/a5866f7e-f6b7-fc35-38e8-819197ab3dcb.png)

`GitHub for VS Code` が追加の権限を求めてくるので、「Authorize Visual-Studio-Code」を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/779c78e0-caa4-f534-d849-97082713b511.png)

`GitHub` への認証が求められるので、「Use GitHub Mobile」を押します。スマホを使った認証の代わりに、「Use your authenticator app」や「Use your password」でも可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/ab593e17-00de-a85b-6778-3f35af7ce8bc.png)

認証が無事終わると、Visual Studio Code にリダイレクトされます。

# Visual Studio Code で GitHub Codespaces を作成する
「Create Codespace」のボタンが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/c1f36890-783e-b60a-a6b7-483cf8bc7c1c.png)

「Create Codespace」のボタンを押すと、プライベートリポジトリを含めて、自分のリポジトリ一覧が表示されます。試しに、任意のリポジトリを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/82d1ee81-e224-c4da-e50d-6431c07069b9.png)

ブランチが表示されるので、任意のブランチを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/f7a24234-a017-ee23-7127-8af3f3b02091.png)

`GitHub Codespace` のインスタンスのスペックが表示されるので、任意のスペックを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/a84be4ef-d35b-f9fd-bfc9-bf78713d0d55.png)

その後、`GitHub Codespace` を `Visual Studio Code` で作成することができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/454b41e4-42e7-4071-2534-03eb1195cdf9.png)

https://docs.github.com/ja/codespaces/developing-in-a-codespace/using-github-codespaces-in-visual-studio-code#vs-code-%E3%81%A7-codespaces-%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B

# Visual Studio Code で GitHub Codespaces を開く
`GitHub Codespaces` から接続を切った状態で、リモートエクスプローラーのアイコンを押して画面を表示します。「GITHUB CODESPACES」から先ほど作成した` GitHub Codespaces` を右クリックで選択して、「Connect to Codespace」を選択すると、`GitHub Codespaces` を開くことができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/ae9ef30f-5052-1a64-a227-c26354f5ba83.png)

https://docs.github.com/ja/codespaces/developing-in-a-codespace/using-github-codespaces-in-visual-studio-code#vs-code-%E3%81%A7-codespace-%E3%82%92%E9%96%8B%E3%81%8F

# 新規 GitHub Codespaces 用の GitHub リポジトリを作成する
リモートでのコンテナ開発環境を構築するため、新規リポジトリを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/19353371-fa63-66aa-372b-98b9eeec464f.png)

「Repository name」に任意のリポジトリ名を入力したあと、「Create repository」のボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/d549a00d-d3d1-ef82-11db-b4b190d7f789.png)

この画面が表示されれば、`GitHub` でリポジトリを作成できました。この状態だとリポジトリの中身は空になっているので、`.devcontainer.json` をインポートするために「Import code」を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/05607388-16dd-0ee2-5f2f-3d6fec652d5f.png)

「Your old repository's cloe URL」に `https://github.com/yus04/devcontainer-template.git` を入力して、「Bigin import」を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/7d2c06f5-2a1c-2482-0fde-124f4307b159.png)

https://github.com/yus04/devcontainer-template/

インポートが完了しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/d0029f16-b3d3-f536-4a7c-d5b516338d99.png)

リポジトリを確認すると、`.devcontainer` ができていることを確認できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/1b5be7c9-778f-6450-bd26-5234546e4bf7.png)

# 新規 GitHub Codespaces を作成する
`GitHub` リポジトリを作成できたので、ここでようやく` GitHub Codespaces` を作成することができます。`Visual Studio Code` で「Create Codespace」を押して、先ほど作成したリポジトリを選択します。その後、任意のブランチとインスタンスのスペックを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/80dc1d17-90a0-e96a-7154-58e4be8b07ce.png)

`GitHub Codespaces` の作成に少し時間がかかるので、5 分程待機します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/13320cc4-f915-9584-90ad-31b8d6775e2e.png)

待機しているとと、`GitHub Codespaces` のセットアップが完了します。念のため `GitHub Copilot`、 `GitHub Copilot Chat`、 `Azure CLI`、 `Azure Developer CLI` など `.devcontainer` で定義されているツールが入っているかを確認すると、正しくインストールされていることを確認できました。これにて無事、開発環境構築を終えられました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/462c07a0-83c7-b49d-3362-70a771fb9667.png)

# おわりに
本記事では、`GitHub Codespaces` を使ったリモートでの開発環境の手順を紹介しました。`GitHub Codespaces` の拡張機能のインストールから、リポジトリの作成、開発環境用の `.devcontainer` の作成など、最初は色々と準備に時間がかかると思いますが、一度セットアップしてしまうと、2 回目以降の環境構築は楽にできると思います。今後の開発では `GitHub Codespaces` を使っていくことで、開発をするときにローカルストレージが足りない問題を解決できるといいなと思います。