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
より速く作業を進めることができる
ようになるからです。
