Polars を Rust プラグインで拡張:fenic が Python UDF を捨てた理由

Extending Polars with Rust Expression Plugins

Polars を Rust プラグインで拡張:fenic が Python UDF を捨てた理由

fenic は、非構造化データ向けの AI/LLM パイプラインを構築するためのセマンティック DataFrame ライブラリで、そのエンジンとして Polars を採用しています。しかし、テキスト処理(チャンキング、プロンプトテンプレート、jq、ファジーマッチングなど)に必要な操作は Polars には存在せず、Python UDF では遅く、型も保証されず、式の合成も壊れていました。そこで fenic は Rust で 9 つの式プラグインを開発。pyo3-polars を使うことで、FFI や Arrow のマーシャリングを意識せずに、ネイティブな Polars 式として動作するプラグインを簡単に書けます。この記事では、その設計判断と実装の詳細を、実際のコードを交えて解説します。

プラグインは、エンジンにとって組み込み関数と区別がつかない。

この日のほかの記事

2026-07-24