技術評論社より献本御礼。
書評がすっかり遅れたのには、自分の本で忙しかったという以外にも理由がある。
あまりに「自分事」に重ねて読んだから、だ。
本書「Googleを支える技術」は、外から見てわかる限り書いた「Googleの全てがわかる本」に対して、中から外に出された(Googleの規模からいけば)ごくわずかな論文から、その内部がどうなっているかを可能なかぎり推測した一冊。なお、本書は「WEB+DB PRESS plusシリーズ」でもあり、「小飼弾のアルファギークに逢ってきた」もこのシリーズ中の一冊であるが、本書はA5横書きであるのに対し拙著はB6縦書きである。本屋さんがどう並べてくれるのかちょっと心配ではある。
目次 - 書籍案内:Googleを支える技術 ……巨大システムの内側の世界|gihyo.jp … 技術評論社より- 第1章 Googleの誕生
- 1.1 よりよい検索結果を得るために
- 1.2 検索エンジンのしくみ
- 1.3 クローリング -- 世界中のWebページを収集する
- 1.4 インデックス生成 -- 検索用データベースを作り上げる
- 1.5 検索サーバ -- 求める情報を即座に見つける
- 1.6 まとめ
- 第2章 Googleの大規模化
- 2.1 ネットを調べつくす巨大システム
- 2.2 世界に広がる検索クラスタ
- 2.3 まとめ
- 第3章 Googleの分散ストレージ
- 3.1 Google File System -- 分散ファイルシステム
- 3.2 Bigtable -- 分散ストレージシステム
- 3.3 Chubby -- 分散ロックサービス
- 3.4 まとめ
- 第4章 Googleの分散データ処理
- 4.1 MapReduce -- 分散処理のための基盤技術
- 4.2 Sawzall -- 手軽に分散処理するための専用言語
- 4.3 まとめ
- 第5章 Googleの運用コスト
- 5.1 何にいくら必要なのか
- 5.2 CPUは何に電気を使うのか
- 5.3 PCの消費電力を削減する
- 5.4 データセンターの電力配備
- 5.5 ハードディスクはいつ壊れるか
- 5.6 全米に広がる巨大データセンター
- 5.7 まとめ
- 第6章 Googleの開発体制
- 6.1 自主性が重視されたソフトウェア開発
- 6.2 既存ソフトウェアも独自にカスタマイズ
- 6.3 テストは可能な限り自動化する
- 6.4 まとめ
- 参考論文リスト([を]より拝借)
- The Anatomy of Large-Scale Hypertextual Web Search Engine (1998)
- Web Search for a Planet : The Google Cluster Architecture(2003)
- The Google File System (2003)
- Bigtable : A Distributed Storage System for Structured Data (2006)
- The Chubby lock service for loosely-coupled distributed system (2006)
- Paxos Made Live - An Engineering Perspective (2007)
- MapReduce : Simplified Data Processing on Large Cluster (2004)
- Interpreting the Data : Parallel Analysis with Sawzall (2005)
- The Price of Performance : An Economic Case for Chip Multiprocessing (2005)
- Power Provisioning for Warehouse-sized Computer (2007)
- Failure Trends in a Large Disk Drive Population (2007)
本書がきわめて「自分事」だったのは、本書の扱う技術のスコープが、Webサービスを提供する会社に必要な全ての階層に触れているためだ。これ、CTO時代の私の仕事とあまりにかぶっている。特に第5章は、私自身データセンターを作ったことがあるので、「もし俺だったらこうする」「いや、この手もある」といった具合で、文字通り一人ブレインストーム状態になっていた。
そのGoogleは、その規模を考えればそれほどオープンな会社ではない。「人材のブラックホール」というあだ名はだてではない。
序文 by まつもとゆきひろGoogleはオープンソースソフトウェアを大量に利用し、オープンソースソフトウェア開発を支援し、また自らも数多くのオープンソースソフトウェアを公開しているにもかかわらず、その業務の中心的なテクノロジーはいくつかの論文で断片的な概要が示されるだけで、全容を把握するのは困難です。
その断片的な概要から、Googleを「本内再構築」したのが、本書である。
素晴らしいのは、著者の演繹力。よくこれほどわずかな論文を、ここまで展開したものだと感心することしきり。そしてその演繹の結果は、「私でもそうする」というものばかり。このことは本書の信頼性のささやかな傍証となるのではないだろうか。
もちろん、著者も私もGoogleの「中の人」ではない。本書の描くGoogleの解剖図と実際のそれとが一致するということはないだろう。せいぜい我々が知っているのは、ターヘル・アナトミア以前の解剖学に過ぎないのかも知れない。「五臓六腑」といっても「腑」なんてないかも知れないし、「臓」はもっと多いかも知れない。
それでも、「こういうサービスを提供するのであれば、こういうものが必要で、それをこう組み合わせる」ということには一種の「生物学的必然性」がある。それに照らし合わせて、私は本書のGoogle解剖図に迫真のリアリティを感じたことを禁じ得なかった。
巨大とはいえ、Googleも人が作ったものに過ぎない。作ろうと思えば他社にだって作れなくはないはずだし、実際本書が示した大規模コンピューティングサービス、最近流行の言葉でいえば「クラウドコンピューティング」の需要があるのはGoogleに限った話ではなく、それに関わっている人々は四六時中本書の内容のようなことを考えているのだということは、かつて四六時中それを考えていた私にもよくわかる。
それゆえ、本書はそれほど簡単な読み物ではない。可能な限り平易な日本語で書かれているし、それを補うための図版も実に多く、それでいて総ページ数300ページ弱に収まっている以上、私自身もっと読むのが楽な本かと思ったのだが、ところがどうして、読書会を開いてもおかしくないほどの密度である。
もしあなたがIT系の会社にこの春から勤めるのなら、春休みの一冊として最高である。かなりのギークでないと全てを読みこなすのはきついが、出来ればスーツも挑戦してほしい本でもあった。
それでも、本書はあくまで「外部の人間が考察した」Google解剖図だということは忘れないでいただきたい。「本書の記述と違うじゃないか」と言われても、それは著者の責任ではなくGoogleの責任である。今度は改めて「中の人による」Google公式解剖図を拝見したいものだ。
Dan the Man with too Many Layers to Deal with