このビデオでは インスペクターという
Pharo のとても良い一面を お見せします。
インスペクターは オブジェクトと対話し
ライブ感のあるやりとりを 可能にするツールです。
ファイルシステムで 試してみましょう。
例えば、 FileSystem workingDirectory
とすると、例えばこのイメージの ルートディレクトリにある
ファイルを得ることができます。
これらのファイルを 得ることができるわけです。
では見てみましょう。 Inspect すると
インスペクターが開きます。
ここにインスペクターがあります。
これは GT チームが開発した
Pharo の新しいインスペクターで
とても面白い特徴を持っています。
では、Raw タブから
見てみましょう。
Raw タブは 昔ながらのインスペクターです。
何を表示するかというと
オブジェクトが持っているデータ つまりクラスで定義されている
インスタンス変数です。
これと対話することができます。
例えば、すべてのエントリを お願いすると
すべてのエントリが得られます。 あるいは、すべてのディレクトリを
お願いすると、例えばここに 全てのディレクトリが得られます。
オブジェクトのクラスを見るには self browse とすると
こうして見ることができます。
このビューでは オブジェクトが持っている値
つまり、クラスで定義された インスタンス変数を
そのままの形で見ることができます。
これで内部を見ることができるのです。
例えば、こうすると path は実際には
このように構成されていることが わかります。
この self で まだ raw モードなので
その内部を見ることができます。
こうすることで、さらに
User という文字列のようなものまで 内部を見ていくことができます。
ここでは、基本的にカプセル化を 破っています。
このシステムは内省的に
その内部のフィールドの値を 見せてくれます。
このビューはとても有用です。
しかし、この新しいインスペクターは さらに凄いことができます。
つまり、各オブジェクトが ユーザーに対して
そのオブジェクトの自己表現として 様々な側面を見せることができます。
デフォルトとして、各オブジェクトは Raw という側面を持っています。
また、Meta という側面も持っています。
これはクラスをブラウズするものです。
このようにして、クラスを素早く ブラウズすることができます。
ナビゲーションのフローの中にいて
他のブラウザを開いたりしたくない
場合に便利です。
しかし、重要なのは他のタブです。
例えば
インスペクターは対象オブジェクトが リファレンスでディレクトリであることを
知っているので そのディレクトリの内容を見せます。
これは前にお見せした通り
同じものが得られます。
さて、このファイルシステムの内部を
ブラウズします。
ston を選択します。これは Pharo でのJSONのようなものです。
すると、またもや
ファイルシステム内の リファレンスが得られます。
このファイルは
meta-inf.ston ファイルです。
するとインスペクターは
「中身をお見せできますよ」 と言ってきます。
中身をみると
何かはよくわかりませんが 内容を見ることができます。
同じように サブフォルダーをブラウズします。
ここで package-cache を選びます。
ここにパッケージが保管されています。
これもまたファイルシステムの オブジェクトで
中身を見せてきます。
Data の中を見ると png があります。
この png をクリックすると それを見ることができます。
ここに別のタブがあります。
Content をクリックすると
ディスク中のバイナリフォーマットの ファイルですが
これはpng なので インスペクターは png の
プレビュー画像を表示します。
例えば script.st を見ると
別のテキスト領域があります。
テキスト領域が2つあるわけですが
片方は構文ハイライトされていて
もう片方はハイライトされていません。
zip ファイルの場合には さらに便利です。
zip にはファイルがエンコードされ 圧縮されているわけですが
その内容を見ることができます。
中身を直接ブラウズして
見ていくことができます。
Pharo のインスペクターが
オブジェクトと対話するための とても強力なツールで
各オブジェクトが
その自己表現を決めて
複数の意味のある表現を見せて
対話することができることを お見せしました。
これを使って簡単なツールを素早く 構築することができます。
これはちょっとしたファイルブラウザ としての機能を持っています。
そうしてその機能が必要かというと ファイルシステムの中を見る時には
インスペクトしている対象を知らない つまり、まさに対象が何なのかを
知るためにインスペクトしている 場合があるからです。