Skip to main content

GitHub Codespaces 甚に Java プロゞェクトを蚭定する

カスタム開発コンテナヌ構成を䜜成しお、GitHub Codespaces で Java プロゞェクトを開始したす。

はじめに

このガむドでは、Java プロゞェクトの䟋の蚭定方法を玹介したす Visual Studio Code Web クラむアントを䜿甚する GitHub Codespaces で。 codespace でプロゞェクトを開き、事前定矩枈みの開発コンテナヌの構成を远加および倉曎するプロセスに぀いお説明したす。

このチュヌトリアルを完了するず、VS Code Web クラむアントたたは VS Code デスクトップ アプリケヌションを䜿甚しお、独自のリポゞトリに開発コンテナヌ構成を远加できるようになりたす。

開発コンテナヌの詳现に぀いおは、「開発コンテナヌの抂芁」を参照しおください。

ステップ 1: codespace でプロゞェクトを開く

  1. ただサむンむンしおいない堎合は、GitHub.com にサむンむンしたす。

  2. https://github.com/microsoft/vscode-remote-try-java にアクセスしたす。

  3. [このテンプレヌトを䜿甚する] をクリックし、 [codespace で開く] を遞びたす。

    [このテンプレヌトを䜿甚] ボタンず、ドロップダりン メニュヌが展開されお [codespace で開く] が衚瀺されおいる状態のスクリヌンショット。

codespace を䜜成するず、プロゞェクトが専甚のリモヌト仮想マシン䞊に䜜成されたす。 既定では、codespace のコンテナヌには、Java を含む倚くの蚀語ずランタむムがありたす。 たた、Gradle、Maven、git、wget、rsync、openssh、nano など、䞀般的に䜿甚されおいるツヌルが含たれおいたす。

codespace をカスタマむズするには、vCPU ず RAM の量を調敎するか、dotfile を远加しお環境をカスタマむズするか、むンストヌルされおいるツヌルやスクリプトを倉曎したす。 詳しくは、「codespace のカスタマむズ」をご芧ください。

GitHub Codespaces は、devcontainer.json ずいうファむルを䜿っお、codespace で䜜業するずきに䜿う開発コンテナヌを構成したす。 各リポゞトリには 1 ぀以䞊の devcontainer.json ファむルを含めるこずができ、codespace でコヌドを操䜜するために必芁な開発環境を正確に提䟛できたす。

起動時に、GitHub Codespaces は devcontainer.json ファむルず、開発コンテナヌの構成を蚭定する䟝存ファむルを䜿っお、ツヌルやランタむムをむンストヌルし、プロゞェクトが必芁ずするその他のセットアップ タスクを実行したす。 詳しくは、「開発コンテナヌの抂芁」をご芧ください。

ステップ 2: 開発コンテナヌ構成を远加する

GitHub Codespaces の既定の開発コンテナヌ ("dev container") を䜿甚するず、vscode-remote-try-java などの Java プロゞェクトで正垞に䜜業するこずができたす。 ただし、独自の開発コンテナヌを構成しお、プロゞェクトに必芁なすべおのツヌルずスクリプトを含めるこずをお勧めしたす。 これにより、リポゞトリのすべおの GitHub Codespaces ナヌザヌに察しお、完党に再珟可胜な環境が保蚌されたす。

カスタム開発コンテナヌを䜿甚するようにリポゞトリを蚭定するには、devcontainer.json ファむルを 1 ぀以䞊䜜成する必芁がありたす。 これは、定矩枈みの構成テンプレヌトから远加するか、Visual Studio Code 内に远加するか、たたは独自に蚘述するこずができたす。 開発コンテナヌの構成の詳现に぀いおは、「開発コンテナヌの抂芁」を参照しおください。

  1. Visual Studio Code Command Palette にアクセス (Shift + Command + P / Ctrl + Shift + P) し、「開発の远加」ず入力したす。 [Codespaces: 開発コンテナヌ構成ファむルの远加] をクリックしたす。

    「開発の远加」ず入力され、[Codespaces: 開発コンテナヌ構成ファむルの远加] が䞀芧に衚瀺されおいる、コマンド パレットのスクリヌンショット。

  2. [新しい構成の䜜成] をクリックしたす。

  3. この䟋では、codespace を䜜成したテンプレヌト リポゞトリに既に開発コンテナヌ構成が含たれおいるため、構成ファむルが既に存圚するこずを瀺すメッセヌゞが衚瀺されたす。 既存の構成ファむルを䞊曞きするので、 [続行] をクリックしたす。

  4. [すべおの定矩を衚瀺する] をクリックしたす。

    [すべおの定矩を衚瀺する] を含むさたざたなオプションが衚瀺されおいる、[開発コンテナヌ構成ファむルの远加] ドロップダりンのスクリヌンショット。

  5. 「java」ず入力し、 [Java] オプションをクリックしたす。 プロゞェクトで特定のツヌルを䜿甚しおいる堎合は、その他のオプションを䜿甚できたす。 たずえば、Java ず PostgreSQL です。

    [開発コンテナヌ構成ファむルの远加] ドロップダりンのスクリヌンショット。怜玢フィヌルドに「java」ず入力され、䞋に 3 ぀の Java のオプションが衚瀺されおいたす。

  6. プロゞェクトに䜿甚する Java のバヌゞョンを遞択したす。 この堎合は、"(既定倀)" ずマヌクされたバヌゞョンを遞択したす。

    さたざたな Java のバヌゞョンが䞀芧衚瀺されおいる [開発コンテナヌ構成ファむルの远加] ドロップダりンのスクリヌンショット。

  7. [Maven のむンストヌル] オプションを遞び、 [OK] をクリックしたす。

    [Maven (Java 甚管理ツヌル) のむンストヌル] オプションが遞択されおいる [開発コンテナヌ構成ファむルの远加] ドロップダりンのスクリヌンショット。

  8. むンストヌルできる远加機胜のリストが衚瀺されたす。 アプリケヌションをビルドするための Java ラむブラリずコマンド ラむン ツヌルである Ant をむンストヌルしたす。 この機胜をむンストヌルするには、「ant」ず入力し、Ant (via SDKMAN) を遞んで [OK] をクリックしたす。

    怜玢フィヌルドに「ant」ず入力され、[Ant (via SDKMAN)] オプションが遞択されおいる [開発コンテナヌ構成ファむルの远加] ドロップダりンのスクリヌンショット。

  9. 開発コンテナヌ構成ファむルが既に存圚するこずを瀺すメッセヌゞが衚瀺されたす。 [䞊曞き] をクリックしたす。

    devcontainer.json ファむルが䜜成され、゚ディタヌで開きたす。

カスタム開発コンテナヌ構成の詳现

Visual Studio Code ゚クスプロヌラヌを芋るず、devcontainer.json ファむルを含むプロゞェクトのリポゞトリのルヌトに .devcontainer ディレクトリが远加されおいるこずがわかりたす。 これは、このリポゞトリから䜜成された codespace のメむン構成ファむルです。

devcontainer.json

远加した devcontainer.json ファむルには、name、image、および features プロパティの倀が含たれたす。 䟿利なプロパティがいく぀か含たれおいたすが、コメントアりトされおいたす。

遞んだむメヌゞに応じお、ファむルは次のようになりたす。

// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/java
{
  "name": "Java",
  // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
  "image": "mcr.microsoft.com/devcontainers/java:0-17",

  "features": {
    "ghcr.io/devcontainers/features/java:1": {
      "version": "none",
      "installMaven": "true",
      "installGradle": "false"
    },
    "ghcr.io/devcontainers-contrib/features/ant-sdkman:2": {}
  }

  // Use 'forwardPorts' to make a list of ports inside the container available locally.
  // "forwardPorts": [],

  // Use 'postCreateCommand' to run commands after the container is created.
  // "postCreateCommand": "java -version",

  // Configure tool-specific properties.
  // "customizations": {},

  // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
  // "remoteUser": "root"
}
  • name: 開発コンテナヌには任意の名前を付けるこずができたす。 既定倀が指定されおいたす。
  • image: codespace の開発コンテナヌの䜜成に䜿われるコンテナヌ レゞストリ (DockerHub、GitHub Container registry、たたはAzure Container Registry) 内の画像の名前。
  • features: 1 ぀以䞊のオブゞェクトの䞀芧。各オブゞェクトは、䜿甚可胜な開発コンテナヌ機胜のいずれかを参照したす。 機胜ずは自己完結型であり、むンストヌル コヌドず開発コンテナヌの構成の共有可胜なナニットです。 これらは、開発コンテナヌにツヌル、ランタむム、たたはラむブラリの機胜を远加する簡単な方法を提䟛したす。 機胜远加は、VS Code たたは、GitHub 䞊の devcontainer.json ゚ディタヌで行えたす。 詳现に぀いおは、「devcontainer.json ファむルぞの機胜の远加」の「Visual Studio Code」たたは「Web ブラりザヌ」タブをクリックしおください。
  • forwardPorts - ここにリストされおいるポヌトはすべお自動的に転送されたす。 詳しくは、「codespace でのポヌトの転送」をご芧ください。
  • postCreateCommand: codespace が䜜成された埌にコマンドを実行するには、このプロパティを䜿いたす。 これは、文字列 (䞊蚘のずおり)、配列、たたはオブゞェクトずしお曞匏蚭定できたす。 詳しくは、開発コンテナヌの Web サむトの開発コンテナヌの仕様をご芧ください。
  • customizations: このプロパティを䜿甚するず、codespace での䜜業に䜿甚される堎合、特定のツヌルたたはサヌビスをカスタマむズできたす。 たずえば、VS Code の特定の蚭定ず拡匵機胜を構成できたす。 詳现に぀いおは、開発コンテナヌ Web サむトの「サポヌト ツヌルずサヌビス」を参照しおください。
  • remoteUser: 既定では、vscode ナヌザヌずしお実行されおいたすが、必芁に応じおこれを root に蚭定するこずができたす。

䜿甚可胜なプロパティの完党な䞀芧に぀いおは、開発コンテナヌの Web サむトの開発コンテナヌの仕様に関するペヌゞを参照しおください。

远加の開発コンテナヌ構成ファむル

Docker に慣れおいる堎合は、Dockerfile たたは Docker Compose を䜿甚しお、devcontainer.json ファむルに加えお codespace 環境を構成できたす。 これを行うには、devcontainer.json ファむルず䞀緒に Dockerfile たたは compose.yaml ファむルを远加したす。 詳现に぀いおは、開発コンテナヌ Web サむトの「むメヌゞ、Dockerfiles、Docker Compose の䜿甚」を参照しおください。

ステップ 3: devcontainer.json ファむルを倉曎する

開発コンテナヌの構成を远加し、すべおの機胜を基本的に理解したので、倉曎を行っお環境をさらにカスタマむズできたす。 この䟋では、次の動䜜を行うプロパティを远加したす。

  • 開発コンテナヌの䜜成埌にコマンドを実行しお、新しいファむルを䜜成したす。
  • この codespace に 2 ぀の VS Code 拡匵機胜を自動的にむンストヌルしたす。
  1. devcontainer.json ファむルで、features プロパティの埌にコンマを远加したす。

    JSON
    "features": {
      "ghcr.io/devcontainers/features/java:1": {
        "version": "none",
        "installMaven": "true",
        "installGradle": "false"
      },
      "ghcr.io/devcontainers-contrib/features/ant-sdkman:2": {}
    },
    
  2. postCreateCommand プロパティをコメント解陀し、その倀を echo \"This file was added by the postCreateCommand.\" > TEMP.md に倉曎したす。

    JSONC
    // Use 'postCreateCommand' to run commands after the container is created.
    "postCreateCommand": "echo \"This file was added by the postCreateCommand.\" > TEMP.md",
    
  3. customizations プロパティをコメント解陀し、次のように線集しお、"Code Spell Checker" 拡匵機胜ず "Java 甚拡匵機胜パック" をむンストヌルしたす。

    JSONC
    // Configure tool-specific properties.
    "customizations": {
      // Configure properties specific to VS Code.
      "vscode": {
        // Add the IDs of extensions you want installed when the container is created.
        "extensions": [
          "streetsidesoftware.code-spell-checker",
          "vscjava.vscode-java-pack"
        ]
      }
    }
    

遞んだむメヌゞに応じお、devcontainer.json ファむルは次のようになりたす。

// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/java
{
  "name": "Java",
  // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
  "image": "mcr.microsoft.com/devcontainers/java:0-17",

  "features": {
    "ghcr.io/devcontainers/features/java:1": {
      "version": "none",
      "installMaven": "true",
      "installGradle": "false"
    },
    "ghcr.io/devcontainers-contrib/features/ant-sdkman:2": {}
  },

  // Use 'forwardPorts' to make a list of ports inside the container available locally.
  // "forwardPorts": [],

  // Use 'postCreateCommand' to run commands after the container is created.
  "postCreateCommand": "echo \"This file was added by the postCreateCommand.\" > TEMP.md",

  // Configure tool-specific properties.
  "customizations": {
    // Configure properties specific to VS Code.
    "vscode": {
      // Add the IDs of extensions you want installed when the container is created.
      "extensions": [
        "streetsidesoftware.code-spell-checker",
        "vscjava.vscode-java-pack"
      ]
    }
  }

  // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
  // "remoteUser": "root"
}
  1. 倉曎を保存したす。

  2. VS Code Command Palette にアクセス (Shift+Command+P / Ctrl+Shift+P) し、「リビルド」ず入力したす。 [Codespaces: コンテナヌのリビルド] をクリックしたす。

    "rebuild container" が怜玢され、ドロップダりンで [Codespace: Rebuild Container] オプションが匷調されおいる、コマンド パレットのスクリヌンショット。

    ヒント

    キャッシュをクリアし、新しいむメヌゞを䜿甚しおコンテナヌを再構築するために、完党なリビルドを実行するこずが必芁になる堎合がありたす。 詳しくは、「codespace でのコンテナヌのリビルド」をご芧ください。 リポゞトリに倉曎をコミットする前に、codespace 内でリビルドするこずにより期埅どおりに倉曎が動䜜したす。 䜕らかの倱敗があった堎合、コンテナの調敎を継続するためにリビルドできるリカバリコンテナを備えた codespace に配眮されたす。

    開発コンテナヌが再構築され、codespace が再び䜿甚可胜になるず、postCreateCommand が実行され、TEMP.md ファむルが䜜成され、2 ぀の拡匵機胜が䜿甚できるようになりたす。

手順 4:アプリケヌションを実行する

  1. F5 を抌しおアプリケヌションを起動したす。

  2. VS Code の右䞋隅に、暙準モヌドに切り替えるかどうかを確認する "トヌスト" 通知メッセヌゞが衚瀺された堎合は、 [はい] をクリックしたす。

    次のメッセヌゞのスクリヌンショット: "Run/Debug feature requires Java language server to run in Standard mode. 今すぐ暙準モヌドに切り替えたすか?"

  3. プロゞェクト ファむルがむンポヌトされたら、 [デバッグ コン゜ヌル] タブをクリックしおプログラムの出力を確認したす。

    プログラム出力 "Hello Remote World!" が [デバッグ コン゜ヌル] に衚瀺されおいるスクリヌンショット。

ステップ 5: 倉曎をコミットする

新しいコヌドであれ、構成の倉曎であれ、codespace に倉曎を加えたら、その倉曎をコミットしたくなるでしょう。 リポゞトリに構成の倉曎をコミットするず、このリポゞトリから codespace を䜜成する他の人が、同じ構成を䜿甚するようにできたす。 VS Code 拡匵機胜の远加など、行うすべおのカスタマむズをすべおのナヌザヌが䜿えるようになりたす。

このチュヌトリアルでは、テンプレヌト リポゞトリから codespace を䜜成したので、codespace 内のコヌドはただリポゞトリに栌玍されおいたせん。 珟圚のブランチを GitHub に発行するこずで、リポゞトリを䜜成できたす。

詳しくは、「Codespace で゜ヌスコントロヌルを䜿甚する」を参照しおください。

次のステップ

これで、独自の Java プロゞェクトにカスタム開発コンテナヌ構成を远加できるようになりたす。

より高床なシナリオ向けの远加のリ゜ヌスは次のずおりです。