導入したチェッカーがずっとグリーンのままなら、可能性は2つしかありません。本当に何も壊れていないか、そもそも何も見ていないかです。

画面の上では、この2つはまったく同じに見えます。

気づいたきっかけ

そのプログラムは、デザイントークンを使わずに16進数のカラーコードが直書きされていないかを調べるものでした。書いた当日に走らせてグリーン。その後も毎日グリーン。2週間後、誰かが明らかな直書きのカラーコードを手作業で見つけ、なぜ引っかからなかったのかを調べました。マッチに使う正規表現の文字クラスが1つ足りず、スキャン対象が空のリストになっていたのです。毎日きちんと0個のファイルを調べ、「問題なし」と報告していました。

失ったのは2週間という時間ではありません。その間、この件は誰かが見ていると思い込み、自分の目で確かめるのをやめていたことです。

直すべきは正規表現ではない

正規表現を直しても、解決するのは今回の1件だけです。本当の対策は、すべてのチェッカーに、それを失敗させる入力を添えることです。

いま私たちのバリデーターにはすべて --selftest があります。わざと壊したダミーデータを流し込み、チェッカーがエラーを出さなければ、--selftest 自身が終了コード1で終わります。

これでようやく、グリーンに意味が生まれました。今のグリーンは「見た。そして、見えることも確認済みだ」と言っています。

プログラムに限った話ではない

同じ構図は、ほかの場所にも現れます。

「誤用例」のないデザインガイドラインは、提案の束にすぎません。手元の1枚が違反なのかどうか、誰にも判断できないからです。誰も一度もゼロからなぞったことのない引き継ぎ資料は、よく書けた回顧録にすぎません。

⛔ 基準は単純です。それに「だめ」と言わせる例を示せるかどうか。示せないなら、それは何も守っていません。