PythonからRustへ!スクレイピングツール開発で感じた驚きと苦労


EIGHT
PythonからRustへ!スクレイピングツール開発で感じた驚きと苦労

はじめに

PythonからRustへ!スクレイピングツール開発で感じた驚きと苦労

今回は、スクレイピングツールをPythonからRustに書き換えた経験と感想をお伝えしたいと思います。 スクレイピングとは、Webサイトから自動的にデータを取得することです。私は最近Rustというプログラミング言語に興味を持ちました。そこで、以前Pythonで作ったスクレイピングツールをRustに書き換えてみることにしました。 この記事では、私が実装したスクレイピングツールの機能や仕組み、PythonとRustの比較や開発体験、書き換えて変わった点などを紹介します。スクレイピングやプログラミングに興味がある方はぜひ読んでみてください。

実装したこと

私が実装したスクレイピングツールは以下の4つの機能を持っています。

  • 特定のサイト(例:ニュースサイトやブログなど)をスクレイピングする
  • openAI(人工知能が文章を生成するサービス)で結果を要約する
  • サムネ画像(記事の内容を表す画像)を生成する
  • ツイートする

書き換えて感じたこと

PythonからRustへ書き換える過程で感じたことは大きく分けて2つあります。一つはPythonとRustそれぞれの強みや弱みです。もう一つはどんな場面でどちらが有利かです。

Pythonに関して

Pythonは非常に使いやすい言語です。情報が多くて殆どライブラリが用意されているので、小規模な場合はPythonで書く方が楽で速いです。また、動的型付け言語なので型宣言やコンパイルが不要です。 しかし、Pythonにも欠点があります。コードリーディングが困難です。自分で書いたコードでも引数や返り値が何か分からなくなったりします。そのためdocstring(関数や変数などにコメント付ける機能)を拡充させる必要があります。

Rustに関して

Rustは静的型付け言語です。コンパイル時に型チェックやメモリ管理など厳密なチェックが行われます。そのおかげで安全性やパフォーマンスが高いです。

  • 他人の作ったライブラリを効率的に扱うことができました。入力や出力の型が決まっているので定義ジャンプすればそれがどんな型なのか、どんな関数が用意されてるのか見ることができます。ソースコードも非常に読みやすいです。
  • trait(型に特定の機能を付与する仕組み)のデフォルト関数の設定により、個別サイトごとのスクレイピングを実装するときに追加で何を定義すればいいのかはっきりと分かります。
  • ライブラリを作る場合はPythonよりも柔軟で優れたシステムが備わっています。例えば、crate(パッケージ管理システム)やdoc(ドキュメント生成システム)などです。

しかし、Rustにも欠点があります。情報の少なさです。日本語記事は殆どありません。ライブラリの使い方自体はソースコードを読めば良いですが、特にRustをAWS lambda(サーバーレスコンピューティングサービス)に載せる時などは情報がなく非常に苦労しました。 また、ライブラリも未完成のものだったり、そもそも存在しなかったりすることもあります。その場合は自分で書く必要があります。

どんな場面でどちらが有利か

私はPythonとRust両方使ってみて得られた知見は以下のようなものです。

  • Pythonは小規模なプロジェクトやプロトタイプ開発に向いています。開発速度や手軽さを重視する場合はPythonを選ぶべきです。
  • Rustは大規模なプロジェクトやパフォーマンス重視の開発に向いています。安全性や効率性を重視する場合はRustを選ぶべきです。

まとめ

以上、スクレイピングツールをPythonからRustへ書き換えた経験と感想をお伝えしました。 私はRustの高速さや安全さ、読みやすさや使いやすさに感動しました。しかし、情報の少なさやライブラリの不足などもありました。 私は今後もRustで開発することを考えていますが、プロジェクトの規模や目的に応じてPythonも使っていきたいと思います。 最後まで読んでくださりありがとうございました。


株式会社ファントムへのお問い合わせ

群馬県でPythonを使ったAIやソフトウェアを開発している株式会社ファントムが運営しています。




    最新情報をお届けします!

    メーリングリストに登録するとファントムの最新情報をお届けします

    お客様のメールアドレスを共有することはありません