1 00:00:01,080 --> 00:00:03,400 このビデオでは インスペクターで表示されるタブを 2 00:00:03,400 --> 00:00:06,950 オブジェクトにどう定義するか お見せします。 3 00:00:08,430 --> 00:00:10,280 どうやって見るのかというと 4 00:00:10,580 --> 00:00:12,240 Spotter を使います。 5 00:00:14,410 --> 00:00:18,240 #pragma は メソッドへのアノテーションですが 6 00:00:18,240 --> 00:00:22,910 そのうち gt で始まるものを Spotter で探します。 7 00:00:22,910 --> 00:00:27,440 ここに Inspector とあるので これを見ていきます。 8 00:00:30,190 --> 00:00:32,040 すると #Pragmas と #Senders があり 9 00:00:32,040 --> 00:00:34,080 #Pragma のほうを選びます。 10 00:00:35,760 --> 00:00:39,250 Morph の例を 11 00:00:39,250 --> 00:00:41,210 見ていきます。 12 00:00:41,280 --> 00:00:43,180 ここにコードがあります。 13 00:00:43,180 --> 00:00:47,450 このコードは… 憶えているでしょうか、ここで 14 00:00:47,450 --> 00:00:51,320 inspect すると インスペクターが開いて 15 00:00:52,090 --> 00:00:56,970 このインスペクターには このタブがあります。 16 00:00:57,910 --> 00:00:59,070 比べてみましょう。 17 00:01:08,100 --> 00:01:11,240 見ての通り composite から Morph を作って 18 00:01:11,240 --> 00:01:16,170 タイトルとアクションがあり 19 00:01:16,310 --> 00:01:18,950 Morph が表示できない場合のための エラー処理が定義されています。 20 00:01:19,290 --> 00:01:21,990 表示を Morph に変換して表示します。 21 00:01:21,990 --> 00:01:26,840 act というものもありますが 22 00:01:28,880 --> 00:01:31,390 このタブに操作を 23 00:01:36,410 --> 00:01:37,060 関連付けています。 24 00:01:37,440 --> 00:01:38,700 もう 1 つ例を見てみましょう。 25 00:01:43,660 --> 00:01:47,980 色々あります。 26 00:01:49,270 --> 00:01:50,210 Date(日付)を見たいと思います。 27 00:01:56,080 --> 00:01:59,530 憶えているでしょうか Date today inspect とすると 28 00:02:05,220 --> 00:02:07,690 Details と Calendar があります。 29 00:02:09,130 --> 00:02:11,740 この Morph をどうやって 作っているのかというと 30 00:02:11,740 --> 00:02:16,520 このメッセージで Morph を作るだけです。 31 00:02:17,570 --> 00:02:20,000 そして、Details はというと 32 00:02:26,990 --> 00:02:29,250 表を作るように頼んで タイトル、キーと値を定義して 33 00:02:29,250 --> 00:02:34,010 キーと値を評価して 34 00:02:36,190 --> 00:02:38,730 返しています。 35 00:02:41,150 --> 00:02:43,080 最後にお見せしたい例は 36 00:02:43,990 --> 00:02:48,990 メソッドインスペクターでの 37 00:02:48,990 --> 00:02:53,470 作業の仕方です。 38 00:02:55,200 --> 00:02:57,930 憶えていると思いますが メソッドには 39 00:02:57,930 --> 00:03:02,200 バイトコード、少なくとも バイトコードを持つテーブルがあり 40 00:03:02,200 --> 00:03:05,970 ソースや AST やバイトコードを 見ることができます。 41 00:03:06,150 --> 00:03:10,680 AST を見てみましょう。 いつもの 42 00:03:10,910 --> 00:03:15,640 Spotter を使います. CompiledMethod を探します。 43 00:03:15,640 --> 00:03:19,470 Source を見ると 44 00:03:21,290 --> 00:03:21,970 まあこんな感じです。 45 00:03:26,410 --> 00:03:28,300 Source はこのパネルで 46 00:03:34,330 --> 00:03:37,240 Source はこう定義されています。 ここに pharoMethod があり 47 00:03:37,240 --> 00:03:39,450 細かいことはわかりませんが ようするに 48 00:03:39,450 --> 00:03:42,920 Pharo のメソッドを表示することができる オブジェクトを作っています。 49 00:03:42,920 --> 00:03:45,940 構文ハイライトなどを 50 00:03:45,940 --> 00:03:50,600 使って表示します。 AST を見ると 51 00:03:50,900 --> 00:03:53,100 木構造を 52 00:03:56,060 --> 00:03:56,400 返すわけですが 53 00:04:01,340 --> 00:04:04,270 AST を木構造で表示します。 54 00:04:04,800 --> 00:04:06,710 ここで大事なことは、動作メカニズムを 精密に理解することではなく 55 00:04:06,710 --> 00:04:09,480 これの複雑度がどんなものか 56 00:04:09,480 --> 00:04:12,020 見てほしいのです。 57 00:04:12,310 --> 00:04:14,820 見ての通り たいして複雑ではありません。 58 00:04:15,180 --> 00:04:19,060 これが Bytecode タブで これが Ir タブです。 59 00:04:19,060 --> 00:04:23,010 もちろんそれぞれのタスクに関連した ロジックはあります。 60 00:04:23,010 --> 00:04:26,890 例えばこの場合では中間表現(Ir)を どうやって得るかを 61 00:04:26,890 --> 00:04:30,630 考えなければなりません。 しかし、それはなんとかなる範囲内です。 62 00:04:31,990 --> 00:04:33,910 これを見せたのは 63 00:04:33,910 --> 00:04:37,170 自分のオブジェクトにも同じようなことが できれば、それは良いことですし 64 00:04:37,170 --> 00:04:38,260 より速く作業を進めることができる ようになるからです。