2021/11 BPStudy#171 イベントのトーク
タイトル
VS Code Web & GitHub Codespaces でローカル環境を持たずに開発しよう
概要
開発環境の用意にまつわる苦労は色々あると思います。準備や維持、高スペックマシンが欲しくなるなどなど・・・。
8月に公開されたGitHub CodespacesとVS Code Webは、そのような苦労を軽減し開発環境の在り方を変えていく可能性があります。
VS Code Web はブラウザ版のVisual Studio Codeで、アプリ版と同じように使えます。
GitHub CodespacesはGitHubが提供するRemote Container実行環境です。
今回のBPStudyでは、GitHub CodespacesとVS Code Webを使ってWebアプリケーション開発を行った経験を元に、Codespacesの仕組みや、実際の使い勝手、難点などをデモを交えながら紹介します。
自己紹介
トークネタ
導入
ローカル端末に複数の開発環境を維持するのがツラい、最近の開発は端末にメモリやCPUがたくさん必要なので最上位機種じゃないとツラい、新メンバーが環境構築にまる1日かかる、環境が壊れたので修復が面倒、Dockerコンテナを起動したままリモートミーティングすると固まる・・などなど、開発環境にまつわる苦労は色々あると思います。
VS Code Web 編
VS Code Web はブラウザ版のVisual Studio Codeで、アプリ版のVS Codeと同じようなUI、使い勝手が提供されています。ちょっとしたコードの修正やレビューであれば、Web版のIDEを使って作業できるようになりました。
Cloneせずに複数ファイルをちょっと編集してコミット
既存のGitHubでは1ファイル単位の編集commitだったが、複数ファイル編集して commit できるようになった
PRレビューで使うと便利
ピリオドキー押すだけで、 IDE ライクに見ることができて便利
PR コメントもできるし、Viewed もできる
関数定義の検索ができないのが残念
実行環境はついていない
GitHub CodeSpaces 編
GitHub CodespacesはGitHubが提供するRemote Container実行環境です。GitHub Codespacesを使えば、ローカルPCのCPUやメモリ、万一の場合のバックアップについて気にすることなく、ローカル開発環境と同じ使い勝手で開発を行えます。また、開発環境立ち上げの高速化と共通化も行えます。
前提: TeamプランとGitHub Enterprise Cloudでのみ利用可能
VS Code Web に実行環境が付いたようなもの
環境立ち上げ時のあるある問題を解決できる
立ち上げ手順が面倒
手順通りにやっても途中でエラーになる
実行環境(OS等々)が開発者ごとにバラバラ
環境の作り直しで半日(〜数日?)消費
PC/Macのメモリが16GBあっても足りない、重い
Meet/Zoom 等とのメモリ・CPUの奪い合い
より便利に
今の環境は維持したまま別ブランチで環境を動かす
複数案件、複数リポジトリの開発環境をそれぞれ立ち上げる
スペックが必要なときは高スペック環境で起動
CodespacesはVSCode専用?
sshポートが解放されているので、他のIDEでも利用可能(らしい)
VS Code拡張機能や設定をプロジェクトで統一
devcontainerの用意
codespaces関係なく使える技術
codespaces用のオールインワンをMSが用意してくれた(これがデフォルトでcodespacesにキャッシュされている)
独自のdevcontainerを用意する(起動時にpullが走るが、将来的にはキャッシュもできるようになるらしい?)
ローカルのVSCode
VSCode起動してcodespacesを使えば使い勝手は通常のVSCodeと同じになる
ローカルポート転送でローカルポートを開けば80や443も開ける
デメリット
拡張機能とかはWebで使えないものもある(対応を増やしているところらしい)
分単位の課金が気になって、こまかく中断しようと考えてしまうし、30分使わないでいると自動で中断する
中断からの起動待ちに20秒ほどかかる(IDE起動時間だと思えばそれほどでもないが・・)
内容案
10~15分:
概念の説明(図多め)、価値、ユースケース
25〜30分: デモ
8/30に社内メンバーから話や質問が出たものもあらかじめデモや説明に追加する(参加者も同じ疑問を持つと思うため) →使う価値/ユースケースなどの話が後半に出てきてたのでその話もするとよさそう
その他、何かあれば
20分(最大): 参加者から質疑応答、質問/回答がなくなったら終了
ボツ
ソフトウエア開発の環境立ち上げは昔から手間のかかるものでした。プログラミング言語や関連ライブラリのインストールなど、手順書に従って進めてもその都度なにかしらの問題が出てきます。こういった状況はコンテナ技術の登場によって大きくかわり、構築手順はDockerfileなどにまとめられ、ビルドされたコンテナを組み合わせて開発する機会もだいぶ増えてきました。
そうでなくても、PCが故障して開発環境をロストしたり、サブノートやChromebookで開発できるようにしておきたい、というニーズもあると思います。