自分で自分を説明する設定ファイル
このサーバーの .htaccess は 478 行ある。そのうち 98 行が規則。309 行が注釈だ。
何かをする一行につき、説明が三行。この比率は計画したものではない。規則を書くときの決まりが「理由を隣に置くこと」であれば、こうなる。
なぜ書き換え規則には段落が要るのか
サーバー設定の規則は、後から読まれることに対して異様に不親切だ。もともと簡潔で、名前がなく、一歩ずつ辿ることもできず、ちょうど正しいアドレスを要求しない限りその働きは目に見えない。半年後、「なぜこれがここにあるのか」への正直な答えはたいてい推測になる。
さらに悪いことに、推測を外すのは安上がりで、しかも安全に見える。誰も理解していない規則は、いつか片付けのときに誰かが消す規則であり、それが防いでいたものが戻ってくる。
だからここでは規則の一つ一つが、何のためのものか、どこで確かめられるかを持っている。注釈のうち十一行が日付を、十二行が実測値を持つ。この二つがあれば、後の読み手はその理由がまだ有効かどうかを判断できる。
注釈なしでは生き残れない三つ
スクリプトの拡張子に見えた言語コード。 置き忘れたソースファイルを塞ぐ規則が拡張子で照合していて、その一つが .pl — Perl だった。デザインの見本画像は 2900.pl.svg という名前で、この pl はポーランド語である。ポーランド語の見本だけがすべて 403 を返しはじめ、他の言語は問題なかった。注釈には今、pl を意図的に一覧から外していること、その理由、そして何日に何を測ったかが書いてある。それがなければ、次に一覧を整理する人が戻してしまう。
一つで足りそうなところに二つのスイッチ。 あらかじめ圧縮したファイルを、送り出すときにもう一度圧縮してはいけない。設定は no-gzip を置いていて、これはサーバーの二つある圧縮器のうち一つを止める。もう一方が出来上がったファイルを再び圧縮し、ヘッダーは依然として gzip だと名乗り、ブラウザーには読めない中身が届いた。注釈は no-gzip と no-brotli の両方がある理由を説明している。二つめを外すのは片付けに見えるからだ。
裏返しになっている拒否規則。 バックアップの写しを塞ぐ規則は、禁止する拡張子を並べない。ファイル名の中に、末尾にないソースの拡張子が含まれているかを問う — そうすることで、まだ誰も思いついていない名前まで捕まえる。注釈には、当たり前の方の版が取りこぼした五つの名前が、その応答コードとともに並んでいる。規則だけを読めば無駄に賢く見える。注釈を読めば、これしか効かないと分かる。
一般化するとこうなる
コードを言い直すだけの注釈に価値がないことは誰でも知っている。これらはそれではない。コードには書けないものを記録している。何が起きたか、何を測ったか、いつのことか、そして退けた代案は何だったか。
注釈を書く価値があるかどうかの試しは十分に単純だ。その上の行を、いきさつを知らない誰かが消したとしたら、何かが黙って壊れるだろうか。壊れるなら、いきさつを書く。壊れないなら、何も書かない。
三対一は目標ではない。ほとんどすべての行が、何か具体的なことが起きたせいで存在しているファイルで、その試しが出した結果である。