この記事は「ひとりでカンファレンスふりかえりo0h Advent Calendar 2021」のday-11です。

ひとりでカンファレンスふりかえりo0h Advent Calendar 2021 - Adventar

今日振り返るのは、「ステップ実行だけじゃないXdebug 〜ProfilingとTracing」です。 PHP Conference Japan 2021のCfPに応募しました。Lightning talk (4 mins)の枠になります。

ステップ実行だけじゃないXdebug 〜ProfilingとTracing

概要

Xdebugを利用しているか?というと、ステップ実行やコードカバレッジの取得には利用しているけど他の機能はそんなに使っていない〜という方も多いのではないかと思います(※主観です)。

それだけでは勿体ない!!!という気持ちがあり。

Regular Talkにて「ステップ実行だけじゃないXdebug」を提出していましたが、本プロポーザルはそのLT版になります。

時間が短いということで、扱う機能を「Profiling」「Tracing」に絞りました。

扱う内容としては、それぞれの機能について

といったものを考えていました。 また、PhpStormを利用するとプロファイリングが捗ったので、その話も入れるつもりでした。

動機

副業先で、ほぼ経験がないに等しいフレームワーク + サービスの構成もアプリケーションの機能も知らない状態で、「○○の機能でパフォーマンスが遅いからチューニングして欲しい」というタスクを引き受けました。

自分が見知ったアプリケーションだったらヒョヒョイと原因を特定して対処方法を考えられそうです。または、扱ったことがあって仕組みを知っているフレームワークであれば、アプリケーション上の当該機能の場所だけ教えてもらえば「何が起きているか」の切り分けの段階まですぐたどり着けるのですが・・ 今回はそのどちらもない、と。であれば補助道具が必要になります。

その際に利用したのが、Profling/Tracingでした。 このタスクに取り組む前は、何となく「名前だけは知っている」というくらいの存在です。Xdebug3が出た時に「主要な機能全部試す」はやったことがあったのですが、それでも「活用している」はおろか「使ったことがある」とも言えるか微妙な感じです。 多分便利そうではあるけど。どのくらい便利なんだろうね・・・?は、まだ実感を持っていない状態でした。

もともとはProfilingを行いたかったのです。Xhprofなどは利用したことがあります。でもPHP8で動くのかな・・・?とか、セットアップが面倒くさそう(他人に共有しにくい)な、とか。 そしたら「そういえばXdebugでも出来たよな?それだったら既に入ってるし、使ってみるか?」と。