Help us understand the problem. What is going on with this article?

Laravel管理画面ライブラリVoyagerとLaravel-adminの比較

More than 1 year has passed since last update.

概要

Laravelの管理画面ライブラリであるVoyagerLaravel-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の作成
スクリーンショット 2019-04-17 0.13.26.png

データベースの作成画面
スクリーンショット 2019-04-17 0.14.31.png

BREADの作成画面
スクリーンショット 2019-04-17 0.14.56.png

BREADの作成画面ではカラムの表示や操作の設定なども行えます。
スクリーンショット 2019-04-17 0.15.03.png

データベースとBREADを作成するとデータを作成・編集する管理画面を生成することができます。
スクリーンショット 2019-04-17 0.36.15.png

カスタマイズ

Modle, Controller, Viewはそれぞれオーバーライドしてカスタマイズ可能です。
Overriding files - Voyager
削除操作は論理削除に変更可能です。
Enabling Soft-Delete - Voyager

ユーザ認証

UserとRoleのデータベースが用意されており、ユーザや権限を追加可能です。
スクリーンショット 2019-04-17 0.40.08.png
権限はデフォルトでは各メニューのBREADの有無を設定できます。
スクリーンショット 2019-04-17 0.42.26.png

権限もカスタマイズ可能です。
Roles and Permissions - Voyager

UIコンポーネント

Bootstrapを使用しているため使い回し可能です。

バリデーション

BREADの設定画面でjsonで指定します。
BREAD Builder - Voyager
スクリーンショット 2019-04-17 0.50.02.png

ファイルパス

{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を生成され、ページが作成されます。

ページ追加後の画面
スクリーンショット 2019-04-17 0.54.13.png

カスタマイズ

ページの表示はControllerのshow(), grid(), form()関数内等で変更可能です。
スクリーンショット 2019-04-17 0.58.02.png

ユーザ認証

UserとPermissionとRoleのデータベースが用意されており、ユーザや権限を追加可能です。
スクリーンショット 2019-04-17 1.00.59.png

権限はデフォルトでHTTP method+HTTP pathの組み合わせで指定できます。
スクリーンショット 2019-04-17 1.02.39.png

また、マルチ認証に必要なガードやプロバイダがあらかじめ設定されています。

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月に転職したばっかりで新しく取り組むことが多いので最近更新頻度高めです。
やっぱり自分の興味あることを仕事にできるっていいですね。

mgmgmogumi
Web系/育児エンジニア/Laravel/Node/Go/AWS/Terraform/GAS/AR
https://speakerdeck.com/mgmgmogumi
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした