poolについて人に伝えるためのツールが欲しいと考えていました。高速で省メモリなコードを書いたりマルチスレッドプログラミングしたりするには(Javaヒープの使い方と並んで)役立つ知識ですし、Scalaなどの"JVM言語"が脚光を浴びている今だからこそJVMそのものに対する理解を深めることに意義があると考えたためです。このへんの情報には決定版と呼べる日本語ドキュメントもなく*1、いちいち紙やホワイトボードにスタックの絵を描いて説明しないと理解を得にくい状況だと認識しています。JVM仕様書を読んでもらえれば話が早いのですが、あれだけの量を喜々として読む人はそうは居ないわけで。variableなどJVM内部の挙動を観察できるシミュレータを実装しました。stackにLjava/io/PrintStream;型のjava/lang/System/outが積まれるということが目で見えるわけです。どんな処理が行われたかはシミュレーションを観察すればわかりますが、「そもそもスタックってなに」状態な方でもログを見て適宜ググるといった使い方ができるようになっています。いうことで実装しましたが......わ、わかりにくい!型の表現にClassファイルの内部表現をそのまま使っているということも一因だと思いますが、それ以上にまだ「わからない人は何がわからないからわからないのか」を考え抜けていないのが大きいように思います。JVMに詳しくない人が1人で学習するためのツールにはなりきれず、詳しい人がそうでない人に教えるためのツールにとどまっている感じです。教育・啓蒙用のツールにはなっていると思うので、有識者(?)の皆様にはぜひ使っていただきたいと思います。機能不足やデザイン不足が目についたら、適当にforkして改変していただけるとありがたいです。Calendarの25日目の記事です。