WebAPIについての説明と注意事項(7章を実践する人は必ず読むこと!)
サーバーに負荷を掛け過ぎない利用を心がけましょう。(利用規約14条の20)
皆さんはWebAPIってご存じですか? ここまで読んできた皆さんならもうおわかりですね。WebAPIとは個人や団体が用意したWeb上でデータを受け渡し出来るアプリケーション間、システム間のインターフェースのことです。APIはApplication Programming Interfaceの略称です。
簡単にイメージすると、申請書ですね。
サイトが指定したアドレスに、欲しいデータの項目を規定のフォーマットで書くと、欲しいデータが取得できます。受け取れるデータはあらかじめサイト側が用意したものだけもらえます。またデータだけではなくて、サイトの機能を使えるところもあります。(例えばTwitterだと投稿機能)
このWebAPIを使うと何ができるのかというと、4章、5章で説明した補助サイト作りや、検索システムの作成、番外編でやったようなサイトの情報を使った解析、分析ができます。あとはスマホアプリ作りにも利用できます。
ちなみにWebAPIを公開するかはそのサイトの任意です。すべてのサイトで利用できるわけではありません。WebAPIを公開している有名なサイトだと、Wikipediaがありますね。記事の内容、リンク、カテゴリなんかを取得できます。それ以外にも、NHKや国会図書館、気象庁、NTTドコモ、YouTube、ニコニコ動画、Instragram、Twitterなどなど多くのサイトで利用できます。小説家になろうも公開しています。
欲しいデータが決まっている場合でWebAPIを探すのであれば、検索エンジンで『"WebAPI" <欲しいデータ>』と検索するといいでしょう。色々なサイトで色々なデータを取得することができます。またどんなWebAPIがあるかは『WebAPI一覧』や『WebAPIまとめ』で検索するといいと思います。
さて、ここで、WebAPIを使う前に絶対に読まないといけないのは利用規約です。当たり前ですけど、利用規約は守ってください。利用者制限、利用回数制限なんかもあります。著作権に関する事も書いてあるのでしっかり読んでください。
あとアクセスの注意点ですが、Webデータに連続してアクセスする場合は、必ず1秒以上の間隔をあけてください。何故かというと、プログラムによる連続アクセスは度が過ぎるとWebサーバーに大きな負荷をかけてしまうからです。(俗にいうサイバー攻撃です)
この1秒はどこからきているかというと、国立国会図書館の資料に書かれたクローラー(ウェブ上の文書や画像などを周期的に取得し、自動的にデータベース化するプログラム)の運用ルールからです。その資料には間隔を1秒以上あけることが記述されています。
参考:『国立国会図書館法によるインターネット資料の収集について』http://warp.da.ndl.go.jp/bulk_info.pdf(最終検索2018年2月)
最大1秒に1回のアクセスは、1人がブラウザを使って実現できるアクセス間隔です。人力で出来てしまう程度であれば、支障が出てもそれは個人の責任ではなく、サーバー側の問題と判断されやすいです。もし、プログラムにより、サーバーをダウンさせるようなことがあれば、営業妨害で訴えられる可能性もあります。なので、WebAPIを使用するときはこのことを念頭に置いてから行うようにしてください。
そしてこれに関連して、WebAPIを使う人が必ず知っておきたい事件が一つあります。
『LibraHack事件』というのを聞いたことはありますか? 2010年に起きた事件なのですが、簡単に言うと図書館の蔵書検索ページからデータ収集していた方が逮捕されたという事件です。
正式名称は『岡崎市立中央図書館事件』ですが、逮捕された人が事件の後、Librahackというサイトを立ち上げて解説をしたことから、Librahack事件とも呼ばれてます。
参考:https://ja.wikipedia.org/wiki/%E5%B2%A1%E5%B4%8E%E5%B8%82%E7%AB%8B%E4%B8%AD%E5%A4%AE%E5%9B%B3%E6%9B%B8%E9%A4%A8%E4%BA%8B%E4%BB%B6
参考:http://librahack.jp/
アクセスを行っていた男性はクローラーという自動収集プログラムを作って、岡崎市立中央図書館からデータを自動収集していました。しかし、図書館の検索ページの負荷が高くなってアクセス障害が発生しました。図書館はその際、頻繁にアクセスしていた男性のIPアドレスのアクセス制限を行いましたが、男性は自分の問題ではなくシステムの問題としてIP変えて再びデータ収集を開始しました。その後もサイトの閲覧が困難になる事態が相次いだため、図書館側が被害届を出し、男性は信用毀損罪・業務妨害罪容疑で逮捕されました。
この男性のプログラムのアクセス間隔は1秒以上あけていたにも関わらずです。
そのため、サイトからデータ収集、非公式アプリやそういった関連サイトを運営している人たちはかなり慌てたようですね。もしかしたら自分も逮捕されるかもと、戦々恐々としていたようです。
結局のところ検索サービスの方が不具合があったので、男性は起訴猶予処分となりました。システムにある時間内に一定数のアクセスがあると応答しない不具合があったようです。
1秒以上あけていてもこういった事件が起きたのですが、この事件の論点は時間ではありません。
この事件で最も重要なのは、『意図』があってやったことかです。この男性もそういった意図はなかったのですが、貧弱なサーバーだと1秒以上間隔をあけていてもこういったことが起きることを予想できただろうということで逮捕されました。男性のサイト内に、『今思えば、取り調べの時に行うべきだったのは、故意の否定です。故意を否定するために最も受け入れやすい話をすべきでした。』と書かれています。サーバー云々ではなく、『意図』があったかが論点なのです。
正直なところ1秒ルールは、『私にサーバーを攻撃する意思はない』ことを言うためのものです。あなたのサーバーに考慮してますよという意思表示なのです。通常のサイトであれば、それぐらいの負荷には耐えられます。
しかし、取得先が個人で運営しているような利用者数が少ないサイトならば、1秒とは言わずもっと間隔をあけるべきですし、普通に利用していてもサイトの動作が重い場合はやるべきではないです。
なるべく相手側に配慮したデータ収集を心掛けるようにすれば、問題は起きないと思います。例えばサイトの利用者数の少ない時間帯に行ったり、取得時に圧縮するなどしてデータ量を減らす、必要な情報だけリクエストする等、なるべく効率的に利用できるようにあらかじめ考えたうえで使うことを心がけましょう。
ただ、今回教えるレベルではそこまで気にしなくていいと思います。これから自動収集なんかを考えている人は、きちんと頭に入れてくださいね。なお、このエッセイで説明するやり方では1秒以上の間隔をあけるようになっているので、そこまで怯えなくても大丈夫です。また、小説家になろうのサーバーは月間14億アクセスを捌くことができるので、ちょっとやそっとのアクセスでは落ちることはないでしょう。ただアレンジするときには気をつけてください。
ちなみにWebAPIを公開する理由ですが、サイトサービスの活性化のためですね。WebAPIを使って様々な付加価値を他の人が提供してくれるようになるのです。例えば小説家になろうでいえば、4章、5章で説明したような関連サイト、ランキングサイト。運営だけでは手が回らないところを他の人が作ってくれる。それがWebAPIを公開する理由です。
要するにもっとサイトを自由に使っていいっていう表れなのです。本来、こういったWebAPIを公開するのはリスクにつながるし、非公式サイトや非公式アプリが作られるので広告を収入にしている小説家になろうにはあまりメリットがないんです。ですが、公開しているのは、もっと色々な試みをやってもいいんだよっていうことなのでしょう。データ分析もそれの一つですし、補完サイトもそうですね。なので、せっかくあるんだから使いましょう。いろんな人が使えば、また別の考えも生まれるかもしれません。
◆ ◆ ◆
というわけで長々と説明しましたが、7章ではそんなWebAPIの使い方をお教えします。
といっても、難しい事をやるわけではありません。プログラミングが必ず必要であるかと言えばそうではありません。集計とかするなら必要ですが。
ここで説明するのは導入くらいですが、『どういう物なのか』、『どんなことが出来て』、『どうすれば使えるのか』を教えます。それさえ分かれば、必要な人はやると思うのです。
WebAPIが分かれば番外編のようなデータ分析が出来ますし、他サイトのように補完サイトを作れます。スマホアプリだって作れます。もし、そういったことがやりたい場合はプログラムを勉強する必要がありますね。
それでは、前置きが長くなりましたが、7章もお楽しみください。
※参考文献 nezuq (2015)『実践 Webスクレイピング&クローリング』マイナビブックス




