BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//pretalx//pretalx.com//pyconjp2026//talk//FXFNLY
BEGIN:VTIMEZONE
TZID:Asia/Tokyo
BEGIN:STANDARD
DTSTART:20250821T000000
TZNAME:JST
TZOFFSETFROM:+0900
TZOFFSETTO:+0900
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
SUMMARY:PyO3 で既存 Python 評価器を Rust core にする — wasm-bi
 ndgen でブラウザにも配るための設計 - Yuki Furukawa
DTSTART;TZID=Asia/Tokyo:20260821T161500
DTEND;TZID=Asia/Tokyo:20260821T164500
DTSTAMP:20260818T083930Z
UID:pretalx-pyconjp2026-FXFNLY@pretalx.com
DESCRIPTION:同じ判定ロジックを複数の言語で動かしたい
 。\n素直にやれば各言語で書き直すことになりますが、
 実装が二つに分かれた時点から仕様は少しずつずれ始
 めます。今回はそれをどう一つに保つかという設計の
 話をします。\n\n私たちは、店舗ごとに設定された条件
 を「式木」として評価する仕組みを Python で実装してい
 ました。サーバ内では問題なく動いていましたが、同
 じ評価をブラウザでも動かす必要が出たとき、JavaScript 
 への書き直しは選びませんでした。評価ロジックの正
 本が二箇所に分かれるコストのほうが長期的には重い
 からです。数値の比較、真偽値への強制、NULL の扱い…
 。一つひとつは些細でも別々に育った実装はいつか必
 ず食い違います。\n\nそこで、評価エンジンを Rust で一
 度だけ書く方式を取りました。Rust の core を PyO3 で Pytho
 n 拡張として、ブラウザ向けには wasm-bindgen を用いて Was
 m として配布する。実装を一つに寄せることでロジック
 そのものが分岐する余地を大きく削減できます。\n\nト
 ークの中心は PyO3 です。Python と Rust のあいだで値をど
 う変換するか、Rust の Result をどう Python の例外へ橋渡
 しするか、maturin での配布をどうするか等、実際に Rust 
 core 化を進めるうえで生じる設計・実装上の論点や、つ
 まずきやすいポイントを紹介できればと思います。\n\n
 なお、本トークでは Rust や WebAssembly の予備知識は前提
 にしません。ただし、Rust のコード例は登場するので基
 本的な構文に触れたことがあると実装部分は追いやす
 くなります。\n本発表を通じて、どこまで Python のまま
 でよくて、どこから Rust + PyO3 に踏み込むのかの見極め
 を一緒に考えられたらうれしいです。
LOCATION:Dahlia 2
URL:https://pretalx.com/pyconjp2026/talk/FXFNLY/
END:VEVENT
END:VCALENDAR
