Webクローラーで自動でリンクをたどって、いろんなホームページのデータを収集する。こうした動きは、マーケティングや営業の現場で利用される様々なデータを作成するために、多くの企業で実践されているものです。こうしたWebクローラーの活用を検討する際、どうやってHTMLページや画像などを収集するのかという点に意識がいってしまいがちですが、本当に重要なのは収集することよりも、収集したものをどうやって使うのかということと、データをいつ削除するのかという点です。収集したデータは一見すると、すべてが有益なものと思われがちですが、無作為にリンクをたどって集めたページのほとんどは利用することのないデータです。この価値のないデータは、DBサーバのコストや抽出するためのアプリケーションサーバのコストなど、運用コストを大幅に増やす厄介なものです。利用しないのに、コストだけはかかる、そんなものは収集しなければいいのではないかという方もいらっしゃるかもしれませんが、収集するのには理由があります。使わないデータもなぜ収集しているのか、それは収集してみないことには、そのHTMLや画像が期待している有益なものとしての条件を満たしているかどうかがわからないためです。
1:収集する、2:判定する、3:利用する/削除する。これが基本的なWebクローラーの動作の流れ
一部の価値のあるデータを作るために、大量のいらないデータも収集しているのがWebクローラーです。もし、無限にデータをため続けていられる、世界最高クラスの容量、スペックをもつサーバを保有しているのであれば、こうした”いらないデータ”について憂慮する必要はありません。しかし、一般的なビジネス環境で導入を検討されているのであれば、この価値のないデータをどうやって効率的に判定し、削除を行っていくのかはコストの面からとても重要なことです。コストがかかるのなら、さっさと削除してしまおうと考えるのは当然のことですが、安易に削除してしまうと後で後悔することもあります。削除するメリットは、コストを抑えられるということです。では、削除をするデメリットはいったい何でしょうか? Webクローラーで収集したデータの削除を行うデメリットをしっかりと把握した上で、削除の仕様を検討する必要があります。
その削除ロジックは完璧か?そして今後も登場してくる新しい表現手法などにも対応できるものなのか?
データを削除することによる1つ目のデメリットは「検証ができなくなる」ということです。Webクローラーが稼働して、データを収集し、その後、データが必要なものかどうかを判定をして削除をします。この時、削除をしてしまうと、本当にそれが必要のなかったものであったのかどうかを検証ができなくなるという大きな問題があります。当然、有益なデータがあるかどうかを判定するロジックを通して、そこでいらないと判定されたために削除されるわけですが、このロジックが常に完璧な答えを出し続けられるとは限りません。これまで見たことのないパターンで、本来であれば残すべきデータと判断されるものであるにも関わらず、対応ロジックが追いついていないために、誤って判定してしまうこともありえます。インターネットなどでは、新しい表現手法、コンテンツのスタイル、デザインなどは常に登場します。つまり、これまでのルールで判定しきれない、新しいパターンが登場することがあることをしっかりと踏まえておく必要があるわけです。もし、削除せずに残しておけば、定期的に取りこぼしているパターンがないかなどを検証し、抜け漏れがあれば新しいロジックを追加、後から復旧を行うこともできます。しかし、削除されていると、こうしたことに気が付いて対応することは簡単ではありません。
”今は不要”だから削除をするけれど、今後も必要になることは本当にないだろうか?
「削除をする」のは不要であるという判断をしたためですが、それは今の段階の結論であって、今後もそうかはわかりません。考えるべきは半年後、1年後、2年後などの少し先の未来です。Webクローラーが収集するデータは、その時点ではいつでも取得することができるものですが、サイトが閉鎖されたり、ページが更新されたりした場合、それ以前のデータというのはもう2度と取得することができません。削除をしたら、もう2度とそのデータは集められないかもしれない、そう考えても「削除しても問題ない」と言い切れるかどうかが重要です。何があっても大丈夫な状態を維持するためには、その分のコストがかかるため、多少のリスクは飲み込まなければなりませんが、冷静に考えたら近い将来に使う可能性が高いデータを削除するのは賢い選択とはいえません。
Webクローラーは一度だけ稼働させるのであれば、さほど悩むポイントはありません。しかし、中長期にわたり、継続的に稼働させるのであれば「コストを抑えられる」+「将来にわたっても後悔しない」という両面から削除などの動作仕様をしっかりと考える必要があります。プロジェクトの特性にあわせて、最適な仕様検討を進めていきましょう。