Hatena::Groupangelos

Angelos in Action RSSフィード

Fork me on GitHub
 | 

2009-03-08

CatalystとRailsにみるフレームワークの設計思想

02:11 | CatalystとRailsにみるフレームワークの設計思想 - Angelos in Action を含むブックマーク はてなブックマーク - CatalystとRailsにみるフレームワークの設計思想 - Angelos in Action CatalystとRailsにみるフレームワークの設計思想 - Angelos in Action のブックマークコメント

Catalystの良かった点は、ありとあらゆる所を拡張できるように設計してあったことなんだろうと思っています。プラグインの方式に難があるというのはさておき、それは些細な点であって、一番多分上手くいかなかった点は、フレームワークとして適切なデフォルトセットを用意しなかった点なんだろうと思います。

これらの点を顧みると、フレームワークは、以下のような方針を持つべきなんだろうと思っています。

  • コアは小さく
  • プラガブルな拡張性を持つ
  • 適切なデフォルトを持つ
  • 全体として一貫性を持つ

ただ、Catalystをみればわかるように、なんでもプラガブルにするとプラグイン毎に違うスタイルの実装が登場し全体の一貫性がなくなり、ポリシーがまとまりにくいいう問題点があります。また、適切なデフォルが欠けていたために、どのプラグインを使うべきかなどを含めて情報が散乱してしまったことも問題でした。この適切なデフォルトという概念は、Railsなどを見るにつけ重要だなぁと思っています。

要するに、Catalystで上手くいっていない点は、

という点で、その他の点に付いてはとても上手くいっているように思います。

一方、Railsフレームワークに必要な全ての機能をて密に統合して一貫性をもたせ、その一貫性の持たせ方が非常に美しかったために成功したのだろうと思っています。これは全てを綺麗に統合しきったDHHのセンスならではのフレームワークだったとも言えるとも思います。ただ、密に結合したフレームワークは、用途を外れると使いにくくなり、よりよいモジュールがでてきたときに置き換えができないため、仕事で使うときには困る点もでてくるとはいえ、Railsがベストのフレームワークとはいいきれないのだと思います。

要するに、Railsで上手くいっていない点は、

  • コアは小さく
  • プラガブルな拡張性を持つ

の点で、その他の点についてはとても上手くいっているように思えます。

このようなレベルでのポリシー一つをとってみても、フレームワークにはそれぞれ良い点・悪い点があります。個人的には、PerlプラグインシステムはCPANモジュールの豊富さもあいまり、非常に強力で面白いのですが、同時に利用者視点での問題点も抱えていると思っています。

WAFの設計ポリシーというのは、こういうところを一つとってみても非常に難しく、コードを読むにつけ勉強になるなぁと思うのです。多くのフレームワークには、そのフレームワーク設計者の思想があり、そこにフレームワーク設計の面白みがあると思う今日この頃なのでした。

# WAFについていえば、WAFを構成する個々のデザイン一つとってみても、設計上の判断が数多くありとても面白いので、それはYokohama.pmなどで少し解説できたらなぁと思っています。

 |