速度、安定性などを考慮して、トレードに関してはPythonから徐々にRustへ乗り換えを始めています。
特に植物の環境制御系のプログラミングのためにRustを使い始めていますが、感覚としては本当に素晴らしいものがあります。
最初は戸惑うかもしれませんが、慣れてくれば問題ないかと思います。
この記事では特にライブラリに関してスムーズに慣れていくために、Pythonでの主なライブラリがRustでどれに相当するのか、ざっくりと把握しておきます。
| Python | Rustの相当 | 解説 |
|---|---|---|
| NumPy | ndarray |
ndarrayは、多次元配列や数値計算機能を提供します。 |
| Pandas | Polars |
Polarsは、高速なデータフレーム操作を可能にします。 |
| Matplotlib | Plotters |
Plottersは、高品質なグラフ描画をサポートします。 |
| SciPy | rustimization、ndarray、nalgebra |
複数のライブラリを組み合わせて科学計算機能を実現します。 |
| Scikit-learn | Linfa |
Linfaは、機械学習アルゴリズムを提供します。 |
| TensorFlow | TensorFlow Rust バインディング |
RustからTensorFlowを利用するための公式バインディングです。 |
| PyTorch | tch-rs |
tch-rsは、PyTorchのRustバインディングです。 |
| Requests | Reqwest |
Reqwestは、シンプルで使いやすいHTTPクライアントです。 |
| BeautifulSoup | Scraper |
Scraperは、HTMLやXMLのパースとデータ抽出を行います。 |
| Flask | Rocket |
Rocketは、高速で使いやすいWebフレームワークです。 |
| Django | Actix-webとDieselの組み合わせ |
これらを組み合わせて、Djangoに近い機能を実現します。 |
| OpenCV | opencv-rust |
opencv-rustは、OpenCVのRustバインディングです。 |
| Pillow (PIL) | image |
imageは、画像の読み込み、加工、保存を行います。 |
| NLTK | rust-tokenizers、natural |
自然言語処理のためのライブラリですが、機能はまだ限定的です。 |
| Selenium | thirtyfour |
thirtyfourは、ブラウザの自動操作を行います。 |
| Asyncio | async/await構文とTokioクレート |
非同期プログラミングを言語レベルでサポートしています。 |
| SQLAlchemy | Diesel |
Dieselは、型安全なクエリビルダーとORMを提供します。 |
| Pygame | ggez |
ggezは、2Dゲームを簡単に作成できます。 |
| Multiprocessing | Rustのスレッド機能やRayon |
マルチスレッドを安全に扱い、並列処理が可能です。 |
| Twisted | Tokio |
Tokioは、非同期I/Oをサポートするランタイムです。 |
PythonからRustへの移行は、言語の文法やパラダイムの違いから最初は戸惑うかもしれません。
Rustは静的型付けであり、所有権や借用の概念など独特の特徴があります。
しかし、その分メモリ安全性や高いパフォーマンスが得られます。
ライブラリに関しては、Pythonに比べるとエコシステムはまだ成熟途中ですが、近年急速に発展しています。
主要な機能については対応するクレートが存在し、コミュニティも活発です。