【Laravel】使う前に知っておくべきこと
今回は、アジャイルScrum開発の現場でLaravelを使っていて「そんなことできるんだ!」という発見の内でも特に知っておきたいメリデメを、実体験ベースでお伝えしていきたいと思っております。
Laravelをやってみたい!選定候補に挙がっている!という方の判断材料になれれば幸いです。
本記事は、アイソルート Advent Calendar 2019 8日目の記事です。
こんにちは。アジャイルScrum開発を得意として、日々精進しているkikuchi.sです。
1. Laravelについて
LaravelはPHPフレームワークです。最新バージョンは現時点では6.0.0となっています。
公式ドキュメント:https://readouble.com/laravel/
ルーティング、リエクスト処理、ビュー、クエリビルダー、ORM、DI、認証、ユニットテスト、ブラウザテスト等、現代的なフレームワークが要求される一通りの機能が用意されています。
近年のシステム要件に含まれることが増えてきており、需要の高まってきているフレームワークです。
2. 良かったところ
機能が豊富かつ柔軟
必要な機能はもちろん、機能によっては本来は考慮しなければならない部分を内包的に処理をしてくれたりします。例えば、連想配列からKeyを指定して値を取得する際に、取得する値が要素数1の配列であればその要素の値まで参照して渡してくれたりします。
例)
$array = ['key' => ['取得値']];
$value = $array['key'];
Log::debug('$value:' . $value);
// $value:取得値
Composer
Laravelはバージョン4から5にかけて大きな機能追加があり、その内の一つにComposerの採用がありました。
パッケージ管理システムの導入により、ライブラリの依存関係を気にしすぎず開発を進められること、Composer.jsonのファイルに集約され管理しやすいこと、本来考えなくてはいけないことを減らしてくれます。
Artisanコマンド
ArtisanはLaravelに含まれているコマンドラインインターフェイスです。アプリケーション開発全体で役に立つ、数多くのコマンドを提供しています。
特に便利だと感じたのは、modelやcontrollerの雛形を生成してくれるコマンドです。
モデル生成:
php artisan make:model User
コントローラー生成:
php artisan make:controller AuthController
他にも、ルーティング確認やDBマイグレーションを実行するコマンドもあり、開発を進めるうえで便利なツールとなっています。
3. 使いづらかったところ
機能がリッチすぎる場合がある
認証まわりを既存の外部プラットフォームに委ねることはよくありますが、その場合に、Laravelで用意しているステータス管理のライブラリを使おうとすると、余計な処理が含まれている可能性があります。
実装考慮漏れの可能性
柔軟に処理してくれるが故に、例えば、Laravelで作成したAPIの仕様を担保しづらくなってしまう場面がいくらかありました。例えば、POSTリクエストのパラメータが文字列のところを、要素数1つの配列で渡しても処理が通ってしまうということが起き得ます。バリデーション処理をしておかないとシステムの品質が下がるので注意です。
4. まとめ
Laravel搭載の機能によって、Composerを採用しているのでパッケージ管理ができたり、artisanというコマンドを使うことによってソースコードの雛形が作成できたりします。チーム開発を進めている中で新規にメンバーが参画するのはよくあることで、環境や実装方針の統一化が図りやすいといった点で便利だという印象を持ちます。
また、必要な機能はもちろん、用意されている機能はリッチなものが多く、やりたいことに対して柔軟に対応できるのがLaravelの強みです。公式ドキュメントも内容がシンプルにまとめられ、どんなことができるのかを整理しやすかったことも印象としてあります。
開発者をやっていると、やりたいことを実現「できる」「できない」の判断を迫られることはよくあることですが、Laravelでは「できる」ことが多いのでまず迷いません。しかし、機能がリッチすぎるが故に、そのまま使ってしまうと後で痛い目を見る可能性があるので、事前の仕様理解に時間を割いてあげる必要があると感じています。
総じて、Laravelは機能が豊富で、Webアプリケーションとしてやりたいことはだいたいできるので、用法容量を守って使ってあげればとても便利だと思います。
明日の記事は arai.ya さんによる 今から始める BigQuery (超入門編)です。お楽しみに!