2005年03月07日
川俣晶の縁側ソフトウェアりすと亭開発日誌total 2362 count

マイナー バージョンアップ遅延の告白 「何故に、新機能とソースコードの大規模改変が生じたのか!?」

Written By: 川俣 晶連絡先

 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ファイルのみ。

 終わりが見えてきました。

 りすと亭の次バージョンのリリースはそう遠い話ではないはずです。乞うご期待。

Facebook

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20050307023309
サイトの表紙【りすと亭開発日誌】の表紙【りすと亭開発日誌】のコンテンツ全リスト 【りすと亭開発日誌】の入手全リスト 【りすと亭開発日誌】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.