概要
Laravelの管理画面ライブラリであるVoyagerとLaravel-adminどちらが良いか検証してみました。
管理画面ライブラリは他にも存在しますが今回はこの2つに絞ります。
検証項目は調べたかった部分を重点的に調べたので、当たり前ですがこれが全てではないです。
検証環境
Homestead 8.2.0
PHP 7.3.1
Larval 5.5.45
Voyger 1.2
Larval-admin 1.6.11
環境構築ドキュメント
Laravel Homestead 5.5 Laravel
Installation - Voyager
Installation - Laravel-admin
Voyager
動画です。英語ですが雰囲気や操作等の使用感はわかると思います。
Voyager - The Missing Laravel Admin
Voygerでできること
インストールするといくつかの機能のModle, Controller, View, データベース等が用意されてます。
ブラウザ上からデータベースの追加や、新規ページの追加などの操作が可能です。
BREADの作成画面ではカラムの表示や操作の設定なども行えます。
データベースとBREADを作成するとデータを作成・編集する管理画面を生成することができます。
カスタマイズ
Modle, Controller, Viewはそれぞれオーバーライドしてカスタマイズ可能です。
Overriding files - Voyager
削除操作は論理削除に変更可能です。
Enabling Soft-Delete - Voyager
ユーザ認証
UserとRoleのデータベースが用意されており、ユーザや権限を追加可能です。
権限はデフォルトでは各メニューのBREADの有無を設定できます。
権限もカスタマイズ可能です。
Roles and Permissions - Voyager
UIコンポーネント
Bootstrapを使用しているため使い回し可能です。
バリデーション
BREADの設定画面でjsonで指定します。
BREAD Builder - Voyager
ファイルパス
{project_dir}/vendor/tcg/voyager/
{project_dir}/config/voyager.php
その他気になること
・Avaterの画像が壊れている
・Menu BuilderのBuilderのメニューが0個の場合に表示がバグる
・BREAD作成後にDatabase名を変更するとバグる
Laravel-admin
公式のデモです。
Demo - Laravel-admin
Laravel-adminでできること
Quick start - Laravel-admin
上記記事に沿って、マイグレーション実行->Model作成->Controller作成->ルート設定 を行います。
Laravel-adminのコマンドadmin:make
を実行すると、Modelのカラムに合わせてControllerを生成され、ページが作成されます。
カスタマイズ
ページの表示はControllerのshow(), grid(), form()関数内等で変更可能です。
ユーザ認証
UserとPermissionとRoleのデータベースが用意されており、ユーザや権限を追加可能です。
権限はデフォルトでHTTP method+HTTP pathの組み合わせで指定できます。
また、マルチ認証に必要なガードやプロバイダがあらかじめ設定されています。
UIコンポーネント
Bootstrapを使用しているので使い回し可能です。
バリデーション
Laravelに則ってControllerから指定します。
バリデーション 5.5 Laravel
Laravel5.7 laravel-admin バリデーションルールの追加 | のるぼるのるの
関連ファイル
{project_dir}/app/Admin
{projcet_dir}/vendor/encore/laravel-admin
{projcet_dir}/config/admin.php
その他気になること
・LaravelのLTS(安定版)のみ公式サポートしているようなのでLaravel5.5を使うのが無難そう
・ フッターのPowered by laravel-admin
の表示。消せるかな?
・ダッシュボードのデモのリンクが404
・ドキュメントの軽微な誤字
VoyagerとLaravel-adminの比較
Voyagerのメリット
####・ ブラウザからの直感的な操作ができる
データベースや、BREADと呼ばれるコントローラのようなものをブラウザ上から作成・編集することができるので直感的に操作できます。
####・ 学習コストが低い
ブラウザからある程度開発的な操作をできるため、学習コストが低く始めるのに敷居が低いです。
・ 多機能
上記に加え、ドキュメントのようなものをまとめたcompassという機能や、簡易ブログや画像の管理画面のようなものがあらかじめ用意されており、機能が豊富です。
####・ デザインがリッチでアニメーションがぬるぬる動く
全体的な質感やメニューの出方などがいい感じです。
Voyagerのデメリット
####・ 若干コードの全体像が見えにくい
自分の手に負えない部分で何かエラーが起きた時に対処しづらそうな気がします。
####・ ドキュメントが少ない
Voyagerを使ってカスタマイズしたという記事が少なく、自力で解決できる力が必要かもしれません。
Laravel-adminのメリット
####・ コードからの素早い編集
基本的にLaravelの作法に則っていてコマンドやコードから作成・編集するのでコードの全体像が把握しやすいです。
####・ 関連記事が多い
日本語・英語ともに関連記事が多い印象です。
####・ マルチ認証に必要なガードやプロバイダが設定済
admin_userとuserテーブルが分かれていたり、ガードやプロバイダが設定されていて認証の追加設定が不要なのでその分の工数がかかりません。
Laravel-adminのデメリット
####・ 学習コストがかかる
コードを触る部分が多いので、比較的学習コストがかかります。
####・ デザインが質素
華やかさはあんまりないです。
####・ 機能が最小限
あらかじめ用意されている機能は少なめです。
感想
やれることにそこまで違いはなく、どう実装するかという好みの問題が大きいので開発者が何を重視するかによりそうです。
個人的な意見としては、Laravel-adminは必要十分な機能で自分の手の中にある感じがあって実装しやすそうです。
一方、Voyagerのとっつきやすさとぬるぬるさは好きです。笑
それぞれに良いところがあると思います。
自分なら個人開発ならVoyager使うけど、規模が大きくてカスタマイズする可能性が高いならLarave-adminを選ぶかも?
最後に
記事に間違いや不明な点があれば遠慮なくご指摘ください。
雑談ですが4月に転職したばっかりで新しく取り組むことが多いので最近更新頻度高めです。
やっぱり自分の興味あることを仕事にできるっていいですね。