SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
Copyright 2021 Hiroyuki Onaka
VSCode Remote Container &
GitHub Codespacesで拓く次世代の
Java開発体験
2022/02/03 Microsoft Developer Night
大中浩行
この作品はMicrosoft Corporationから許諾されているものを除き クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。
Copyright 2021 Hiroyuki Onaka
IDEとしてトップシェアのVisual Studio Code(VSCode)
Stack Overflow Developer Survey 2021 から:https://insights.stackoverflow.com/survey/2021
Copyright 2021 Hiroyuki Onaka
そんなVSCodeでJavaの開発ができます!
Copyright 2021 Hiroyuki Onaka
VSCodeによるJava開発に必要なもの
• VSCode本体
• JDK
• Java11以上が必要
• Coding Pack for Java
• http://aka.ms/vscode-java-getting-start
Copyright 2021 Hiroyuki Onaka
デモ: VSCodeでJavaクラスの実行
Copyright 2021 Hiroyuki Onaka
Javaの開発環境としてのVSCodeってどうなの?
• 動作が軽快
• プロジェクトやワークスペースを作成しないでソースコード単独で実行
できる点など、学習用途には向いている
• 他のIDEのように、プロジェクトを作成しての開発も可能
• 検証用途のコード実行など(JShellはあるが)
Copyright 2021 Hiroyuki Onaka
業務で使えますか?
• IntelliJ IDEA/Eclipseのツートップに比べるとまだ発展途上
• 以前からは大分改善されました
• Javaの開発環境としては言語サポート以外にもアプリケーショ
ンサーバー、ビルドツールなどの統合のレベル向上が必要
• 機能追加・改善は積極的に行われています
Copyright 2021 Hiroyuki Onaka
ではなぜJava in Visual Studio Codeを取り上げるのか?
• VSCodeの強みとの組み合わせにより、新しい開発者体験を
Java開発者に提供できる可能性がある。
• それがRemote Development
Copyright 2021 Hiroyuki Onaka
VSCodeのRemote Development
VSCodeからリモートの環境に接続して、シームレスな開発を実現
• SSH
• コンテナー(Docker)
• WSL(Windows Subsystem for Linux)
• GitHub Codespaces
Copyright 2021 Hiroyuki Onaka
Remote Developmentのユースケース
• リモートの開発環境に接続しての開発
• 開発環境のセットアップの省略化
Copyright 2021 Hiroyuki Onaka
開発環境のリモート化の背景
• 開発用途のデスクトップ環境に必要なリソースは増加の一途
• 画面共有など、オンラインでのコラボレーションの活発化
• Docker / WSL2 などの仮想化前提のソリューションの普及
• デスクトップ環境に必要なメモリーは16GB?32GB?
• サイズの大きいデータセットを扱うことの一般化
• 例として、Elasticsearchのカスタム辞書を用いた開発など
Copyright 2021 Hiroyuki Onaka
SSHによるリモート開発環境
• Azureなどパブリッククラウドの使用により、柔軟にクラウド上
の資源を開発環境として使用することが可能
• 「アプリケーションを動かす環境がLinuxだったら開発環境も
Linuxにしません?」という昔からあったニーズの実現
Copyright 2021 Hiroyuki Onaka
VSCodeによるリモート開発に必要なもの
• Remote Development extension pack
• https://aka.ms/vscode-remote
• OpenSSHクライアント
• Windows10/11はOS標準で導入可能
• リモート接続先のプラットフォーム
• サーバー(Linux/macOS/Windows)
• WSL
• Dockerコンテナー
Copyright 2021 Hiroyuki Onaka
リモート開発における開発環境へのニーズ
• クラウド上の開発環境を使用する場合、必要に応じて開発環境
を構築するようにしたい
• Git(GitHub)からコードをクローンした状態で開発環境のセッ
トアップができるようにしたい
Copyright 2021 Hiroyuki Onaka
Remote Containerによる開発環境のコード化
• VSCodeのRemote ContainerとDocker Desktopの組
み合わせによる開発環境の構築のコード化
• コード化の対象
• VSCodeの構成(拡張機能の構成およびVSCodeの設定)
• devcontainer(開発コンテナ) の構成
• Live Shareによる、共同編集のサポート
Copyright 2021 Hiroyuki Onaka
VSCode+Docker Desktopの問題点
• Docker Desktopを動かすデスクトップ環境に高いスペックが必要
• ディスク入出力のパフォーマンスの低下によるビルド時間やアプリ
ケーションの起動時間の悪化
• Production Codeを組み込んだ時に顕在化しがち
• Windows10 HomeだとWSL2を有効にしないとDocker
Desktopがインストールできない
Copyright 2021 Hiroyuki Onaka
Docker Desktopの問題に対するワークアラウンド
• sshでリモートのDockerコンテナーに接続
• 環境変数DOCKER_HOSTを使用する等
• 設定が複雑という問題
• VSCode 1.63でリリースのRemote Docker on SSHでこ
の問題が解決
Copyright 2021 Hiroyuki Onaka
Remote Docker on SSH
Copyright 2021 Hiroyuki Onaka
開発基盤の構築・運用に関わる人の永遠のテーマ
• 「開発環境を全てWebブラウザー上で完結するようにすれば、
開発環境の構築に要するコストが必要なくなるのでは?」
Copyright 2021 Hiroyuki Onaka
そこでGitHub Codespaces
• GitHubがホスティングする、コンテナーによるWebブラウザー上で
完結する開発環境
• Remote ContainerとCodespacesの環境は互換性有
• GitHub EnterpriseユーザーへはGA
• Team/FreeプランユーザーにはWaitlistに対して順次提供
• 注意:github.comから起動できるvscode.devは軽量版
Copyright 2021 Hiroyuki Onaka
デモ:GitHub Codespaces+Live Shareの組み合わせによるオン
ラインコラボレーション
• ブラウザーからGitHub Codespacesの環境(開発コンテナ)
を起動、Spring Bootのアプリケーションを起動
• Live Shareで共有したVSCodeの環境でソースコードを編集
• Codespacesの環境で結果を確認
Copyright 2021 Hiroyuki Onaka
まとめ
• Javaの開発環境としてのVSCodeはRemote
Developmentとの組み合わせで実力を発揮します。
• Remote Containerとの組み合わせで、開発環境のセットアッ
プを省略化できます。
• Codespacesの相互運用でさらにひろがるRemote
Developmentの可能性
Copyright 2021 Hiroyuki Onaka
ありがとうございました!
• 大中浩行 (Hiroyuki Onaka)
• @setoazusa
• Microsoft MVP for Developer Technologies
• VS Code Meetupオーガナイザー

Contenu connexe

Tendances

Tendances (20)

Visual Studio 拡張機能の作り方
Visual Studio 拡張機能の作り方Visual Studio 拡張機能の作り方
Visual Studio 拡張機能の作り方
 
.NET 最新ロードマップと今押さえておきたい技術要素
.NET 最新ロードマップと今押さえておきたい技術要素.NET 最新ロードマップと今押さえておきたい技術要素
.NET 最新ロードマップと今押さえておきたい技術要素
 
デスクトップ向けUIコンポーネントの対応状況と今後の予定
デスクトップ向けUIコンポーネントの対応状況と今後の予定デスクトップ向けUIコンポーネントの対応状況と今後の予定
デスクトップ向けUIコンポーネントの対応状況と今後の予定
 
【de:code 2020】 セキュアなソフトウェアを実現する、GitHub のコード解析のご紹介
【de:code 2020】 セキュアなソフトウェアを実現する、GitHub のコード解析のご紹介【de:code 2020】 セキュアなソフトウェアを実現する、GitHub のコード解析のご紹介
【de:code 2020】 セキュアなソフトウェアを実現する、GitHub のコード解析のご紹介
 
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
 
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
 
.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション
 
お気に入り拡張機能
お気に入り拡張機能お気に入り拡張機能
お気に入り拡張機能
 
Windows IoT Core and Robot Arm
Windows IoT Core and Robot ArmWindows IoT Core and Robot Arm
Windows IoT Core and Robot Arm
 
Visual Studio 2019で始める「WPF on .NET Core 3.0」開発
Visual Studio 2019で始める「WPF on .NET Core 3.0」開発Visual Studio 2019で始める「WPF on .NET Core 3.0」開発
Visual Studio 2019で始める「WPF on .NET Core 3.0」開発
 
.NET Coreのいろは
.NET Coreのいろは.NET Coreのいろは
.NET Coreのいろは
 
使い倒そう Visual Studio Code!!! ~ここからはじめる基本のキ~
使い倒そうVisual Studio Code!!! ~ここからはじめる基本のキ~使い倒そうVisual Studio Code!!! ~ここからはじめる基本のキ~
使い倒そう Visual Studio Code!!! ~ここからはじめる基本のキ~
 
Introduction to VSCode
Introduction to VSCodeIntroduction to VSCode
Introduction to VSCode
 
C# runs anywhere, make anything
C# runs anywhere, make anythingC# runs anywhere, make anything
C# runs anywhere, make anything
 
VS Code新機能紹介 2020-2021
VS Code新機能紹介2020-2021VS Code新機能紹介2020-2021
VS Code新機能紹介 2020-2021
 
DevOps、その前に
DevOps、その前にDevOps、その前に
DevOps、その前に
 
.NET Core時代のCI/CD
.NET Core時代のCI/CD.NET Core時代のCI/CD
.NET Core時代のCI/CD
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
 
未知との交信!?Project SignalR
未知との交信!?Project SignalR未知との交信!?Project SignalR
未知との交信!?Project SignalR
 
【BS2】.NET 6 最新アップデート
【BS2】.NET 6 最新アップデート【BS2】.NET 6 最新アップデート
【BS2】.NET 6 最新アップデート
 

Similaire à VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験

Similaire à VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験 (20)

Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!
 
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
 
Visual Studio 2015 を使用した Cordova アプリの開発
Visual Studio 2015 を使用した Cordova アプリの開発Visual Studio 2015 を使用した Cordova アプリの開発
Visual Studio 2015 を使用した Cordova アプリの開発
 
20150421 Geeks Night @ Money Foward
20150421 Geeks Night @ Money Foward20150421 Geeks Night @ Money Foward
20150421 Geeks Night @ Money Foward
 
【de:code 2020】 React Native で Windows アプリ開発 ~React Native for Windows~
【de:code 2020】 React Native で Windows アプリ開発 ~React Native for Windows~【de:code 2020】 React Native で Windows アプリ開発 ~React Native for Windows~
【de:code 2020】 React Native で Windows アプリ開発 ~React Native for Windows~
 
Visual Studio Code 拡張の勘所
Visual Studio Code 拡張の勘所Visual Studio Code 拡張の勘所
Visual Studio Code 拡張の勘所
 
Visual Studio を使用した Cordova 開発
Visual Studio を使用した Cordova 開発Visual Studio を使用した Cordova 開発
Visual Studio を使用した Cordova 開発
 
Node-RED v2.0新機能紹介
Node-RED v2.0新機能紹介Node-RED v2.0新機能紹介
Node-RED v2.0新機能紹介
 
Monaco Editor on Cloud
Monaco Editor on CloudMonaco Editor on Cloud
Monaco Editor on Cloud
 
【de:code 2020】 あらゆるエンジニアを支援! VS Code Meetup の紹介とハンズオンで活躍するテクニック集
【de:code 2020】 あらゆるエンジニアを支援! VS Code Meetup の紹介とハンズオンで活躍するテクニック集【de:code 2020】 あらゆるエンジニアを支援! VS Code Meetup の紹介とハンズオンで活躍するテクニック集
【de:code 2020】 あらゆるエンジニアを支援! VS Code Meetup の紹介とハンズオンで活躍するテクニック集
 
【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみた
【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみた【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみた
【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみた
 
初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
 
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
 
200813 fgdc mandai
200813 fgdc mandai200813 fgdc mandai
200813 fgdc mandai
 
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み
 
[TL03] あなたはどっち? Visual Studio Code 派と Visual Studio 派による Web フロントエンド開発 徹底紹介
[TL03] あなたはどっち? Visual Studio Code 派と Visual Studio 派による Web フロントエンド開発 徹底紹介[TL03] あなたはどっち? Visual Studio Code 派と Visual Studio 派による Web フロントエンド開発 徹底紹介
[TL03] あなたはどっち? Visual Studio Code 派と Visual Studio 派による Web フロントエンド開発 徹底紹介
 
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介 【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
 
Remote-Containersでnext.js環境を 作った話
Remote-Containersでnext.js環境を作った話Remote-Containersでnext.js環境を作った話
Remote-Containersでnext.js環境を 作った話
 
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Codeどっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
 
【de:code 2020】 そのロジック、IoT Edge で動きます - Azure IoT Edge 開発 Deep Dive
【de:code 2020】 そのロジック、IoT Edge で動きます - Azure IoT Edge 開発 Deep Dive【de:code 2020】 そのロジック、IoT Edge で動きます - Azure IoT Edge 開発 Deep Dive
【de:code 2020】 そのロジック、IoT Edge で動きます - Azure IoT Edge 開発 Deep Dive
 

Plus de Hiroyuki Ohnaka

Plus de Hiroyuki Ohnaka (20)

ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
 
「WindowsデスクトップでWeb開発 改訂版」サンプル
「WindowsデスクトップでWeb開発 改訂版」サンプル「WindowsデスクトップでWeb開発 改訂版」サンプル
「WindowsデスクトップでWeb開発 改訂版」サンプル
 
Mackerelの薄い本
Mackerelの薄い本Mackerelの薄い本
Mackerelの薄い本
 
Microsoft DocsにContributeした話
Microsoft DocsにContributeした話Microsoft DocsにContributeした話
Microsoft DocsにContributeした話
 
Azure functions+typescript
Azure functions+typescriptAzure functions+typescript
Azure functions+typescript
 
技術書典4 く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
 技術書典4  く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版 技術書典4  く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
技術書典4 く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
 
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
 
仮想通貨始めました~GethではじめるEthereum~
仮想通貨始めました~GethではじめるEthereum~仮想通貨始めました~GethではじめるEthereum~
仮想通貨始めました~GethではじめるEthereum~
 
錬金術MeetUpへのお誘い
錬金術MeetUpへのお誘い錬金術MeetUpへのお誘い
錬金術MeetUpへのお誘い
 
Mackerelではじめる お手軽サーバー監視
Mackerelではじめる お手軽サーバー監視Mackerelではじめる お手軽サーバー監視
Mackerelではじめる お手軽サーバー監視
 
「GebとSpockではじめるシステムテスト自動化」
「GebとSpockではじめるシステムテスト自動化」「GebとSpockではじめるシステムテスト自動化」
「GebとSpockではじめるシステムテスト自動化」
 
TDDはじめて物語Second Season(updated)
TDDはじめて物語Second Season(updated)TDDはじめて物語Second Season(updated)
TDDはじめて物語Second Season(updated)
 
TDDはじめて物語 Second Season #tddbc
TDDはじめて物語 Second Season #tddbcTDDはじめて物語 Second Season #tddbc
TDDはじめて物語 Second Season #tddbc
 
XP祭り2017 LT 「DevOps再考」(改題)
XP祭り2017 LT 「DevOps再考」(改題)XP祭り2017 LT 「DevOps再考」(改題)
XP祭り2017 LT 「DevOps再考」(改題)
 
JDK9の真の目玉機能はこれだ!
JDK9の真の目玉機能はこれだ!JDK9の真の目玉機能はこれだ!
JDK9の真の目玉機能はこれだ!
 
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
 
「すいーとみゅーじっく」のできるまで
「すいーとみゅーじっく」のできるまで「すいーとみゅーじっく」のできるまで
「すいーとみゅーじっく」のできるまで
 
pact-jvmではじめるコンシューマー駆動契約
pact-jvmではじめるコンシューマー駆動契約pact-jvmではじめるコンシューマー駆動契約
pact-jvmではじめるコンシューマー駆動契約
 
実録Blue-Green Deployment導入記
実録Blue-Green Deployment導入記実録Blue-Green Deployment導入記
実録Blue-Green Deployment導入記
 
TDDのこれまで、そしてこれから
TDDのこれまで、そしてこれからTDDのこれまで、そしてこれから
TDDのこれまで、そしてこれから
 

VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験

  • 1. Copyright 2021 Hiroyuki Onaka VSCode Remote Container & GitHub Codespacesで拓く次世代の Java開発体験 2022/02/03 Microsoft Developer Night 大中浩行 この作品はMicrosoft Corporationから許諾されているものを除き クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。
  • 2. Copyright 2021 Hiroyuki Onaka IDEとしてトップシェアのVisual Studio Code(VSCode) Stack Overflow Developer Survey 2021 から:https://insights.stackoverflow.com/survey/2021
  • 3. Copyright 2021 Hiroyuki Onaka そんなVSCodeでJavaの開発ができます!
  • 4. Copyright 2021 Hiroyuki Onaka VSCodeによるJava開発に必要なもの • VSCode本体 • JDK • Java11以上が必要 • Coding Pack for Java • http://aka.ms/vscode-java-getting-start
  • 5. Copyright 2021 Hiroyuki Onaka デモ: VSCodeでJavaクラスの実行
  • 6. Copyright 2021 Hiroyuki Onaka Javaの開発環境としてのVSCodeってどうなの? • 動作が軽快 • プロジェクトやワークスペースを作成しないでソースコード単独で実行 できる点など、学習用途には向いている • 他のIDEのように、プロジェクトを作成しての開発も可能 • 検証用途のコード実行など(JShellはあるが)
  • 7. Copyright 2021 Hiroyuki Onaka 業務で使えますか? • IntelliJ IDEA/Eclipseのツートップに比べるとまだ発展途上 • 以前からは大分改善されました • Javaの開発環境としては言語サポート以外にもアプリケーショ ンサーバー、ビルドツールなどの統合のレベル向上が必要 • 機能追加・改善は積極的に行われています
  • 8. Copyright 2021 Hiroyuki Onaka ではなぜJava in Visual Studio Codeを取り上げるのか? • VSCodeの強みとの組み合わせにより、新しい開発者体験を Java開発者に提供できる可能性がある。 • それがRemote Development
  • 9. Copyright 2021 Hiroyuki Onaka VSCodeのRemote Development VSCodeからリモートの環境に接続して、シームレスな開発を実現 • SSH • コンテナー(Docker) • WSL(Windows Subsystem for Linux) • GitHub Codespaces
  • 10. Copyright 2021 Hiroyuki Onaka Remote Developmentのユースケース • リモートの開発環境に接続しての開発 • 開発環境のセットアップの省略化
  • 11. Copyright 2021 Hiroyuki Onaka 開発環境のリモート化の背景 • 開発用途のデスクトップ環境に必要なリソースは増加の一途 • 画面共有など、オンラインでのコラボレーションの活発化 • Docker / WSL2 などの仮想化前提のソリューションの普及 • デスクトップ環境に必要なメモリーは16GB?32GB? • サイズの大きいデータセットを扱うことの一般化 • 例として、Elasticsearchのカスタム辞書を用いた開発など
  • 12. Copyright 2021 Hiroyuki Onaka SSHによるリモート開発環境 • Azureなどパブリッククラウドの使用により、柔軟にクラウド上 の資源を開発環境として使用することが可能 • 「アプリケーションを動かす環境がLinuxだったら開発環境も Linuxにしません?」という昔からあったニーズの実現
  • 13. Copyright 2021 Hiroyuki Onaka VSCodeによるリモート開発に必要なもの • Remote Development extension pack • https://aka.ms/vscode-remote • OpenSSHクライアント • Windows10/11はOS標準で導入可能 • リモート接続先のプラットフォーム • サーバー(Linux/macOS/Windows) • WSL • Dockerコンテナー
  • 14. Copyright 2021 Hiroyuki Onaka リモート開発における開発環境へのニーズ • クラウド上の開発環境を使用する場合、必要に応じて開発環境 を構築するようにしたい • Git(GitHub)からコードをクローンした状態で開発環境のセッ トアップができるようにしたい
  • 15. Copyright 2021 Hiroyuki Onaka Remote Containerによる開発環境のコード化 • VSCodeのRemote ContainerとDocker Desktopの組 み合わせによる開発環境の構築のコード化 • コード化の対象 • VSCodeの構成(拡張機能の構成およびVSCodeの設定) • devcontainer(開発コンテナ) の構成 • Live Shareによる、共同編集のサポート
  • 16. Copyright 2021 Hiroyuki Onaka VSCode+Docker Desktopの問題点 • Docker Desktopを動かすデスクトップ環境に高いスペックが必要 • ディスク入出力のパフォーマンスの低下によるビルド時間やアプリ ケーションの起動時間の悪化 • Production Codeを組み込んだ時に顕在化しがち • Windows10 HomeだとWSL2を有効にしないとDocker Desktopがインストールできない
  • 17. Copyright 2021 Hiroyuki Onaka Docker Desktopの問題に対するワークアラウンド • sshでリモートのDockerコンテナーに接続 • 環境変数DOCKER_HOSTを使用する等 • 設定が複雑という問題 • VSCode 1.63でリリースのRemote Docker on SSHでこ の問題が解決
  • 18. Copyright 2021 Hiroyuki Onaka Remote Docker on SSH
  • 19. Copyright 2021 Hiroyuki Onaka 開発基盤の構築・運用に関わる人の永遠のテーマ • 「開発環境を全てWebブラウザー上で完結するようにすれば、 開発環境の構築に要するコストが必要なくなるのでは?」
  • 20. Copyright 2021 Hiroyuki Onaka そこでGitHub Codespaces • GitHubがホスティングする、コンテナーによるWebブラウザー上で 完結する開発環境 • Remote ContainerとCodespacesの環境は互換性有 • GitHub EnterpriseユーザーへはGA • Team/FreeプランユーザーにはWaitlistに対して順次提供 • 注意:github.comから起動できるvscode.devは軽量版
  • 21. Copyright 2021 Hiroyuki Onaka デモ:GitHub Codespaces+Live Shareの組み合わせによるオン ラインコラボレーション • ブラウザーからGitHub Codespacesの環境(開発コンテナ) を起動、Spring Bootのアプリケーションを起動 • Live Shareで共有したVSCodeの環境でソースコードを編集 • Codespacesの環境で結果を確認
  • 22. Copyright 2021 Hiroyuki Onaka まとめ • Javaの開発環境としてのVSCodeはRemote Developmentとの組み合わせで実力を発揮します。 • Remote Containerとの組み合わせで、開発環境のセットアッ プを省略化できます。 • Codespacesの相互運用でさらにひろがるRemote Developmentの可能性
  • 23. Copyright 2021 Hiroyuki Onaka ありがとうございました! • 大中浩行 (Hiroyuki Onaka) • @setoazusa • Microsoft MVP for Developer Technologies • VS Code Meetupオーガナイザー