[続!Dev Container] GitHub Codespacesでクラウド開発環境を構築
[1] [2] [3] で複数のサービスが利用する決済プラットフォームの開発チームに所属している鳥居です。
前回の記事 [4] では、Visual Studio Code(以下 VS Code)の Dev Container を活用し、快適な開発環境を構築する方法を紹介しました。Dev Container は非常に便利である一方、ローカルマシンのリソースを利用するため、パフォーマンスがマシンスペックに依存するという課題がありました。特に Mac での使用では、ファイルシステム間の相互作用が原因で遅延が生じる場合がありました。
今回の記事では、私たちのチームでも実際に活用している Dev Container による開発環境構築をさらに進化させた GitHub Codespaces について解説します。GitHub Codespaces を利用することで、クラウドベースの開発環境を手軽かつ効率的に構築する方法をご紹介します。
また、実際の開発で活用している設定ファイルのサンプルも紹介します。設定ファイルのサンプルは、Dev Container で MySQL や LocalStack を利用する方法や、ローカル環境と Dev Container の開発環境の共存方法など、実際の開発で活用しているものから抜粋したものです。
GitHub Codespaces は、クラウド上で完全な開発環境を提供するサービスで、VS Code、VS Code Web、IntelliJ、JupyterLab などの主要な開発ツールをサポートしています。これらのツールは Windows、Mac、そして Linux のすべての主要なプラットフォームで使用することができます。これにより、開発者は自分の好みに応じた環境で開発作業を行うことができます。さらに、VS Code Web を使用する場合は、ブラウザがある場所ならどこでも開発環境にアクセスし、ローカルマシンとクラウド間での作業をシームレスに行うことが可能です。
設定ファイルのサンプル を参考にしてください)。
設定ファイルをリポジトリにコミットし、プッシュします。
GitHub リポジトリにアクセスし、リポジトリページの右上にある緑色の "Code" ボタンをクリックします。
ドロップダウンメニューから "Codespaces"タブ を選択します。
新しい Codespace を作成するか、既存の Codespace を選択して開くことができます。
今回は初回なので、"Create new codespace on main"を選択します。
オプションとして、リモートマシンのスペックやリージョンを指定できます。
三点リーダーから "New with options..." を選択します。
Codespaces の起動画面に遷移し、準備が整うまで数分かかります。準備が整ったら、ブラウザ上で Visual Studio Code のインターフェイスが表示されます。
これで、Codespaces が起動し、リポジトリのコードを編集できるようになりました。また、ターミナルも利用可能で、開発環境にインストールされているツールを使用できます。
[5] は、JetBrains Gateway Codespaces 用の設定項目です。JetBrains Gateway Codespaces は、JetBrains IDE で GitHub Codespaces を利用するための機能です。この設定を追加することで、JetBrains IDE から GitHub Codespaces へのアクセスが可能になります。
"name" : "sample-app" , "build" : { "dockerfile" : "Dockerfile" "service" : "devcontainer" , "workspaceFolder" : "/workspaces/${localWorkspaceFolderBasename}" , "postCreateCommand" : "sh .devcontainer/post-create.sh" , "features" : { "ghcr.io/devcontainers/features/go:1" : { "version" : "latest" // ホストマシンのDockerを利用するための設定 "docker-from-docker" : { "version" : "latest" // Jetbrains Gateway Codespaces用 "ghcr.io/devcontainers/features/sshd:1" : { "version" : "latest" "settings" : { "editor.guides.bracketPairs" : true , "editor.stickyScroll.enabled" : true , "editor.stickyScroll.maxLineCount" : 5 , "workbench.colorCustomizations" : { "editorStickyScroll.background" : "#00708D" , "editorStickyScrollHover.background" : "#59A2B5" "editor.formatOnSave" : true , "[go]" : { "editor.formatOnSave" : true , "editor.defaultFormatter" : "golang.go" "go.formatTool" : "gofmt" "extensions" : [ "golang.go" , "GitHub.vscode-pull-request-github" , "GitHub.copilot"
[6]
や
localstack
[7]
などのアプリケーションに必要なサービスや環境変数、ボリュームの設定を行っています。これにより、アプリケーションを構成するコンテナを一括で構築・実行することができます。
version: "3"
services:
app:
build:
context: .
dockerfile: Dockerfile
volumes:
- .:/workspace
ports:
- "3000:3000"
mysql:
container_name: mysql
build: ./docker/mysql
environment:
MYSQL_DATABASE: sample
MYSQL_USER: developer
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: password
volumes:
- ./docker/mysql/sql:/docker-entrypoint-initdb.d
ports:
- 3320:3306
localstack:
image: localstack/localstack:latest
environment:
- HOSTNAME=localstack
- SERVICES=s3
- DEFAULT_REGION=ap-northeast-1
- DATA_DIR=/tmp/localstack/data
volumes:
- "${LOCALSTACK_VOLUME_DIR:-./volume}:/var/lib/localstack"
- "/var/run/docker.sock:/var/run/docker.sock"
ports:
- 4777:4566
こちら からインストールすることもできます。
GitHub にログインする
VSCode で「GitHub CodeSpaces」拡張機能を起動し、GitHub アカウントでサインインします。
[8]
JetBrains Gateway で CodeSpaces を起動する手順は以下のとおりです。
なお、先程の例に示したように、JetBrains Gateway で CodeSpaces を利用するためには、
.devcontainer.json
に以下の設定を追加する必要があります。
JetBrains Gateway のインストールページ
にアクセスし、インストーラをダウンロードしてインストールします。
または、
JetBrains Toolbox
からインストールすることもできます。
GitHub CLI をインストールする
JetBrains Gateway は、GitHub CLI を利用して GitHub にログインします。
GitHub CLI をインストールするには、
こちら
の手順に従ってください。
Windows を利用している場合は、
こちら
のインストーラを利用することもできます。
GitHub にログインする
JetBrains Gateway を起動し、 GitHub Codespace をインストールします。
次に、メニューの GitHub Codespaces > Sign in to GitHub をクリックし、 GitHub にログインします。
ワンタイムコードと認証ページへのリンクが表示されます。リンクをクリックし、GitHub にログインします。
ワンタイムコードを入力し、[Continue] ボタンをクリックします。
次に、 [Authorize github] ボタンをクリックします。
Your Recent Codespaces
から起動したい Codespace を選択し、[Open] ボタンをクリックします。
もし、 Codespaces を作成していない場合は Click
here
から Codespaces の作成画面を開くことができます。
Code Tour
拡張機能と組み合わせて、新規メンバーのオンボーディングや、ワークショップ形式の勉強会にも活用しています。
ワークショップでは、環境構築手順の手間を省いてすぐに本題の作業に取り組むことが出来るので、Codespaces の利便性を大いに感じています。
また、Google Cloud からも Cloud Workstations [11] がリリースされました。興味がありましたらぜひ触ってみてください。
GitHub Codespaces は、クラウドベースの開発環境を手軽に構築するための強力なツールです。Dev Container を利用することで、チーム全体での環境構築を効率化することができます。GitHub Codespaces を利用することで、さらに手軽に開発環境の構築を行うことができ、チームの生産性の向上につながります。ぜひ、GitHub Codespaces を活用してみてください。
共通サービス開発グループメンバーによる投稿 1
[
グローバル展開も視野に入れた決済プラットフォームにドメイン駆動設計(DDD)を取り入れた
]
↩︎
共通サービス開発グループメンバーによる投稿 2
[
入社 1 年未満メンバーだけのチームによる新システム開発をリモートモブプログラミングで成功させた話
]
↩︎
共通サービス開発グループメンバーによる投稿 3
[
JIRA と GitHub Actions を活用した複数環境へのデプロイトレーサビリティ向上の取り組み
]
↩︎
前回の記事
[
VSCode Dev Container を使った開発環境構築
]
↩︎
devcontainers/features sshd
について
[
devcontainers/features sshd
]
↩︎
docker-compose
での MySQL 設定方法
[
MySQL と Docker Compose を使ってマルチコンテナー アプリを作成する
]
↩︎
docker-compose
での
localstack
設定方法
[
GitHub localstack
]
↩︎
JetBrains IDE でのリモート開
[
JetBrains IDE でのリモート開発
]
↩︎
GitHub Codespaces の請求について
[
GitHub Codespaces の請求について
]
↩︎
Default idle timeout
の設定を短くすることで、無駄なコストを抑えることができます。
[
Codespaces の設定
]
↩︎
Google Cloud - Cloud Workstations