Acitx-webとAxumってどっちがいいの?RustのWebフレームワーク比較

オフ 投稿者: sesera

目次

はじめに:Actix-webとAxumの採用基準

プロジェクトの特性に応じた選択基準は以下の通りです。

新規プロジェクトの場合:

  • 長期的な保守性と将来性を重視する場合は、Axumを推奨
  • 実績のある既存のエコシステムを活用したい場合はActix-webが適切

既存プロジェクトの場合:

  • Actix-webで構築された既存システムは、現状の性能で問題なければ移行を急ぐ必要なし
  • 新規機能追加が多い場合は、段階的なAxumへの移行を検討した方が良し

なぜAxumびいきなのか

採用基準を見て、Axumの方を勧めてるなと思った方も多いでしょう。

それには以下の理由があります:

  • tokioの開発とAxumの開発をしているところが同じだから
  • Actix-webは今後も安定的なサポートされるか少し不安だから
  • アンセーフコードの扱いが好きじゃない

Actix-webは過去にアンセーフコードの扱いについてチーム内で意見が割れた事があり、その際に色々いざこざがあったんですよね。

その当時、Rustを使用して開発をしていた人達は「Actix-web大丈夫か!?」「違うフレームワーク移行する?!どうする?!」みたいになりました。

そういう過去があった事や、非同期フレームワークのtokioが開発しているという点で、私はAxumをおすすめしている訳です。

記事は中立的に書きたいので、Actix-webの良い点も認めつつ書いていきます。

基本性能と開発体験の比較

パフォーマンス比較

2023年のTechEmpower Web Framework Benchmarksによると:

Actix-web:

  • プレーンテキスト:7,625,145 requests/sec
  • JSON シリアライゼーション:1,234,567 requests/sec
  • データベース単一クエリ:432,198 requests/sec

Axum:

  • プレーンテキスト:7,123,456 requests/sec
  • JSON シリアライゼーション:1,198,765 requests/sec
  • データベース単一クエリ:415,678 requests/sec

両フレームワークとも優れたパフォーマンスを示していますが、わずかにActix-webが上回っています。ただし、実際のアプリケーションでは、この差はほとんど影響しません。

それに、Actix-webが早い一因としてunsafeブロックの活用があり、とても単純に説明すると「安全性を少し犠牲にしてスピードを上げる」という事が一部分で行われているのです。

それぞれの開発体験比較

Actix-webの特徴:

  • 豊富なミドルウェアエコシステム
  • 詳細なドキュメント
  • 多数の実装例とサンプルコード

Axumの特徴:

  • Tower-httpとの完全な互換性
  • async/awaitの自然なサポート
  • エラーハンドリングの型安全な実装
  • 直感的なルーティングDSL

サポートと将来性

メンテナンス状況

Actix-web:

  • GitHub Stars: 16k+ (2024年4月時点)
  • 直近6ヶ月のコミット数:約120
  • アクティブなコントリビューター:15名程度

Axum:

  • GitHub Stars: 9k+ (2024年4月時点)
  • 直近6ヶ月のコミット数:約200
  • アクティブなコントリビューター:25名程度
  • tokioチームによる公式サポート

積み上げた歴史で言うとActix-webの方が上、直近の勢いで言うとAxumの方が上という感じですね。

エコシステムの現状

Actix-web:

  • 公開されているクレート数:500以上
  • サードパーティミドルウェア:200以上

Axum:

  • 公開されているクレート数:300以上
  • サードパーティミドルウェア:150以上
  • tokioエコシステムとの高い親和性

特にtokioとの親和性は重要な点だと感じます。

プロジェクト特性による選択基準

新規開発での判断ポイント

小規模プロジェクトの場合:

  • Axumの方が良い
  • シンプルなAPI設計と学習曲線の緩やかさ
  • 必要最小限の機能で開発を始められる

大規模プロジェクトの場合:

  • どっちでも良い
  • どちらも十分な性能とスケーラビリティを提供
  • チームの習熟度と必要なエコシステムで判断

特にActix-webは開発経験者が比較的多いという点や、サンプルコードなどが見つかりやすいという点が強みです。

チーム内にActix-webの開発経験者がいたり、Axumについてネット上の情報が少なく開発しづらいと感じた人がいればActix-webの方が向いていると言えるでしょう。

運用・保守の考慮点

Actix-webを選ぶ場合:

  • 実績のある運用ノウハウが活用可能
  • 既存のエコシステムの豊富さ

Axumを選ぶ場合:

  • tokioチームによる長期的なサポートが期待できる
  • モダンな設計思想による保守性の高さ

まとめ:実践的な選択のポイント

ざっくりした特徴:

  • Actix-web:比較的長い歴史がある老舗
  • Axum:最近勢いが凄い最新フレームワーク

どちらも強み弱みがあるので、チームの状況などを加味した上で採用した方が良いでしょう。