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