今回のとことんDevOps勉強会は「【ライブデモ】Visual Studio CodeのDev Containersを使って開発環境構築してみるよ」と題して、Visual Studio Codeの拡張技術であるDev Containersを使用した開発環境の構築方法をライブデモでお届けしました。途中、GitHubの障害でトラブルに見舞われたものの、何とか最後までご覧いただくことができました。
このライブデモは先日行われたオープンデベロッパーズカンファレンス(ODC)2023において、好評いただいたワークショップをもとに実施しました。Dev Containersは現時点ではまだベータ版ではありますが、クライアント環境を汚すことなく、素早く開発環境を用意できるという大きなメリットがあります。ぜひ、これを機会にウォッチしてみてはいかがでしょうか?
振り返りも兼ねて当日の配信の様子をYoutubeでアーカイブしていますので、是非ご覧ください。当日参加できなかった方も、これを機会にとことんDevOps勉強会に興味を持っていただければと思います。また、当日いただいたQ&Aに関してもこちらのブログでまとめていますので、ぜひご覧ください。
セミナー動画 - YouTube Live アーカイブ
発表資料 - Speaker Deck
Q&Aまとめ
Q: Dev Containersでの開発環境作成とRemote SSH経由でDockerを立ち上げる場合とでは、それぞれどのように使い分けると良いですか?
A: Docker部分をどこで動かすかによります。ネットワークでアクセスに制約がある場合などはDev Containersだけでローカルに環境を作るという選択肢を取るのが良いと思います。リモートSSHは物理的に離れた環境で使う場合に使います。
あと、Dev Containersを使えばDockerと直接やりとりできるのですが、VirtualBoxなどのDocker以外の仮想環境と繋ぐ場合はリモートSSHを使うことになります。
Q: Dev containersはある程度環境構築が完了した後に使うイメージでいいんでしょうか?それとも、環境構築もDev containersを使って作っていくイメージでしょうか?
A: 設定にミスがあった場合に、開発環境が立ち上がらなくなってリカバリーをするという状況になると、手間が増えてしまいます。そのため、環境構築が完了した状態で使う方が良いと思います。もちろん、途中で変更があった場合はその変更を反映させていくのですが、それが頻繁に起こると手戻りが大きくなるので、ある程度完成させた状態で使うことがおすすめです。
Q: Dev containersからコンテナに接続する場合、環境変数や機密データについてはどのタイミングで設定して起動するんでしょうか?
A: VS Codeの機能の中に、シェルコマンド向けに環境変数を起動時に設定してくれる機能があります。そこで、ユーザーごとに設定ファイルにそういった情報を寄せていくことで、Dev Containersを立ち上げた時に自動的にその設定を読み込んでくれるようにできます。ただ、そこで機密情報を扱うとなると、GitHubでそういった設定を共有するのは適切ではないので、そこは明確な答えは持っていません。
GitHub Codespacesでは設定ファイルではなく、シークレットなどの情報と同様に機密情報を管理する場所があり、立ち上げ時にそれを適用していくれるという仕組みがあります。その点はGitHub Codespacesの優れている点です。Dev Containers単体では、現時点では機密情報の取り扱いに関してはまだまだな部分があります。
Q: Dev ContainersとGitHub Codespacesは比較されることも多いですが、それぞれどういうシナリオで使うのが良いのでしょうか?
A: Dev ContainersはDockerをどこで動かすかによって話が変わってきてしまいますが、基本はローカル上にDockerを立てて、ローカルに閉じた開発で使うようなイメージです。今回のでデモではニフクラに環境を用意して、そこでDockerを立てて動かしています。
一方、GitHub Codespacesは環境を用意せずとも開発できる、手軽に使える開発環境といったイメージです。毎月の無料で付与されるクレジットで利用できたりするので、その範囲内でサクッと使うには良いかと思います。あと、先ほどもあった機密情報の取り扱いも対応しているので、そういった要求がある場合にも向いていると思います。
Q: M2 Macなど、CPUがaach64の場合はローカルでの結果とクラウド上での結果が微妙に変わったりして、お困りになったことはありませんか?
A: 現状まだ出会していないだけかもしれませんが、今のところそういったケースに当たったことはないです。
Q: まだベータ版ということもあり、まだ情報がなかったり仕様変更があったりということがあると思いますが、そういった状況でどこをみて勉強するのが良いでしょうか?
A: チュートリアル的にまとめてくれているサイトとかはありませんが、自動生成した設定ファイルのコメントに、その設定に関する情報のリンクが貼られていたりするので、そこを参考にするのが良いと思います。
逆に、ご要望を頂ければ弊社でワークショップなどでトレーニングを提供することも可能なので、こういうのを体験してみたいなどありましたら、ご連絡ください。
Q: 御社でGitHub Codespaceの導入支援などを行った事例などありますでしょうか?そういった会社ではCodespaceを開発にどのくらい組み込んでいるのか、もしご存じでしたら教えていただきたいです。(全部Codespaceに置き換えるパターンもある?)
A: (宮原)もし、何か検討してみたいというレベルであれば机上検討でも良いので、一緒に検討させていただきたいと思います。興味ある方向けにはワークショップなども含めて色々と体験いただけるようにしてみたいと思います。
(新村)実際、弊社の案件だと古い環境をどう新しくするかという案件が多く、まだGitHub Codespacesまで話がたどりつかないことが多いです。もちろん、Dev ContainersやGitHub Codespacesを使った開発までたどり着くのが最終目標なので、そういったところの評価などを今行っている状況です。