津江のブログ

モバイルエンジニアが仕事での学びをアウトプット

【エラー解析ツール】Sentryを導入

React Native + Expoでアプリ開発を行う企業に転職して1週間経ちました。
アプリでメモリリークによるクラッシュの疑いがあり調査することに。

自分の環境では再現できなかったので、
有名な格言「推測するな、計測せよ」
に従い、計測してみようとエラー解析ツールのSentryを導入することにした。

参考にした情報

EXPOドキュメント:https://docs.expo.io/guides/using-sentry/?redirected
Sentryドキュメント:https://docs.expo.io/guides/using-sentry/?redirected
導入方法:https://medium.com/@tsugitta/sentry-on-react-native-1364c3fb407a
有料版との違い:https://sentry.io/pricing/

  • ユーザーのスマホでエラーが起きた場合に「Issues」に追加されていきます。
  • 「ユーザーの端末、OS、当該エラー箇所、発生件数」、などが表示されます。
  • 無料版で問題なく使用できますが、有料版だとメンバーが追加できます。
  • 無料版でもエラー検知時のメール送付先は追加可能。

実装したコード例:

App.js

import * as Sentry from 'sentry-expo';

Sentry.init({
  dsn: 'https://XXXXXXXXXXXXXXX@XXXXXX.ingest.sentry.io/XXXXXXX',
  enableInExpoDevelopment: true,
  debug: true,
})
app.json

前略
"hooks": {
  "postPublish": [
    {
      "file": "sentry-expo/upload-sourcemaps",
      "config": {
        "organization": "XXXXX-inc",
        "project": "XXXXXXXX",
        "authToken": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
        }
     }
  ]
}

 

「推測するな、計測せよ」

ルール1: プログラムがどこで時間を消費することになるか知ることはできない。ボトルネックは驚くべき箇所で起こるものである。したがって、どこがボトルネックなのかをはっきりさせるまでは、推測を行ったり、スピードハックをしてはならない。

ルール2: 計測すべし。計測するまでは速度のための調整をしてはならない。コードの一部が残りを圧倒しないのであれば、なおさらである。

ルール3: 凝ったアルゴリズムは nが小さいときには遅く、nはしばしば小さい。凝ったアルゴリズムは大きな定数を持っている。 nが頻繁に大きくなることがわかっていないなら、凝ってはいけない(nが大きくなるときでさえ、ルール2が最初に適用される)。

ルール4: 凝ったアルゴリズムはシンプルなそれよりバグを含みやすく、実装するのも難しい。シンプルなアルゴリズムとシンプルなデータ構造を使うべし。

ルール5: データはすべてを決定づける。もし、正しいデータ構造を選び、ものごとをうまく構成すれば、アルゴリズムはほとんどいつも自明のものになるだろう。プログラミングの中心は、アルゴリズムではなくデータ構造にある。

ルール6: ルール6は存在しない。

wikipedia - UNIX哲学