「Ruby のための新しいプロファイラ Pf2 の開発」 メンター報告書 # プロジェクト概要 本プロジェクトは、新たなRubyプロファイラ「pf2」を開発するプロジェクトである。 Rubyのプロファイラに通常欲しい機能を実装することに加え、既存のプロファイラにはない 機能をいくつか実装することを目指しており、特にRubyスタックとネイティブスタックを 同時にプロファイリングできる機能は、技術的にも有用性においても特筆すべき特徴である。 # 計画の達成状況 最終報告書に記載の通り、Rubyプロファイラとして使い始めるのに必要な一通りの 機能が実装された。それに加え、本プロジェクトのためにRuby本体に追加されたC API を利用してプロファイリング対象のスレッドを指定する機能や、GVLのコンテンションの確認、 Firefox Profilerによるビジュアライズへの対応、Rubyスタックとネイティブスタックを統合した プロファイリング機能など、広く使われている「stackprof」にはない機能も多数実装された。 プロジェクト計画時には、余裕があればpf2で開発されたアイデアをstackprofに再実装する アイデアもあったが、本プロジェクトの強みである「Rubyスタックとネイティブスタックを統合」 する部分の品質向上を終盤の開発では優先した。 # メンターとして果たした役割 隔週でオンラインミーティングを行ない、進捗の確認と、技術的なアドバイスを行なった。 pf2を実装する上で必要なRuby VMの知識を共有したり、ミーティングで質問に答える活動を通して、 pf2の開発に間接的に貢献した。 # まとめ 本プロジェクトでは、新しいRubyプロファイラpf2を実装し、既存のプロファイラにはない いくつかの機能を実現した。 今回は本プロジェクトのアイデアの一つであったそれらの機能のstackprofへの移植は 着手されなかったが、Rubyスタックとネイティブスタックを統合したプロファイリング を始めとした新たな機能が今回実現されたことは、Rubyコミュニティにとって大きな 成果をもたらしたと言える。成果発表会やRubyKaigi 2024を通して、pf2の利用拡大や 他のプロファイラへの影響など様々な形で今後もRubyエコシステムに良い影響を与える ことを期待したい。