ブレーンアシストオンライン

Laravelを使ってみて。

PHPフレームワーク「Laravel」

今更かもしれませんがLaravelは言わずと知れた MVCモデルを採用しているPHPフレームワークです。
フレームワークとはアプリケーション開発するベース枠組みとなるソフトウェアです。しっかりした枠組みを用意すれば、後は内部の部品を準備作成するだけで堅牢なアプリケーションシステムが手軽に作成できます。

Laravelのここが便利

私がLaravelでこれは便利と感じている機能はミドルウェアの存在です。これはクライアントからのリクエストを受け取った時にコントローラー処理の前や後に独自処理を割り込ませる仕組みです。たとえば処理前に権限チェックを割り込ませたい場合にミドルウェアを使わない場合ではコントローラー内の各処理先頭に権限チェックの論理を定義しないといけません。

権限チェックの具体的論理は共通関数化したとしても、それをコールする記述がそれぞれのリクエスト部分に必要となります。当然他のコントローラーにも同じような記述が必要となりますので、修正するソース本数、箇所は結構な数になります。

ところがミドルウェアを使えば、 Laravelではそもそもリクエストとコントローラー&クラスの結びつきを\route\web.phpに定義することになっているので そこの各リクエスト部分に、このリクエストではミドルウェアを使いますよ~と定義を記述すればよく、web.phpというソースだけを修正することで権限チェックが実施されるようになります。これは大変便利ですし、修正もものすごく楽です。

Laravelのデメリット

一方で少し気になっていることは、便利なフレームワーク故仕方ない部分ではありますが構造が複雑すぎてレスポンスが早いとは言えないことです。

実際に手元の実行環境でLaravelでコントローラーのみ呼び出した場合、平均レスポンスが 0.2秒
単なる素のPHPプログラムを呼び出した場合の平均レスポンスが 0.0007秒

実際に実行したコードは以下です。

—————————————–
$a = $_SERVER[‘REQUEST_TIME_FLOAT’];
$b = microtime(true );
echo $b – $a;
—————————————–

正直この比較テストは少々極端で不公平ではあります。テストに使用したコードは処理を全く書いていませんので、DBアクセスもエラー処理や画面データの作成も何もしていません。Laravelの方は既にそれらを利用できる準備万全な状態ですからPGMサイズが大きいのは当然です。実装が進めばこれほど大きな差にはならなとは思います。

選択肢としてはあり?

なによりもLaravelを使うことによって実績のある様々な便利な機能(入力値チェックやDBアクセス、画面制御など)をすぐに利用できるということは大きなメリットです。またそれなりに対策が必要ではありますが、セキュアな環境も比較的簡単に作れます。アプリケーションの開発者は少しの約束事だけ守れば業務ロジックに専念できるので開発効率は上がるでしょう。

これからなにか作ろうってことなら選択肢の一つとしてはありだと思います。