【ITニュース解説】How we moved Crawlee for Python out of Beta
2025年09月30日に「Dev.to」が公開したITニュース「How we moved Crawlee for Python out of Beta」について初心者にもわかりやすく解説しています。
ITニュース概要
オープンソースのウェブスクレイピングライブラリ「Crawlee for Python」がベータ版を経て正式リリースされた。JavaScript版と同等以上の性能を目指し、ストレージ管理や高速クローリング、高度なHTTP処理など機能が大幅に強化された。今後も改善が続く。
ITニュース解説
Crawlee for Pythonというウェブスクレイピングのツールが、ついにベータ版を卒業し、正式版としてリリースされた。これは、ウェブサイトから自動的に情報を集めるためのソフトウェアツールが、より信頼性が高く、高機能になったことを意味する。システムエンジニアを目指す皆さんにとって、このようなツールがどのように開発され、進化していくのかを知ることは、将来の製品開発やプロジェクト進行の理解に役立つだろう。
まず、Crawlee for Pythonとは何かについて説明しよう。これは、ウェブスクレイピングを専門とするオープンソースのライブラリだ。オープンソースとは、そのプログラムの設計図(ソースコード)が一般に公開されており、誰でも自由に見たり、使ったり、改良したりできるということ。このライブラリを使うと、金融データを集めて企業の不正を突き止めたり、世界的な汚染源を追跡したり、競合するオンラインストアの価格を比較したりと、ウェブサイト上の様々な情報を自動で抽出するツール、つまり「スクレイパー」を簡単に作ることができる。あなたのアイデア次第で、使い方は無限に広がるだろう。
では、なぜこれまでは「ベータ版」だったのだろうか。Crawlee for Pythonは2024年7月にベータ版として登場した。実は、これより数年前に、JavaScriptという別のプログラミング言語で開発された「Crawlee for JS」というツールがすでにリリースされており、そちらは当初から高い機能を持っていた。開発チームは、Python版もJS版と同等、あるいはそれ以上の機能を持たせたいと考えていたが、当時のPythonで利用できる関連ツールはまだ新しく、実際の環境で十分にテストされていなかった。そのため、テストが不十分なツールを最初から組み込むのではなく、まずはベータ版としてリリースし、実際のユーザーに使ってもらいながら問題点を見つけ、改善していくという判断が下されたのだ。
このベータ版の期間は、開発チームにとって非常に貴重な時間だった。ユーザーからの具体的なフィードバックを通じて、新しいコードで発生する問題点を解決したり、コミュニティからの要望を受けて新機能を追加したり、処理速度の改善を行ったりすることができた。ベータ版として公開することで、多くの開発者がこのツールを実際に使ってくれ、彼らからの報告によって、ライブラリの隠れた問題が明らかになり、より完全な製品へと進化させるための貴重な情報が得られたのである。
そして、正式版であるv1(バージョン1)をリリースするために、開発チームは多岐にわたる準備を進めてきた。
まず、ライブラリ自体の改善だけでなく、その性能を客観的に評価するための「ベンチマーク」を複数作成した。これにより、様々な種類のクローラーがどれくらいの性能で動作するのかを継続的に測定し、Crawlee for Pythonが他の開発者向けツール、例えばCrawlee for JSと比べてどの程度の性能を持つのかを比較できるようになった。
さらに、Crawlee for JSが持っていた主要な機能のほとんどを、このPython版v1で再実装した。特に重要な追加機能としては、以下の点が挙げられる。
一つ目は「統合ストレージクライアントシステム」だ。これは、スクレイピングで得られたデータを保存する方法を統一する仕組みで、これによりコードの重複が減り、拡張性が向上し、開発者にとってより使いやすい環境が提供される。また、このシステムはオープンな設計であるため、コミュニティのメンバーが特定のデータベースやクラウドストレージサービスに特化した独自の保存方法を開発し、共有することも可能になる。
二つ目は「アダプティブPlaywrightクローラー」だ。Playwrightは、ウェブブラウザを自動操作するための強力なツールだが、このアダプティブクローラーは、ウェブサイトの種類に応じて賢く動作する。具体的には、シンプルなウェブページでは高速にデータを収集し、JavaScriptを多用するような複雑で動きのある最新のウェブサイトに対しても、堅牢に、つまり安定してデータを取得できるようになる。これにより、スクレイピングの速度と安定性の両方を高め、コストを削減することも可能になるのだ。
三つ目は、新しいデフォルトのHTTPクライアントとして「ImpitHttpClient」を導入したことだ。これはApifyという開発元がオープンソースで開発しているImpitライブラリを基盤としている。このクライアントを使うことで、誤った情報(偽陽性)の取得が減り、より回復力のある、つまり途中で止まりにくいクロールが可能になり、複雑な回避策を講じる必要が少なくなる。Impit自体もオープンソースなので、その内部構造を詳しく調べたり、改良に貢献したりすることもできる。さらに、ユーザーは自分自身のImpitインスタンスを作成し、HTTP/3の有効化や特定のブラウザプロファイルの選択など、自身のニーズに合わせて細かく設定し、クローラーに適用することも可能だ。
四つ目は「サイトマップリクエストローダー」だ。多くのウェブサイトは、サイト内のページのリストを示す「サイトマップ」を提供している。この機能を使えば、サイトマップが網羅的に用意されている大規模なウェブサイトでも、非常に簡単にサイト全体のクロールを開始できるようになる。
五つ目は「Robots排除標準」への対応だ。これは、ウェブサイトの所有者が「このページはクロールしないでほしい」という意図を示すために用いる「robots.txt」というファイルに従う機能だ。これにより、倫理的かつ責任あるクローラーを作成できるだけでなく、クロールが許可されていない、あるいは無関係なページをスキップすることで、無駄な時間や通信帯域を節約することにもつながる。
六つ目は「フィンガープリンティング」という技術だ。ウェブサイトの中には、自動化されたアクセス、つまりクローラーからのアクセスを検知してブロックしようとするものもある。フィンガープリンティングは、クローラーからのアクセスが、あたかも実際のデバイスで使われている実際のブラウザからのアクセスであるかのように見せかけることで、ブロックされる可能性を低減する。Crawleeでは、いくつかのオプションを設定してフィンガープリント生成器を作り、それをクローラーに渡すだけで簡単に利用できる。
最後に「Open Telemetry」という機能を追加した。これは、クローラーの動作状況を監視・分析するための仕組みだ。リアルタイムのダッシュボードで現在の状況を確認したり、処理の流れ(トレース)を分析してクローラーのパフォーマンスを詳細に把握したりすることができる。既存の監視システムにCrawleeを組み込むことも容易になる。
これらの機能を実装し、可能な限り多くの実際の利用シーンを想定してテストを重ねた結果、開発チームはついに、当初思い描いていたCrawlee for Pythonのビジョンが実現されたと判断した。これで、Crawlee for Pythonは、JavaScript版と並ぶ、本格的なウェブスクレイピングおよび自動化ライブラリとして提供できる準備が整ったというわけだ。
もちろん、正式版としてリリースされたからといって、開発が終わるわけではない。Crawlee for Python v1は「ローリングリリース」として、今後も継続的に改良が加えられていく。つまり、常に最新の状態にアップデートされていくということだ。開発チームは、さらなる改善の余地があることを認識しており、ここで皆さんの出番となる。
実際にCrawlee for Pythonを使ってみて、何かバグや予期せぬ動作に遭遇したら、それを報告してほしい。もし不明な点があれば質問してほしい。それはドキュメント(説明書)の改善につながる。そして、こんな機能があったらいいのに、という要望があれば、ぜひ伝えてほしい。皆さんのフィードバックが、このツールをさらに洗練させ、あらゆるウェブクロールや自動化のニーズに応えられるように適応させていくための原動力となる。
この解説を通じて、製品がベータ版から正式版へと移行するまでのプロセスや、その過程での開発チームの意思決定について、少しでも理解が深まれば幸いだ。Crawlee for Pythonだけでなく、JavaScript版のCrawlee、あるいは今回の記事で触れたツールや開発プロセスについて疑問があれば、ぜひ尋ねてほしい。実際に使ってみて、問題点を共有することで、このツールがさらに進化していくことに貢献できるだろう。