Article

Webフレームワーク パフォーマンス比較 2025年版

Kotaro Takada
Webフレームワーク パフォーマンス比較 2025年版

テスト環境

  • 同時接続数: 50
  • リクエスト数: 1000
  • テストデータ数: 10件(一覧取得時)
  • テストデータ数: 1件(単一レコード取得時)
  • データベース: MySQL 8.0
  • テストツール: Apache Bench (ab)
  • 実行環境: Docker(Apple Silicon)

前処理として各サーバーは起動直後のコールドスタートを避けるため、軽いウォームアップ(少量の事前リクエスト)を実施しています。Docker上の各コンテナに対して特別なCPU/メモリ制限は付与していません。フレームワークは基本設定(デバッグ無効、不要なミドルウェアやログは最小化)で、キャッシュやCDNなど外部要因は使用していません。ベンチマークはHTTP/1.1、Keep-Alive有効で実行しています。

再現の目安となるコマンド例は以下の通りです(エンドポイントは一覧取得の例)。

ab -k -c 50 -n 1000 http://localhost:8080/api/users

実測値はマシン構成、Dockerのバージョン、言語ランタイムの微細な違いによって上下します。最適化(例:接続プール、SQLインデックス、OPCacheの構成、JITの有無、ガベージコレクタ設定)を行うことで相対順位や数値が変わる点に留意してください。

ベンチマーク結果

GET /api/users(一覧取得)

パフォーマンス比較

フレームワークリクエスト/秒平均レイテンシ中央値レイテンシ95パーセンタイル
Go + Gin4,205 req/sec11.9ms10ms23ms
Rust + Actix3,148 req/sec15.9ms15ms21ms
Laravel Octane2,413 req/sec20.7ms10ms79ms
Rails API1,155 req/sec43.3ms31ms56ms
NestJS870 req/sec57.4ms48ms120ms
Laravel + PHP-FPM (OPCache)512 req/sec97.5ms74ms216ms
Laravel + PHP-FPM43 req/sec1,158.8ms1,068ms1,613ms

詳細分析

Go + Gin

  • 最も高いスループット(4,205 req/sec)を達成。
  • 応答時間が安定(ばらつきが小さい)。
  • 95%のリクエストが23ms以内に処理。
  • 軽量ランタイムと効率的な並行実行により、GC(ガベージコレクション)の影響が小さい。

Rust + Actix

  • 2番目に高いスループット(3,148 req/sec)。
  • 応答時間が非常に安定。
  • 95%のリクエストが21ms以内に処理。
  • ゼロコスト抽象化と所有権モデルにより、低レイテンシと高効率を実現。

Laravel Octane (Swoole)

  • Go/Rustに次ぐ高いパフォーマンス(2,413 req/sec)。
  • 従来のPHP-FPMと比較して大幅に改善。
  • 多くのリクエストが約10msで処理される一方、尾部遅延が見られる(95パーセンタイル79ms)。
  • 常駐プロセス型(Swoole)によりブートコストを抑制。

Rails API

  • 中程度のパフォーマンス(1,155 req/sec)。
  • 応答時間が安定。
  • 95%のリクエストが56ms以内に処理。
  • Pumaのマルチスレッド/マルチプロセス構成で一貫した応答を維持。

NestJS

  • 中程度のパフォーマンス(870 req/sec)。
  • 応答時間が安定。
  • Node.jsのイベントループによりスループットは良好だが、95パーセンタイルは120ms。

Laravel + PHP-FPM (OPCache)

  • OPCache有効化により標準設定比で大幅改善(512 req/sec)。
  • 応答時間のばらつきがやや大きい。
  • 95%のリクエストが216ms以内に処理。
  • PHP-FPM(FastCGIのプロセスマネージャ)とOPCache(バイトコードキャッシュ)の組み合わせ効果が顕著。

Laravel + PHP-FPM

  • 最も低いスループット(43 req/sec)。
  • 応答時間が長くばらつきも大きい。
  • 95%のリクエストが1,613ms以内に処理。
  • 高負荷時のスケーラビリティに課題が残る。

各フレームワークの特徴と選択指針

1. Go + Gin / Rust + Actix

  • 最高のパフォーマンスを重視する場合に適切。
  • 学習コストは高い一方、長期運用における効率と安定性のメリットが大きい。
  • リアルタイム性が求められる金融、ゲームサーバー、低レイテンシAPIで有力。

2. Laravel Octane

  • 既存のPHP/Laravel資産を活かしつつ高速化したい場合に有効。
  • 従来のLaravelアプリからの移行が比較的容易。
  • 中〜大規模のWebアプリケーションでコストと速度のバランスを取りやすい。

3. Rails API / NestJS

  • 開発効率とパフォーマンスのバランスを重視する場合に適切。
  • 豊富なエコシステムと洗練された開発体験を活用可能。
  • スタートアップや要件変動の大きいプロジェクトで迅速な迭代に向く。

4. Laravel (OPCache有効 / 標準設定)

  • PHPの実績とエコシステムを活用したい場合の出発点。
  • 学習コストが低く、チームオンボーディングが容易。
  • OPCacheの適切な設定で実運用に耐えるパフォーマンスへ引き上げ可能。

最新のトレンドと今後の展望

  1. WebAssembly(Wasm)の台頭
    ブラウザやサーバーサイドでの高速実行が進み、RustやGoなどWasmにコンパイル可能な言語の選択肢が広がる。

  2. マイクロサービスアーキテクチャの進化
    サービスごとに最適なフレームワークを選ぶ傾向が強まり、サービス間通信の効率化(例:gRPC)が重要度を増す。

  3. AIと機械学習の統合
    フレームワークや周辺ツールにAIアシストが組み込まれ、開発者体験とアプリのインテリジェンスが向上。

  4. セキュリティの重要性の増大
    フレームワークレベルの保護機構強化とゼロトラスト実装が前提化。依存関係の脆弱性管理も一層重要に。

  5. クラウドネイティブ開発の主流化
    コンテナ、サーバーレス、IaCへの親和性が高いスタックが優位に。起動時間やスケーリング特性が評価軸になる。

まとめ

2025年のWebフレームワーク選定では、パフォーマンスのみならず、開発効率、チームのスキルセット、要件の変化耐性、セキュリティ、スケーラビリティ、コミュニティの厚み、長期メンテナンス性を総合的に捉えることが重要です。本稿のベンチマークは統一条件下での参考指標であり、運用に適用する際は自社要件に即した再計測とチューニングを推奨します。技術の進歩は速いからこそ、最新情報のキャッチアップと柔軟なアーキテクチャ判断を継続してください。フレームワーク選択の初期検討における一助となれば幸いです。