PythonからRustへ!スクレイピングツール開発で感じた驚きと苦労
他人の作ったライブラリを効率的に扱うことができました。入力や出力の型が決まっているので定義ジャンプすればそれがどんな型なのか、どんな関数が用意されてるのか見ることができます。ソースコードも非常に読みやすいです。 trai […]
Filter by Category
PythonからRustへ!スクレイピングツール開発で感じた驚きと苦労
今回は、スクレイピングツールをPythonからRustに書き換えた経験と感想をお伝えしたいと思います。 スクレイピングとは、Webサイトから自動的にデータを取得することです。私は最近Rustというプログラミング言語に興味を持ちました。そこで、以前Pythonで作ったスクレイピングツールをRustに書き換えてみることにしました。 この記事では、私が実装したスクレイピングツールの機能や仕組み、PythonとRustの比較や開発体験、書き換えて変わった点などを紹介します。スクレイピングやプログラミングに興味がある方はぜひ読んでみてください。
私が実装したスクレイピングツールは以下の4つの機能を持っています。
PythonからRustへ書き換える過程で感じたことは大きく分けて2つあります。一つはPythonとRustそれぞれの強みや弱みです。もう一つはどんな場面でどちらが有利かです。
Pythonは非常に使いやすい言語です。情報が多くて殆どライブラリが用意されているので、小規模な場合はPythonで書く方が楽で速いです。また、動的型付け言語なので型宣言やコンパイルが不要です。 しかし、Pythonにも欠点があります。コードリーディングが困難です。自分で書いたコードでも引数や返り値が何か分からなくなったりします。そのためdocstring(関数や変数などにコメント付ける機能)を拡充させる必要があります。
Rustは静的型付け言語です。コンパイル時に型チェックやメモリ管理など厳密なチェックが行われます。そのおかげで安全性やパフォーマンスが高いです。
しかし、Rustにも欠点があります。情報の少なさです。日本語記事は殆どありません。ライブラリの使い方自体はソースコードを読めば良いですが、特にRustをAWS lambda(サーバーレスコンピューティングサービス)に載せる時などは情報がなく非常に苦労しました。 また、ライブラリも未完成のものだったり、そもそも存在しなかったりすることもあります。その場合は自分で書く必要があります。
私はPythonとRust両方使ってみて得られた知見は以下のようなものです。
以上、スクレイピングツールをPythonからRustへ書き換えた経験と感想をお伝えしました。 私はRustの高速さや安全さ、読みやすさや使いやすさに感動しました。しかし、情報の少なさやライブラリの不足などもありました。 私は今後もRustで開発することを考えていますが、プロジェクトの規模や目的に応じてPythonも使っていきたいと思います。 最後まで読んでくださりありがとうございました。
群馬県でPythonを使ったAIやソフトウェアを開発している株式会社ファントムが運営しています。
メーリングリストに登録するとファントムの最新情報をお届けします
お客様のメールアドレスを共有することはありません