Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rust In Python

Rust In Python

PythonエコシステムにおけるRustの存在感が高まっています。ruffやuvなどのCLIツールだけではなく、polarsやpydanticなどのライブラリにおいてもRustで書かれたソフトウェアが広く使われています。

本発表ではPythonの世界におけるRust活用の現状について簡単にまとめ、このあとに続く2つの発表の基礎知識を提供します。

More Decks by LINEヤフーTech (LY Corporation Tech)

Other Decks in Technology

Transcript

  1. © LY Corporation • ID: zhanpon • Python Meetup Fukuokaを主催してます

    • LINEヤフー社内のAIプラットフォームを開発してます 2 自己紹介
  2. © LY Corporation The State of Python 2025によると、 • Pythonをメイン言語として使っている人が多い

    • プログラマー経験年数が少ない人が多い • Webアプリケーションでの採用が回復 • Rust製Webサーバーの採用が増えている • Rust製ライブラリが増えている • (他にもいろいろ) 3 Python界の最新トレンド
  3. © LY Corporation • ruff: リンター、フォーマッター • uv: プロジェクト管理ツール •

    ty: 型チェッカー • Polars: データフレームライブラリ • Pydantic: バリデーションライブラリ • Granian: HTTPサーバー • Tokenizers: トークナイザー 5 Rustを採用しているプロジェクト
  4. © LY Corporation • CLIツール: ruff, uv, ty • Pythonライブラリ:

    Polars, Pydantic, Tokenizers 7 RustとPythonの連携パターン
  5. © LY Corporation uv pip install numpy を実行すると、 1. PyPIにアクセスしてnumpyのwheelをダウンロードする

    2. wheelのメタデータをパースして依存ライブラリを確認(今回の場合は無 いのでダウンロードは終わり) 3. numpyのwheelを展開して .venv/lib/python3.13/site-packages/ に配置 9 CLIツールの例
  6. © LY Corporation $ uv tool install maturin $ maturin

    init $ tree . ├── Cargo.toml ├── pyproject.toml └── src └── lib.rs 13 RustでPythonライブラリを書いてみよう
  7. © LY Corporation use pyo3::prelude::*; #[pyfunction] fn sum_as_string(a: usize, b:

    usize) -> PyResult<String> { Ok((a + b).to_string()) } #[pymodule] fn try_maturin(m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_function(wrap_pyfunction!(sum_as_string, m)?)?; Ok(()) } 14 RustでPythonライブラリを書いてみよう
  8. © LY Corporation $ uv sync $ maturin develop $

    ls .venv/lib/python3.13/site-packages/try_maturin __init__.py try_maturin.cpython-313-darwin.so 15 RustでPythonライブラリを書いてみよう
  9. © LY Corporation $ uv run python >>> import try_maturin

    >>> try_maturin.sum_as_string(2, 3) '5' 16 RustでPythonライブラリを書いてみよう