この記事は、New Relic Advent Calendar 2023 シリーズ3の20日目の記事となります。
こんにちは、バックエンドエンジニアで PHPer の江間です。
この記事では、New Relic は導入されていて使ったことがあるけど、普段インフラをあまり触らないアプリケーションエンジニアに向けて「New Relic CodeStream」を使った開発(特にエラーの改修)について紹介します。
New Relic CodeStreamとは
New Relic CodeStream は、New Relic のメトリクスやエラーなどの機能をコードレベルで確認できる IDE の拡張機能です。
現在、 JetBrains, VSCode などのほとんどの IDE で使用することができます。

導入方法(JetBrains)
まずは New Relic CodeStream を使える状態にします。ここでは普段利用している PhpStorm (JetBrains) でのインストール方法を書きますが、公式ドキュメントにはその他の IDE のインストール方法があります。
1. PhpStorm へ New Relic CodeStream プラグインをインストール
Settings > Plugins > Marketplace で New Relic CodeStream を検索し install をします。

New Relic CodeStream – IntelliJ IDEs Plugin | Marketplace
2. CodeStream と New Relic を連携させる
続いて CodeStream をインストールした IDE から New Relic のデータにアクセスできるように設定します。New Relic CodeStream から New Relic と書かれたボタンをクリックします。
※ 以前は New Relic CodeStream を使い始めるには New Relic アカウントとは別に CodeStream のアカウントが必要でしたが、 2023/12/13 以降は New Relic アカウントのみでサインイン出来るようになっています。

ブラウザに飛ぶので、その画面からログインすると、CodeStream と New Relic のアカウントの紐づけが完了します。
これで New Relic CodeStream を使える環境が整いました!
実際の使い方の紹介
New Relic CodeStream を使っていて最も嬉しいポイントは、エラーの発見から解決までを迅速化できる事です。これについて弊社での実際の使用例を紹介します。
どんな時に有効か?
本番環境で想定外のデータが入っていた時
PHP ではdeclare(strict_types=1);をファイルの行頭に書くことで、ファイルをstrictモードに設定することができます。これは PHP が暗黙的な型変換を行わずに TypeError を返すようになります。
本番環境の(データベースに入っている)データが、開発環境やテストでは想定されなかったデータ型だった場合、それが strict モードで定義されたメソッドへ引き渡されるとエラーが発生します。
発生したエラーは Errors inbox で確認することができ、そのまま CodeStream の機能でコード上のどこでエラーが発生したか確認することができます。
ステージング環境で検証している時
弊社では本番リリースする前に必ず一度ステージング環境で動作確認を行います。そして、ステージング環境にも New Relic がインストールされているため、本番確認同様でエラーが発生した場合それを検知し、Errors inbox、CodeStream を経てコード上の問題のあるコードにたどり着くことができます。
ステージング環境でも New Relic を入れている話しについては、以下の記事でも解説しています。ぜひ見てください!

エラー検知から改修までの流れの一例
1. slackアラートで検知
本番環境ではエラーが1件でも発生すると slack にメンションが飛ぶように、 New Relic のアラートが設定されています。

このメンションに記載された Errors inbox への URL を開きます。
2. Errors inbox で確認
Errors inbox を開くと先程発生したエラーの詳細を確認することが出来ます。

3. チケットを起票
Errors inbox の Error group summary から、今回発生したエラーに関してのチケットを起票します。


※実際は、より詳細で分かりやすくチケットを記述するため、起票されたチケットの内容はある程度書き換えます。
4. New Relic CodeStream を開く
続いて、IDE でエラーを確認するために「Open in IDE」を開きます。

すると、自動的に IDE (PhpStorm) が開き、エラーが発生した場所のファイルが開かれます。

5. エラーをトレースしてコードを修正する
CodeStream のタブの中の STACK TRACE から、本番環境で発生したエラーのスタックトレースを表示します。

見せられないためモザイクになっているが、このスタックトレースには1行にファイル名と行数が書かれている。そして、それぞれの行はクリックすることでコードジャンプすることが可能になっている。
これを用いて、エラーの原因を迅速に解明し、エラーが発生しないように修正します。
6. コードの修正をリリースする
上記の手順で New Relic CodeStream を用いたエラー検知からコードの改修までとなります。
後はリリースフローに則って、修正した内容を本番環境に反映させるだけです。
もしまたエラーが起こってしまったら、 1 に戻ってエラー検知からコードの改修まで行います。
告知
明日開催の New Relic User Group Vol.8 New Relic本出版記念アドカレLT大会でこの記事と同様のテーマでLTします。是非是非ご参加ください!

終わりに
以上、 New Relic CodeStream の紹介と実際に使ってみた使用例について書きました。
エラーを検知してから迅速に修正するまでのサポートツールとして非常に便利なので、ぜひ利用してみてはいかがでしょうか!
PR TIMESではインフラエンジニアのみならず、アプリケーション開発のエンジニアもサービスの品質向上のために New Relic を日々積極的に使っています。もしご興味ある方は、ぜひカジュアル面談でお話しできると嬉しいです。

