プログラマでありたい

おっさんになっても、プログラマでありつづけたい

『Rubyによるクローラー開発技法』を書きました

 勉強会やスライドで紹介していましたが、Ruby×クローラーという題材で、『Rubyによるクローラー開発技法』という本を書かせて頂きました。RubyとEmacsの鬼であるるびきちさんとの共著です。


Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例

この本を書いた理由



 そもそものキッカケは、るびきちさんのエントリーにある通り、SBクリエイティブの編集者さんが、クローラーの作成経験のある人を探していて、私の書いた「オープンソースのRubyのWebクローラー"Anemone"を使ってみる」を読んで打診してくださったというのが始まりです。
 私自身も、Webからデータを収集して分析するということは、趣味として長年やってきました。一方で、本業の方でクローラーというものを作ったことはなく、せいぜい業務効率化でデータ取得をサポートするスクリプトを作る程度です。もっと言えば、Webサイトの運用で、質の悪いクローラーと戦うことの方が多かったです。そんなこともあり、クローラーというある種グレーゾーンに入りやすいものを題材とするので、書いても良いのかという悩みました。また、そもそもクローラーの本の需要は、ニッチな上に寿命が短いのではという懸念もありました。
 いろいろ考えることはありましたが、クローラーやスクレイピングの技術を正しく使えば有用なことは間違いありません。そこで、私なりのクローラーというものを伝えられればと思い挑戦してみました。

本の内容



 6章構成になっています。

  • 1章 10分クローラー作成
  • 2章 クローラー作成の基礎
  • 3章 収集したデータを分析する
  • 4章 高度な利用法
  • 5章 目的別クローラーの作成
  • 6章 クローラーの運用

 2&3章で、データの収集から解析まで一通り取り扱っています。nokogiri&anemoneやxpathといった基本的なライブラリの使い方から、軽く正規表現や形態素解析・自然言語処理の話をしています。4章の部分は、クローラーを拡張していくにはどうするかという観点で書いています。そして、5章は目的別のクローラーということで、実際のサイトを対象にどのようにデータをとってくるのかを具体的に書いています。おなじみの株価や新聞からの情報収集や、iTunes StoreやGoogle Playからのアプリランキング取得など20以上のトピックスがあります。最後の6章は、主にサーバサイドで動かすにはという話です。この辺りは、AWSの各種サービス(SNS,SQS)との連携などにも触れています。

 全般的には、クローラーを初めて作る人を意識して書いています。クローラーとかスクレイピングは、超絶テクニックが有るわけではなく、どちらかと言えば泥臭い作業の連続です。その辺りを、どのように考えながら作るのかを書いたつもりです。

まとめというか感想



 本を書くということは初めての経験でした。想像以上の大変さで、改めて執筆者の凄さというのを認識できました。また、本の冒頭に家族への感謝の気持ちが書かれていることが多く、今までいったい何なんだろうと思っていました。自分で書いてみて初めて解ったのですが、家族の協力がなければ執筆作業はとてもじゃないですが出来ないです。(平日の晩や土日が潰れるので、家事や子育てなどの負担が重くなる)本当に感謝の気持ちで一杯です。
文系上がりのエンジニアとして何者でもなかった自分が、何かには成れたように思えます。

See Also:
RubyでWebスクレイピングの話をしてきました。第1回Webスクレイピング勉強会@東京
Ruby製の構文解析ツール、Nokogiriの使い方 with Xpath
あらためてRuby製のクローラー、"anemone"を調べてみた
オープンソースのRubyのWebクローラー"Anemone"を使ってみる
開発用プロキシ、「CocProxy」が便利
Rubyによるクローラー開発技法の目次


参照:
新刊『Rubyによるクローラー開発技法』2014/08/25発売! | るびきち×Emacs
SBクリエイティブ:Rubyによるクローラー開発技法

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例