Android application development 第27章:Logcatの読み方とトラブルシューティング

🔍 Logcatとは?

Logcat(ログキャット) は、Androidアプリの動作中に発生するログ(メッセージ)をリアルタイムで表示するツールです。Javaで言えば System.out.println() をもっと強力にしたもの、というイメージです。

Android Studioでは、「Logcat」タブからログを確認できます。


📋 Logcatの基本構成

Logcatの1行のログは、ざっくり次のような情報を含んでいます:

2025-05-14 14:22:35.123 12345-12345/com.example.app D/MainActivity: ボタンが押されました
部分内容
2025-05-14 14:22:35.123ログのタイムスタンプ
12345-12345プロセスIDとスレッドID
com.example.appアプリのパッケージ名
Dログレベル(後述)
MainActivityログ出力元のタグ
ボタンが押されました実際のメッセージ

🧭 ログレベルの意味

ログには優先度(ログレベル)があり、次のように分類されます:

レベル説明用途の例
V (Verbose)一番詳細、基本全出力デバッグ中の情報すべて
D (Debug)デバッグ用情報処理の流れ、変数の確認など
I (Info)状態変化などの情報起動成功、画面遷移通知など
W (Warn)警告だが致命的ではない非推奨API使用、設定ミスなど
E (Error)エラー発生例外、クラッシュなど
A (Assert)通常は使用しない重大な失敗検出用(開発中)

🛠️ Log出力の書き方(Java)

以下のように、Log クラスを使って出力します:

Log.d("MainActivity", "ボタンが押されました");
Log.e("LoginActivity", "ログイン失敗", e); // 例外付き
メソッドログレベル
Log.v()Verbose
Log.d()Debug
Log.i()Info
Log.w()Warn
Log.e()Error

タグ(第一引数) は通常、クラス名や画面名を入れます。ログ検索時に便利です。


🔎 トラブルシューティングの進め方

① クラッシュ時の確認方法

  1. Logcatで E(Error)レベルをフィルタリング
  2. ExceptionCaused by: を探す
  3. スタックトレースを上から順に確認
  4. 自分のアプリのクラス名を含む行を探す
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.app, PID: 12345
java.lang.NullPointerException: Attempt to invoke method on null object
    at com.example.app.MainActivity.onCreate(MainActivity.java:42)

ここで注目するのは → MainActivity.java:42
→ 42行目で null を参照している可能性があります。


② よくあるトラブル例とログの見方

トラブル典型ログ例原因と対策
NullPointerExceptionAttempt to invoke...オブジェクトが初期化されていない
ActivityNotFoundExceptionUnable to find explicit activity classAndroidManifest.xml に定義漏れ
NetworkOnMainThreadExceptionandroid.os.NetworkOnMainThreadExceptionネットワーク通信をUIスレッドで行っている
ClassCastExceptionjava.lang.ClassCastExceptionfindViewById() のキャストミス
Resources$NotFoundExceptionresource ID not found存在しないリソースを参照している

🎛️ Logcatのフィルタ活用

Android StudioのLogcatでは、次のようなフィルタ機能があります:

  • ログレベルの絞り込み(Debug、Errorなど)
  • 特定タグのみ表示
  • 特定キーワードで検索(例: “Exception”)
  • 現在実行中のアプリのログのみ表示

👉 まずは "Show only selected application" をオンにして、自分のアプリのログに絞るのがおすすめです。


🧹 デバッグが落ち着いたら…

デバッグ時は Log.d() を多用しますが、本番ビルドではこれらを出力しないようにしましょう

Gradleのビルドタイプや BuildConfig.DEBUG を使って制御できます:

if (BuildConfig.DEBUG) {
    Log.d("DebugTag", "ここは開発中だけ出す");
}

✅ まとめ

ポイント
Logcat は Android の標準ログ表示ツール
ログレベルは V, D, I, W, E が基本
Log.d() などで出力、タグ名で整理する
クラッシュ時は E/AndroidRuntime を探す
Logcat フィルタで効率的にトラブル対応

mh

Related Posts

Android application development 第29章:キーストアと署名

Android application development 第28章:ビルドタイプとプロダクトフレーバー

You Missed

Kubernetes Learning 第25章:Replica数と冗長性の設計 〜止まらないシステムのために〜

  • 投稿者 mh
  • 5月 29, 2025
  • 1 views

Android application development 第29章:キーストアと署名

  • 投稿者 mh
  • 5月 29, 2025
  • 1 views

現場で使えるChrome DevTools実践ガイド 第5章:Consoleパネルの活用

  • 投稿者 mh
  • 5月 28, 2025
  • 5 views

現場で使えるChrome DevTools実践ガイド 第4章:StylesパネルとComputedパネル

  • 投稿者 mh
  • 5月 28, 2025
  • 10 views

Kubernetes Learning 第24章:Liveness / Readiness Probe 〜Podの健康チェック〜

  • 投稿者 mh
  • 5月 28, 2025
  • 10 views

Android application development 第28章:ビルドタイプとプロダクトフレーバー

  • 投稿者 mh
  • 5月 28, 2025
  • 10 views