プロジェクトAardvark仕様書

From The Joel on Software Translation Project

Jump to: navigation, search

Joel Spolsky / 青木靖 訳
2005年8月17日 水曜


Copilot.comの最終版(この仕様書では「Aardvark」と呼んでいる)が2005年8月始めに製造工程に入ったので、この仕様書はもはや歴 史的な関心の対象でしかない。私はこれをJoel on Softwareの一部として公開することにした。Fog Creekで実際に書かれている仕様書のサンプルを見たがっている人たちがたくさんいたからだ。(私の「やさしい機能仕様」シリーズにも興味を持ってもらえるんじゃないかと思う。)

この仕様書には1つ大きな誤りがあった。私がこれを書いた時、SSLで使われているポート443が、プロキシサーバを使うように構成されたネットワークでも開いているものだと思っていた。ブラウザから「マン・イン・ザ・ミドル」攻撃と見えるので、プロキシサーバでSSLトラフィックを転送することはできないと信じ込んでいたのだ。これは誤りで、不正確で、間違っており、最初のベータ版をリリースした後になって、それがいかに間違っているかを私たちは知ることになった。そのため、Copilot 1.0の最終的な実装には、プロキシを検出する処理やいろいろなプロキシサーバに対応させるための、多くの予期しない作業が必要となった。1.0のリリースまでには作業のほとんどを終え、残りはリリース1.1に向けて仕上げをしているところだ。

とはいえ、プロキシのための余分の作業は、開発全体からすると10%ほどに過ぎない。仕様書を書く理由は、起こりうるあらゆる問題をあらかじめ解決することではない。仕様書を書くのは、前もって解決できる問題を可能な限り解決しておき、開発中に生じるサプライズを最小限にするためだ。私たちの場合、時期が来たら文字通り出て行って学校に戻らなければならないサマーインターンと仕事していたため、プロジェクトAardvarkを構築するのに必要な作業量を過小評価することは文字通り許されなかった。そうでなければが9月半ばまでデバッグにかかりきりになって、その頃には若者たちはビールを飲みながらポーカーをやっているだろうが、私の方は遊ぶこともできないというわけだ。

前もって物事について考え抜くことで、後になって深刻な問題に陥るのを避けられたことは何度もある。私が仕様書の最初のドラフトを書いたとき、フローチャートはもっと複雑で、(救助者と遭難者の)どちら側からでもプロセスを開始できるようにしていた。様々な理由によって、それがフローチャートをはなはだ複雑で入り組んだものにしていた。どちら側からでもプロセスを開始できるようにするために必要となる画面について検討していたとき、プロセスは救助者が開始する必要があるというようにすれば、劇的にシンプルになり、しかもAardvarkの有用性は変わらないことに気付いた。仕様書の上でその変更をするには1時間か2時間しかかからなかった。この変更をコード上でやっていたとしたら、スケジュールが何週間も延びていたことだろう。エクストリームプログラミングの支持者たちの嫌っている、前もって大きなデザインをすること(Big Design Up Front)の有効性を、私は口で言い表せないくらい強く信じている。私はBDUFによっていつも時間を節約でき、よりよい製品を作ることができた。XPの狂信者たちがどう言おうと、私はBDUFを採用していることを誇りに思っている。この点に関してXP狂信者たちは単に誤っており、そのことは私にとってまったく明らかなことなのだ。

開発プロセスの後の方で行った重要な変更で、この仕様書には反映されていないものがもう1つある。ユーザビリティテストの結果、アプリケーションに自分自身のファイルを削除させるというポリシーが人々を混乱させていることがわかった。これはユーザが期待することではないのだ。私たちは最終版で修正を加え、救助者が遭難者の実行ファイルを削除するかどうかチェックボックスで選択できるようにし、デフォルトでは削除されないようにした。そうすることで、コンピュータに詳しい救助者は安全でない実行ファイルが遭難者のコンピュータに残らないようにすることができる。この変更は2時間くらいでできたので、スケジュールには影響しなかった。

最後に、仕様書の真ん中あたりに、大きな「コーディング規約」の節があるが、これは率直に言って機能仕様書ではなく、別なドキュメントに入れるべきものだ。

それでも、私が今日この仕様書を読み返してみると、Aardvarkチームがこれらすべてを実装する上でいかにいい仕事をしたかは、驚くばかりだ。私は機能をカットしなければならなくなるだろうと真剣に考えていた。実際にはバージョン1に入れたいと思っていたもののすべてに加え、この仕様書ではバージョン2の機能としているものの一部さえリリースに含めることができた。

ここからProject Aardvarkの仕様書をPDF形式でダウンロードできる(約120KB、日本語版はこちら)。リンクを張りたい場合には、PDFファイルではなく、このページ(オリジナルのページ)にリンクを張るようにしてほしい。


(オリジナル: The Project Aardvark Spec)

戻る

Personal tools