GitHub CodeSpacesは、クラウドベースの開発環境で、開発者がどこからでも簡単にコードを書いたり、ビルドしたり、デバッグしたりできるツールです。特にリモートワークやコラボレーションが求められる現代において、非常に便利なサービスとなっています。
メリット
従来のローカル環境構築には多くの手間と時間がかかりましたが、GitHub CodeSpacesでは数クリックで開発環境をクラウド上にセットアップできます。よって、初期設定の時間を大幅に短縮でき、すぐに開発に取り掛かることができます。
デフォルトの構成(Linux Universal Image)は次の内容です。
- Linux (Ubuntu)
- Python, Node.js, JavaScript, TypeScript, C++, Java, C#, F#, .NET Core, PHP, Go, Ruby, Conda
gitも含まれています。
- git configの基本設定は設定済み(メールアドレス、表示名などはGitHubアカウントの内容がコピーされている)
- gitの認証情報も設定済み
$ git --version
git version 2.45.1
$ git config -l
user.name=xxx
user.email=yyy
→ 環境構築して変更してチェックして、すぐにPushが行えます。
プロジェクトの規模に応じて、必要なリソースを柔軟に変更できるため、大規模プロジェクトでも快適に開発を行えます。必要なときに必要なだけリソースを利用することで、コストも効率的に管理できます。
- 2-core, 8GB RAM, 32GB Storage ← default
- 4-core, 16GB RAM, 32GB Storage
- 8-core, 32GB RAM, 64GB Storage
- 16-core, 64GB RAM, 128GB Storage
(参考) スペック情報
$ free -h
total used free shared buff/cache available
Mem: 7.7Gi 1.3Gi 293Mi 65Mi 6.1Gi 6.0Gi
Swap: 0B 0B 0B
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
Address sizes: 48 bits physical, 48 bits virtual
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 2
Core(s) per socket: 1
Socket(s): 1
NUMA node(s): 1
Vendor ID: AuthenticAMD
CPU family: 25
Model: 1
Model name: AMD EPYC 7763 64-Core Processor
Stepping: 1
CPU MHz: 3093.935
BogoMIPS: 4890.85
Virtualization: AMD-V
Hypervisor vendor: Microsoft
Virtualization type: full
L1d cache: 32 KiB
L1i cache: 32 KiB
L2 cache: 512 KiB
L3 cache: 32 MiB
NUMA node0 CPU(s): 0,1
Vulnerability Gather data sampling: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Vulnerable: Safe RET, no microcode
Vulnerability Spec store bypass: Vulnerable
Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2: Mitigation; Retpolines; STIBP disabled; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected
Vulnerability Srbds: Not affected
Vulnerability Tsx async abort: Not affected
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr
_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq ssse3
fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a
misalignsse 3dnowprefetch osvw topoext invpcid_single vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clf
lushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves clzero xsaveerptr rdpru arat npt nrip_save tsc_scale vmcb_clean flushbya
sid decodeassists pausefilter pfthreshold v_vmsave_vmload umip vaes vpclmulqdq rdpid fsrm
$ cat /etc/issue
Ubuntu 20.04.6 LTS \n \l
$df -h
Filesystem Size Used Avail Use% Mounted on
overlay 32G 11G 20G 34% /
tmpfs 64M 0 64M 0% /dev
shm 64M 8.0K 64M 1% /dev/shm
/dev/root 29G 24G 5.8G 81% /vscode
/dev/sda1 44G 124K 42G 1% /tmp
/dev/loop3 32G 11G 20G 34% /workspaces
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 64M 1 loop
loop1 7:1 0 87M 1 loop
loop2 7:2 0 38.8M 1 loop
loop3 7:3 0 32G 0 loop /home/vscode/.minikube
loop4 7:4 0 500M 0 loop
sda 8:0 0 45G 0 disk
└─sda1 8:1 0 45G 0 part /tmp
sdb 8:16 0 30G 0 disk
├─sdb1 8:17 0 29.9G 0 part /workspaces/.codespaces/shared
├─sdb14 8:30 0 4M 0 part
└─sdb15 8:31 0 106M 0 part
sr0 11:0 1 628K 0 rom
実行環境のカスタマイズ
CodeSpacesはDockerコンテナ上で動作しています。
構成ファイル(devcontainer.json)を追加することで、実行環境を細かくカスタマイズできます。これにより、特定のライブラリやツールチェーンを必要とするプロジェクトでも、簡単に環境を再現できます。
devcontainer.json
開発環境の設定は「devcontainer.json」に記載します。
デフォルト環境をコード化するなら、こんな感じ。
{
"image": "mcr.microsoft.com/devcontainers/universal:2",
"features": {
}
}
VSCodeの拡張機能であるDev Containerを使用することで、より柔軟に開発環境を設定できます。
→ VSCode内で”Codespaces: Add Dev Container Configuration Files…”を利用すれば、ウィザードっぽく進めることが出来ます。
- 基本環境を選択
- オプションを選択
という流れで、devcontainer.jsonに加えてDockerfileやdocker-compose.ymlなども作成してくれます。
チーム全体で同じ開発環境を共有することが可能です。先ほどのdevcontainer.jsonなどの設定ファイルをリポジトリに含めることで、全員が統一された環境で開発できます。
環境の違いによる不具合やトラブルを減らすことができます。
共同編集
GitHub CodeSpacesは、リアルタイムでの共同編集をサポートしています。これにより、複数の開発者が同時に同じファイルを編集し、変更を即座に共有できます。リモートワークや分散チームでの開発において、非常に便利な機能です。
ライブシェア機能
VSCodeのライブシェア機能を利用することで、他の開発者と簡単にセッションを共有できます。コードレビューやペアプログラミング、デバッグ作業をリアルタイムで行うことが可能です。
- live shareの拡張機能を導入!
- live shareを有効にして招待URLを関係者に連絡!
※Read Onlyで招待することも可能です。
コードレビューとフィードバック
コードの変更点やコメントをリアルタイムで確認し合うことで、迅速なフィードバックが得られます。これにより、開発のスピードと品質を向上させることができます。
その他
- QExport changes to a branchとは?
- A
現在の変更内容を新ブランチを設定に移動できる機能です。
例えば、当初はmainブランチで変更を進めてたけど、派生ブランチに移動できます。後は、Pull Requestを発行してマージという流れをとれます。
まとめ
メリット
- 環境構築が簡単:数クリックでセットアップ完了
- 高度なカスタマイズ:VSCodeの拡張機能や設定を利用可能
- スケーラビリティ:必要なリソースを柔軟に調整
実行環境のカスタマイズ
- Dockerを利用:特定のライブラリやツールチェーンを簡単に再現
- DevContainerの設定:事前定義で自動設定
- 設定の共有:チーム全体で統一環境を共有
共同編集
- ライブシェア機能:コードレビューやペアプログラミングが簡単
- コードレビューとフィードバック:迅速なフィードバックで開発の質を向上
コメント