モバイル開発におけるログ記録と監視:本質、ツール、設定方法

著者: IT Sectr 公開日: 2026-05-27 読了時間: 8 分

ログ記録と監視はモバイルアプリケーション安定性の二本柱です。Gartner(2025)によると、APMソリューション市場は2027年までに80億ドルに達します。適切なログ記録により、バグの発見だけでなく、ユーザーに影響を与える前に問題を予測することができます。

重要ポイント

  • iOSの主要ツールはos_log(組み込みシステムログ)とCocoaLumberjack(ローテーションとフォーマットに対応した柔軟なライブラリ)です。iOSでの監視により、リアルタイムでパフォーマンスを制御できます。
  • Androidの標準はTimber(Logcatのラッパー)とシステムLogです。Timberは自動的にクラスタグを挿入し、ログレベルを管理します。
  • 構造化ロギング — JSONでのログ記録。ELK、Grafana、Datadogを通じて自動的にログを分析できます。本番環境と自動監視に推奨されます。
  • APM(Application Performance Monitoring) — モバイルアプリケーション監視のためのツールクラス:New Relic、Datadog、Firebase Performance。
  • ログローテーションとリモートロギングは本番環境に必須です。ログはデバイスのメモリを満たさず、開発者がリモートでアクセスできる必要があります。

iOSでのログ記録と監視:os_logとCocoaLumberjack

iOSでのモバイルアプリケーションログ記録は、Appleの組み込みシステムであるos_log(iOS 10以降で利用可能)に基づいています。os_logは単一のシステムログ(オンデバイスまたはConsole.app経由)にログを書き込み、カテゴリ、レベル、プライバシータグをサポートします。Console.appとxcrunを介したiOSでのログ記録と監視の組み合わせにより、リアルタイムでエラーとパフォーマンスを追跡できます。

iOSのログレベル

os_logにはDefault、Info、Debug、Error、Faultのレベルがあります。本番環境ではErrorとFaultを維持し、DebugとInfoは無効にします。適切なレベルの選択は、iOSでのモバイルアプリケーション監視戦略の一部です。プライバシー:保護されていないデータには%{public}@、個人データには%{private}@を使用します。

CocoaLumberjack

CocoaLumberjackはiOSログ記録のための人気ライブラリです。os_logとは異なり、カスタムフォーマット、非同期書き込み、ログローテーションをサポートします。DDLog、DDTTYLogger(コンソール)、DDFileLogger(ローテーション付きファイル)。リモート監視のために、CocoaLumberjackをos_logと組み合わせて使用できます — リモートロギング用にファイルに、Console.app用にos_logに書き込みます。

Androidでのログ記録と監視:Timberとログレベル

Androidでのモバイルアプリケーションログ記録には、Jake WhartonによるライブラリTimberが使用され、プラットフォームの標準となっています。TimberはAndroid Log(Logcat)のラッパーで、自動的にクラスタグを追加し、Treeを設定します。TimberはAndroidモバイルアプリケーション監視システムの一部です:デバッグ用のDebugTree、データ送信用のCrashlyticsTree。

Timberの詳細

TimberはTreeを使用します — ログをどう処理するかを決定するコンポーネントです。デバッグビルドではDebugTree(Logcatへの出力)、リリースではCrashlyticsTree(クラッシュ送信)。Timber.wtf()は致命的なエラーをログ記録します。Timber.tag("CustomTag")でタグを上書きします。効果的な監視のために、TimberはAPMツールと組み合わせて使用されます。

Androidのログレベル

Android LogにはVERBOSE、DEBUG、INFO、WARN、ERROR、ASSERTのレベルがあります。ProGuard/R8はリリースでLog.dとLog.vを削除します — TimberはPlantを介したログ記録を可能にします。レベルの選択はモバイルアプリケーション監視の品質に影響します — 本番環境ではWARNとERRORを維持します。

ツール プラットフォーム フォーマット ローテーション リモート 複雑さ
os_logiOS構造化システムConsole.app
CocoaLumberjackiOSテキスト/JSONDDFileLoggerあり(カスタム)
TimberAndroidテキストLogcat/カスタムTree
SentryiOS/AndroidJSONサーバーあり
LogcatAndroidテキストバッファADB

ログツールを選ぶ際は、リモートロギングの必要性、ログの変更頻度、誰が分析するかを考慮してください。スタートアップにはos_logまたはTimberで十分です。エンタープライズには — サーバー送信付きのCocoaLumberjack。IT Sectrでは、AndroidにTimber + Crashlytics、iOSにos_log + CocoaLumberjackの組み合わせを使用しています。

構造化ロギング

構造化ロギング — プレーンテキストではなくJSON形式でのログ記録。例:「User login failed」の代わりに{"event": "login_failed", "user_id": 123, "reason": "invalid_password"}と記録します。これは自動監視の基盤です — ELKスタックとGrafanaがそのようなデータをフィルタリング、集約、分析します。

構造化ロギングの利点

フィールドによるフィルタリング:過去1時間のevent=crashの全ログを検索。集約:アプリケーションバージョン別のエラー数のグラフを作成。ELK(Elasticsearch、Logstash、Kibana)またはGrafanaとの統合。最初のリリースでは構造化ロギングは必須ではありませんが、DAUが10,000を超えると重要になります。

リモートロギングとログローテーション

リモートロギング — 集中監視のためにデバイスからサーバーにログを送信。カスタムTree(Android)またはHTTPリクエストで実装。ErrorとWarningのみ送信 — ユーザーのトラフィックを浪費しないでください。ログローテーション:DDFileLogger(iOS)は1 MBまたは1日ごと。AndroidではLogcatバッファが制限されています。

APMとモバイルアプリケーション監視:Sentry、New Relic、Datadog

Application Performance Monitoring(APM) — モバイルアプリケーション監視のためのツールクラス。APMは起動時間、ネットワークリクエスト、FPS、メモリ使用量、クラッシュ頻度を測定します。主要プレイヤー:Sentry(Performance)、New Relic Mobile、Datadog Mobile。

Sentry Performance

Sentry — クラッシュレポートだけでなく、パフォーマンス監視も提供します。Sentry Performanceは分散トレースを作成し、ボタン押下からサーバー応答までの各段階の所要時間を表示します。iOS、Android、Flutter、React Nativeをサポート。月5,000イベントまで無料。

New RelicとDatadog

New Relic Mobileはセッション数、アプリ内時間、クラッシュ頻度、ネットワークリクエストのメトリクスを提供します。Datadog Mobileはリアルタイムダッシュボードとアラートを備えたより現代的でツールです。どちらも有料ですが、無料ティアがあります。IT SectrはFirebase Performanceから始め、DAUが100,000を超えたら有料APMに移行することを推奨します。

Firebase Performance

Firebase Performance — Googleによる無料のモバイルアプリケーション監視ツール。アプリの起動時間、HTTPリクエスト(URL、メソッド、応答コード)、FPSのメトリクスを自動的に収集します。カスタムトレースにはTrace APIを使用します。統合:build.gradle(Android)またはPodfile(iOS)にSDKを追加します。

Traceとメトリクス

Trace — 測定する開始と終了のある時間セグメント。例:trace = FirebasePerformance.getInstance().newTrace("checkout_process")。メトリクス — 数値インジケータ(応答サイズ、アイテム数)。Firebase Performanceはサーバーインフラを必要としません — すべてのデータはFirebase SDKを通じて送信されます。モバイルアプリケーションを監視する際、Trace APIはパフォーマンス分析のためのコンテキストを提供します。

よくある質問

どのようなログレベルがあり、いつ使用すべきですか?

標準レベル:ERROR(重大なエラー)、WARN(潜在的な問題)、INFO(主要なイベント)、DEBUG(デバッグ)、VERBOSE(詳細なトレース)。本番環境ではERROR、WARN、INFOを維持し、残りは無効にします。

AndroidでTimberとLogcatの違いは何ですか?

TimberはAndroidでのモバイルアプリケーションログ記録のためのJake WhartonによるLogcatのラッパーライブラリです。自動的にクラスタグを挿入し、Treeを設定し、1行のコードで本番環境のログを無効にします。

APMとは何で、なぜモバイルアプリに必要なのですか?

APM(Application Performance Monitoring) — パフォーマンスを追跡するためのツールクラス:起動時間、ネットワークリクエスト、メモリ使用量、クラッシュ頻度。モバイルアプリケーションを監視する際、New Relic、Datadog、Firebase Performanceはユーザーからの苦情が出る前にボトルネックを見つけるのに役立ちます。

スタートアップは有料APMソリューションを使用すべきですか?

スタートアップにはFirebase Performanceで十分です — 無料のモバイルアプリケーション監視ツールです。New RelicとDatadogは詳細なトレースとカスタムダッシュボードが必要な場合に接続します。IT SectrはFirebaseから始め、DAUが100,000を超えたら有料ソリューションに移行することを推奨します。

構造化ロギングとは何で、プレーンテキストより優れている点は?

構造化ロギングはプレーンテキストの代わりにJSONまたはキーと値の形式でのログフォーマットです。フィールドによるログのフィルタリング、グラフの作成、ELKやGrafanaでの自動分析が可能です。構造化ログがなければ、数千のレコードからパターンを見つけるのは困難です。

まとめ

  • os_log — iOSの基本的なログ記録と監視ツール。CocoaLumberjackは柔軟性、ローテーション、リモートロギングを追加します。
  • Timber — Androidでのモバイルアプリケーションログ記録の標準。デバッグ用にDebugTree、リリース用にCrashlyticsTree。
  • 構造化ロギング(JSON)は自動ログ分析に必要です。ELK、Grafana、Datadogと統合します。
  • APM — Sentry Performance、New Relic、Datadog。Firebase Performance — スタートアップ向けの無料モバイルアプリケーション監視ツール。
  • ログローテーションはデバイスのメモリオーバーフローを防ぎます。DDFileLogger(iOS)を設定するか、Logcatバッファ(Android)を使用します。
  • リモートロギング — ErrorとWarningのログのみ送信。すべてのログはユーザーのトラフィックを消費します。
  • Trace APIとbreadcrumbs(Sentry)はモバイルアプリケーション監視のコンテキストを提供し、ログをインシデントのストーリーに変換します。

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談