このページの本文へ

2008年06月20日更新

楽天×まつもとゆきひろで世界はどう変わる? 中編

文●塩田紳二

fairyの出発点はGoogleの「MapReduce」技術

―――次に、fairyについてはどのような状況なのですか。

森:fairyには議論しなければならないことがたくさんあります。かなり大変です。私たちとしては、統計処理やクラスタ分析(データマイニングの手法のひとつ)など典型的な問題を直感的に分かりやすく記述しながら分散していく、その記述方法を整理している段階です。

まつもとゆきひろ氏
プログラミング言語「Ruby」開発者まつもとゆきひろ氏(43歳)
(株)ネットワーク応用通信研究所のフェローとして勤務し、楽天技術研究所のフェローも兼任する

まつもと:fairyの出発点には、Googleが提案した「MapReduce」があります。これはGoogleが2003年に提示し、実際に内部でも使っている技術です。Mapとは、データの並びを処理して、それを別のものに置き換えていく(単純化していく)ことで、ReduceとはMapしたものを集約していくことです。

―――もう少し具体的に教えてください。

まつもと:GoogleはMapReduceの使用例として、単語がそれぞれ何回登場するかを数える処理を挙げています。Googleには世界中から集めたWebページがり、そのデータ量は膨大なものになります。その中で単語がいくつあるかを数えるとき、複数のデータセンターに分散してある情報に対して、多数のノードを使って、並列に単語とその数のペアを作るように命じます。すると、多数の単語と数のペアができます。この段階では見つけた単語から順にペアを作っているので、同じ単語に対するペアが複数できています。

 次の段階で、作られた単語と数のペアを見て、同じ単語についてのペアならば数を合計し、ペアを集約していきます。例えば、「まつもと 1」というペアが3つあれば、「まつとも 3」にするわけです。これを繰り返していくと、最終的に全部のWebページを通じて各単語の登場回数が分かります。

 同様のことを一般的なプログラミングモデルだと、データを上から順に処理していくことになります。MapReduceは、割り当てられた範囲で単語数を出すという処理と、それらを集約する処理を定義することで、コントローラは大量のデータに対して、分散して処理させるように作業を割り当てることができます。

 楽天で行なっている分散処理の応用分野について調べたところ、統計処理や画像の変形、特徴量の抽出といったことが挙がりました。これらはMapReduceには、なじみにくい処理です。それで、もう少し違うモデルでできないか、ここ1年ぐらい議論し続けていました。最近ようやく、どうすればいいのかが見え始めてきたところです。

前のページへ戻る 1 2 3 4
キャリア連載バックナンバー
キャリア・ピックアップ

記事一覧へ >>

採用を勝ち取る転職必勝マニュアルバナー

おすすめ連載

組み込み系エンジニア特集

今さら聞けないIT英語

エンジニアライフ

資格試験対策

プロマネ・スキル

ビジネススキル

独立起業事例集

キャリア・コーナー紹介