このビデオでは インスペクターで表示されるタブを
オブジェクトにどう定義するか お見せします。
どうやって見るのかというと
Spotter を使います。
#pragma は メソッドへのアノテーションですが
そのうち gt で始まるものを Spotter で探します。
ここに Inspector とあるので これを見ていきます。
すると #Pragmas と #Senders があり
#Pragma のほうを選びます。
Morph の例を
見ていきます。
ここにコードがあります。
このコードは… 憶えているでしょうか、ここで
inspect すると インスペクターが開いて
このインスペクターには このタブがあります。
比べてみましょう。
見ての通り composite から Morph を作って
タイトルとアクションがあり
Morph が表示できない場合のための エラー処理が定義されています。
表示を Morph に変換して表示します。
act というものもありますが
このタブに操作を
関連付けています。
もう 1 つ例を見てみましょう。
色々あります。
Date（日付）を見たいと思います。
憶えているでしょうか Date today inspect とすると
Details と Calendar があります。
この Morph をどうやって 作っているのかというと
このメッセージで Morph を作るだけです。
そして、Details はというと
表を作るように頼んで タイトル、キーと値を定義して
キーと値を評価して
返しています。
最後にお見せしたい例は
メソッドインスペクターでの
作業の仕方です。
憶えていると思いますが メソッドには
バイトコード、少なくとも バイトコードを持つテーブルがあり
ソースや AST やバイトコードを 見ることができます。
AST を見てみましょう。 いつもの
Spotter を使います. CompiledMethod を探します。
Source を見ると
まあこんな感じです。
Source はこのパネルで
Source はこう定義されています。 ここに pharoMethod があり
細かいことはわかりませんが ようするに
Pharo のメソッドを表示することができる オブジェクトを作っています。
構文ハイライトなどを
使って表示します。 AST を見ると
木構造を
返すわけですが
AST を木構造で表示します。
ここで大事なことは、動作メカニズムを 精密に理解することではなく
これの複雑度がどんなものか
見てほしいのです。
見ての通り たいして複雑ではありません。
これが Bytecode タブで これが Ir タブです。
もちろんそれぞれのタスクに関連した ロジックはあります。
例えばこの場合では中間表現（Ir）を どうやって得るかを
考えなければなりません。 しかし、それはなんとかなる範囲内です。
これを見せたのは
自分のオブジェクトにも同じようなことが できれば、それは良いことですし
より速く作業を進めることができる ようになるからです。