ログ記録と監視はモバイルアプリケーション安定性の二本柱です。Gartner(2025)によると、APMソリューション市場は2027年までに80億ドルに達します。適切なログ記録により、バグの発見だけでなく、ユーザーに影響を与える前に問題を予測することができます。
重要ポイント
iOSでのモバイルアプリケーションログ記録は、Appleの組み込みシステムであるos_log(iOS 10以降で利用可能)に基づいています。os_logは単一のシステムログ(オンデバイスまたはConsole.app経由)にログを書き込み、カテゴリ、レベル、プライバシータグをサポートします。Console.appとxcrunを介したiOSでのログ記録と監視の組み合わせにより、リアルタイムでエラーとパフォーマンスを追跡できます。
os_logにはDefault、Info、Debug、Error、Faultのレベルがあります。本番環境ではErrorとFaultを維持し、DebugとInfoは無効にします。適切なレベルの選択は、iOSでのモバイルアプリケーション監視戦略の一部です。プライバシー:保護されていないデータには%{public}@、個人データには%{private}@を使用します。
CocoaLumberjackはiOSログ記録のための人気ライブラリです。os_logとは異なり、カスタムフォーマット、非同期書き込み、ログローテーションをサポートします。DDLog、DDTTYLogger(コンソール)、DDFileLogger(ローテーション付きファイル)。リモート監視のために、CocoaLumberjackをos_logと組み合わせて使用できます — リモートロギング用にファイルに、Console.app用にos_logに書き込みます。
Androidでのモバイルアプリケーションログ記録には、Jake WhartonによるライブラリTimberが使用され、プラットフォームの標準となっています。TimberはAndroid Log(Logcat)のラッパーで、自動的にクラスタグを追加し、Treeを設定します。TimberはAndroidモバイルアプリケーション監視システムの一部です:デバッグ用のDebugTree、データ送信用のCrashlyticsTree。
TimberはTreeを使用します — ログをどう処理するかを決定するコンポーネントです。デバッグビルドではDebugTree(Logcatへの出力)、リリースではCrashlyticsTree(クラッシュ送信)。Timber.wtf()は致命的なエラーをログ記録します。Timber.tag("CustomTag")でタグを上書きします。効果的な監視のために、TimberはAPMツールと組み合わせて使用されます。
Android LogにはVERBOSE、DEBUG、INFO、WARN、ERROR、ASSERTのレベルがあります。ProGuard/R8はリリースでLog.dとLog.vを削除します — TimberはPlantを介したログ記録を可能にします。レベルの選択はモバイルアプリケーション監視の品質に影響します — 本番環境ではWARNとERRORを維持します。
| ツール | プラットフォーム | フォーマット | ローテーション | リモート | 複雑さ |
|---|---|---|---|---|---|
| os_log | iOS | 構造化 | システム | Console.app | 低 |
| CocoaLumberjack | iOS | テキスト/JSON | DDFileLogger | あり(カスタム) | 中 |
| Timber | Android | テキスト | Logcat/カスタム | Tree | 低 |
| Sentry | iOS/Android | JSON | サーバー | あり | 中 |
| Logcat | Android | テキスト | バッファ | 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バッファが制限されています。
Application Performance Monitoring(APM) — モバイルアプリケーション監視のためのツールクラス。APMは起動時間、ネットワークリクエスト、FPS、メモリ使用量、クラッシュ頻度を測定します。主要プレイヤー:Sentry(Performance)、New Relic Mobile、Datadog Mobile。
Sentry — クラッシュレポートだけでなく、パフォーマンス監視も提供します。Sentry Performanceは分散トレースを作成し、ボタン押下からサーバー応答までの各段階の所要時間を表示します。iOS、Android、Flutter、React Nativeをサポート。月5,000イベントまで無料。
New Relic Mobileはセッション数、アプリ内時間、クラッシュ頻度、ネットワークリクエストのメトリクスを提供します。Datadog Mobileはリアルタイムダッシュボードとアラートを備えたより現代的でツールです。どちらも有料ですが、無料ティアがあります。IT SectrはFirebase Performanceから始め、DAUが100,000を超えたら有料APMに移行することを推奨します。
Firebase Performance — Googleによる無料のモバイルアプリケーション監視ツール。アプリの起動時間、HTTPリクエスト(URL、メソッド、応答コード)、FPSのメトリクスを自動的に収集します。カスタムトレースにはTrace APIを使用します。統合:build.gradle(Android)またはPodfile(iOS)にSDKを追加します。
Trace — 測定する開始と終了のある時間セグメント。例:trace = FirebasePerformance.getInstance().newTrace("checkout_process")。メトリクス — 数値インジケータ(応答サイズ、アイテム数)。Firebase Performanceはサーバーインフラを必要としません — すべてのデータはFirebase SDKを通じて送信されます。モバイルアプリケーションを監視する際、Trace APIはパフォーマンス分析のためのコンテキストを提供します。
よくある質問
標準レベル:ERROR(重大なエラー)、WARN(潜在的な問題)、INFO(主要なイベント)、DEBUG(デバッグ)、VERBOSE(詳細なトレース)。本番環境ではERROR、WARN、INFOを維持し、残りは無効にします。
TimberはAndroidでのモバイルアプリケーションログ記録のためのJake WhartonによるLogcatのラッパーライブラリです。自動的にクラスタグを挿入し、Treeを設定し、1行のコードで本番環境のログを無効にします。
APM(Application Performance Monitoring) — パフォーマンスを追跡するためのツールクラス:起動時間、ネットワークリクエスト、メモリ使用量、クラッシュ頻度。モバイルアプリケーションを監視する際、New Relic、Datadog、Firebase Performanceはユーザーからの苦情が出る前にボトルネックを見つけるのに役立ちます。
スタートアップにはFirebase Performanceで十分です — 無料のモバイルアプリケーション監視ツールです。New RelicとDatadogは詳細なトレースとカスタムダッシュボードが必要な場合に接続します。IT SectrはFirebaseから始め、DAUが100,000を超えたら有料ソリューションに移行することを推奨します。
構造化ロギングはプレーンテキストの代わりにJSONまたはキーと値の形式でのログフォーマットです。フィールドによるログのフィルタリング、グラフの作成、ELKやGrafanaでの自動分析が可能です。構造化ログがなければ、数千のレコードからパターンを見つけるのは困難です。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。