WEBVTT

00:00:01.260 --> 00:00:03.390 align:middle
このビデオでは Pharo の

00:00:03.557 --> 00:00:06.040 align:middle
コードの品質をチェックするアシスタントを

00:00:06.207 --> 00:00:08.640 align:middle
お見せします。

00:00:08.807 --> 00:00:11.450 align:middle
クオリティアシスタントあるいは
コードクリティクスと呼ばれるものです。

00:00:11.617 --> 00:00:14.770 align:middle
コード上に良いプラクティスのルールを
走らせます。

00:00:15.710 --> 00:00:17.040 align:middle
より詳細に見ていきましょう。

00:00:17.300 --> 00:00:19.220 align:middle
クラスをブラウズするたびに

00:00:19.387 --> 00:00:22.770 align:middle
ポップアップが表示されるのを
見たと思います。

00:00:22.937 --> 00:00:25.300 align:middle
実際に起こっていることは

00:00:25.467 --> 00:00:27.770 align:middle
ブラウズしている間
自動的に

00:00:27.937 --> 00:00:32.010 align:middle
（CubHelix を選んでみましょう）

00:00:32.177 --> 00:00:35.740 align:middle
この小さな領域に

00:00:37.020 --> 00:00:40.390 align:middle
表示されています。
そしてパッケージの場合にも。

00:00:43.110 --> 00:00:46.350 align:middle
説得力のある例を見つけるのは

00:00:46.517 --> 00:00:49.240 align:middle
少し難しいのですが
例題のコードを使って

00:00:49.407 --> 00:00:52.090 align:middle
汚いコードをその中に書いくと
表示されます。

00:00:52.280 --> 00:00:57.080 align:middle
Counter に行って

00:00:57.247 --> 00:01:00.480 align:middle
例えばデバッグ用のコードを残すと

00:01:02.350 --> 00:01:04.730 align:middle
システムはここで自動的に 2 つのことを
伝えてきます。

00:01:05.180 --> 00:01:09.310 align:middle
デバッグ用のコードが

00:01:09.477 --> 00:01:12.200 align:middle
メソッドに残されていると言っています。
どうしましょうか？

00:01:12.940 --> 00:01:14.540 align:middle
このルールがどうして出てきたかはわかります。

00:01:14.707 --> 00:01:16.680 align:middle
クリックすると

00:01:16.847 --> 00:01:19.800 align:middle
ブレークポイントを使うように言ってきます。
プロダクションコードではあまり賢いやり方ではありません。

00:01:21.280 --> 00:01:25.260 align:middle
自動的に解決できると言っています。

00:01:25.427 --> 00:01:26.340 align:middle
では試してみましょう。

00:01:27.300 --> 00:01:28.530 align:middle
これを消すように言ってきます。

00:01:28.720 --> 00:01:30.240 align:middle
はい、これで良いです。

00:01:30.950 --> 00:01:32.710 align:middle
そしてその結果
もう問題はありません。

00:01:34.540 --> 00:01:36.700 align:middle
プログラミングしている時に

00:01:36.867 --> 00:01:40.100 align:middle
こうしているのを今までも見てきました。
システムが反応してくれます。

00:01:40.460 --> 00:01:43.350 align:middle
さて、もう 1 つのやり方があります。

00:01:43.517 --> 00:01:48.250 align:middle
対象のパッケージを
クリティックブラウザで開きます。

00:01:48.417 --> 00:01:49.460 align:middle
今回はとても小さなパッケージです。

00:01:50.960 --> 00:01:55.460 align:middle
間違えてみて、どうなるか見てみましょう。

00:01:55.627 --> 00:01:56.440 align:middle
ここで self halt とするか

00:02:01.020 --> 00:02:02.790 align:middle
あるいは別のメソッドで

00:02:03.460 --> 00:02:06.910 align:middle
increment3 メソッドを作って

00:02:07.077 --> 00:02:08.790 align:middle
存在しないメソッドを使ってみます。

00:02:08.957 --> 00:02:11.740 align:middle
foofoo としましょう。

00:02:13.110 --> 00:02:16.010 align:middle
さて、ここで赤なわけですが

00:02:16.177 --> 00:02:18.900 align:middle
頭が熱でぼーっとしたりして
気付かなかったことにしましょう。

00:02:20.590 --> 00:02:24.360 align:middle
コードをクリティックブラウザで開くと

00:02:27.380 --> 00:02:31.250 align:middle
クリティックブラウザは

00:02:31.417 --> 00:02:32.770 align:middle
一連のルールを表示します。

00:02:33.720 --> 00:02:38.620 align:middle
実際、沢山のルールが

00:02:38.787 --> 00:02:42.790 align:middle
説明付きで示されています。
もしこのコードがあったら

00:02:42.957 --> 00:02:46.200 align:middle
こうしたほうが良い

00:02:46.367 --> 00:02:47.450 align:middle
もし内部でアロケーションがあれば。

00:02:47.617 --> 00:02:49.620 align:middle
ルールには数種類あります。

00:02:50.040 --> 00:02:52.160 align:middle
最適化に関係したルールや

00:02:52.327 --> 00:02:54.300 align:middle
潜在的なバグを特定するためのルールや

00:02:54.650 --> 00:02:56.600 align:middle
バグを特定するルールがあります。

00:02:56.860 --> 00:02:59.200 align:middle
ここへ行くと、コードを見ることができます。

00:02:59.367 --> 00:03:03.050 align:middle
元の定義を見ることや

00:03:03.217 --> 00:03:05.810 align:middle
変換することができます。

00:03:08.180 --> 00:03:12.160 align:middle
そして警告が消えます。

00:03:13.610 --> 00:03:15.400 align:middle
ここで大切なことは

00:03:15.567 --> 00:03:17.920 align:middle
全てのルールは経験則だということです。

00:03:18.087 --> 00:03:19.700 align:middle
つまり、意図的にあまり良くないことを
することもあります。

00:03:19.867 --> 00:03:22.840 align:middle
システム中でわかった上で

00:03:23.007 --> 00:03:24.200 align:middle
そうせざるを得ないこともあります。

00:03:24.367 --> 00:03:28.840 align:middle
これは偽陽性（実際には問題ではない指摘）
だと指定することもできます。

00:03:29.007 --> 00:03:33.660 align:middle
ここに foofoo メッセージがありますが

00:03:33.827 --> 00:03:36.660 align:middle
わかった上でそのままにしたいとします。

00:03:36.827 --> 00:03:40.240 align:middle
すると、このルールはこのメソッドには
正しくないと指定することができます。

00:03:41.850 --> 00:03:44.850 align:middle
そう指定します。

00:03:45.017 --> 00:03:46.510 align:middle
ここでグレーになりました。

00:03:46.677 --> 00:03:49.690 align:middle
これは後になって

00:03:49.857 --> 00:03:51.310 align:middle
このルールの言う通りかもしれないということで

00:03:51.477 --> 00:03:53.490 align:middle
後でまた見たほうがいい

00:03:57.250 --> 00:03:57.883 align:middle
ということです。

00:03:58.410 --> 00:04:00.640 align:middle
指摘を保存しておくことができます。

00:04:00.807 --> 00:04:04.910 align:middle
つまりルールの結果や

00:04:05.077 --> 00:04:06.670 align:middle
偽陽性といったものを保存します。

00:04:07.290 --> 00:04:08.850 align:middle
もし偽陽性になるようなものを書いた時

00:04:09.017 --> 00:04:11.000 align:middle
ルールを走らせるたびに何度も何度も

00:04:11.167 --> 00:04:12.680 align:middle
ずっとシステムが繰り返し
指摘してほしくはありません。

00:04:13.400 --> 00:04:18.230 align:middle
指摘を保存すると、クリティックブラウザは
それらの指摘をマニフェストに入れます。

00:04:18.470 --> 00:04:21.690 align:middle
見てみましょう。ここにマニフェストがあります。

00:04:21.857 --> 00:04:23.920 align:middle
システムに関連つけられ
バージョンが付けられています。

00:04:24.087 --> 00:04:26.410 align:middle
内部的にどうなっているかを
見る必要はありません。

00:04:26.577 --> 00:04:29.400 align:middle
マニフェストは色々なことをコード化しますが
それはどうでもよいです。

00:04:29.700 --> 00:04:32.590 align:middle
マニフェストに触らないでください。
コードクリティクスが次回実行される時に

00:04:32.757 --> 00:04:34.120 align:middle
使われるものです。

00:04:34.287 --> 00:04:36.260 align:middle
そしてマニフェストはパッケージごとにあります。

00:04:36.700 --> 00:04:38.100 align:middle
コードにバージョンをつけると

00:04:38.267 --> 00:04:39.920 align:middle
マニフェストにもバージョンをつけます。

00:04:40.087 --> 00:04:42.880 align:middle
そしてコードクリティクスを再び走らせると

00:04:43.047 --> 00:04:44.890 align:middle
自動的に偽陽性やメタコメントが

00:04:45.057 --> 00:04:47.040 align:middle
取り入れられます。

00:04:47.207 --> 00:04:49.510 align:middle
これらの品質ルールについて
本当に大切なことは

00:04:49.677 --> 00:04:53.390 align:middle
Pharo はそれらのルールを
開発プロセスに統合しているという点です。

00:04:53.557 --> 00:04:56.010 align:middle
プロジェクトを

00:04:56.177 --> 00:04:58.570 align:middle
コミットするたびに

00:04:58.737 --> 00:05:01.170 align:middle
Jenkins サーバーがそれをロードして

00:05:01.337 --> 00:05:04.000 align:middle
それらの品質コードを自動的にチェックして

00:05:04.167 --> 00:05:05.920 align:middle
プログラムが本当に品質ルールに
従っているかを確認します。

