1
00:00:02,030 --> 00:00:03,770
このビデオでは
インスペクターという

2
00:00:03,937 --> 00:00:06,700
Pharo のとても良い一面を
お見せします。

3
00:00:07,170 --> 00:00:10,610
インスペクターは
オブジェクトと対話し

4
00:00:10,777 --> 00:00:14,190
ライブ感のあるやりとりを
可能にするツールです。

5
00:00:15,250 --> 00:00:17,690
ファイルシステムで
試してみましょう。

6
00:00:19,520 --> 00:00:21,450
例えば、
FileSystem workingDirectory

7
00:00:24,330 --> 00:00:29,130
とすると、例えばこのイメージの
ルートディレクトリにある

8
00:00:29,297 --> 00:00:32,190
ファイルを得ることができます。

9
00:00:32,357 --> 00:00:33,870
これらのファイルを
得ることができるわけです。

10
00:00:35,030 --> 00:00:39,610
では見てみましょう。
Inspect すると

11
00:00:40,030 --> 00:00:41,240
インスペクターが開きます。

12
00:00:41,870 --> 00:00:43,240
ここにインスペクターがあります。

13
00:00:45,430 --> 00:00:47,690
これは GT チームが開発した

14
00:00:47,857 --> 00:00:51,730
Pharo の新しいインスペクターで

15
00:00:51,897 --> 00:00:53,140
とても面白い特徴を持っています。

16
00:00:53,307 --> 00:00:56,740
では、Raw タブから

17
00:00:58,330 --> 00:00:59,640
見てみましょう。

18
00:00:59,807 --> 00:01:03,880
Raw タブは
昔ながらのインスペクターです。

19
00:01:04,047 --> 00:01:04,850
何を表示するかというと

20
00:01:05,017 --> 00:01:08,000
オブジェクトが持っているデータ
つまりクラスで定義されている

21
00:01:08,167 --> 00:01:09,710
インスタンス変数です。

22
00:01:10,420 --> 00:01:12,480
これと対話することができます。

23
00:01:12,647 --> 00:01:15,930
例えば、すべてのエントリを
お願いすると

24
00:01:16,530 --> 00:01:20,940
すべてのエントリが得られます。
あるいは、すべてのディレクトリを

25
00:01:21,107 --> 00:01:25,850
お願いすると、例えばここに
全てのディレクトリが得られます。

26
00:01:27,880 --> 00:01:31,380
オブジェクトのクラスを見るには
self browse とすると

27
00:01:31,547 --> 00:01:36,240
こうして見ることができます。

28
00:01:36,407 --> 00:01:40,430
このビューでは
オブジェクトが持っている値

29
00:01:41,250 --> 00:01:44,450
つまり、クラスで定義された
インスタンス変数を

30
00:01:44,617 --> 00:01:46,100
そのままの形で見ることができます。

31
00:01:47,520 --> 00:01:49,820
これで内部を見ることができるのです。

32
00:01:50,000 --> 00:01:54,650
例えば、こうすると
path は実際には

33
00:01:55,350 --> 00:01:59,530
このように構成されていることが
わかります。

34
00:01:59,697 --> 00:02:03,660
この self で
まだ raw モードなので

35
00:02:03,827 --> 00:02:04,800
その内部を見ることができます。

36
00:02:05,000 --> 00:02:07,550
こうすることで、さらに

37
00:02:07,717 --> 00:02:09,780
User という文字列のようなものまで
内部を見ていくことができます。

38
00:02:09,947 --> 00:02:13,280
ここでは、基本的にカプセル化を
破っています。

39
00:02:15,210 --> 00:02:18,250
このシステムは内省的に

40
00:02:18,417 --> 00:02:21,290
その内部のフィールドの値を
見せてくれます。

41
00:02:23,000 --> 00:02:23,920
このビューはとても有用です。

42
00:02:24,087 --> 00:02:28,540
しかし、この新しいインスペクターは
さらに凄いことができます。

43
00:02:28,707 --> 00:02:33,310
つまり、各オブジェクトが
ユーザーに対して

44
00:02:34,150 --> 00:02:38,820
そのオブジェクトの自己表現として
様々な側面を見せることができます。

45
00:02:40,700 --> 00:02:44,880
デフォルトとして、各オブジェクトは
Raw という側面を持っています。

46
00:02:45,300 --> 00:02:47,900
また、Meta という側面も持っています。

47
00:02:48,067 --> 00:02:49,310
これはクラスをブラウズするものです。

48
00:02:49,477 --> 00:02:51,380
このようにして、クラスを素早く
ブラウズすることができます。

49
00:02:52,150 --> 00:02:55,330
ナビゲーションのフローの中にいて

50
00:02:55,590 --> 00:03:00,440
他のブラウザを開いたりしたくない

51
00:03:00,607 --> 00:03:01,350
場合に便利です。

52
00:03:01,650 --> 00:03:03,140
しかし、重要なのは他のタブです。

53
00:03:03,307 --> 00:03:08,090
例えば

54
00:03:08,257 --> 00:03:11,640
インスペクターは対象オブジェクトが
リファレンスでディレクトリであることを

55
00:03:13,470 --> 00:03:17,730
知っているので
そのディレクトリの内容を見せます。

56
00:03:17,900 --> 00:03:19,690
これは前にお見せした通り

57
00:03:20,270 --> 00:03:21,960
同じものが得られます。

58
00:03:26,190 --> 00:03:31,140
さて、このファイルシステムの内部を

59
00:03:31,307 --> 00:03:32,180
ブラウズします。

60
00:03:32,347 --> 00:03:36,090
ston を選択します。これは
Pharo でのJSONのようなものです。

61
00:03:36,460 --> 00:03:40,920
すると、またもや

62
00:03:41,087 --> 00:03:45,780
ファイルシステム内の
リファレンスが得られます。

63
00:03:46,280 --> 00:03:51,110
このファイルは

64
00:03:51,277 --> 00:03:52,500
meta-inf.ston ファイルです。

65
00:03:52,667 --> 00:03:57,270
するとインスペクターは

66
00:03:57,437 --> 00:04:00,390
「中身をお見せできますよ」
と言ってきます。

67
00:04:01,000 --> 00:04:02,940
中身をみると

68
00:04:03,107 --> 00:04:06,020
何かはよくわかりませんが
内容を見ることができます。

69
00:04:07,210 --> 00:04:11,070
同じように
サブフォルダーをブラウズします。

70
00:04:11,237 --> 00:04:14,950
ここで package-cache を選びます。

71
00:04:15,117 --> 00:04:16,180
ここにパッケージが保管されています。

72
00:04:16,347 --> 00:04:19,160
これもまたファイルシステムの
オブジェクトで

73
00:04:19,327 --> 00:04:21,760
中身を見せてきます。

74
00:04:22,540 --> 00:04:26,880
Data の中を見ると
png があります。

75
00:04:30,210 --> 00:04:33,740
この png をクリックすると
それを見ることができます。

76
00:04:34,040 --> 00:04:36,760
ここに別のタブがあります。

77
00:04:38,030 --> 00:04:38,680

78
00:04:39,500 --> 00:04:41,540
Content をクリックすると

79
00:04:41,707 --> 00:04:44,550
ディスク中のバイナリフォーマットの
ファイルですが

80
00:04:47,300 --> 00:04:50,460
これはpng なので
インスペクターは png の

81
00:04:50,627 --> 00:04:53,570
プレビュー画像を表示します。

82
00:04:53,737 --> 00:04:55,140
例えば script.st を見ると

83
00:04:55,307 --> 00:04:58,510
別のテキスト領域があります。

84
00:04:58,677 --> 00:05:00,740
テキスト領域が2つあるわけですが

85
00:05:00,907 --> 00:05:03,150
片方は構文ハイライトされていて

86
00:05:03,317 --> 00:05:05,400
もう片方はハイライトされていません。

87
00:05:06,050 --> 00:05:09,470
zip ファイルの場合には
さらに便利です。

88
00:05:09,637 --> 00:05:14,520
zip にはファイルがエンコードされ
圧縮されているわけですが

89
00:05:14,687 --> 00:05:19,100
その内容を見ることができます。

90
00:05:19,267 --> 00:05:22,920
中身を直接ブラウズして

91
00:05:24,240 --> 00:05:26,080
見ていくことができます。

92
00:05:29,730 --> 00:05:34,300
Pharo のインスペクターが

93
00:05:34,467 --> 00:05:37,400
オブジェクトと対話するための
とても強力なツールで

94
00:05:37,567 --> 00:05:42,160
各オブジェクトが

95
00:05:42,327 --> 00:05:45,430
その自己表現を決めて

96
00:05:45,597 --> 00:05:48,840
複数の意味のある表現を見せて

97
00:05:49,007 --> 00:05:51,270
対話することができることを
お見せしました。

98
00:05:51,550 --> 00:05:53,820
これを使って簡単なツールを素早く
構築することができます。

99
00:05:54,000 --> 00:05:56,940
これはちょっとしたファイルブラウザ
としての機能を持っています。

100
00:05:57,107 --> 00:05:59,270
そうしてその機能が必要かというと
ファイルシステムの中を見る時には

101
00:05:59,510 --> 00:06:01,890
インスペクトしている対象を知らない
つまり、まさに対象が何なのかを

102
00:06:02,057 --> 00:06:02,840
知るためにインスペクトしている
場合があるからです。
