# Lumen と Laravel 違い比較

Lumenの日本語読みはルーメン、Laravel のチームが開発した軽量マイクロフレームワークで github に人気ありそうなので、調べてみました。
生みの親が Laravel で、使い方も laravel と変わることが少ないけど、特徴は API 通信に特化した軽量で速いサーバーサイド PHP フレームワークって感じ。

# Lumen と Laravel の違い

項目 Lumen6 Laravel6
日本語公式ドキュメント なし(2020 年 1 月時点) あり
config ディレクトリ なし(.env ファイル使う) あり
Facade/Eloquent 初期使えない(コメントアウト外せば使える) 使える
テンプレートエンジン Blade 使える 使える
illuminate/session デフォルト無効 使える
artisan コマンド 少ない 多い

# Lumen は軽くて速い

システム要求

lumen 6.x

  • PHP >= 7.2
  • OpenSSL PHP 拡張
  • PDO PHP 拡張
  • Mbstring PHP 拡張

laravel 6.x

  • PHP >= 7.2.0
  • BCMath PHP 拡張
  • Ctype PHP 拡張
  • JSON PHP 拡張
  • Mbstring PHP 拡張
  • OpenSSL PHP 拡張
  • PDO PHP 拡張
  • Tokenizer PHP 拡張
  • XML PHP 拡張

laravel の方がでかいから、必要な拡張も多い感じで、ベースの PHP バージョンなどは一緒

スピードは Laravel の 4 倍以上という記事もありますが、同じエンジンで軽い方は速いって感じかなあ

スピード以外にも、CPU やメモりの消費なども Lumen は圧勝したそうです。やはり、ダイエットした効果は大きい。

# 初期ではコメントアウトされた機能がある

Facade/Eloquent はコメントアウトされているため、使う前に解除が必要

Facade の場合、/bootstrap/app.php 内の$app->withFacades()

Eloquent の場合、/bootstrap/app.php 内の$app->withEloquent()

# セッション使えない

Lumen5.2 から session 無効になりました。api サーバーならなくてもいいけど、ページ表示など session どうしても使いたいときは以下の記事を参考に

Lumen 6.2 でセッションを使う (opens new window)

Enabling session in lumen framework (opens new window)

# Lumen routes

使い方ほとんど一緒ですが、微妙に違うところもあります。

例えばルート設定で lumen と laravel

lumen の場合

$router->get('/', function () use ($router) {
    return $router->app->version();
});
$router->group(['prefix' => 'api'], function () use ($router) {
    $router->post('login', 'AuthController@login');
    $router->group(['middleware'=>'auth:api'],function () use ($router){
        $router->post('logout', 'AuthController@logout');
        $router->post('checkLogin', 'AuthController@checkLogin');
        $router->put('password', 'AuthController@updatePassword');
        $router->resource('score', 'ScoreController');
        $router->resource('log', 'LogController');
    });
    $router->get('log','LogController@index');
    $router->post('score','ScoreController@create');
});

Laravel の場合

Route::get('foo', function () {
    return 'Hello World';
});

# 最後

いろんな記事みてたら、lumen は軽い、そして速いという特徴はみんな言ってます。だが、

特に lumen はえー!すごー!みたいな感じはしなかった

「Lumen は Laravel と似たようなものかと思うと細かいところが違っているので、Laravel に慣れているとはまりがちな印象
という微妙な意見もありました。

Lumen と Codeigniter 比較したらどうだ

lumen は公式サイトでは一秒 1900 のリクエスト処理ができて、Silex と Slim 3 より速いことをアピールしています。自分は codeigniter3 を愛用していて lumen と codeigniter 比べたらどうかなあと思って調べたところ、codeigniter は公式サイトにデータ未公開だが、一部の記事では codeigniter4 は 2500 で codeigniter3 でも2250 requests per secondのリクエスト処理ができるそうです。しかも、2015 年の時点で。。。

CI4 gave around 2500 requests per second, while CI3 clocked about 2250 requests per second. That’s about a 10% improvement. On code that has had no optimization, yet, and that has a few portions where more files were needed to implement a more robust solution, like the Request and Response process. I’m thrilled by those results so far.
参考:Initial Thoughts on CodeIgniter 4

もともと laravel が好きではない人間にとっては、軽さと速さで勝負するなら、codeigniter で十分じゃんとも思ったりします。

2020-01-14
  • php

関連記事

正規表現一覧 よく使う検索・置換のパターン
Apache 初期設定メモ
Elastic Beanstalk \$\SERVER['REMOTEADDR'] 取得できない
codeigniter email ライブラリでメール送信 日本語対応
php 開発におけるコーディングルール・規約
PHP empty isset is_null の違い
php curl 使って クリックなしで POST 送信
FlattenException deprecated
allowurlinclude の設定で ftp_connect()エラー
Laravel 5.7 の MVC 使う時のメモ
PHP 8 リリース新機能と変更
解決!phpMyAdmin テーブル構造の内容が表示されない問題
Smarty HTTP URL 取得できるサーバー関数
twig 3 人気 PHP テンプレートエンジンがバージョンアップ
開発時によく使うゼロ埋めパディング作業まとめ
nuxtjs と codeigniter で jwt システム構築
HTML から PDF に変換 PHP ライブラリ mPDF の設定
PHP 7.4 にアップグレードして使えなくなる機能
php.ini 初期設定のいろいろ
爆速軽量フレームワーク codeigniter PHP 開発
Composer コマンドとオプション
Laravel Error についてのメモ