Diary of a Perpetual Student

Perpetual Student: A person who remains at university far beyond the normal period

自由研究のために乗換案内をスクレイピングしようとしたら法律の勉強をすることになった話

PR & Introduction

こんにちは。id:arthur-1です。GWいかがお過ごしでしょうか。まずはPRから。

hatenacorp.jp

株式会社はてなが2022年5月1日付でフレキシブルワークスタイル制度をアップデートしました。その1要素として、居住地に関する制限が全国に拡大します。

社員・契約社員の居住地条件を「日本全国」(※)

出社時に飛行機や新幹線を含む公共交通機関を利用した際の交通費は毎月5万円を上限に実費支給

※ 居住地は「要請があった場合、所属オフィス(京都・東京)にAM11時に出社できることを目安とする」などの条件あり

と言われて、では実際どこに住めるのか、気になりませんか?気になりますよね?

住みたい場所が決まっている人は良いのですが、この条件を満たす良い住処はないかなあと思っている人の選択肢を提示できるサービスがあったら素敵だなと思いました。今回のエントリは、GWの自由研究として「11時までに出社できる到達圏マップ」を作ろうとして挫折したという話になります。

先行研究の調査

Twitterで「●●大学1限マップ」なる画像ツイートを見たことはありませんか?各大学の地理に詳しい方々がこのように地図を公開して、大きな反響を呼んでいます。イメージとしてはこれをプログラミングによって機械的に作りたいんですよね。

しかし、僕は残念ながら地理オタクではないので、これを行うのに必要な情報をどうやって得るかという知見がありません。当然時刻表の分厚い冊子を買ったこともありません。日本全国の鉄道・空路全てを網羅して自分で調査するのは困難で、手作業で情報を集めると考慮抜けが発生してしまうことが想定されます。そこで、各社が提供しているオープンAPIにアクセスして、必要な情報(11時にオフィスに到着できる出発駅のリスト)を機械的に集めようという方針を立てました。

Open API

地図アプリの代表と言えばGoogle Mapだと思いますが、最近のGoogle Mapはアプリ内で公共交通機関を含んだ経路検索ができて便利ですよね。つまり、Googleは情報を持っていて、それをAPIとして提供しているのではないかと考えました。調査したところ、Google Maps PlatformのDirection APIによって、情報を取得できそうでした。

ところが、FAQにこんなことが書いてありました。

Directions API と Distance Matrix API は、日本を除くすべての国の Google 乗換案内パートナーをサポートしています。

ということで残念ながら振り出しに。

他社が提供している個人で使えそうな乗換案内系のOpen APIも調査しましたが、いずれも日時まで指定しての時刻表のデータを考慮した経路検索はできないようでした。

ちなみに、NAVITIME APIのReachableというサービスを利用すると、到達圏検索ができるので今回やりたいようなことに近いことができます。ただし、時刻表180分より長い時間を設定できない上に、出発時間/到着時間も設定できないので見送りました。これはこれでおもしろそう。

rapidapi.com

qiita.com

乗換案内サービスの利用規約

仕方ないので、各種乗り換え案内サービスにpuppeteerでスクレイピングして全駅分情報を取得するか、という気持ちになりました。とてもnaiveですが、日本中の各駅・バス停などを出発地、オフィスを到着地として、到着時刻を11:00に設定して経路検索をすれば、出発日時を見ることで出社可能か否かが分かりますよね。

あれ、でもこれって利用規約的にOKなんだっけ?と頭をよぎりました。先程のOpen APIがちゃんとした経路検索の機能を提供していないことも踏まえると、ダメそうな予感がします。

Yahoo! 路線情報

Yahoo!路線情報ヘルプ

路線に掲載されている情報は、情報提供元との契約により配信されているものです。そのため、情報や画面の二次利用は基本的に不可となります。

無理そう。

NAVITIME

利用規約 | NAVITIME

お客様は、本サービス及び本サービスで使用されているソフトウェア、ドキュメント、データ、画像、キャラクター、ロゴ等につき、次に定めることを行ってはなりません。

(3) 複製、頒布、公衆送信、改変、翻訳、翻案又は二次的著作物の作成をすること

翻案ってなんだろう?あと二次的著作物には該当するのだろうか。

駅すぱあと for web

利用規約 | 駅すぱあと for web

お客様は本サービスの利用に関して、次の各号に定める行為を行わないものとします。

(2)当社若しくは第三者の商標権、著作権等の知的財産権その他一切の権利を侵害する行為、又は侵害するおそれのある行為

直接的にNGであるとする表現はなかったけれど、ここに引っかかる可能性があるのかな?

ジョルダン

サイトのご利用にあたって|乗換案内ヘルプ|ジョルダン

当サイトに関する著作権を含む一切の知的財産権等の権利は、当社又は当社に対して使用許諾を行っている情報提供者に帰属します。 当サイトの内容を無断転載・複写・修正・改変し、または第三者に譲渡することを禁じます。

直接的にNGであるとする表現はなかったけれど、ここに引っかかる可能性があるのかな?

ekitan

利用規約 - 駅探

(1) 本サービスに関する一切の権利は、当社および知的財産権を有する当社へのライセンサに帰属します。本サービスの内容を無断で転載・複写・修正・改変・蓄積・転送し、または第三者に譲渡することを禁じます。

(2) 当社は、JR各社、電鉄各社およびその指定機関等から直接、時刻表ダイヤグラムを含むデータを購入し、その利用許諾を得て本サービスを提供しております。お客様は、有償無償・利用形態の如何に拘わらず、当社の許可なく当該データを加工・再利用・再配布・販売することはできません。

無理そう。

スクレイピングと法律と利用規約

実はこれまで個人的にいろんなデータをスクレイピングして解析して遊んできていましたが、不安ではあったんですよね。そこで、法的根拠についてちゃんと調べてみることにしました。

以下のページが丁寧な説明で参考になりました。

sugiaki1989.gitbook.io

topcourt-law.com

また、以下のページでは総務省スクレイピングを可能としている根拠を紹介していました。*1

self-development.info

調べてわかったことをまとめると、

  • データ分析目的なら法的には大丈夫 (知らなかった)
  • robots.txtを確認しよう (知ってた)
  • 利用規約を確認しよう (知ってた)
    • でも、使う前に同意を求められなければ大丈夫かも (知らなかった)
  • たくさんアクセスをしてサーバ落としたりすると偽計業務妨害罪になるかも (知ってた)

といったところです。ただ「ダメそう」という雰囲気ではなく、法的にアウトか(刑事訴訟されるかも)、サービスの利用規約としてアウトか(BANされる・民事訴訟されるかも)という切り分けも大事かもしれません。もっとも、僕は後者なら破っても良いかと思う人間ではないですが。

ここまで調べているうちに、僕がしたかったのは法律の勉強じゃない!と思い、調査に時間がかかったのもあって熱が冷めてしまいました。

思ったこと

まずは1クリエイターとして、いろいろな情報が一定の秩序が守られた上で自由に使える世界にもっとなって欲しいと思いました。多量のデータから機械学習を行うdeep learningが様々な領域に応用されて久しいですね。自分が提供するサービスではきちんとルールを定め、個人情報保護などを考慮しつついろんな情報を利用しやすい形で提供できるよう心がけたいです。

もちろん、連絡をすればOKをもらえるかも、という考えもありますよね。(実際、これまで個人で提供してきたサービスも、関係者と直接連絡を取って許可をいただいたものがいくつかあります。)でも、僕はチキンなので、そこまでの労力をかけて提供しようと思えない限りは諦めてしまいます。他にもやりたいことはいくらでもあるので。

この件に限らず、例えばUGC(User Generated Contents)においては、ユーザが投稿した内容が法律に触れていないかという問題もありますね。このように、ものづくりの技術だけでは作ったものを合法的に提供することができません。企業は法務部や顧問弁護士を抱えていますが、個人のクリエイターが同じことをするのは難しいですよね。自分が全知全能になるか、外注するしかないと思いました。全知全能を目指す方向性はスケールしないことが明らかで厳しいですね。やはり同じ志を持つ仲間を見つけてカバーする専門領域を拡大していくのが大事かもしれないです。

という感想を書き綴ったところでGWの自由研究発表を終わります。他にも自由研究ネタはいくつかあるけどpublicにはしないと思います。

*1:以下のページでは全く触れられていませんが、総務省は各サービス提供者から事前承諾を得ています。諸外国の事例も載っていて参考になるので元の資料(https://www.soumu.go.jp/main_sosiki/kenkyu/big_data/02toukatsu01_04000328.html の資料1)を参照推奨です。