oldwaveの日記: Webアプリケーションフレームワーク、アジャイル、設計と仕様化
技評から出ていた「LLフレームワークBOOKS#01 TurboGears×Python」を読んだのだが、何というか拍子抜けしつつも、ここしばらくずっと感じていたことが具体化した思いがした。
まず、この本は悪くない本だと思う。Pythonも、僕は好まないが、悪い言語ではない。TurboGearsも良くできたWebアプリケーションフレームワークだと感じた(まだ実際には使っていないので、細かい使用感はわからない)。
ただ、Railsにインスパイアされて作られたWebアプリケーションフレームワークは、どれも大同小異だ。個々に出来不出来や得手不得手はもちろんあるんだが、言語の壁を越えて習得すべきものはない。RubyistならRailsを使えばいいし、Python使いならDjangoかTurboGears、PHPerならSymfonyかCakePHPを使えばいい。わざわざ慣れない言語を学ぶほどのアドバンテージはない、と、ここは言いきってしまおう。
ただ、これらのWebアプリケーションフレームワークは「アジャイルな開発」をサポートしているのだが、アジャイル陣営の指導者たちが常々叫んでいるように、アジャイルな開発においても設計や仕様の文書化は依然として重要なのだ。ともするとアジャイルな開発のチュートリアルは顧客の言葉を聞きながら、リアルタイムっぽく、インクリメンタルに開発しているような印象を受ける。いや、それはそれで間違いではないんだが、それはそれとして仕様書を作る作業は別途、できれば同時進行で進めるべきだし、顧客の決断は記録をとるべきだし、コーディングする前に仕様レベルで矛盾がないかどうか、最適な設計はどのようなものか、確認しないといけない(あるいはコーディングを通じて探索的に仕様の矛盾と最適な結果を追求しないといけない)。
それこそ、ペアプログラミングしているプログラマーと、顧客の言葉を仕様書に書き起こすライターと、両者の成果物をチェックするアーキテクトが必要なんじゃないか。コストダウンの圧力からアジャイルを選択するとまず失敗する。アジャイルは「真の品質」を追求する方法論としてとらえないとね。
Webアプリケーションフレームワーク、アジャイル、設計と仕様化 More ログイン