はじめまして、ルーターのSakaeです。

先日、弊社コーポレートサイトをリニューアルし、他の会社さんに負けない開発者ブログを作成しましたので、記念すべき1記事目を書かせて頂きます!(過去記事は以前のコーポレートサイトから移植したものなので、ノーカウントということで。。)

今回は、我々ルーターのエンジニアの本業である、「Webスクレイピング/クローリング」について

  • Webスクレイピング/クローリングってそもそも何なの?
  • スクレイピング/クローリングを専門とするエンジニアというのはどんな人たち?
  • Webスクレイピング/クローリングで何ができるのか?

という疑問にお答えするというお題で記事を書いていこうと思います。

Webスクレイピングとは?

信頼のWikipedia先生に聞くところでは、Webスクレイピングとは

ウェブスクレイピング(英: Web scraping)とは、ウェブサイトから情報を抽出するコンピュータソフトウェア技術のこと 出典:ウェブスクレイピング – Wikipedia

とのことです。もう少し平たくいうと、どこかのWebサイト上の文字や画像や動画などなどのコンテンツをプログラムを使って取ってくることということです。

しかし、「ウェブサイトから情報を抽出するコンピュータソフトウェア技術=スクレイピング」と言葉の定義ができるかというと、スクレイピングという単語もそこまで世の中で統一されたものではなく、クローリングやデータアグリゲーションという言葉で呼んだり、データを集めるプログラムのことも、クローラー、スパイダー、ボット、ネットエージェントなどなど、いろいろな言葉のバリエーションがあります。わりとふわっとした技術領域ではありますが、我々ルーターではビジネス上では「データアグリゲーション」というサービス名称を用いてサービスを定義しています。

では、職業エンジニアとしてスクレイピングに取り組むというのはどういうことでしょうか?

スクレイピングエンジニアという位置づけ、求められるもの

Wikipediaでも言われている通り、ウェブスクレイピングはれっきとしたソフトウェア技術であり、数多く分類されたソフトウェアエンジニアリングのジャンルの一つです。そういう意味でいうと、iOSエンジニア、フロントエンドエンジニアという呼び名がある通り、我々ルーターのエンジニアはクローリングエンジニア、スクレイピングエンジニアという位置づけになるかと思います。当然、各専門領域に特性・特徴があるように、スクレイピングエンジニアにも求められるものがあるわけです。

スクレイピングエンジニアに求められる思考・技術

世の中のWebの進化というのは凄まじいもので、フロントエンドの言語(HTML, CSS, Javascript/ECMAScript)やフレームワーク(Ruby on Rails, Angular, React)、はたまた、プロトコルレイヤー(WebSocket, SPDY, HTTP/2)まで日進月歩で変わっていくため、スクレイピングの専門集団として日々技術を磨いていくことが求められるわけです。(どのジャンルのエンジニアもそうですよね。。)

Webスクレイピングで必要な技術・思考としては、面白いことにWebエンジニア/サーバーサイドエンジニアがサービスを作っていく手順を、逆方向にたどって、解きほぐしていくような考え方が必要とされます。具体的にスクレイピングのざっくりした手順は以下のようになります。

Webスクレイピングを行う際の思考順序
  1. Webサイトを見ながら、Webブラウザ上で集めたいデータ(例えば、商品名、画像URL、などなど)を見つける
  2. そのデータはどのようにフロントエンド上に表示されているのか?静的にHTMLにべた書きなのか、Javascriptで動的に後から描画されているのか?を特定する
  3. 動的にコンテンツがロードされているなら、どのJavascriptのどの部分でHTMLを後から書き出しているのか?
  4. そのJavascriptがデータを取得するために、リクエストしているサーバーサイドAPIのエンドポイントはどこなのか?
  5. そのAPIからWebブラウザと同じようにデータをレスポンスで返してもらうために必要な、GET/POSTパラメータやHTTPのリクエストヘッダ情報は何なのか?

という手順がWebスクレイピングの基本になります。面白いことに、Webサービスを作る場合、おおむね上記の手順を下から上に、逆方向にたどる順番でWebサービスを設計・構築していくことと思います。この逆転の発想こそが、スクレイピングエンジニアに求められる思考と言えるかなと、僕はなんとなく思っています。

Webスクレイピング/クローリングで何ができるのか?

クローリングとはなんぞや?エンジニアとして必要なものは?というのを薄っすらとご理解頂けたところで、次に、Web上でデータを収集することで何をしているのか?どのようにビジネスに役立っているのかを考えていきたいと思います。

クローラーを使ってデータを整理する

クローラーを使ったビジネスということでもっとも分かりやすいのは、インターネット上のデータを整理するというGoogleのビジネスかと思います。

インターネットに関する統計情報を集めたinternetlivestats.comによれば、今日現在(2018年3月28日)の時点で、インターネット上には18.6億サイトが存在するとのことで、こんなにたくさんのWebサイトがあっては人生を何百回やり直そうと全てのサイトの情報を読み尽くすことはできません。そんな悩みに対して、Google先生は、僕らが何かを調べたいと思った時に、検索キーワードに最もぴったりのWebサイトというのを18.6億のサイトの中から提案してくれているわけです。このお陰で僕らは1回の人生でも必要な情報に迅速にたどり着けるわけですね。

データは多ければ多いほど良いというものでもなく、今度はそれをインプットするための時間が足りなくなるというジレンマにすぐに陥ってしまいます。ですので、データを集めて短時間でインプットできるように整理・加工するというのは、これからの時代にはとても重要なお仕事なわけです。

キュレーションサービス

ニュースキュレーションと呼ばれるサイトやアプリを使われている方も多いと思います。世の中には日々大量のニュースが溢れているので、AIなどを使って自分にぴったりにパーソナライズされたニュースを提案してくれるサービスですね。このキュレーションという言葉はそもそも情報を収集、整理、要約するという意味合いを持つ言葉です。

今では様々なジャンル、小規模から大規模まで、いろいろなキュレーションサービスがあると思います。小さなサイトなら人手で情報収集するのも良いでしょうが、大規模なサービスとして運営されるようになると、データを集める部分は自動化したいところです。データ収集はクローラーに任せて自動化することで、人間は集まった情報を見ながら、どのデータが読者にとって価値が高いのかという判断をくだす、より創造的な、編集者的な仕事に従事することができるようになります。

データの分析・横断比較

データを分析・比較していく上でも、クローリングは必須の技術となります。

AppAnnie(アップアニー)という会社をご存知でしょうか?iOSやAndroidアプリのマーケットデータを収集し分析ツールを提供している会社で、アプリ開発者に知らないものはいないほどのサービスです。このサービスを使うことでアプリ開発者は自分のアプリがXXジャンルのランキングで1位を取るためには、どれくらいの期間でどれくらいのダウンロードが必要なのか、などなど、アプリマーケティング戦略において必要な情報を誰でも手に入れることができます。このデータ分析のためのデータ収集にも当然裏側ではクローラーが活躍しているわけです。

また、skyscanner(スカイスキャナー)というサービスでは、各航空会社の飛行機運賃を、航空会社横断で一覧比較することができます。本来、航空会社AのWebサイトで料金を調べ、航空会社Bのサイトで料金を調べ、・・・。という具合に、複数のWebサイトをまたいでデータを比較するというのは大変な労力がかかる作業です。こうした人間の手間を省くために、クローラーが活躍して複数会社の料金を1箇所に集め、料金を1画面で横に並べて見え化するというのも、とても社会に貢献できるビジネスの一つですね。

RPA(Robotic Process Automation)

最近注目されているRPA(Robotic Process Automation)というソフトウェア技術をご存知でしょうか。RPAを日本語で言うと、「ロボットによる業務の自動化」という意味になり、ホワイトカラー用の業務ロボットとも呼ばれています。具体的には、「毎日XXサイトとXXサイトの売上上位トップ10の商品をCSVにまとめて、部署内の共有ドライブに置き、部署のメンバー全員にメールで通知を行う」というような事務的に行うルーチンワークを、ソフトウェアロボット(ボット)が毎日自動的に行なってくれるという自動化が行えるわけです。むしろ、毎日同じ時間に、同じ手順のタスクをこなすというのはプログラムのほうが優秀に行えるわけで、ボットは体調不良で休むことも、忘れることも、コピペで数字を間違えることもないという人間には真似できない強みがあります。

ここでよくよく考えると、上述のボットが行っていることというのは、ほとんどWebクローラーの行っている仕事と同じことです。つまり、RPAというのはスクレイピング・クローリングの応用技術から成り立っているため、スクレイピング・クローリングエンジニアの活躍するビジネス領域が広がったということになります。

さいごに

ということで、職業スクレイピングエンジニアの視点でスクレイピング・クローリングとは?という点について考えてみました。今後もデータやWebの拡大というのは続き、そのデータを有効活用するというニーズは絶えないと思われます。そのニーズにのりつつ、我々も世の中に貢献していけるようにがんばってまいります!

データの取扱に関するお悩みがありましたら、ぜひ、ルーターにお問い合わせくださいませ!m(_ _)m