Web開発者のための大規模サービス技術入門

「Web開発者のための大規模サービス技術入門」を読了した。
先に書いてしまうと、これは機械学習テキストマイニングをやっている大学生には、この本はとても参考になるのではないかと思った。。もし僕が大学生のときにこの本を読んでいたら、その大変さにちょっと絶望しながらも、けっこうわくわくしたと思う。

はじめに書いてあるけど、これははてなのインターシップの資料をベースに書籍化されたもの。目次はこんな感じ。

​第1回 大規模Webサービスの開発オリエンテーション―全体像を把握する​​
​第2回 大規模データ処理入門 ―メモリとディスク,Webアプリケーションと負荷​​
​第3回 OSのキャッシュと分散 ―大きなデータを効率良く扱うしくみ​​
​第4回 DBのスケールアウト戦略 ―分散を考慮したMySQLの運用​​
​第5回 大規模データ処理[実践]入門 ―アプリケーション開発の勘所​​
​第6回 [課題]圧縮プログラミング ―データサイズ,I/O高速化との関係を意識する​​
​第7回 アルゴリズムの実用化 ―身近な例で見る理論・研究の実践投入​​
​第8回 [課題]はてなキーワードリンクの実装 ―応用への道筋を知る​​
​第9回 全文検索技術に挑戦 ―大規模データ処理のノウハウ満載​​
​第10回 [課題]全文検索エンジンの作成 ―基本部分,作り込み,速度と精度の追求​​
​第11回 大規模データ処理を支えるサーバ/インフラ入門 ―Webサービスのバックエンド​​
​第12回 スケーラビリティの確保に必要な考え方 ―規模の増大とシステムの拡張​​
​第13回 冗長性の確保,システムの安定化 ―ほぼ100%の稼動率を実現するしくみ​​
​第14回 効率向上作戦 ―ハードウェアのリソースの使用率を上げる​​
​第15回 Webサービスとネットワーク ―ネットワークで見えてくるサービスの成長​​
​特別編 いまどきのWebサービス構築に求められる実践技術 ―大規模サービスに対応するために​​

読み終えて、これは大規模サービス技術入門ではなく、はてなの基盤技術入門だと感じた。
最初のほうと、最後のほうの内容は、「サーバ/インフラを支える技術」(読んだ時のエントリはこちら サーバ/インフラを支える技術 - techlog)を読んだほうが詳しくていい。インフラ周りの話は、この本よりも充実している。もちろんこの本にしか書いていないこともあるから、合わせて読むとなお良い。
中盤では、機械学習テキストマイニングの領域の話題が続いている。そこまで高度な内容ではないので、背景知識があまりなくても読み進めることができる。
このあたりを読むと、機械学習テキストマイニングが、実際にどう使われているかわかる。はてなに特化しているぶん、とても実地的で具体的な内容になっていて、そこがとても面白い。


僕が大学生だったのは10年前なので、もう一昔前になる。そのころにはもうGoogleがあって、いまさら検索の基礎を勉強しても、どうにもならないのではないかと思った。でもあの先にはこんな面白い世界が広がっていたのかと、いまになってちょっと驚く。
機械学習テキストマイニングの最初の一歩のハードルは、けっこう低くなっている。いろいろな言語に対応したライブラリが充実している。その分研究としてのハードルは上がっていると思うけど ^^;

以前、Luceneのライブラリを使って、簡単なスペルミス修正プログラムを作った。Javaでも150行くらいでできた。

こういうことが比較的簡単にできるし、本書を含め日本語の書籍もいろいろある。それでちょっと遊んでみるぶんには、すごくいい時代だと思う。