プログラマでありたい

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

本を書く前に準備したこと、執筆中にしていたこと

 「Rubyによるクローラー開発技法」は、2013年12月に話を頂き、2月くらいまで企画を検討し、2月〜7月の約5ヶ月間で執筆しました。役に立つかどうか解らないけど、本を書く前に準備したことと、執筆中にしたことを残していこうと思います。次回があれば、もう少し上手くできるようにしたいですね。

事前に準備したこと


執筆環境を構築した

 執筆環境は、いの一番で用意しました。具体的には、下記の2つです。

  • GitHubの有料版アカウントを作成し、プライベートリポジトリを作った
  • MarkDown記法を覚えて、MarkDownから各種フォーマットに変換できる環境を作った

 GitHubのプライベートリポジトリを作ったのは正解でした。これが無ければ、いろいろ事故も起こったと思います。反面、Markdownの環境はメインのMacにしか作らなかったのが失敗でした。意外に色々な端末で書くことになったので、CIツールも用意してクラウド上でビルド出来る環境を作るべきでした。後は、表現力というところでは、Markdownは少し物足りません。この点は、ReVIEWの方に分があります。一方で、MarkdownであればGithubでほぼそのまま見ることが出来るので、悩ましいところです。

Markdown記法+Git+md2review+ReVIEWで原稿・ドキュメント管理

文章を書く技術の本を読んだ

 体系的な文章の書き方について学んだことがなかったので、文章術の本を何冊も買い込んで読んでみました。その効果で文章力が上がったのか自分では解りませんが、下記の2つのことを心がけるようになりました。

  • 一文一文を短くなるように心がける
  • できるだけ断定調にする

 幾つか読んだ中で、技術書を書くという観点では、「理科系の作文技術」が一番役にたちました。テクニカルな文章を書く場合には、参考になります。
 また、物事を一番解りやすく伝える作家として、私の中では、阿刀田高さんが一番です。氏の数あるエッセイの1つに、「日本語を書く作法・読む作法」という本があったので、これも読みました。勉強になった反面、他の阿刀田さんの本を無限に読み続けるというループに陥ってしましました。目的意識をしっかりですね。

Rubyの勉強をした

 あまりRuby力に自信がないので、共著者のるびきちさんの本をよんでRubyの勉強をしました。正直勉強に充てられる時間が足りなかったので、今後精進します。

対象読者の想定をした

 Rubyでクローラーというお題を頂いた時に、直感的にムリだろうと思いました。国内のRubyのエンジニアの数と、クローラーに興味がある割合。その二つを仮定して掛けあわせた結果、茨の道が見えました。そこで、勝手にターゲットを下記に設定しました。

  • 統計や自然言語処理に興味を持ちだして、その為のデータを収集しようとしている学生(学部3〜4年生)
  • SEOやWebマーケティングをしている人
  • ツールを使って作業を楽にしたいITエンジニア

 あまりRubyもクローラーも知らない人を想定し、入門書的な位置づけにしています。その意図通りになっているか、まだ解りません。ぜひ感想を聞かせて頂ければと思います。

執筆中にしていたこと



マイクロレベルでの執筆時間の管理をした

 パソコンで執筆すると、予想以上に誘惑が多いです。調べ物しているうちに、面白いページを見つけて、ずっと読み続けているということもありました。それを防止する為に、マイクロレベルで、時間を管理するようにしました。具体的にはポモドーロ・テクニックですね。これが中々良くて、普段の仕事をする上でも取り入れるようにしています。

パソコンで作業する際は、ポモドーロ・テクニック(Pomodoro Techinique)を使うとよい

ニーズの調査をしながら執筆した

 ターゲットは決めたものの、内容についてはどの辺に需要があるのか正直サッパリ解りませんでした。だから、書こうかなと思ったテーマについては、ブログで事前に記事にして反応を確かめることにしました。反応が大きかったものについては分量を多めにし、反応が無かったものは扱いを小さく、もしくは削りました。
 自画自賛ですが、これは割と良かったです。本来であれば、色々な人に査読をお願いするのがよいのでしょうが、客観的かつ的確な指摘を得るのは難しいのが実際のところです。ブログの場合、ブコメ等でストレートな感想を頂けるので、かなり参考になりました。また、間違っている部分も指摘されることもあり、大変助かりました。
 執筆前や執筆中に書いた記事は、次のようなものがあります。ブクマとTwitter、後は暫くしてのGoogleからの検索の流入を、反応の指標としました。

JavaScriptにも対応出来るruby製のクローラー、Masqueを試してみる
複数並行可能なRubyのクローラー、「cosmicrawler」を試してみた
あらためてRuby製のクローラー、"anemone"を調べてみた
Capybara-DSLのはなし
Ruby2.0の文字エンコーディングの簡単なまとめ。KconvとM17N
Ruby製のクローラー Anemoneの文字化け対策
Ruby製の構文解析ツール、Nokogiriの使い方 with Xpath
FireFoxやChromeを使って任意のノードのXPathを簡単に抽出する方法について
Ruby製のクローラー Anemoneでストレージをファイルに変更する
RubyでYahoo! キーフレーズ抽出APIを使ってテキストマイニング
Ruby製のクローラー AnemoneでストレージをSQLite3, MongoDBに変更する
開発用プロキシ、「CocProxy」が便利
RubyでAmazon Product Advertising APIを再び使ってみる
RubyのHTTPS通信で、OpenSSL::SSL::SSLErrorが出たら?
Rubyのtwitterライブラリで、Twitter Streaming APIが扱えるようになっていた

執筆後にしたこと



 せっかく書いたのだから、誰も読んでくれないと悲しいです。ということで、自分で出来る範囲で宣伝をしてみました。

勉強会で宣伝

 幾つかの勉強会で機会を頂いて、クローラー関係の発表をさせて頂きました。登壇しなかった勉強会でも、懇親会なので今こんな本を書いているんですよと宣伝してました。

62nd Ruby/Rails勉強会@関西に参加してきた
RubyでWebスクレイピングの話をしてきました。第1回Webスクレイピング勉強会@東京
「第2回Webスクレイピング勉強会@東京」に参加&発表してきました

 今後も機会があれば、勉強会で発表していきたいです。日程があえばどこでも行きますので、お気軽にTwitter等でご連絡いただければと思います。

ブログで宣伝

 効率としては、何気に一番よかったです。一方で、色々な勉強会で話していたこともあって、注目してもらえる下地があったのかもしれません。

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

 ブログ書いて、はてなのホットエントリーに載って、各種SNSでシェアされました。結果、Amazonの順位が一気にあがり、多くの人の目につくようになりました。正直な所、ビギナーズラックでしょうが、今後の参考にしようと思います。
f:id:dkfj:20140904092520p:plain

エゴ・サーチ

 ほぼ毎日、書名でGoogleやTwitterを検索して、反応を探しています。心折れることを覚悟してたのですが、今のところ好意的な反応が多くて嬉しい限りです。しかし、今後の糧に厳しいご意見もお待ちしております。
 ちなみに今や、関係する呟きやブログを見つけると、即TweetするBot状態になっております。「Rubyによるクローラー開発技法」という単語があれば反応しますので、興味がある人は試してみてください。

まとめ



 寝不足で死にそうになった半年でしたが、なかなか得がたい経験を積ませて貰いました。もう少し上手くやる方法は幾らでもありそうなので、その辺り今後も考えていこうと思います。


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

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