プログラマでありたい

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

「データを集める技術」が増刷されました

 昨年の末頃に発売されたデータを集める技術が増刷されました。発売されて割と直ぐに決定してたのですが、忙しくてご報告が遅くなりました。

データを集める技術 最速で作るスクレイピング&クローラー (Informatics&IDEA)

データを集める技術 最速で作るスクレイピング&クローラー (Informatics&IDEA)

データを集める技術の売れ行き



 この「データを集める」ですが、Amazon上のランキングは悪くはないものの、爆発的に上位に出ることもなくという状況でした。TwitterやGoogleで評判を調べるも、あまり出てくることもなく、売れ行きを心配していました。そんな状況にも関わらずに、早々の増刷という結果です。担当の編集者に聞いてみた所、書店での売れ行きが良いとのことです。クロール/スクレイピングしてネットでの評判・情報を取得するという本に関わらず、ネットに載らないところでの評判が良かったという訳です。世の中、ネットだけ見てると解らないことは、まだまだ一杯あるなぁと実感した次第でございます。
 という訳で、巷で人気の「データを集める技術」。一冊如何でしょうか?

See Also:
「データを集める技術」という本を執筆しました
非エンジニアでも何とか出来るクローラー/Webスクレイピング術

「新春座談会 このコンピュータ書がすごい! 2017年版に参加してきた

 ジュンク堂書店池袋本店で開催された「このコンピュータ書がすごい」に参加してきました。

gihyo.jp

www.youtube.com

Youtubeで当日の動画が公開されていますが、2時間半の長丁場です。

気になった本



 一番気になって速攻でポチったのが、カルチャロミクスです。Googleが書籍3,000万冊くらいをスキャンした結果を、n-gramで解析した結果をまとめているそうです。どの言葉がいつくらいに出てきたのかとかが解るので、いろいろな分析に使えそうです。サービス自体も、Google Ngram Viewerとして公開されているようです。日本語も使えるようになるといいなぁ

 やはり読んでおかないと思ったのが、ゼロから作るDeep Learning。人気というのは聞いていたものの、時間がある時にと思っていました。紹介を聞いていると、「ライブラリを使ってDeep Learningを使うのではなく、自分で作るということで理解し易い」とのことでした。確かに、昔「集合知プログラミング」という本を読みながら自分で作ることによって、リコメンドだカテゴライズといった機械学習の理解が随分進みました。これは、読んでみないとなぁという一冊です。


 図書館が好きなので、メタデータとウェブサービス (わかる! 図書館情報学シリーズ 3)も気になりました。メタデータをどう扱うかといったことや、ウェブサービスとの関わり方など。詳細不明ですが、読んでみたいですね。

 物書きのはしくれなので、考えながら書く人のためのScrivener入門 小説・論文・レポート、長文を書きたい人へも読んで見る予定です。今年こそはKindleで自分で出版してみたいので、その為の版組とか興味もっています。まぁ環境整えるより、原稿書くのが先ですがw

 あと仕事柄、こちらも読んでみたいです。 事例に学ぶスマホアプリマーケティングの鉄則87

企画からプロモーション、分析、マネタイズまで 事例に学ぶスマホアプリマーケティングの鉄則87 (Web Professional Books)

企画からプロモーション、分析、マネタイズまで 事例に学ぶスマホアプリマーケティングの鉄則87 (Web Professional Books)

  • 作者: エキサイト株式会社池村修
  • 出版社/メーカー: KADOKAWA / アスキー・メディアワークス
  • 発売日: 2016/01/23
  • メディア: Kindle版
  • この商品を含むブログを見る


 暇があったら読みたいのが、ハッカーの学校 鍵開けの教科書。ハッカーシリーズの続編で秘密鍵とかその辺りの話かと思ったら、何と物理的な鍵の開け方の話らしいです。逆に興味が出てきました。

自分の本


2016年3月末に出したAmazon Web Services クラウドネイティブ・アプリケーション開発技法が2016年4月の3位、5月の2位
2016年11月末に出したデータを集める技術が2016年12月の10位
あと2015年に出したAmazon Web Services パターン別構築・運用ガイド が2016年3月の8位

 割りと健闘したと思います。パターン別構築・運用ガイドとデータを集める技術は、今月増刷するので順調でなによりです。ちなみに初めて書いたRubyクローラー本は、2014年8月末に発売されたにも関わらず2014年の総合ランキングに入っていた。今考えると、凄いことだったみたいです。

感想



 「新春座談会 このコンピュータ書がすごい!」は、2時間くらいの間で数百冊の本が紹介されるという非常に密度の濃い時間です。知らない本も沢山あって、紹介している高橋さんは凄いと圧倒されます。一方で、エンジニアの数が有限の中で、これだけ本が出てると厳しい競争だなと思います。またエンジニアとしても学ばなければならないことがドンドン出てくると。生き残り続けるのは、楽しいけど大変ですね。
 あとジュンク堂さんで開催されているけど、結局技術書はKindleで買うことが多いという現実。ジュンク堂池袋店にはよく行くし、紙の本もわりと買ってる方だと思うけど、重めの本はKindleで買ってるんですよね。リアルの本屋がなくなると困るので、このあたりどうしたものか。

『Amazon Web Services パターン別構築・運用ガイド』の増刷決定しました

 AWSの分厚い本として一部有名な、『Amazon Web Services パターン別構築・運用ガイド』の増刷が決定しました。これで第5刷となります。発売から2年近くたち、かつAWS関連本が沢山出ているなかで、売れ続けていること大変ありがたいです。紙版だけでも、技術書としてのヒットの目安となる10,000部を超え、電子書籍版も結構売れ続けているとありがたい状況です。

f:id:dkfj:20170113084743p:plain

今後の展望



 このAWS本と昨年だしたAWSアプリ本で、AWSについてはやりきったと思っておりました。ところがところが、IoTだ機械学習だ、はたまた企業内でのAWS活用など、まだまだやりたいテーマが沢山でてきています。企画段階でハッキリ言えませんが、第三弾・第四弾と計画中です。終わりの無い旅ですね〜。


Amazon Web Services パターン別構築・運用ガイド

Amazon Web Services パターン別構築・運用ガイド

See Also:
「Amazon Web Services パターン別構築・運用ガイド」の執筆環境
「Amazon Web Services パターン別構築・運用ガイド」の目次
AWSパターン別本の狙い。例えばAutoScalingを使えるように。「Amazon Web Services パターン別構築・運用ガイド」の裏話
『Amazon Web Services パターン別構築・運用ガイド』を書きました
『Rubyによるクローラー開発技法』を書きました
本を書く前に準備したこと、執筆中にしていたこと

2016年の振り返りと2017年の目標

 あけましておめでとうございます。今年もよろしくお願いします。今のうちに、2016年を振り返ってみます。2016年の外部に公開している活動は、出版2冊と雑誌寄稿2回、ユーザグループ等での登壇が4回です。

3,4冊目の本の出版



 まず出版ですが、3冊目の本としてAmazon Web Services クラウドネイティブ・アプリケーション開発技法を2016年4月に、4冊目としてデータを集める技術を2016年11月に出しています。

 クラウドネイティブ・アプリケーション開発技法はAWSのアプリ本として、アプリケーションエンジニアがAWSを直接使うにはというテーマで書いております。執筆メンバーもいわゆるインフラエンジニアではなく、アプリケーション開発をメインとする人間が中心になって書きました。サーバレスというキーワードが2016年にいろいろと話題になりましたが、それを先取りする1冊になれたかと思います。しかし、販売面では少し苦戦中です。発売当初は凄い勢いで売れたのですが、ある時を境にパッタリと勢いが止まりました。編集者と分析していたのですが、必要とする層に早々に行き渡ってしまったのではないかという点です。つまり想像以上に市場が狭かったということです。目標としては、ユーザ層が多いモバイル・フロントエンドのエンジニアが読む本を目指してたのですが、BaaSの牙城は強く直接AWSを扱うという流れにはなっていないようです。
 一方で、こんなAWSの使い方をやりたいのですという相談を受けることが増えて、個人的には意味があったかなぁと思います。また当初の勢いがなくなったといえ、順調なペースでは売れていっている模様です。あと反省点としては、分厚すぎる本はやっぱり駄目ですね。

 4冊目のデータを集める技術は、1冊目のRubyクローラー本のコンセプトを受け継ぎ、もう少し読者層を広げようと試みた本です。クローラー/スクレイピング手法もExcel/Googleスプレッドシートを中心にし、エンジニアじゃない人でも何とか使えるようにしています。この本はネットでは全く話題にも上がりませんが、リアル本屋さんを中心に結構売れています。一般書店で取り扱ってもらうことを意識して、Excelというキーワードを入れたことと250ページと薄くしたのが功を奏したのかもしれません。

雑誌寄稿



 本の執筆以外にも、雑誌寄稿も行いました。今年創刊した日経クラウドファーストの創刊号のAurora特集で、機能面の分析を行いました。Auroraを使う上で、必要な情報がコンパクトにまとめられているのではと思います。例によって、AWSのアップデートで、一部状況が変わっている部分がありますが。。。
 この日経クラウドファーストの執筆陣は、AWSのプレミアパートナーを中心に集められています。とっても濃いメンバーが集まっているので、(スケジュールの都合で、あまり参加できていませんが)月に1回の会議は非常に刺激を受けます。参加させて貰って良かったと思います。あと2本目も執筆していて、今月くらいに出てくるはずです。

blog.takuros.net

登壇・発表



 イベントの登壇は、4回のみでした。そのうち2回はほぼクローズな場なので、実質2回です。

www.slideshare.net
www.slideshare.net
www.slideshare.net
www.slideshare.net


 正直アウトプットとしては少なかったので反省です。2017年はいろいろ出てみようと思うので、皆さんよろしくお願いします。

ブログ



 2016年は53本書いていたようです。2014年は80本なので、30%減です。アクセス数では、2016年は168,195です。2015年は241,741だったので30%の減少です。だいぶブログの人としては終わってきました。最盛期は、年間で70〜80万アクセスくらいあったのですが、リソースの振り方とか考えると仕方がないかなぁという部分もあります。

2016年の目標に対しての採点



 2016年の目標は、これでした。

  • 本を2冊書く ⇒ ◯ 実現できた
  • Kindle本を書く ⇒ ☓ 少し手をつけたけど、後回しになって未だ出版できず
  • AWS本の英訳 ⇒ △ AWSのパターン別構築・運用ガイドが、韓国語に翻訳されたらしいです。私は何もしていないですが。
  • 資格試験 ⇒ ◯ AWSの認定資格、5種全てコンプリートしました。今年は、新3種を目指します。(日本語で出たら)
  • ワークバランス ⇒ ☓ あまり変わらずです
  • メジャーイベントへの登壇 ⇒ ☓ 2015年より後退して、引きこもり気味になりました。
  • 健康 ⇒ △ 運動はしてないですが、歩行距離で結構稼いでいます。

2017年の目標



  • 本を2冊書く ⇒ 執筆前の1冊に加えて、もう一冊書こうと思います。モバイル or IoT関係に挑戦しようかな
  • Kindle本を書く ⇒ 今年こそ
  • AWS本の英訳 ⇒ Google翻訳さんが賢くなっているので、それを使って挑戦してみようかなぁ
  • 資格試験 ⇒ 新3種とります。あとは、ワインエキスパート取りたいなぁ
  • ワークバランス ⇒ まずは計測から
  • メジャーイベントへの登壇 ⇒ Developer Summit等のメジャーイベントへの登壇。その為に、自分の強みの分野の再定義
  • 健康 ⇒ 全ての活動の基本は、やはり健康。その為の運動。これを定量的に測定する。

細かい部分や、仕事等で公開できない部分については、別途管理します。

まとめ



 何となく自分の活動量の限界が見えてきたので、その中でどう出来るかを模索しようと思います。

Pythonクローラー本の決定版か!? 『Pythonクローリング&スクレイピング』

 Pythonクローリング&スクレイピングを頂きました。ありがとうございます。まだざっとしか読んでいませんが、Pythonのクローラー本で一番バランスが良いのではないでしょうか?

Pythonクローリング&スクレイピング ―データ収集・解析のための実践開発ガイド―

Pythonクローリング&スクレイピング ―データ収集・解析のための実践開発ガイド―

本書の内容



 PythonでスクレイピングするのであればBeautiful Soup、クローラーフレームワークとしてはScrapyが定番です。この2つをしっかり抑えながら、ブラウザを操作するためのRoboBrowser、ブラウザ+JavaScriptに対処もできるSelenium+PhantomJS、PDFからのテキストの抽出など多岐に渡るテーマを扱っています。またデータ収集術だけではなく、分析を助けるためのElasticSearchやBigQueryとの連携、処理の並列化のためのキューの扱いかたなど、クローラー&スクレイピング制作を通じて色々な技術要素を学べるようになっています。終章の方には、運用の為にサーバーサイドでの扱いやAWSまで取り扱っています。
 またこのPythonクローラー本のお勧めの理由として、Python3に対応したScrapyの解説している点です。ScrapyはPythonのクローラーフレームワークの標準ですが、長らくPython2にのみ対応されていませんでした。それが2016年5月にPython3に対応されました。本書ではいち早くPython3版のScrapyに対応しており、非常に良いタイミングで出たのではないでしょうか?

Rubyクローラー本とExcelクローラー本との対比



 せっかくの機会なので、僭越ながら拙著の「Rubyによるクローラー開発技法」とExcelのクローラー本である「データを集める技術」と対比させて頂きます。Rubyのクローラー本とPython本は構成や対象としているターゲット層としては恐らく非常に似ています。説明の仕方や順番など、こういう紹介の仕方が良いなぁと思える部分が多く、結構、思考パターンが似ているなぁと思いながら読んでいました。違いとしては、クローラー本が具体例が多いのに対して、Python本は技術要素を中心にしています。本としての寿命を考えると、Python本のような構成が良かったのかと思います。
 またExcel/Googleスプレッドシートのクローラー本と較べると、想定の読者とは全く違ってきています。Excelのクローラー本は、一応技術書と銘打っておりますがノンプログラマも読者層として想定しております。その為、どちらかというと入門書となっており、スクレイピングの技巧も少ないです。Python本を読みこなせる人は、Excelクローラー本は不要だと思います。

その他



 Pythonクローリング&スクレイピングを読んだ後にググって調べると、著者の加藤さんによる下記のサイトを見つけました。こんな方法で書籍紹介するのは素敵ですね。自分でもやってみようかなと思います。いずれにせよ、クローラー愛が伝わる非常に良い本だと思います。是非、一度手にとって見てください。

scraping-book.com


See Also:
「データを集める技術」という本を執筆しました
『Rubyによるクローラー開発技法』を書きました
非エンジニアでも何とか出来るクローラー/Webスクレイピング術

ServerLessで、Amazonのほしい物リストから安売り情報を通知するBotを作ったよ

 Serverless Advent Calendar 2016の11日目です。ちょっと趣向を変えて、Serverlessでアプリを構築する場合、こんな感じになったよというのを紹介しようと思います。

Amazonのほしい物リストから商品情報を抜き出して、安売りしていたら通知してくれるBot



 最近の読書はもっぱらKindleさんです。いつでもどこでも、そして保管の場所を取らないというのは素晴らしいですね。このKindleですが、定期/不定期にセールをやっています。問題は頻度と対象が多すぎて、欲しい本を見つけられないという問題です。Kindleのセール情報をまとめているサイトなども多数ありますが、そちらを追うのも大変ですよね。
 そこで、自分が欲しい本だけのセール情報を取得するという方法を考えてみましょう。解決策は簡単で、気になった本は自分の欲しいものリストに追加していき、そこの本が安くなったら通知してくれるBotを作ればよいのです。

Botのアーキテクチャと処理の流れ



 Botは、DynamoDBとLambdaで構成されています。つなぎの部分として、SQSやCloudWatch Eventsを利用しています。
f:id:dkfj:20161212015001p:plain

処理の流れとしては、次のような感じです。

  1. bot宛(@WishlistSales)宛に欲しい物リスト(公開)のURLをつぶやく
  2. CloudWatch Eventsで定期的に起動しているLambdaが、Twitterのmentions_timelineを取得しDynamoDBに登録
  3. DynamoDB StreamsでLambdaを起動し、欲しい物リストのURLから全ページ取得しSQSに登録。※欲しい物リストは、2,500件(250ページ)まで登録出来るので、改ページとアイテム取得を分離するため
  4. SQSのキューを元に登録されているASIN(ISBN)を取得し、DynamoDBに保存
  5. 毎日LambdaからProduct Advertising API(元祖AWS)を利用し、書誌情報を取得し保存
  6. 前日に較べて安くなっていたらTwitterで通知

作ってみて気づいた点



 上記のアプリを、Node.jsで作ってみました。今までもAPI Gateway + Lambdaという組み合わせで使うことが多かったのですが、今回はバッチアプリとしてのNode.jsです。そしたらハマりました。Node.jsは基本的に、非同期処理です。それでバッチを作ると、単純に上から下の流れだと上手く動きません。最初は無理やり同期的に作ってみたのですが、やっぱりしっくりきません。素直にCallbackで処理を書くと、待ち時間に並列で動かすことが出来て成る程という感じでした。ノンブロッキングI/Oの深淵を少し垣間見れたような気がします。やっぱりこの考え方は、身につけないと駄目ですね。
 ちなみにServerLessという点では、特段困る点は少なかったです。強いて挙げれば、lambdaのタイムアウトがあるので1度のバッチサイズを小さくする設計ですね。これは結果的には、処理分割の上で良い影響が出たと思います。lambdaの処理時間は1分⇒5分と延びましたが、もし今後延びたとしても、1つの処理時間は1分以内に保てるような設計を心がけた方が良いと思います。それ以外で言うと、Lambdaに環境変数を保持できるようになったのは大きいです。これだけでも結構開発しやすくなっています。

SQSとStep Functions



 Step Functionsが出たということで、早速使ってみようと検討してみました。しかし、今回の処理でいうとSQSとCloudWatch Eventsで充分でした。理由としては、それぞれの処理の実行のタイミングがバラバラということです。イベント駆動のものもあれば、定期的に実行するというものもあります。そんな訳で、まだStep Fuctionsを使えていません。どっかで使ってみたいですね。
 SQSについては、個人的にはシンプルで非常に使い勝手が良いです。要望としては、SQS⇒Lambdaの直接的なトリガーを作ってくれれば、もっと便利になるのではと思います。まぁ冷静に考えるとLambda同士のつなぎの部分は、Step Functionsでも良いかもしれません。そのうち、再検討します。

生産性



 上記の処理は、実はまだ全部できていません。日々の価格変動と変動を検知して呟く部分が作りかけです。前半分の処理は、新幹線の往復の時間だけでほぼ出来たので、わりと効率的に作れているかなと思います。環境構築の時間がほぼ不要で、処理に専念できるというのは強いですね。記述量も少なく、全部出来たとしてもステップ数は1,000いかないですね。たぶん500くらいなのではという感じです。

感想



 年内中には、ちゃんと公開しようと思います。自分だったらこういう構成にするというのがあれば、コメント頂ければありがたいです。登録しといたら、そのうち安売り情報が届くはずです。
 この程度のアプリであれば、一人で作れて運用負荷も殆どありません。ServerLessというのは目的ではなく、自分がやりたいことを楽に出来る手段だと捉えて、是非いろいろ遊んでみてください。
 最後にちょっとだけ宣伝すると、最近執筆したデータを集める技術に欲しい物リストを取得するウニョウニョも書いています。興味があれば、読んでみてください。

チップス



 あまり技術的な要素は無かったのですが、幾つかチップスも紹介しておきます。

Twitter関係

 Twitterの呟き取得の際、デフォルトでは短縮化されたURLしか取得できません。引数でinclude_entitiesの項目をtrueにしておくと、entities.urls[n].expanded_urlという場所に配置されます。1ツィートで複数あれば、複数項目でてきます。あと、既読を無視する方法が解らなかったので、最終取得Tweetの日時をDynamoDBに保存するようにしています。

  var params = {include_entities: 'true'};
  client.get('statuses/mentions_timeline', params, function(error, tweets, response) {
    if (!error) {
      tweets.forEach(function(tweet) {
          var curDate = new Date(tweet.created_at);
          if (lastDate >= curDate) {
            console.log("new tweet is not exists");
          } else {
            putUrl(tweet.entities.urls[0].expanded_url, tweet.user.screen_name, curDate);
          }
      });
    }
  });
DynamoDB関係

 Node.jsに関しては新旧複数のライブラリが存在します。公式のBluePrintの、dynamo.putItem/getItemとやっているようなのは古い書き方をしています。 公式のチュートリアルを最初に読みましょう
http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/gettingstartedguide/GettingStarted.NodeJs.03.html#GettingStarted.NodeJs.03.01


See Also:
cheerio-httpcliを使って、Amazonのほしい物リスト(Wish List)から商品コード(asin)を抜き出す

参照:
Serverless Advent Calendar 2016

データを集める技術 最速で作るスクレイピング&クローラー (Informatics&IDEA)

データを集める技術 最速で作るスクレイピング&クローラー (Informatics&IDEA)

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

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

非エンジニアでも何とか出来るクローラー/Webスクレイピング術

遅くなりましたが、クローラー/Webスクレイピング Advent Calendar 2016の4日目です。先日、データを集める技術という本を出しました。冒頭の部分は、次のように始まっています。

 2014年8月に「Rubyによるクローラー開発技法」という本を出版しました。書名の通りRubyというプログラム言語を使って、自作のクローラーを作りデータ収集を効率化しようという本です。ニッチなテーマにも関わらず、多くの方に読んで頂けたようです。想定以上の売れ行きで不思議に思って読者層を調べてみると、プログラム書にも関わらずマーケッターやコンサルタントなどITエンジニア以外の読者の方も多かったようです。ITエンジニア以外も読むかもということは、執筆時にある程度念頭には入れていたものの、結果としては想定以上の比率でした。
 そこで、もっと多くの人にデータ収集術を知ってもらう為に本書を執筆しました。前著に較べると、出来るだけ簡単にデータを収集するためのノウハウを中心にしています。ツールを組み合わせてプログラムすることなくデータを集める方法や、Excel・Google スプレッドシートのセル関数などを使う方法、またプログラムする場合もExcelのVBAやGoogle Apps Scriptなど、プログラム環境の構築が不要なもののみを扱っています。その為、プログラマはもとより、プログラマ以外の人でも見よう見まねでクローラー/スクレピングができるのではないでしょうか。

 ここに書いている通り、クローラー/スクレイピングという技術は、エンジニア以外にも有効です。ある意味、エンジニア以上に必要としているかもしれません。一方で、そういう手段すら知らずにいる人が大半だと思います。そこで、出来るだけ多くの人にクローラー/スクレイピングの技術に触れられるようにと考えています。

比較的簡単なスクレイピング方法



 個人的なお勧めの順としては、次のようになっています。なんとExcel + VBAを1番にあげています。

1. Excel + VBA
2. Googleスプレッドシート+セル関数(importxml関数)
3. Googleスプレッドシート+Google Apps Script
4. Import.io

 理由としては、何故かExcelの場合だとプログラムにアレルギーを持っている人も頑張って理解しようとしてくれるのですよね。次のGoogle系の場合、アカウント持っているよという人が比較的多いです。(と言っても、Excel使ったことがあるよという人に較べると、1/10くらいの感覚ですが。)最後のImport.ioが実は一番簡単なのですが、コンソールが英語という所で脱落する人が多いです。

Excel + VBAでスクレイピングの手順



 Excel + VBAでのスクレイピング手順については、こちらのスライドで簡単に説明しています。
www.slideshare.net


 また、データを集める技術で頑張って説明していますが、本質的な部分は、下記の5点くらいです。

  • InternetExplorerクラス
  • HTMLElementCollection
  • getElementByTagName
  • getElementsByClassName
  • getElementById

それぞれの役割は、下記の図のとおりです。
f:id:dkfj:20161205080758p:plain

これを使ってプログラミングしたのが、次のような感じのものです。
f:id:dkfj:20161205080805p:plain

比較的簡単です。頑張れば、プログラミングをやっていない人でも何とかできるかなというレベルです。

クローラー/Webスクレイピングの将来



 個人的には、今後はスクレイピングという技術は、サービス化がもっと進むと思います。今はなくなったkimonolabsやimport.io、あるいはscrapy系のサービスのようなものの普及が進むと思います。ただし、もう一段先があって、サイト運営者自身によるAPIの提供が当たり前になる時代が来るのではないかと思います。その為の、APIのマーケットの整備も進みつつあります。一般人が使う技術としてのクローラー/スクレイピングは、過渡期の技術だと思っています。

感想



 とりとめのない話で発散しましたが、ディスクワークする人にとってはクローラー/スクレイピングという技術があることだけでも知っておいた方が何かと便利です。一昔前に較べると、HTMLも構造化され、それを取るための手段も沢山でてきています。問題のならない範囲で気をつけた上で、是非一度試して貰えればと思います。プログラミングをしたことがない人にとっては、プログラミングの楽しさを知るキッカケにもなると思います。

データを集める技術 最速で作るスクレイピング&クローラー (Informatics&IDEA)

データを集める技術 最速で作るスクレイピング&クローラー (Informatics&IDEA)

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

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

See Also:
「データを集める技術」という本を執筆しました