診断機能があるから面白い。
上の話を踏まえて、会社で作ってる、ENdoSnipeの宣伝をします。
http://endosnipe.smg.co.jp/
ENdoSnipeには、
ログからシーケンス図を作るArrowVisionや
クラス図を作るBottleneckEyeといった機能があります。
ただ、これらは、あくまで「現象」を見せるための機能です。
ドキュメントがろくに揃っていないプロダクトの保守を行なう時や、
問題の概観を掴むためには、とても便利な機能のですが、
「原因」を特定できるわけではありません。
それよりも個人的に面白いのは、
現象ではなく原因を診断する、PerformanceDoctorです。
上に書いたsleepの例で、PerformanceDoctorを使えば、
「sleepしすぎだよ」と、いきなり「原因」を教えてくれます。
こういう「診断」機能を持っているツールは、私は他に知りません。
ソースコードやクラスのバイトコードから
問題を検知するCheckstyleやFindBugsもありますが、
実行時の挙動から、問題を診断できるツールは、他に見た事がありません。
先に書いたように、
原因のドリルダウン(=診断)には、一定のスキルが必要になります。
スキルが足りなければ、真の原因に到達できず、解決策を提示できません。
その点で言えば、PerformanceDoctorは、
実際のトラシュー案件から得たノウハウをコード化して、
診断するための機能として実装しています。
じゃぁ100%問題を特定できんのカヨ! って言われたら
そんなん無理に決まってるダロ! って言いたくなります。当たり前です。
ただ、PerformanceDoctorは診断機能を強化しやすく設計していて
(その辺りの機能を、僕が実装したんダ!)
今でもトラシュー案件のノウハウを利用して、日々強化しています。
その辺り、Javaのトラブル診断のためのプラットフォームとして、
ちょっと可能性があるんじゃないかな、と思っています。
その話は、また別の機会に。