2月27日つまり先週の日曜日に、修正のリクエストも届いていることでもあるし、久々にりすと亭のマイナーバージョンアップを行うことにしました。
これは、早ければその日のうちに完了できるはずでした。遅くとも、翌日の月曜日には公開されているはずでした。
しかし、それから1週間を過ぎた今も、そのバージョンは公開にこぎ着けていません。
それどころか、予定されてもいない新機能が追加されています。
いったい、これはどうしたことなのか。
その理由について少しだけ書いておきます。
XHTMLとしての正しさの検証 §
現行バージョンのりすと亭の簡易httpd機能で出力する(X)HTMLは、実用上はほぼ十分と言えるものの、厳密には正しい(X)HTMLになっていませんでした。特にXML宣言や文書型宣言が付いていないという致命的な問題があります。
これを修正することが、前から課題としてありました。
基本的には、それほど変なコードを生成していないはずなので、XML宣言と文書型宣言を付けてからAnother HTML-Lintなどを通し、問題点を少しだけ直せば完了できると考えていました。
マイナー バージョンアップに必須の作業完了後、少々の余裕があったので、これに取り組むことにしました。
それほど大変な作業ではない、という甘い予測によって。
TDDライクな自動テストへの渇望 §
Another HTML-Lintによる検査対象となるページは多数に上ります。
コードを修正しつつ、それら全て逐一検査し、問題のあるページをより分けるのは非常に手間が掛かります。というよりも、現実的に不完全なテストですら、それを行う手間と時間はありません。
自動テストを準備する必要がある、というのが結論でした。
あらかじめ指定されたファイル群にAnother HTML-Lintを適用し、100点を取れなかったファイルをリストする、というようなバッチを作成することにしました。
ところが、実用的な意味でのこれを実現するには、予想もしなかったいくつものハードルが出現し、ただこれだけのことに数日を費やしてしまいました。
これは興味深いトピックなので、企画書を書いて出版社に売り込もうかと考えています。
予想外の低点数、予想外の落第ファイル数 §
実際に、自動テストを流してみると、予想外の問題の多さが浮上しました。
それには2つの理由があります。
1つは、りすと亭というソフトの歴史の長さから、遠い昔の常識(あるいは誤った常識)に沿ったHTMLコードがまだ含まれていたと言うことです。静的な部分は全てW3C Tidyによって正しいXHTMLに修正済みだと思っていましたが、これの修正漏れも発見されました。
もう1つの理由は、私が意識したこともなかった減点項目の存在です。これまで入力フォームのあるHTMLコードをあまり扱ってこなかったころから、見落としているものがありました。たとえば、textarea要素の初期値が空文字列であってはならない、などという推奨事項は、りすと亭開発時には思いもよらないものでした。
予想外に手間の掛かる対処 §
これらの問題の中には、解決にも大きな時間を食うものがいくつもありました。
たとえば、textarea要素の初期値が空文字列であってはならない、という問題は、新スレッド作成のユーザーインターフェースに直接影響します。つまり、初期状態で本文の入力フィールドを空にしておくと、この問題に引っかかるということなのです。
では、初期状態にどんな文字列を入れるのか。
「(ここに本文を入力して下さい)」などという文字列を入れておき、利用者にはこれを削除してから本文を書き込んでもらうという手もありますが、削除する手間が馬鹿馬鹿しいものになります。それは本来不要の手間です。たまにしか使わない機能ならともかく、新スレッドの作成でそれは要求したくありません。
では、確実に本文の一部になり、削除しないで済む文字列を入れたらどうか。
具体的に、その条件に当てはまるものは何か。
考えてみると、検討事項になっていた、署名の自動追加という機能がそれに当たるのではないか、と気付きました。
つまり、メンバー登録時に登録した電子メールアドレスと名前を、自動的に文章末尾に付け加えるのです。これで、新スレッド作成であっても、初期状態の本文フィールドは空になりません。
更に、URLやコメントという情報もメンバー情報には含まれているので、もし入力されている場合はそれも含めるようにしました。
めでたしめでたし。
しかし、作業量としてはそこそこ大きな作業となり、そこそこの時間を要しました。
そのような項目がいくつかあり、作業時間は肥大化して行きました。
もちろん、クリアすべき目標は、単に「Another HTML-Lintのパス」というシンプルなものに過ぎません。それをスマートにクリアするために、かなり大規模なソースコードへの取り組むが要求されてしまったわけです。
しかし終わりは見えた §
他の仕事へのしわ寄せも大きいので、そろそろこれも終わりにしなければなりません。
しかし、ようやく終わりは見えてきました。
数十ファイルもあった問題点は、残すところあと4ファイルのみ。
終わりが見えてきました。
りすと亭の次バージョンのリリースはそう遠い話ではないはずです。乞うご期待。