ウェブサイトのサードパーティクライアントを作ることについて
先日、Twitterでちょっと面白い炎上を見かけた。サイゼリヤのWeb注文ページの非公式クライアントを作った人と、CLIツールを作った人が、それぞれボコボコに叩かれていた。
眺めながら、正直「え、なんで?」と思った。
何が問題にされたのか
批判のコメントを読み漁ってみると、大体こんな感じに分類できる。
- 「公式じゃないものを勝手に使うな」
- 「サーバーに負担をかけるな」
- 「なんか気持ち悪い」
ただ、整理してみると、法律の話・マナーの話・なんとなくの感情が全部ごっちゃになってることに気づく。それぞれ分けて考えた方がよさそうだ。
法的な観点から整理する
結論から言うと、条件次第でセーフ寄り、ただし無条件にシロとも言えない。
まず、日本にはWebスクレイピングそのものを禁止する法律は存在しない。ただ、周辺のリスクはいくつかある。
不正アクセス禁止法:他人のアカウントでログインしたり、認証を不正に突破したりする行為がこれにあたる。自分のアカウントで普通にログインした上でUIを自作する分には問題ない。そもそも今回はそういう話でもないが。
著作権法:画像やテキストをコピーして再配布するのはアウト。ただ、UIを自分で作って「表示する」だけなら話は別だ。
利用規約違反+大量アクセス:利用規約は法律ではなく契約の話だが、規約違反の状態で大量アクセスをかけると、民事上の不法行為や、場合によっては業務妨害として問題になる余地がある。
アメリカでは LinkedIn vs. hiQ Labs という裁判で、公開情報のスクレイピングは違法ではないという判断が出ている。日本法に直接当てはまるわけではないが、「公開されているHTMLを読む行為」の性質を考える上での参考にはなる。ブラウザがやっていることと本質的には同じだ。
まとめると、サーバーに過負荷をかけず、他人の認証を突破せず、コンテンツをそのまま再配布しない、という条件を満たせば、法的にはセーフ寄りの話になる。「絶対アウト」という断言は、少なくとも根拠がない。
批判側の「まともな懸念」も一度受け止める
ここで一つ正直に言っておきたい。批判の全てが感情論かというと、そうでもない。
APIを公開していないサービスをスクレイピングするのは、ある意味で「設計者の意図を無視している」とも言える。非公式クライアントはサービス側の仕様変更で突然壊れる。それを知らないユーザーが使えば、体験の質が下がる。個人の小さなツールは問題なくても、それが広まれば負荷のスケール問題になる可能性もある。
こういった懸念は、理解できる。
ただ、だからといって「作るな」にはならないと思っている。壊れるリスクを理解した上で使うのは自己責任だし、負荷の問題はアクセス頻度の設計で対処できる。設計意図を「無視している」かどうかは、公開されているHTMLを読む行為をどう定義するかによる。
懸念と、禁止の根拠は、別の話だ。
エンジニア文化として見ると
非公式クライアントは、エンジニアの世界では割と「普通のこと」だ。
なぜ公式があるのに自作したくなるのか。一言で言えば、自分の手で制御できる方が気持ちいいからだ。UIのどこに何が表示されるか、どんなショートカットで操作できるか、どんな形でデータを扱えるか。それを自分で決められる。CLIツールの場合はさらに、スクリプトに組み込める、自動化できる、という実用上のメリットもある。
初期のTwitterは、サードパーティクライアントが盛り上がったことでAPIの整備が進んだ。TweetDeckも元々はサードパーティ製だ。「使いにくいUIを自分で直す」という行為が、結果的にサービスの改善につながった例は珍しくない。
「自分が使いたいものを自分で作る」、それがOSSやハッカー文化の基本精神だと思っている。
なぜ炎上したのか
技術を知らない人から見ると、スクレイピングや非公式クライアントは「ハッキング」に見える。その感覚は理解できる。でも実態は、ブラウザが読んでいるHTMLを別の形で読んでいるだけだ。泥棒でも不法侵入でもない。
ただ、今回の炎上にはもう一つ気になる構造があった。
「わかった気」が一番厄介
バイブコーディングという言葉が流行った。AIにコードを書かせて、動けばOK、というやつだ。それ自体を否定する気はない。入り口として悪くないし、作りたいものがある人が使う分には全然いいと思っている。
問題は、「動いた」と「わかった」を混同してしまうケースが増えてきたことだ。
スクレイピングのコードをAIに書かせて動かせた、でも「なぜそれが法的にセーフなのか」「どこからアウトになるのか」は全然わかっていない、そういう状態の人が、今回みたいな炎上に加わって「これは犯罪ですよね?」と断言し始める。そしてそれが拡散される。
「AIに聞いたらスクレイピングは違法って言われた」、「なんか不正アクセスっぽい」。薄い根拠による断言が、火を大きくしていく構図。
怖いのは悪意ではなくて、中途半端な理解による自信だ。技術ってのは、わかればわかるほど「これはグレーだな」「ケースによるな」という解像度になっていく。断言が減って、条件が増えていく。入り口に立ったばかりの人ほど「絶対アウト」と言い切ってしまいがちなのは、どの世界でもそうだろう。
それでも自分は賛成派
「やめろ」という空気は、純粋に損だと思っている。
趣味で作ったツールは誰への攻撃でもなく、自分の体験をよくするための工夫だ。文句を言うより先に「じゃあ作ろう」と動ける人間は、そうじゃない人より間違いなく伸びる。
理想を言えば、サイゼリヤの中の人が「面白いじゃん、うちに来ない?」ってなる世界線が一番かっこいい。実際にそういう採用の話、たまに聞くし。
まとめ
法的には条件次第でセーフ寄り、文化的にはエンジニアの世界では普通のこと。炎上の多くは印象論で、そこに「半歩だけ踏み込んだ人たちの断言」が重なって火が大きくなった。
技術のグレーさを正確に扱えるリテラシーが、今の時代むしろ一番問われているんじゃないかと思う。「絶対アウト」と言い切れる気持ちよさより、「条件による」と言える誠実さの方が、長い目で見て信頼できる。
黙って使いにくいUIに耐えるより、「じゃあ自分で直すか」と動いてしまう人のことを、自分はかっこいいと思う。そしてそれを叩く前に、自分の理解を一度疑ってみてほしいとも思う。