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 知るためにインスペクトしている 場合があるからです。