0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AI時代、「Webアプリは作れるのにスクレイピングはできない」という逆転現象が起きる理由

0
Posted at

AI時代、「Webアプリは作れるのにスクレイピングはできない」という逆転現象が起きる理由

ClaudeやChatGPTなどの生成AIが進化して、素人でもWebアプリを作れる時代になってきました。

自然言語で、

「ログイン画面を作って」
「商品を登録できる管理画面を作って」
「Next.jsでそれっぽいUIにして」

と指示すれば、かなり短時間で「動くもの」が出てきます。

その一方で、個人的に面白いと思うのがスクレイピングです。

エンジニアからすると、本格的なWebアプリケーションを作るほうがスクレイピングより遥かに難しいです。

ところが非エンジニアがAIを使った場合、

Webアプリは作れたのに、スクレイピングは全然うまくいかない

という、一見するとよく分からない逆転現象が起こることがあります。

なぜこんなことになるのでしょうか。

Webアプリは「ガワ」ができると完成したように見える

大きな理由はこれだと思います。

Webアプリは、完成したように見えるところまでかなり早く到達できます。

例えばClaudeに、

  • ログイン画面
  • ユーザー登録画面
  • 管理画面
  • データ一覧
  • 登録・編集・削除

などを作ってもらいます。

ブラウザを開けば、きれいな画面が表示される。

登録ボタンを押したらデータが登録される。

ログインもできる。

ここまで動けば、素人からすると、

Webアプリ完成した!

と思っても不思議ではありません。

でも実際にWebアプリを公開して使い続けるとなると、他にもかなりやることがあります。

例えば、

  • 認証
  • 認可
  • DB設計
  • トランザクション
  • バリデーション
  • 排他・競合制御
  • エラーハンドリング
  • ログ
  • 監視
  • セキュリティ
  • キャッシュ
  • パフォーマンス
  • バックアップ
  • CI/CD
  • インフラ
  • スケーリング
  • ロールバック
  • 障害復旧

などです。

しかも、このあたりはユーザーからほとんど見えません。

分かりやすく数字で表すならば、本当は100個くらいやることがあるのに、最初の数個ができただけで完成したように見えてしまうわけです。それどころかもっとあるくらいだと思います。

生成AIは、この「とりあえず動くところまで持っていく」のがかなり得意です。

そのため、「Webアプリを作るのは簡単になった」と感じやすいのだと思います。

スクレイピングは失敗がすぐ見える

スクレイピングは少し事情が違います。

例えば、

この求人サイトに掲載されている求人を全件取得して、必要なスキルをCSVにまとめて

とAIに依頼したとします。

100件あるはずなのに70件しか取得できていない。

ページネーションの2ページ目以降が取れていない。

求人詳細を開いたらデータが取得できなくなった。

途中から403が返ってくる。

こうなると、できていないことがすぐ分かります。

Webアプリなら画面が表示されてボタンが動いた時点で「できた感」があります。

スクレイピングの場合は、欲しいデータが取れなければ普通に失敗です。

この違いはかなり大きいと思います。

スクレイピングは意外といろいろな知識を使う

ここで前提として、現在はスクレイピング専用のSaaSやブラウザ自動化サービス、AIによるデータ抽出ツールが多数存在します。

単純な公開ページからデータを取得するだけなら、自分でSeleniumやPlaywrightのコードを書かなくても実現できるケースはかなり増えています。

この記事は、そういったツールを使わず「スクレイピングは難しい」と言っているわけではありません。

AIや専用ツールを使えばデータを取得するところまではかなり簡単になりました。それでも対象サイトが少し複雑になったり、正確に全部取りたい、定期的に動かしたいとなったりすると、結局いろいろな知識が必要になります。

単純なページなら、

HTML
 ↓
CSSセレクタ
 ↓
欲しい文字列を取得

くらいで済みます。

でも、少し複雑なサイトになると、

HTML / CSS
    ↓
JavaScript
    ↓
DOM
    ↓
ブラウザ
    ↓
HTTP
    ↓
API
    ↓
Cookie / Session
    ↓
認証
    ↓
非同期通信
    ↓
レート制限
    ↓
データ加工
    ↓
DB / CSV
    ↓
定期実行
    ↓
ログ・監視

あたりまで関係してきます。

例えば、HTMLを取得しても欲しいデータが入っていない。

調べてみるとJavaScriptからAPIが呼ばれている。

では、そのAPIを直接呼べないか。

認証トークンはどう取得されているのか。

Cookieは必要なのか。

一定回数アクセスすると429になるなら、アクセス間隔をどうするか。

一部だけ取得に失敗したら、どこからやり直すか。

こうなってくると、単純にPythonのコードを書くだけでは済まなくなります。

さらに実際に使うとなると、

1000件中980件取れたからOK

とも限りません。

残り20件はなぜ取れなかったのか。

同じデータを二重に取得していないか。

本当に全ページを巡回できているのか。

サイトの変更で取得件数が急に減ったときに気付けるのか。

このあたりまで考える必要があります。

スクレイピングSaaSを使っていたとしても、複雑なケースでは結局、対象のWebサイトがどう動いているのかをある程度理解する必要が出てきます。

AIがコードを書いてくれても「なぜ動かないか」は残る

生成AIによって、

requests.get(...)

や、

driver.find_element(...)

といったコードを書くハードルは大幅に下がりました。

でも実際に困るのは、

なぜこのコードでは取得できないのか?

という場面です。

例えば、

「要素が見つからない」

というエラーだけでも、

  • CSSセレクタが間違っている
  • DOMが変更された
  • iframe内に存在する
  • JavaScriptで後から描画されている
  • ページ遷移前に取得しようとしている
  • ログインしていないと表示されない
  • A/BテストでDOMが違う

など、いろいろな原因が考えられます。

経験がある人ならDevToolsを開いて、

Elements
↓
Network
↓
Fetch/XHR
↓
Request Headers
↓
Response
↓
Cookie

などを見ながら原因を探せます。

場合によっては、

これSeleniumで画面を操作しなくても、裏で呼ばれているAPIを直接叩けばよくない?

という判断もできます。

こういうところは、Web開発の経験がかなり役に立ちます。

AI時代は「コードを書ける」だけでは差がつきにくくなる

以前は、

Seleniumのコードを書ける

こと自体にもそれなりに意味がありました。

今はAIに、

Playwrightでページネーションを最後まで巡回して、各詳細ページからタイトルと本文を取得してください

と頼めば、かなりのところまでコードを書いてくれます。

なので、コードをゼロから書く能力だけでは以前ほど差がつきにくくなっています。

その代わり、

このサイトはどういう仕組みで動いているのか?

AIが作ったコードはなぜ失敗しているのか?

毎日動かすなら何を追加する必要があるのか?

といったことを判断できるかどうかで差が出てきます。

これはスクレイピングだけの話ではないと思います。

「とりあえず動く」と「実際に使える」は違う

AI時代は、この違いがかなり分かりにくくなっています。

とりあえず動く

のと、

実際に公開して継続的に使える

のは別物です。

Webアプリの場合、この差が外から見えにくいです。

AIが画面を作って、正常な操作だけ試して問題なく動けば、

自分でもWebアプリを作れる

と感じやすい。

スクレイピングの場合は、この差がかなり早く出ます。

データが取れなければ、その場で失敗だと分かるからです。

そのため、

エンジニアから見た難易度

本格的なWebアプリ
    >
本格的なスクレイピング

なのに、

AIを使う非エンジニアから見た難易度

簡単なWebアプリ
    <
少し複雑なスクレイピング

という逆転が起きることがあります。

Webアプリそのものがスクレイピングより簡単になったわけではありません。

「それっぽく動いているところまで作る」のがものすごく簡単になったというほうが近いと思います。

AIが進化しても、結局やることは残る

生成AIがさらに進化すれば、コードを書く作業はもっと簡単になると思います。

でも、コードをAIに書いてもらったとしても、

  • どういう作りにするか考える
  • AIが作ったものが正しいか確認する
  • 動かない原因を調べる
  • セキュリティ上の問題がないか確認する
  • 本番環境に出す
  • エラーを記録する
  • 問題が起きたら気付けるようにする
  • 障害が起きたら直す
  • 仕様変更に合わせて修正する

といった作業は残ります。

スクレイピングは、AIがコードを書いてくれるようになったことで、逆にコードを書けることとWebの仕組みを理解していることの違いが分かりやすく出る分野なのかもしれません。

Webアプリを数分で生成できるようになっても、認証、DB、ネットワーク、インフラ、セキュリティ、監視などが不要になるわけではありません。

見た目の部分を作るのが簡単になった分、その裏側で何が起きているのかを分かっていることは、今後も重要だと思います。

まとめ

AI時代には、

非エンジニアでもWebアプリは作れるのに、スクレイピングになると急に苦戦する

という、一見すると不思議なことが増えるかもしれません。

その理由は、スクレイピングのほうがWebアプリより難しいからではありません。

Webアプリは「完成したように見えるところ」までがかなり手前にあるからです。

AIによって、そこまで誰でも簡単に到達できるようになりました。

でも、その先にはまだ大量にやることがあります。

スクレイピングについても、SaaSやAIによるデータ抽出ツールを使えば、データを取得するところまではかなり簡単になっています。

それでも対象サイトが複雑だったり、正確に全部取得したかったり、毎日安定して動かしたかったりすると、結局Webの仕組みを理解する必要が出てきます。

AIによってコードを書くこと自体はどんどん簡単になっています。

だからこそ今後は、

「コードを書けるか」より「なぜそう動いているのか分かるか」

の差が、以前より大きく出てくるのではないかと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?