概要

Rust向けの非同期ORM「SeaORM」の開発チームは、バージョン2.0を正式にリリースした。2025年7月の最初のリリース候補(RC)公開から43回ものRCを重ねた末の到達であり、プロジェクト史上最大規模のアップデートと位置付けられている。SeaORMは2021年9月に初版が公開され、2024年8月に最初の安定版1.0に到達しており、今回の2.0は約2年ぶりのメジャーアップデートとなる。GitHubスターは約9,800、crates.ioでの累計ダウンロード数は2,200万を超え、278名の貢献者が900件以上のIssueと885件のPull Requestを積み重ねてきた、Rustエコシステムを代表するORMの一つである。

主な新機能

今回の目玉は「Entity Firstワークフロー」だ。これはエンティティ定義から自動的にデータベースのテーブル構造を生成・同期する仕組みで、db.get_schema_registry("my_crate::entity::*").sync(db).await?; のような呼び出しでスキーマとコードの一貫性を保証する。これにあわせてエンティティの生成形式も刷新され、sea-orm-cli generate entity --entity-format dense によって生成される新しい「密集型(dense)フォーマット」では、リレーションが型付きフィールドとしてモデル上に直接存在するようになった。外部キーの必須・任意は BelongsTo<Entity>BelongsTo<Option<Entity>> という型で表現され、より簡潔な記述が可能になっている。

保存処理も大きく変わった。「ネストされたActiveModel」機能により、親子関係にある階層的なオブジェクトを1回の呼び出しでまとめて保存できるようになった。システムが変更箇所を自動検出し、外部キーの依存順序に沿って一括トランザクションを実行する仕組みだ。また、従来はEnumのバリアント(例: user::Column::Name)で表現していたカラム参照が、user::COLUMN.name のような強い型付きの定数に置き換えられ、誤ったカラム指定が実行時エラーではなくコンパイル時エラーとして検出できるようになった。

その他の拡張とエコシステム

2.0では非同期APIを持たない「同期型SeaORM」が追加されたほか、Arrow・Parquet形式への対応により分析用途での利用も見据えている。データベース対応も拡大し、商用版「SeaORM X」経由でSQL Serverがサポートされた。周辺プロジェクトも合わせて進化しており、GraphQL APIを自動生成する「Seaography」は再生成不要な2.0にアップデートされ、商用版「SeaORM Pro」にはロールベースアクセス制御が追加された。クエリビルダーの「SeaQuery」もバージョン1.0に到達し、1.7k以上のスターを獲得している。

移行と今後の展望

開発チームは後方互換性を重視しており、「1.0のAPIは2.0でもそのまま動作し、段階的なアップグレードが可能」としている。主な変更点はエンティティ形式であり、belongs_to フィールドが BelongsTo<Entity>(またはOption型)へと置き換わる点が中心で、詳細な移行ガイドも別途用意されている。プロジェクトが掲げる目標は「Rustエコシステムにおけるデフォルトのデータレイヤーになること」であり、Active Recordパターンの持つ生産性とRustの型安全性を融合させる方針だ。開発チームは今回の2.0を、そのビジョンに対する「明確な回答」と位置付けている。