WEBVTT

00:00:01.080 --> 00:00:03.400 align:middle
このビデオでは
インスペクターで表示されるタブを

00:00:03.400 --> 00:00:06.950 align:middle
オブジェクトにどう定義するか
お見せします。

00:00:08.430 --> 00:00:10.280 align:middle
どうやって見るのかというと

00:00:10.580 --> 00:00:12.240 align:middle
Spotter を使います。

00:00:14.410 --> 00:00:18.240 align:middle
#pragma は
メソッドへのアノテーションですが

00:00:18.240 --> 00:00:22.910 align:middle
そのうち gt で始まるものを
Spotter で探します。

00:00:22.910 --> 00:00:27.440 align:middle
ここに Inspector とあるので
これを見ていきます。

00:00:30.190 --> 00:00:32.040 align:middle
すると #Pragmas と #Senders があり

00:00:32.040 --> 00:00:34.080 align:middle
#Pragma のほうを選びます。

00:00:35.760 --> 00:00:39.250 align:middle
Morph の例を

00:00:39.250 --> 00:00:41.210 align:middle
見ていきます。

00:00:41.280 --> 00:00:43.180 align:middle
ここにコードがあります。

00:00:43.180 --> 00:00:47.450 align:middle
このコードは…
憶えているでしょうか、ここで

00:00:47.450 --> 00:00:51.320 align:middle
inspect すると
インスペクターが開いて

00:00:52.090 --> 00:00:56.970 align:middle
このインスペクターには
このタブがあります。

00:00:57.910 --> 00:00:59.070 align:middle
比べてみましょう。

00:01:08.100 --> 00:01:11.240 align:middle
見ての通り
composite から Morph を作って

00:01:11.240 --> 00:01:16.170 align:middle
タイトルとアクションがあり

00:01:16.310 --> 00:01:18.950 align:middle
Morph が表示できない場合のための
エラー処理が定義されています。

00:01:19.290 --> 00:01:21.990 align:middle
表示を Morph に変換して表示します。

00:01:21.990 --> 00:01:26.840 align:middle
act というものもありますが

00:01:28.880 --> 00:01:31.390 align:middle
このタブに操作を

00:01:36.410 --> 00:01:37.060 align:middle
関連付けています。

00:01:37.440 --> 00:01:38.700 align:middle
もう 1 つ例を見てみましょう。

00:01:43.660 --> 00:01:47.980 align:middle
色々あります。

00:01:49.270 --> 00:01:50.210 align:middle
Date（日付）を見たいと思います。

00:01:56.080 --> 00:01:59.530 align:middle
憶えているでしょうか
Date today inspect とすると

00:02:05.220 --> 00:02:07.690 align:middle
Details と Calendar があります。

00:02:09.130 --> 00:02:11.740 align:middle
この Morph をどうやって
作っているのかというと

00:02:11.740 --> 00:02:16.520 align:middle
このメッセージで Morph を作るだけです。

00:02:17.570 --> 00:02:20.000 align:middle
そして、Details はというと

00:02:26.990 --> 00:02:29.250 align:middle
表を作るように頼んで
タイトル、キーと値を定義して

00:02:29.250 --> 00:02:34.010 align:middle
キーと値を評価して

00:02:36.190 --> 00:02:38.730 align:middle
返しています。

00:02:41.150 --> 00:02:43.080 align:middle
最後にお見せしたい例は

00:02:43.990 --> 00:02:48.990 align:middle
メソッドインスペクターでの

00:02:48.990 --> 00:02:53.470 align:middle
作業の仕方です。

00:02:55.200 --> 00:02:57.930 align:middle
憶えていると思いますが
メソッドには

00:02:57.930 --> 00:03:02.200 align:middle
バイトコード、少なくとも
バイトコードを持つテーブルがあり

00:03:02.200 --> 00:03:05.970 align:middle
ソースや AST やバイトコードを
見ることができます。

00:03:06.150 --> 00:03:10.680 align:middle
AST を見てみましょう。
いつもの

00:03:10.910 --> 00:03:15.640 align:middle
Spotter  を使います.
CompiledMethod を探します。

00:03:15.640 --> 00:03:19.470 align:middle
Source を見ると

00:03:21.290 --> 00:03:21.970 align:middle
まあこんな感じです。

00:03:26.410 --> 00:03:28.300 align:middle
Source はこのパネルで

00:03:34.330 --> 00:03:37.240 align:middle
Source はこう定義されています。
ここに pharoMethod があり

00:03:37.240 --> 00:03:39.450 align:middle
細かいことはわかりませんが
ようするに

00:03:39.450 --> 00:03:42.920 align:middle
Pharo のメソッドを表示することができる
オブジェクトを作っています。

00:03:42.920 --> 00:03:45.940 align:middle
構文ハイライトなどを

00:03:45.940 --> 00:03:50.600 align:middle
使って表示します。
AST を見ると

00:03:50.900 --> 00:03:53.100 align:middle
木構造を

00:03:56.060 --> 00:03:56.400 align:middle
返すわけですが

00:04:01.340 --> 00:04:04.270 align:middle
AST を木構造で表示します。

00:04:04.800 --> 00:04:06.710 align:middle
ここで大事なことは、動作メカニズムを
精密に理解することではなく

00:04:06.710 --> 00:04:09.480 align:middle
これの複雑度がどんなものか

00:04:09.480 --> 00:04:12.020 align:middle
見てほしいのです。

00:04:12.310 --> 00:04:14.820 align:middle
見ての通り
たいして複雑ではありません。

00:04:15.180 --> 00:04:19.060 align:middle
これが Bytecode タブで
これが Ir タブです。

00:04:19.060 --> 00:04:23.010 align:middle
もちろんそれぞれのタスクに関連した
ロジックはあります。

00:04:23.010 --> 00:04:26.890 align:middle
例えばこの場合では中間表現（Ir）を
どうやって得るかを

00:04:26.890 --> 00:04:30.630 align:middle
考えなければなりません。
しかし、それはなんとかなる範囲内です。

00:04:31.990 --> 00:04:33.910 align:middle
これを見せたのは

00:04:33.910 --> 00:04:37.170 align:middle
自分のオブジェクトにも同じようなことが
できれば、それは良いことですし

00:04:37.170 --> 00:04:38.260 align:middle
より速く作業を進めることができる
ようになるからです。

