EclipseからVS Codeに開発環境を移した

フロントエンドの開発をしたかったのでVS Codeに開発環境を移した。

殆ど問題なく作業を進めることが出来たが、一部戸惑った点を書き残しておく。

起動構成はJSON形式で書く

{
    "configurations": [
        {
            "type": "java",
            "name": "Spring Boot App",
            "request": "launch",
            "mainClass": "com.example.novel.NovelApplication",
            "projectName": "",
            "env": {
                "DEV_DB_URL": "jdbc:mariadb://url",
                "DEV_DB_USERNAME": "id",
                "DEV_DB_PASSWORD": "pass"
            }
        },
        {
            "type": "node",
            "name": "React App",
            "request": "launch",
            "runtimeExecutable": "npm",
            "runtimeArgs": [
                "run-script",
                "dev"
            ],
            "cwd": "${workspaceFolder}/frontend",
            "console": "integratedTerminal"
        }
    ]
}

1. ひとつ目の設定:Java (Spring Boot) アプリケーション用

Javaのプログラム(Spring Bootなど)を起動するための設定。

  • "type": "java"
    • Java拡張機能を使ってデバッグ
  • "name": "Spring Boot App"
    • VS Codeの「実行とデバッグ」画面のプルダウンメニューに表示される名前
  • "request": "launch"
    • 新しくプログラムを起動するという意味(対義語は "attach" で、既に動いているプロセスに接続する場合に使う)
  • "mainClass": "com.example.novel.NovelApplication"
    • プログラムのエントリーポイント(public static void main メソッドがあるクラス)を指定
  • "projectName": ""
    • 通常、VS Codeが認識しているJavaプロジェクト名(フォルダ名など)が入る
    • 空欄 "" のままだと、複数のプロジェクトがある場合に起動できない可能性がある。1つだけなら問題なし
  • "env"
    • プログラム実行時にOSの環境変数として渡す値を設定している
    • アプリケーション側(application.properties など)で、DB接続情報をハードコードせずに、ここから読み込むようにしている
      • DEV_DB_URL: 接続先データベースのURL
      • DEV_DB_USERNAME: データベースのユーザーID
      • DEV_DB_PASSWORD: データベースのパスワード

2. ふたつ目の設定:Node.js (NPM) アプリケーション用

フロントエンド開発(React, Vueなど)の開発サーバーを起動するための設定。

  • "type": "node"
    • Node.js用のデバッグ
  • "name": "React App"
    • VS Codeの「実行とデバッグ」画面のプルダウンメニューに表示される名前
  • "request": "launch"
    • 新しくプログラムを起動するという意味
  • "runtimeExecutable": "npm"
    • 直接 node コマンドを実行するのではなく、npm コマンドを実行する
  • "runtimeArgs": [ "run-script", "dev" ]
    • npm コマンドに渡す引数
    • つまり、ターミナルで npm run-script dev (または単に npm run dev)と打つのと同じコマンドが実行される
  • "cwd": "${workspaceFolder}/frontend"
    • Current Working Directory(作業ディレクトリ)の指定
    • ${workspaceFolder} はVS Codeで開いているルートフォルダを指す
  • "console": "integratedTerminal"
    • ログの出力先を「デバッグコンソール」ではなく、VS Codeの**「統合ターミナル」**にする

VS Codeの設定はJSON形式で書く

{
    "java.configuration.updateBuildConfiguration": "automatic",
    "java.compile.nullAnalysis.mode": "automatic",
    "maven.terminal.customEnv": [
        {
            "environmentVariable": "DEV_DB_URL",
            "value": "jdbc:mariadb://url"
        },
        {
            "environmentVariable": "DEV_DB_USERNAME",
            "value": "id"
        },
        {
            "environmentVariable": "DEV_DB_PASSWORD",
            "value": "pass"
        }
    ]
}

1. Javaのビルド・解析設定

VS CodeがJavaプロジェクトをどう扱うかという、エディタの挙動設定

  • "java.configuration.updateBuildConfiguration": "automatic"
    • 意味: pom.xml(や build.gradle)が書き換えられた際、自動的にプロジェクト構成を更新する
    • Eclipseで言うと: プロジェクトを右クリックして行う 「Maven > プロジェクトの更新 (Alt+F5)」を、保存のたびに全自動でやってくれる機能
    • メリット: 依存ライブラリを追加した際、いちいち手動更新しなくてもすぐにimportできるようになる
  • "java.compile.nullAnalysis.mode": "automatic"
    • 意味: Javaのコードに対するNull(ヌル)分析機能のモード
    • 動作: プロジェクト内にNull注釈(@Nullable@NonNull など)が含まれている場合、自動的にNullポインタ参照の警告を出してくれる
    • メリット: 「ここでNullになる可能性があります」という警告がエディタ上で出るようになり、NullPointerExceptionを未然に防ぎやすくなる

2. Maven実行時の環境変数設定

  • "maven.terminal.customEnv": [ ... ]
    • 意味: VS CodeのMaven拡張機能を使ってコマンド(例: mvn spring-boot:runmvn test)を実行する際、一時的にセットする環境変数を定義

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です