「富豪プログラミング」もいいけど「けちな大富豪」になるべき
2009.11.27
Ruby on Railsに代表されるDRY(Don't Repeat Yourself)スタイルのフレームワークは、手っ取り早くサイトを立ち上げるのにはとても便利だ。特にRailsのActive Recordの様に、ランタイムにダイナミックにコードや設定ファイル(もしくはそれに相当するもの)を生成してくれる仕組みは、情報を一カ所のみに記述することによりミスを減らすという意味でもアジャイルな開発という意味でも重要である。
ただ、この手のフレームワークを使う場合に一つ気をつけなければならないのは、それがスケーラビリティの面で商用に耐えられるものか、という点である。特に、その手のダイナミックなコードや設定ファイルの生成(Railsの場合だとデータベース上のテーブルのスキーマに基づいたActive Recordクラスのダイナミックな生成)が、最初にサイトにアクセスが来た時に一度だけ実行されるものなのか、アクセスがあるたびに毎回ゼロから作り直しているものなのかで、リソースの使用量に大きな違いが出てくるので気をつけなければならない。
こんなことを言うと、「今は『富豪プログラミング』の時代だから、そんなことは気にしなくて良い」という人がいるが、そんな発想は大間違いである。
「富豪プログラミング」というコンセプトは「今やハードやネットワークコストがとても安くなったのだから、その手のものを贅沢に使って開発コストを安くすることを優先すべき」という発想。設定ファイルが不要なO/Rマッピングなどは良い例だが、だからと言って一度だけ実行すれば十分なマッピングをサイトにアクセスがあるたびに毎回する必要は全くない。
別の言い方をすれば、「富豪プログラマー」として、手間がかかるだけで人為的ミスを生じやすいO/Rマッピングのような単純作業をコンピュータに任せるのは多いに結構だが、そのマッピングがどのタイミングで何回行われてそのコストがどのくらいかを全く気にしないというのは単なる怠慢だ、という話である。
Rails関連の話を聞いていると、「プログラミングのしやすさ」にばかりに話題が集中していて、この手の実行効率の議論・検討・理解が十分になされていないように感じる(こことかを読むとRailsの抱えているジレンマが良く見える)。CPUの使用時間に応じて課金されるクラウドコンピューティングの時代になりつつある今、このあたりはウォーレン・バフェットを見習って、徹底的に「けちな大富豪」であるべきだと思うんだがいかがだろう。
はじめまして。
今年から社会人を始め、主にJavaでプログラミングしています。
近年からプログラミングした人の多くは「富豪」でしょうね。
メモリ使用率とか、実行効率があまり考えられていないように感じています。
僕もそんな一人なので、最近気をつけようと思ってきて、
OSの仕組みなどについて勉強中です。
「けちな大富豪」になるために、オススメの書籍などはありますか?
Posted by: tavi | 2009.12.19 at 02:46