plaggerとMapReduce

本屋で日経ソフトウェアという雑誌を立ち読みしてたら、結城浩さんの連載でplaggerについて語っていた。なんとなくplaggerってperlの人たちのための話なんでしょ?と勝手に思ってて、ちょっと敬遠していたんだけど、結城さんの記事を読む限り、plaggerってMapReduceと同じだなと思った。それで俄然興味津々。
MapReduceに関しては、こちらの記事がすばらしいので、私が何も言う必要はないと思うけど、とても簡単に言うと、Googleが提案した、大量の分散したデータそれぞれにある処理を加え、その後に(必要に応じてフィルタリングしてから)それらを一つにまとめる、というプログラミングモデルの事(だと私は理解している)。こういったモデルに基づいてプログラムを書いても結構色々な事ができるみたいで、現にGoogleではMapReduceの論文が書かれた時点でMapReduceライブラリを使用しているプログラムが900以上あるとのこと。
でも実は、以前の日記で参照している論文を読めばわかると思うけど、MapReduceという手法はスケルトン並列プログラミングという、並列処理でよく使われる処理を抽象化してそれらを組み合わせる事で並列処理プログラムを簡単に作りましょう、という研究で以前から提案(というか既にあるものに名前を付けた?)されていたもの(の一部)と同じもの。*1
つまり、これまでもplaggerMapReduceで使われている考え方は(非常に一部ではだけど)存在した。でもやっぱり、MapReduceplaggerが、Google宮川達彦さんが、すごいのは、id:jkondoこのエントリーで言っているように、スケルトンの知識がない人にでも実際に使えるものを作ったからで、特にコンピュータの世界では、使えるものを作る事も滅茶苦茶大切なんだよなぁ、と当たり前の事を再認識した。

P.S.
結城浩さんのブログでも同じ事いってるじゃん。。

*1:ちなみにmapとreduceという処理は、関数型言語のコミュニティではリストに対する関数(Haskellではmap関数とfold関数)として、よく使われる