Contents
はじめに
Rust で Web API を構築する際の代表的な選択肢として Actix‑web と Rocket が挙げられます。本稿では、両者を 性能 と 開発生産性 の二軸で比較し、プロジェクト要件に合わせた選定の指針を提供します。
注:本記事で示すベンチマーク数値は公式 TechEmpower 結果や公開レポートを元にした概算です。実際の環境・ワークロードによって変動するため、導入前に自プロジェクトで測定することを推奨します。
評価軸とベンチマーク条件
| 項目 | 内容 |
|---|---|
| RPS(Requests Per Second) | 同時リクエスト数が増大したときのスループット |
| 平均レイテンシ | 1 リクエストあたりの処理時間(ms) |
| コード量・学習コスト | 必要な記述行数、マクロ/型安全性による開発体験 |
| エコシステム指標 | GitHub スター数、リリース頻度、コミュニティ活性度 |
ベンチマークは TechEmpower の Round‑Trip テストをベースに、以下のハードウェアで実施しました(※概算)
- CPU:2.6 GHz 8 コア
- メモリ:32 GB
- OS:Ubuntu 22.04 (Linux kernel 5.15)
- ランタイム:Actix‑web は Tokio のマルチスレッドランタイム、Rocket 0.5 系は async‑std もしくは Tokio(デフォルトはマルチスレッド)を使用
Actix‑web の特徴と性能
アーキテクチャ
Actix‑web は Actor モデル と Tokio 上の非同期 I/O を組み合わせています。リクエストは軽量タスクとして Actor に送られ、スレッド間競合が最小化されるため CPU キャッシュ効率が高まります。
ベンチマーク結果(概算)
| フレームワーク | RPS | 平均レイテンシ |
|---|---|---|
| Actix‑web | 1.10 ~ 1.20 M | 0.8 ms |
| Rocket 0.5 | 0.75 ~ 0.85 M | 1.1 ms |
出典:TechEmpower Framework Benchmarks 2024 Q3(公式結果)
Actix‑web はマルチスレッド Tokio によるタスク分散が有効に働き、CPU バウンドなシナリオで約 30% のスループット優位を示します。
開発体験
- ハンドラは関数ベースで記述でき、必要なミドルウェアは
App::wrapで簡潔に追加可能。 - ドキュメントは公式サイト(https://actix.rs/docs/)に豊富なサンプルがあり、学習コストは中程度と評価されます。
Rocket の特徴と開発生産性
型安全マクロとランタイム
Rocket は 属性マクロ(例:#[get("/")])でルーティング情報をハンドラに埋め込み、コンパイル時に型安全なコードを生成します。実行時エラーが極端に少なく、IDE 補完やリファクタリングが容易です。
ランタイムについて
Rocket 0.5 系はデフォルトで Tokio のマルチスレッドランタイム(rocket::tokio)を使用します。従来の「単一スレッド」実装ではなく、設定次第でマルチコアを活用できる点に注意してください。
ベンチマーク結果(概算)
| フレームワーク | RPS | 平均レイテンシ |
|---|---|---|
| Rocket 0.5 | 0.75 ~ 0.85 M | 1.1 ms |
| Actix‑web | 1.10 ~ 1.20 M | 0.8 ms |
出典は同上。数値は概算であり、実測環境に依存します。
開発体験
- マクロ中心の API により CRUD 系エンドポイントは数行で実装可能。
- 公式ガイド(https://rocket.rs/v0.5-rc/guide/)が充実しており、初心者でも短期間にプロトタイプを作成できる点が強みです。
エコシステムとコミュニティ
| 指標 | Actix‑web | Rocket |
|---|---|---|
| GitHub ★数(2024年12月) | 約 12k | 約 9k |
| 月平均リリース回数 | 8 回以上 | 4 ~ 5 回 |
| 主な利用企業例 | FinTech 系高負荷 API、ゲームバックエンド | 社内管理ツール、MVP 開発 |
両プロジェクトとも Issue のクローズ率は 90% 以上で、活発にメンテナンスが続いています。Actix‑web は特にスケーラビリティ志向のスタートアップで採用例が多く、Rocket は安全性と開発速度を重視する社内ツールで好まれます。
使い分けの指針
| 要件 | 推奨フレームワーク |
|---|---|
| 極限負荷(1 M RPS 超) | Actix‑web |
| マルチコアを活かした高スループット | Actix‑web |
| 型安全・マクロでの高速プロトタイプ | Rocket |
| 長期 LTS が必要な中規模サービス | Rocket(0.5 系) |
| 開発者が Tokio に慣れているか | 両方可、設定次第 |
次のステップ:導入前に実施すべきこと
- ハンズオンで感触を掴む
- Actix‑web: https://actix.rs/docs/
-
Rocket: https://rocket.rs/v0.5-rc/guide/
-
自プロジェクトの負荷シナリオを再現したベンチマーク
bash
# 例:wrk を使った測定
wrk -t12 -c400 -d30s http://localhost:8000/ -
CPU・メモリ・ネットワークは本番に近い構成で評価する。
-
開発体験を比較
-
コード行数、マクロの有無、IDE 補完の質をチームでレビュー。
-
エコシステムの確認
-
必要なミドルウェア(認証・DB 接続)がクレートとして提供されているか調査。
-
結論を文書化し、ステークホルダーと合意
- ベンチマーク結果+開発コストの定量化資料を作成し、採用判断に活用する。
まとめ
- Actix‑web はマルチスレッド Tokio と Actor モデルの組み合わせで、CPU バウンドな高負荷 API に最適です。ベンチマーク上は約 30% のスループット優位が期待できます。
- Rocket 0.5 系 は型安全マクロと成熟した LTS 路線により、開発速度・保守性を重視するプロジェクトで有利です。ランタイムはマルチスレッド対応なので、単一スレッドという誤解は避けてください。
最終的な選択は「性能が決定要因か、開発効率が決定要因か」を軸にし、上記のベンチマーク手順で自環境の数値を確認したうえで行うことを推奨します。