フロントエンドの開発をしたかったので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: 接続先データベースのURLDEV_DB_USERNAME: データベースのユーザーIDDEV_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:runやmvn test)を実行する際、一時的にセットする環境変数を定義
- 意味: VS CodeのMaven拡張機能を使ってコマンド(例: