Laravel 11 対応の Laravel Admin 代替を検討する
目次
はじめに
Laravel Admin は、Laravel で開発する時に利用可能な管理画面ソリューションの1つです。 Laravel Admin を使用すると、Laravel のモデルをウェブ画面を通して一覧表示、検索、CRUD 操作などが簡単に行えます。 しかし、Laravel Admin は 2022 年以降更新が行われておらず、記事執筆時点での Laravel の最新バージョンである Laravel 11 においては十分に利用できない状況です。
そのため、Laravel 11 を利用した新規プロジェクトにおいて、この代替となる選択肢を調査しました。 本記事では、その代替ソリューションと調査結果を紹介すると同時に、代替として利用するのであればどの選択肢が良いと考えたかを紹介します。
Laravel Admin の代替候補
Laravel のモデルをウェブ画面を通して簡単に操作するためのソリューションは複数あります。 これらの触りを調査した結果、今回は詳細調査するソリューションを以下の3つに絞りました。
- Laravel Nova
- Backpack
- Filament
これらの選定基準は、Laravel 11 に対応しており、開発が活発であることです。例えば Voyager も代替となるソリューションの一つですが、2023 年以降、新バージョンのリリースが行われていなかったため、今回の調査候補からは外れています。
ソリューションの説明と調査結果
Laravel Nova
Laravel Nova は、Laravel の公式パッケージで、管理画面をすばやく構築するためのソリューションです。 フロントエンド実装に Vue.js を使用しており、洗練された UI と高いカスタマイズ性が特徴です。
公式製品であるため信頼性が高く、Laravel 11 との互換性も保証されています。デモ環境でどのようなツールかを実際に利用して確かめることはできますが、無料でのトライアルは提供されておらず、開発や検証のために実際にソースコードを書いて動作を確認する場合は、ライセンスの購入が必要です。
実際に使用してみたところ、公式が提供する範囲内でのカスタマイズは非常に簡単だと感じました。 しかし、より高度なカスタマイズを行う場合、例えば独自のフィルター機能を実装しようとすると、PHP だけでは対応できず、Vue.js を使って独自コンポーネントを構築して nmp でビルドする必要があります(参照)。 このように、高度なカスタマイズには Vue.js の知識が求められるため、利用者によってはカスタマイズの難易度が高く感じられるかもしれません。
また、Laravel Nova のライセンスは1年単位で更新が必要です。ライセンス期限が切れてもアプリケーション自体は引き続き使用可能ですが、ライセンス期間中に公開された Nova のバージョンしか利用できないため、新しい機能やバグ修正を取り入れるには、ライセンスを更新する必要があります。
Backpack
Backpack は一部の機能を無料で提供し、より高度なPRO機能を有償で利用可能なソリューションです。 ソリューション全体としてはシンプルな構造であり、導入やカスタマイズがしやすいというメリットがあります。 Laravel 11 に対応しており、有償での販売が行われているため、完全なオープンソースのソリューションと比較するとプロジェクト継続性で優位です。
調査の結果、Backpack は今回の候補の中では最もLaravel Adminに近い管理画面ソリューションだと感じました。BootstrapとPHP Bladeをベースに構築されているため、他の候補と比べてフロントエンドフレームワークの学習コストが最も低いのが大きな特徴です。カスタム UI の作成も容易で、必要に応じてControllerをカスタマイズして独自機能を追加できる柔軟性がありますが、標準機能で多くの要件に対応できます。
無料版 (Free) でも多くの機能が利用でき、多くの業務範囲をカバーできる点がメリットです。 また、有償版ではより高度な機能が利用でき、それらを利用するためのドキュメンテーションも公開されています。 有償版で利用できる機能の具体例は、より高度な CRUD 操作や、より充実した入力項目UIなどです。 ソースコードとしては無料版でも有償版の機能設定用の関数を呼び出すことはできますが、内部で例外が発生する仕組みになっています。
Filament
Filament は無料で利用できる管理画面ソリューションであり、 Livewire と Alpine.js を活用したリアクティブな管理画面を提供します。開発が活発なオープンソースの1つであり、多くの機能を提供します。 UI はモダンでユーザビリティが高く直感的に操作できるだけではなく、LivewireやAlpine.js によって非同期的な CRUD 操作を実現しているため、パフォーマンスの向上にも寄与しています。
独自ページの実装も比較的簡単で、Page クラスを継承し、render メソッドで特定の Blade テンプレートを返すことで柔軟にページを作成できます。 一方で、Filament を使いこなすには、LivewireやAlpine.jsといったフロントエンドの技術の理解が求められるため、これらの知識を持たない開発者にとっては初期の参入コストが高くなる可能性があります。基本的な操作や拡張であればこれらのフロントエンドの知識がなくても利用可能ですが、デバッグや複雑なカスタマイズが必要になった際には、それらの知識を要求される可能性があります。
弊社基準での選定
今回の調査で比較した各ソリューションは、いずれも優れたドキュメンテーションが用意されており、導入やカスタマイズに関して十分なサポートが整っています。
今回の検討の主目的は、新規プロジェクトにおいて、Laravel Admin の代替となるソリューションを選定することです。そのため、Laravel Admin を使用していた開発者が使いやすいソリューションであることが重要です。特に、フロントエンドの追加知識が要求されない方が望ましいと考えています。
また、対象となるプロジェクトは小規模な開発が中心であり、実現したい機能がソリューションによって提供されていない場合でも、カスタマイズによる独自機能の実装が可能であれば、全体の要件を満たすことができると見込んでいます。さらに、できる限り有償のソリューションではなく、無料で利用できるものを優先したいという希望もあります。
これらの点を踏まえると、フロントエンドの学習コストが低く、シンプルな構造でカスタマイズが容易なBackpackを代替ソリューションとして選ぶのが最適だと判断しました。Backpack は、無料版でも必要な機能が揃っており、必要に応じて有償の PRO 版を検討できる柔軟な選択肢を提供しています。
ただ、こちらはあくまで弊社の都合によるものであり、立場が変わるとまた別のソリューションが選択肢となるでしょう。
おわりに
今回は、3つの Laravel 対応の管理画面ソリューションを比較しました。どのソリューションを選択するかは、組織や個人のニーズ、思想に応じて様々な基準があると思います。もし、同じようにLaravel Adminの代替ソリューションをお探しの場合、この記事の調査結果が、適切なソリューションを選ぶ際の一助となれば幸いです。