【入門編】モバイルアプリ開発者必見!React Native環境におけるRollbarのクラッシュレポート設定とソースマップ最適化 – 運用監視・オブザーバビリティ活用バイブル

こんにちは。現場で戦うエンジニアの皆さん。

プロダクトが成長し、ユーザーが増えるほど、開発者を悩ませるのが「再現性のないクラッシュ」です。「ユーザーの端末で落ちたが、手元では動く」。この悪夢に立ち向かうための最強の武器が、今回紹介するRollbarです。

React NativeはJS層とネイティブ層(iOS/Android)の境界があるため、ログの可視化には少しコツがいります。今日は、単なる導入ではなく「現場で即戦力になるための最適解」を伝授しましょう。

—

1. なぜ「Rollbar」なのか?―エラートラッキングの本質

Rollbarの本質は、エラーを「ただのテキスト」として収集するのではなく、「文脈(Context)」を付与して「再生産可能」にすることにあります。

特にReact Nativeでは、JSのバグなのか、ネイティブモジュールの不具合なのかを瞬時に判別する必要があります。Rollbarは、その迷宮からあなたを救い出す地図になります。

2. インストールと基盤セットアップ

まずは、React NativeプロジェクトにRollbarを迎え入れます。

必要なライブラリをインストール
npm install rollbar react-native-rollbar

次に、エントリーポイント(`index.js` または `App.js`)で初期化します。ここでのポイントは、グローバルにエラーを捕捉する設定を入れることです。

import { Client } from ‘rollbar-react-native’;

const rollbar = new Client({
accessToken: ‘YOUR_ACCESS_TOKEN’, // Rollbarダッシュボードで取得
environment: ‘production’,
// ユーザー情報を紐付けるためのフック
payload: {
platform: ‘react-native’,
},
});

// グローバルエラーハンドラ(JS層のクラッシュを漏らさない)
const originalErrorHandler = ErrorUtils.getGlobalHandler();
ErrorUtils.setGlobalHandler((error, isFatal) => {
rollbar.error(error);
originalErrorHandler(error, isFatal);
});

3. 【最重要】ソースマップで「難読化の壁」を突破する

リリースビルドでは、コードは難読化(Minify)されます。Rollbarに届くエラーログが `at a.js:1:500` のように表示されても、絶望するだけですよね。

「ソースマップ(Source Map)」をアップロードして、エラーの発生箇所を元のソースコードの行数に復元する。これがプロの必須スキルです。

Fastlaneを使った自動化のすすめ

リリース作業に手動アップロードは厳禁です。`Fastlane`を使っているなら、デプロイフローにRollbarのアップロードを組み込みます。

Fastfileの例
lane :upload_sourcemap do
# JSバンドルとソースマップを生成
sh(“npx react-native bundle –platform android –dev false –entry-file index.js –bundle-output index.android.bundle –sourcemap-output index.android.map”)

# Rollbarへアップロード
sh(“curl https://api.rollbar.com/api/1/sourcemap/upload \
-F access_token=YOUR_ACCESS_TOKEN \
-F version=1.0.0 \
-F minified_url=http://reactnativehost/index.android.bundle \
-F source_map=@index.android.map”)
end

※ `minified_url` は、React Nativeの場合はダミーURLで構いませんが、Rollbar側での一致条件として重要です。

4. ユーザーセッションを紐解く「神テクニック」

エラーが起きたとき、「どの画面で、誰が、何をしたか」が分からないと修正の優先度が決められません。以下のコードを共通のAPIクライアントやNavigationのフックに仕込んでおきましょう。

// ユーザー情報をセット(ログイン後やApp起動時に呼ぶ)
rollbar.setPerson({
id: user.id,
username: user.name,
email: user.email,
});

// 何をしたか(ログの履歴を残す)
rollbar.info(‘User navigated to CheckoutScreen’);

これを仕込むだけで、「チェックアウト画面で特定のユーザーだけが落ちている」といった「事象の因果関係」が手に取るように分かります。

5. HelloWorld的動作確認

設定が正しいかを確認するため、意図的にエラーを投げます。

// ボタンクリックイベントなどで実行
const testCrash = () => {
rollbar.info(‘Test log: Checking connectivity’);
throw new Error(‘これはRollbarのテストクラッシュです’);
};

アプリを実行し、ボタンを押してアプリを落としてください。Rollbarのダッシュボードに「ソースコードのどの行で落ちたか」が綺麗に表示されていれば、あなたのデバッグ環境は劇的に進化しています。

—

先輩からのアドバイス

オブザーバビリティとは、単に「エラーを見る」ことではありません。「未知のバグを、既知の課題に変える」ことです。

まずはソースマップの自動アップロードを完璧にしてください。それだけで、あなたは他のエンジニアが頭を抱えている間に、涼しい顔で修正コードをコミットできるようになります。

さあ、今日から「ログを追う作業」を卒業して、「価値あるコードを書く時間」を増やしていきましょう。何か詰まったら、いつでも戻ってきてくださいね。応援しています!

タイトルとURLをコピーしました