速度、安定性などを考慮して、トレードに関しては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に比べるとエコシステムはまだ成熟途中ですが、近年急速に発展しています。
主要な機能については対応するクレートが存在し、コミュニティも活発です。