メインコンテンツまでスキップ

ローカルデバッグガイド — Java

Last updated on July 14, 2026

注釈:本資料はAI技術を用いて翻訳されています。

このガイドでは、Java で記述された Extend Service Extension アプリのデバッグに特有の内容を説明します。環境セットアップ、VS Code のデバッグワークフロー、ログの読み方、一般的な問題など、デバッグの一般的な概念については以下を参照してください。


プロジェクト構造

src/
└── main/
├── java/
│ └── com/accelbyte/extend/serviceextension/
│ ├── Application.java # エントリーポイント
│ ├── service/
│ │ └── MyService.java # ビジネスロジック
│ ├── interceptor/
│ │ └── AuthServerInterceptor.java # IAM トークンと権限の検証
│ └── ...
└── proto/
└── service.proto # gRPC API の定義
ファイル機能
Application.javaエントリーポイント — gRPC サーバー、gRPC-Gateway、メトリクス、認証を結び付けます。
service/MyService.javaビジネスロジック — gRPC サービスメソッドを実装します。
interceptor/AuthServerInterceptor.javaすべての受信リクエストの IAM トークンと権限を検証します。
proto/service.protogRPC API を定義します — エンドポイント、リクエスト/レスポンスの形式、必要な権限。

ポート番号:

ポート用途
6565gRPC サーバー(内部 — gRPC-Gateway が使用)
8000gRPC-Gateway HTTP/REST — ブラウザ、Postman、curl から呼び出します
8080Prometheus メトリクスエンドポイント(/metrics

サービスをローカルで実行する

ターミナルから

# .env ファイルからすべての変数をエクスポートします
export $(grep -v '^#' .env | xargs)

./gradlew bootRun

VS Code から

Terminal → Run Task → "Run: Service" を使用します。 このタスクは .vscode/tasks.json で定義されており、.env ファイルを自動的に読み込みます。

サービスが起動していることを確認する

以下のようなログが表示されるはずです。

{"time":"...","level":"INFO","msg":"app server started","service":"extend-app-service-extension"}
{"time":"...","level":"INFO","msg":"starting gRPC-Gateway HTTP server","port":8000}
{"time":"...","level":"INFO","msg":"serving prometheus metrics","port":8080,"endpoint":"/metrics"}

ブラウザで http://localhost:8000<BASE_PATH>/apidocs/ を開き、Swagger UI が稼働していることを確認します。


デバッガーの接続

VS Code(推奨)

このリポジトリには、.vscode/launch.json にすぐに使える起動設定が含まれています。

{
"name": "Debug: Service",
"type": "java",
"request": "launch",
"mainClass": "com.accelbyte.extend.serviceextension.Application",
"envFile": "${workspaceFolder}/.env",
"cwd": "${workspaceFolder}"
}

汎用ガイドのデバッガーの接続の手順に従い、ドロップダウンから "Debug: Service" を選択します。

その他の IDE — JVM リモートデバッグ

デフォルトでポート 5005 でリスンする JVM デバッグエージェントを使用してアプリを起動します。

export $(grep -v '^#' .env | xargs)
./gradlew bootRun --debug-jvm

次に IDE(IntelliJ IDEA、Eclipse)を開き、localhost:5005 を対象とする Remote JVM Debug 設定を作成します。


ブレークポイントの設置場所

調査したいことファイルと場所
呼び出されている特定の REST エンドポイントservice/MyService.java — 該当メソッドの先頭
認証/トークン検証の失敗interceptor/AuthServerInterceptor.javainterceptCall メソッド
データが正しく保存・読み込みされないサービスで使用しているリポジトリまたはストレージクラス
サービスがまったく起動しないApplication.javamain メソッドと Bean 初期化処理

条件付きブレークポイントの構文については、 Java 言語ガイドを参照してください。


ログの読み方

jq によるログフィルタリングについては、 Java 言語ガイドを参照してください。


エンドポイントを手動でテストする

curl および grpcurl の使い方については、汎用ガイドの grpcurl でのテストを参照してください。

Swagger UI でのテスト(SE 特有)については、SE メインガイドの エンドポイントを手動でテストするを参照してください。


Java 特有のトラブルシューティング

Proto の変更が反映されない

症状: src/main/proto/service.proto を編集したが、実行時に何も変わらない。

原因: 生成された gRPC スタブが再ビルドされていません。

対処法: protobuf の Gradle プラグインを実行するために、クリーンビルドを実行します。

./gradlew clean build

Gradle デーモンの問題

サービスの動作が実行ごとに一貫しない場合は、Gradle デーモンを停止して再試行してください。

./gradlew --stop
./gradlew bootRun

リモートデバッグ用の JVM ポート競合

Java 言語ガイドのリモートデバッグ用の JVM ポート競合を参照してください。

ポート競合の確認(サービスポート)

Java 言語ガイドのポート競合の確認を参照してください。


AI アシスタンス

このアプリテンプレートには、 .claude/skills/debugging-guide/SKILL.md に Claude エージェントスキルが同梱されています。

AI プロンプトのヒントと MCP サーバーの詳細については、汎用ガイドの AI アシスタンスによるデバッグを参照してください。


参考資料