SlideShare a Scribd company logo
GitHub Codespaces と
Azure でつくる、エンター
プライズレベルの開発環境
開発を加速するGitHub x Azure 最新開発ベストプラクティス
vol.1
岩永かづみ / Kazumi IWANAGA
• Microsoft MVP for Azure
• ZEN Architects 所属
• GitHub公認トレーナー
• 得意な領域
• Infrastructure as Code
• GitHub Actions による自動化
• 技術コミュニティ
• Code Polaris / Hack Everything.
• @dz_
• @dzeyelid
• @dzeyelid
イントロ
開発は一カ所にとどまらない
Visual Studio Code があれば
• Windows, MacOS, Linux などマルチプラットフォーム対応
• Settings Sync で設定を共有できる
• Live Share で環境を共有できる
• コンテナや Vagrant などを利用して構築した環境に、Remote
development で接続して開発できる
Visual Studio Code の開発環境の例
コンテナ ランタイム
Visual Studio Code コンテナ インスタンス
Remote development
でもまだ"運用でカバー"がなくならない?
デバッグ中だけど、もう出かけないと。
途中のコード、push したくないなぁ…
ノートPC、しばらく使ってなかったから
npm install 終わらん!
出先で更新したとこ、取込み忘れてた!
コンフリクト直さないと、めんどうだーー
しかも、モバイル回線…
そこで、
GitHub Codespaces
GitHub Codespaces とは
Visual Studio Code の開発環境の例
コンテナ ランタイム
Visual Studio Code コンテナ インスタンス
Remote development
GitHub Codespaces の場合
Visual Studio Code codespace インスタンス
Remote development
GitHub Codespaces
GitHub Codespaces の場合
Visual Studio Code
codespace インスタンス
GitHub Codespaces
ウェブブラウザ
GitHub Codespaces の場合
Visual Studio Code codespace インスタンス
GitHub Codespaces
GitHub Codespaces の場合
Visual Studio Code codespace インスタンス dev
GitHub Codespaces
codespace インスタンス review
実際に触ってみるデモ
GitHub Codespaces ポイント
使い慣れたインタフェースから使う
• ブラウザ、または対応したエディタやIDEから接続し、あたかもローカ
ルで開発している感覚で利用できる
• Visual Studio Code
• JetBrains IDE
• JupyterLab
使い慣れたインタフェースから使う
• 参考: Visual Studio Code で GitHub Codespaces を使用する
- GitHub Docs
• 参考: JetBrains IDE で GitHub Codespaces を使う - GitHub
Docs
• 参考: 機械学習のための GitHub Codespaces の概要 - GitHub
Docs
テンプレートから環境を立上げられる
• テンプレートから立ち上げる場合は、リポジトリがなくても利用できる
リポジトリから環境を立ち上げられる
• リポジトリを clone した状態で環境が立ち上がる
必要な環境を数クリックで作成できる
• 認証済み、またはコミュニティによるベースイメージが提供されている
• Features (後述)で主要なCLIや言語をインストールできる
必要な環境を数クリックで作成できる
• 認証済み、またはコミュニティによるベースイメージが提供されている
• Features (後述)で主要なCLIや言語をインストールできる
必要な環境を数クリックで作成できる
• 認証済み、またはコミュニティによるベースイメージが提供されている
• Features (後述)で主要なCLIや言語をインストールできる
誰でも同じ環境を立ち上げられる
• 作成した環境設定(devcontainer.json)をリポジトリに置いて共有
することで、誰でも同じ環境を立ち上げることができる
インスタンスはアカウントごと
• 立ち上げたインスタンスはアカウントごとに分離されている
• コラボレーションには、Live share やポートフォワーディング(後述)
の公開を利用できる
インスタンスのスペックを選択できる
マシンタイプ
マシンタイプ メモリ ストレージ 備考
2 core 4 GB RAM 32 GB
4 core 8 GB RAM 32 GB
8 core 16 GB RAM 64 GB
16 core 32 GB RAM 128 GB
32 core 64 GB RAM 128 GB 申請が必要
6 core (1 GPU) 112 GB RAM 128 GB 申請が必要
localhost へのポートフォワーディング
• localhost にポートフォワードしてくれるため、あたかもローカル環境
のようにシームレスに開発できる
• パブリック、または Organization 内向けに公開することもできる
Dev container でカスタマイズ
• Features による簡単インストール
• VS Code のエクステンションのインストール
• OnCreateCommand などのライフサイクルへのフック
• Dockerfile を用いた、より自由なカスタマイズ
Dev container でカスタマイズ
prebuild で素早く立上げる
課金体系
• 利用時間とストレージの使用量で算出
• 個人アカウントには、1ヶ月あたり無料利用枠がふくまれる
• GitHub Free – 15GB/月のストレージ、120時間/コアの利用時間
• GitHub Pro – 20GB/月のストレージ、180時間/コアの利用時間
マシンタイプ 利用時間の価格/時間
2 core $0.18
4 core $0.36
8 core $0.72
16 core $1.44
32 core $2.88
ストレージ量 ストレージ量の価格/月
1 GB $0.07
課金の様子
※ GitHub Pro の無料利用枠が適用されています
課金体系(Organization)
• Organization 配下のリポジトリで codespace を立ち上げる場合、
Organization の設定によって、課金される対象が異なる
Organization の spending limit 説明
0 codespace を起動するユーザーに課金される
1 以上、または Unlimited spending 上限に達するまでは、Organization に課金される
管理
• Dotfiles
• シークレット
• アカウント
• リポジトリ
• GPG verification
• デフォルトのエディタ
• アイドル タイムアウト
• 保持期間
• リージョン
管理(Organization)
• 利用可能なメンバー
• ポリシー
• マシンタイプ
• ポートの公開範囲
• アイドル タイムアウトの最大値
• 保持期間の最大値
• 利用可能なイメージの制限
• API により、メンバーの利用状況を取得できる
管理(Organization)
GitHub Codespaces を
よりセキュアに使いたい
その1
ベースイメージのレジストリ
ベースイメージの取得は、基本パブリック
codespace インスタンス
GitHub Codespaces
mcr.microsoft.com
hub.docker.com
パブリックリポジトリ
ベースイメージの取得は、基本パブリック
codespace インスタンス
GitHub Codespaces
mcr.microsoft.com
hub.docker.com
パブリックリポジトリ
解: セキュアなレジストリからイメージ取得
codespace インスタンス
GitHub Codespaces
ghcr.io
プライベートリポジトリ
<registry name>.azurecr.io
など
解: セキュアなレジストリからイメージ取得
codespace インスタンス
GitHub Codespaces
ghcr.io
プライベートリポジトリ
<registry name>.azurecr.io
など
解: セキュアなレジストリからイメージ取得
• 参考: codespace がプライベート イメージ レジストリにアクセスでき
るようにする - GitHub Docs
その2
codespace からの接続
codespace からの接続は、基本パブリック
codespace インスタンス
GitHub Codespaces
Visual Studio Code
インターネット経由
codespace からの接続は、基本パブリック
codespace インスタンス
GitHub Codespaces
Visual Studio Code
インターネット経由
解1:GitHub CLI によるネットワークブリッジ
• 手元のマシンで GitHub CLI extension を利用することで、そのマ
シンをネットワークゲートウェイとして動作させ、codespace からリ
ソースにアクセスできる
解2: codespace からVPN接続
codespace インスタンス
GitHub Codespaces
Visual Studio Code
プライベートネットワーク
VPN経由
解2: codespace からVPN接続
codespace インスタンス
GitHub Codespaces
Visual Studio Code
プライベートネットワーク
VPN経由
Codespaces と Azure を
VPNで接続するデモ
codespace からVPN接続
codespace インスタンス
GitHub Codespaces
Visual Studio Code
プライベートネットワーク
VPN経由
codespace から Azure へVPN接続
codespace インスタンス
GitHub Codespaces
Visual Studio Code
Microsoft Azure
VPN経由
Virtual Network
Virtual network
gateway
codespace から Azure へVPN接続
codespace インスタンス
GitHub Codespaces Microsoft Azure
VPN経由
Virtual Network
Virtual network
gateway
DNS private
resolver
Private endpoint Cosmos DB
VNet intergration
Functions app Static Web App
Link
Azure のリソース構成(VPN)
サービス 説明
Virtual network 仮想ネットワーク
Virtual network gateway 今回は、Point-to-site VPNゲートウェイとして利用する。
DNS Private resolver 仮想ネットワーク内の既定の Private DNS を介すルーティングを提供する。
これにより、仮想ネットワークに接続された Private endpoint を名前解決
できるようになる。
Azure のリソース構成(PaaS)
サービス 説明
Cosmos DB ドキュメント型データベース。今回は、Private endpoint を使用して仮想
ネットワークにのみ接続する。
Private endpoint Azure の PaaS サービスを仮想ネットワークに接続させる。DNS zone と
連携して名前解決を提供する。
Functions app デモアプリケーションのAPIを実装する。VNet integration により仮想ネッ
トワークへのアウトバンドを通す。
Static Web App デモアプリケーションのフロントエンドを実装する。これはパブリックに公開す
るが、上記の Functions app にリンクを接続することで、データベースへの
読み書きを行える。
Azure のリソース構成
• 参考: P2S VPN クライアントの構成 - 証明書認証 - Linux -
Azure VPN Gateway | Microsoft Learn
• 参考: Azure DNS Private Resolver - Azure Example
Scenarios | Microsoft Learn
• 参考: Azure Functions のネットワーク オプション | Microsoft
Learn
• 参考: Azure Cosmos DB アカウントの Azure Private Link を構
成する | Microsoft Learn
• 参考: 独自の関数を Azure Static Web Apps で使用する |
Microsoft Learn
codespace の構成
• OpenVPN などを含むベースイメージを作成しておく
• シークレットに、Azure Virtual network gateway から発行した
vpnconfig.ovpn の情報を格納しておく
• initializeCommand で上記 vpnconfig.ovpn の情報を読み出し、
インスタンス内に保存する
• postStartCommand で OpenVPN を接続する
codespace の構成
• 参考: Installing and working with the devcontainer CLI
(visualstudio.com)
• 参考: プライベート ネットワークへの接続 - GitHub Docs
• 参考: codespaces-contrib/codespaces-openvpn
(github.com)
ぜひ体験してみて!
GitHub Codespaces
Thank you so much🍩.

More Related Content

PDF
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
PDF
分散トレーシング技術について(Open tracingやjaeger)
PDF
Dockerからcontainerdへの移行
PDF
Snowflake Architecture and Performance
PDF
ドメイン駆動設計 ( DDD ) をやってみよう
PPTX
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
PDF
ドメイン駆動設計 分析しながら設計する
PPTX
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
分散トレーシング技術について(Open tracingやjaeger)
Dockerからcontainerdへの移行
Snowflake Architecture and Performance
ドメイン駆動設計 ( DDD ) をやってみよう
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
ドメイン駆動設計 分析しながら設計する
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)

What's hot (20)

PDF
AlmaLinux と Rocky Linux の誕生経緯&比較
PDF
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
PDF
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
PDF
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
PDF
GitLabのAutoDevOpsを試してみた
PPTX
CloudFront経由でのCORS利用
PDF
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
PDF
DockerとPodmanの比較
PPTX
さくっと理解するSpring bootの仕組み
PDF
TLS, HTTP/2演習
PDF
アジャイル開発を支えるアーキテクチャ設計とは
PPTX
入門!Jenkins
PDF
ソフトウェア開発における『知の高速道路』
PPTX
WayOfNoTrouble.pptx
PDF
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
PDF
今なら間に合う分散型IDとEntra Verified ID
PDF
ドメイン駆動設計の捉え方 20150718
PDF
「情報」を「書く」ということ(仮) #RedmineJapan
PDF
ドメイン駆動設計のための Spring の上手な使い方
PDF
Prometheus monitoring from outside of Kubernetes
 〜どうして我々はKubernetes上のPromet...
AlmaLinux と Rocky Linux の誕生経緯&比較
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
GitLabのAutoDevOpsを試してみた
CloudFront経由でのCORS利用
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
DockerとPodmanの比較
さくっと理解するSpring bootの仕組み
TLS, HTTP/2演習
アジャイル開発を支えるアーキテクチャ設計とは
入門!Jenkins
ソフトウェア開発における『知の高速道路』
WayOfNoTrouble.pptx
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今なら間に合う分散型IDとEntra Verified ID
ドメイン駆動設計の捉え方 20150718
「情報」を「書く」ということ(仮) #RedmineJapan
ドメイン駆動設計のための Spring の上手な使い方
Prometheus monitoring from outside of Kubernetes
 〜どうして我々はKubernetes上のPromet...
Ad

Similar to GitHub Codespaces と Azure でつくる、エンタープライズレベルの開発環境 (20)

PDF
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
PDF
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!
PDF
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
PDF
GitHub最新情報キャッチアップ 2023年6月
PDF
[Developers Festa Sapporo 2020] Microsoft/GitHubが提供するDeveloper Cloud (Develop...
PDF
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
PDF
地味だけど劇的に便利になるGitHubリポジトリ設定あれこれ
PDF
DevOps on Azure Kubernetes
PDF
Azure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整える
PDF
GitHub Codespaces が拡げる開発環境、いつでもどこでも Visual Studio Code で!
PDF
GitHub Actions と Azure PaaS でプルリクエストごとに環境を ~ Azure Static Web Apps と Containe...
PDF
Azure DevOps - ALGYAN Oct 2022.pdf
PDF
【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践
PDF
GitHub Copilotとともに次の開発体験へ
PDF
.NET の今とミライ (.NET Conf 2018 Japan Keynote)
PDF
GitHub と Azure でアプリケーションとインフラストラクチャの守りを固めるDevSecOps
PDF
20201008 GitHub at Microsoft
PPTX
Azure DevOpsとVisual Studio App CenterをモバイルアプリのCI/CDに活用しよう
PDF
【NLU祭り 場外編】コミュニケーションをより身近に、よりかしこく。LUIS と Azure AI サービスの使いどころ
PDF
【de:code 2020】 GitHub 新機能のご紹介(2020 年 5 月発表)
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
GitHub最新情報キャッチアップ 2023年6月
[Developers Festa Sapporo 2020] Microsoft/GitHubが提供するDeveloper Cloud (Develop...
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
地味だけど劇的に便利になるGitHubリポジトリ設定あれこれ
DevOps on Azure Kubernetes
Azure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整える
GitHub Codespaces が拡げる開発環境、いつでもどこでも Visual Studio Code で!
GitHub Actions と Azure PaaS でプルリクエストごとに環境を ~ Azure Static Web Apps と Containe...
Azure DevOps - ALGYAN Oct 2022.pdf
【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践
GitHub Copilotとともに次の開発体験へ
.NET の今とミライ (.NET Conf 2018 Japan Keynote)
GitHub と Azure でアプリケーションとインフラストラクチャの守りを固めるDevSecOps
20201008 GitHub at Microsoft
Azure DevOpsとVisual Studio App CenterをモバイルアプリのCI/CDに活用しよう
【NLU祭り 場外編】コミュニケーションをより身近に、よりかしこく。LUIS と Azure AI サービスの使いどころ
【de:code 2020】 GitHub 新機能のご紹介(2020 年 5 月発表)
Ad

More from Kazumi OHIRA (19)

PDF
GitHub dockyardコミュニティ 竣工イベント!オープニング資料
PDF
高さ比べじゃない、キャリアは歩んできた道
PDF
突如登場したAzure Developer CLIでなにができるのか?検証してみる
PDF
女性エンジニアコミュニティから見える価値観のリアル
PDF
「あの人の自分戦略を聞きたい!2022」~ 大平かづみの場合
PDF
本領を発揮するために、まずバリアを開放できる場を
PDF
「 Azure 」にデータを溜めて活用する のご紹介 - 「はじめてのNode-RED ver.1.3.0対応版」書籍出版記念イベント LT
PDF
Code Polaris 紹介(Woman type イベント「女性エンジニアのキャリアのお悩み相談室 with Code Polaris」)
PDF
Azure Rock Star Community Day #2 - Cogbot Community スタッフが選ぶ Microsoft Learn コ...
PDF
LINE LIFF with Azure ハンズオン資料 - Azure サービス解説
PDF
Code Polaris meetup #2
PDF
Code Polaris meetup #1
PDF
TypeScript x Bot Framework
PDF
de:code 夏まつり クイズクライアント作ったよ!
PDF
観たいセッションがかぶった!なんて心配ご無用。今年は、興味の赴くままにあれもこれも♪
PDF
Cogbot コミュニティのご紹介 #MSBuild #COM173
PDF
TOMORROW IS IN YOUR HANDS - テクノロジ・ブーストをまとい、生き抜くために - Microsoft Ignite The Tou...
PDF
Azure サーバレスアーキテクチャを支える Infrastructure as Code - Microsoft Ignite The Tour 202...
PDF
Azure Serverless or Power Platform 〜 あなたならどっち?! - Azure Serverless 編
GitHub dockyardコミュニティ 竣工イベント!オープニング資料
高さ比べじゃない、キャリアは歩んできた道
突如登場したAzure Developer CLIでなにができるのか?検証してみる
女性エンジニアコミュニティから見える価値観のリアル
「あの人の自分戦略を聞きたい!2022」~ 大平かづみの場合
本領を発揮するために、まずバリアを開放できる場を
「 Azure 」にデータを溜めて活用する のご紹介 - 「はじめてのNode-RED ver.1.3.0対応版」書籍出版記念イベント LT
Code Polaris 紹介(Woman type イベント「女性エンジニアのキャリアのお悩み相談室 with Code Polaris」)
Azure Rock Star Community Day #2 - Cogbot Community スタッフが選ぶ Microsoft Learn コ...
LINE LIFF with Azure ハンズオン資料 - Azure サービス解説
Code Polaris meetup #2
Code Polaris meetup #1
TypeScript x Bot Framework
de:code 夏まつり クイズクライアント作ったよ!
観たいセッションがかぶった!なんて心配ご無用。今年は、興味の赴くままにあれもこれも♪
Cogbot コミュニティのご紹介 #MSBuild #COM173
TOMORROW IS IN YOUR HANDS - テクノロジ・ブーストをまとい、生き抜くために - Microsoft Ignite The Tou...
Azure サーバレスアーキテクチャを支える Infrastructure as Code - Microsoft Ignite The Tour 202...
Azure Serverless or Power Platform 〜 あなたならどっち?! - Azure Serverless 編

GitHub Codespaces と Azure でつくる、エンタープライズレベルの開発環境