ローカルデバッグガイド — Java
注釈:本資料はAI技術を用いて翻訳されています。
このガイドでは、Java で記述された Extend Service Extension アプリのデバッグに特有の内容を説明します。環境セットアップ、VS Code のデバッグワークフロー、ログの読み方、一般的な問題など、デバッグの一般的な概念については以下を参照してください。
- Extend ローカルデバッグガイド — すべての Extend アプリタイプに共通する概念
- Java 言語セットアップガイド — Java の前提条件、JVM リモートデバッグ、jq、および Java 特有のトラブルシューティング
プロジェクト構造
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.proto | gRPC API を定義します — エンドポイント、リクエスト/レスポンスの形式、必要な権限。 |
ポート番号:
| ポート | 用途 |
|---|---|
6565 | gRPC サーバー(内部 — gRPC-Gateway が使用) |
8000 | gRPC-Gateway HTTP/REST — ブラウザ、Postman、curl から呼び出します |
8080 | Prometheus メトリクスエンドポイント(/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.java — interceptCall メソッド |
| データが正しく保存・読み込みされない | サービスで使用しているリポジトリまたはストレージクラス |
| サービスがまったく起動しない | Application.java — main メソッドと 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 アシスタンスによるデバッグを参照してください。