EOInspector

2007/03/30 (Fri) 22:07:46 JST

しばらく前からSmalltalk環境の1つであるSqueakで遊んでいるのですが、このインタラクティブな環境というのがずいぶんと楽しいのです。 ワークスペース(作業場)でコードを書いてさっと実行でき、オブジェクトブラウザなるツールでオブジェクトの中身も簡単に見られます。 おまけに変更もできてしまいます。

ところがWebObjectsではこうはいきません。 変更があればJavaコードをコンパイルし、アプリケーションを起動し直す必要があります。 WebObjects自体の複雑な挙動を確認するためのコードを書くのもなかなか面倒です。

せめてWebObjectsの動作を手軽に確認したいと思い、そこで作ってみたのがEOInspectorです。 ブラウザでオブジェクトの中身を調べたりGroovyコードを実行することができます。

使い方

インスペクタ(メインページ)

このページではオブジェクトの内容を見ることができます。 オブジェクト名をクリックするとテーブルで内容が表示されます。 最初はEOObjectStoreCoordinatorEOEditingContextがそれぞれ2つずつインスペクタとして登録されています (どちらもデフォルトのオブジェクトではなく、生成したものです)。

インスペクタ

テーブル左上部に並んでいるリンクが、オブジェクトのキーとアクションです。 キーをクリックするとテーブル右に内容が表示され、アクションをクリックするとオブジェクトに対して何らかの処理が行われます。 キー左にある "Inspect" をクリックすると、そのキーのオブジェクトがインスペクタとして追加されます。

テーブル下にある上部テキストフォールドではオブジェクトの属性を設定します。 キーを選び、値を入力してください。 "take value" とあるように、Key-Value Codingで設定しています。

下部テキストエリアではGroovyコードを実行できます。 ここではオブジェクト自身は this ではなく、it になります (Groovyでも同じく this でオブジェクト自身を表すのですが、 ここに書くコードはクロージャとして実行されるので it になります)。

Groovyワンライナー

画面上部の "One-Liner" フィールドでもGroovyコードを実行できます。 このフィールドでは it がMainオブジェクトです。

デリゲート・通知ログ

各デリゲートと通知を記録するページです。 ログの検索と使用されたオブジェクトをインスペクタに追加することができます。 ほぼすべてのデリゲートを実装しているので、デリゲートされるタイミングや渡されるオブジェクトを知るのにも使えます。

SQLログ

発行されたSQLを記録します。 このログはWebObjectsのデバッグ用の出力結果をそのまま出力しているだけで、すべてのSQL出力を記録しているのではありません。 完全なSQLログが必要なときはデータベースのログを参照してください。

ワークスペース

ワークスペースではGroovyコードを自由に実行できます。 画面中央がトランスクリプト、画面下がバインディング情報です。

トランスクリプト

Groovyコードからデータを画面に出力するために使います(Groovy用のログみたいなものです)。 メソッドは画面に出力するための show だけです。 次のようなコードでトランスクリプトにログを出力します。

transcript.show 'hello'

バインディング情報

バインディングとは、オブジェクトをGroovyコード中の変数として使えるようにする仕組みです。 例えばTranscriptオブジェクトは transcript 変数にバインディングされています。 同様にGroovyから変数として使えるオブジェクトの一覧が表示されます。


Inverse Pages: EOInspectorScreenshots WODownloads WebObjects基礎研究室