Wakhok マルレク・サブセミナー「MapReduceとSawzall」

忙しくて参加できなくなった同僚にチケットを譲ってもらって、稚内北星学園大学東京サテライト校で行われたセミナーに参加してきました。テーマはGoogleの分散処理技術、「MapReduceとSawzall」。まぁSawzallは時間が足りなくて省略されちゃったんですけど、おかげさまでMapReduceの方はなんとなく分かった気がします。時間ができたらdRb使ってものすごーく単純化したものを実装してみようかと。なのでMapReduceそのものについてはその時にでもまとめます。


で、Googleとか関係ないんだけど今日ちょっと思ったこと。セミナーで分散向きの処理とそうじゃない処理があるよねって話が出て、分散向きな処理の特徴として丸山先生は3点あげられました。

  1. 分散されるのが全て同じ処理
  2. ワーカー間でのやり取り不要
  3. 結果の同一性の保証(順番や分散方法に依らない)

ふと思ったのが、この3点がまさにシステム開発に人月計算が通用しない理由なんじゃないかなということ。同じプロジェクトに所属するプログラマ同士が全く同じものを作ることはまずないし、他の人の担当部分とインターフェースをすり合わせずに作業を進めるなんて馬鹿げてるし、システムは分割方法イコール設計と行っても過言じゃなくて結果の同一性どころか仕様が実装中に変わる。どう見ても分散向きじゃありません。


逆にベルトコンベアの上を流れてくるパーツを組み立てるような作業は、ラインを増やせば増やした分、そこで行われる作業は同じで、作業者同士のやりとりがなくても作業は進むし、各人が自分の作業をこなせば出来上がりが一定の品質を持つ製品であることはほぼ保証される。まさに分散作業向き。


この辺りの「分散可能性とプロジェクトの管理方法」って方向でいろいろ考えると面白いかなと思うんですが、楽しかった懇親会の名残で頭が回らないので今日はもう寝ます。