filament-pro について
Filament v5は、宣言的なPHP APIでサーバー駆動の管理パネルを構築するLaravelフレームワークです。CRUD画面やダッシュボードを作るチーム向けで、Livewire v4によるリアクティブな操作をJavaScriptなしで実現します。
主な機能
- 01Eloquentモデル向けCRUDリソース
- 02スキーマベースのフォームとテーブル
- 03Livewire v4のリアクティブコンポーネント
- 04ダッシュボードウィジェットとチャート
- 05モーダルやウィザードを使うアクション
- 06認可とマルチテナントに対応
活用シーン
- 01アプリケーションの管理画面の構築
- 02CMSまたはCRM画面の作成
- 03製品、注文、在庫の管理
- 04マルチテナントSaaS管理パネルの開発
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ marcelorodrigo/ agent-skills --skill filament-proインストール後、Claude Code で/filament-proを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/actions.mdauthorization.mdexamples.mdforms.mdinfolists.mdnotifications.mdresources.mdschemas.mdtables.mdtesting.mdwidgets.md詳細
Filament v5
Schemas と Livewire v4 のリアクティビティを備えた、Filament v5 のサーバー駆動型 UI を使用して強力な Laravel 管理パネルを構築できます。
概要
Filament v5 は、宣言型の PHP API を通じて、完全な CRUD インターフェース、フォーム、テーブル、ダッシュボードコンポーネントを提供する Laravel 管理パネルフレームワークです。Livewire v4 を基盤としており、JavaScript を記述せずにリアルタイムのリアクティビティを実現します。
主な概念
- PanelProvider:管理パネルを定義する中心的な設定クラス
- Resources:Eloquent モデル用の自動 CRUD インターフェース
- Schemas:宣言型の UI コンポーネント(フォーム、テーブル、情報リスト)
- Actions:モーダルとバックエンドロジックを備えたインタラクティブなボタン
- Widgets:データ可視化用のダッシュボードコンポーネント
システム要件
- Laravel 11.28+
- PHP 8.2+
- Livewire v4
- Node.js 18+
- Tailwind CSS v4.1+
インストール
Composer から Filament をインストールし、パネルをスキャフォールドします。
composer require filament/filament:"^5.0" -W
php artisan filament:install --scaffold
npm install && npm run dev
php artisan make:filament-user
これにより、パネルプロバイダー、ディレクトリ構成、構築を始めるために必要なアセットが作成されます。
ディレクトリ構成
app/
Filament/
Resources/ # CRUD resources with forms and tables
Pages/ # Custom pages
Widgets/ # Dashboard widgets
Providers/
Filament/
AdminPanelProvider.php
主な概念
パネル設定
PanelProvider は管理パネルのエントリーポイントです。以下を設定します。
- 識別情報:ID、パス、ブランディング(名前、ロゴ、色)
- 検出:リソース、ページ、ウィジェットの自動検出
- ミドルウェア:セッション、認証、カスタムミドルウェア
- テナント管理:SaaS アプリケーション向けのマルチテナント設定
リソース
リソースは以下を通じて、完全な CRUD インターフェースを提供します。
- フォーム:20 種類以上のフィールドタイプを備えたスキーマベースのフォーム(TextInput、Select、DatePicker、FileUpload、RichEditor など)
- テーブル:列、フィルター、並べ替え、アクションを備えたデータテーブル
- ページ:List、Create、Edit、View ページの自動生成
- リレーション:モデル間のリレーションを扱うリレーションマネージャー
フォーム
フォームでは、フィールドを PHP オブジェクトとして宣言するスキーマベースのアプローチを使用します。
- 入力フィールド:テキスト、セレクト、チェックボックス、トグル、日付/時刻ピッカー
- メディア:バリデーション付きのファイルと画像のアップロード
- 複合フィールド:リッチテキストエディター、リピーター、ビルダー
- レイアウト:グリッド、セクション、タブ、ウィザード
- バリデーション:Laravel の組み込みバリデーションルール
テーブル
テーブルでは、幅広いカスタマイズが可能なデータを表示できます。
- 列:テキスト、バッジ、アイコン、画像、色
- フィルター:セレクト、三値、カスタムのフィルターロジック
- アクション:行ごとのアクション、一括アクション、ヘッダーアクション
- 機能:検索、並べ替え、ページネーション、グループ化
アクション
アクションは、以下を実行するインタラクティブなボタンです。
- モーダル:データ収集用のフォームダイアログ
- 確認:破壊的なアクションの確認
- ウィザード:複数ステップのプロセス
- 通知:完了後のユーザーフィードバック
ウィジェット
ダッシュボードウィジェットには以下があります。
- 統計概要:傾向とスパークラインを備えた指標カード
- チャート:Chart.js を使用した折れ線、棒、円のチャート
- テーブル:最近のレコードを表示するデータテーブル
テスト
Filament は、Livewire のテストヘルパーと Pest PHP を使用します。
- ページテスト:一覧、作成、編集、表示ページの機能
- フォームテスト:バリデーション、状態管理、送信
- テーブルテスト:検索、フィルター、並べ替え、アクション
- 認可テスト:アクセス制御と権限
認可
以下を通じてアクセスを制御します。
- パネルアクセス:パネルレベルのアクセスを制御する FilamentUser コントラクト
- ポリシー:リソースレベルの権限を制御する Laravel ポリシー
- フィールドの表示制御:ユーザーロールに応じたフィールドの表示/非表示
- マルチテナント:SaaS アプリケーション向けのテナント分離
アーキテクチャパターン
サーバー駆動型 UI
Filament は、バックエンドがスキーマを通じて UI 構造を定義するサーバー駆動型のアプローチを採用しています。PHP コードでフォーム、テーブル、レイアウトを記述すると、Filament がそれらを Livewire コンポーネントとしてレンダリングします。
スキーマシステム
スキーマは、以下を定義する PHP 設定オブジェクトです。
- フォームフィールドとそのバリデーションルール
- テーブル列とその書式設定
- レイアウトコンテナー(グリッド、セクション、タブ)
- アクションの定義とその動作
Livewire との統合
すべてのコンポーネントは Livewire コンポーネントとしてマウントされ、以下の機能を利用できます。
- ページの再読み込みなしでリアルタイムにリアクティブに動作
- 状態の自動管理
- イベント処理と AJAX による更新
- 即時フィードバック付きのフォーム検証
リソースファーストの設計
このフレームワークでは、リソースファーストのアプローチが推奨されています。
- Eloquent モデルを定義します
- それらのモデルに対応するリソースを作成します
- 各リソースのフォームとテーブルを設定します
- 必要に応じてアクションとウィジェットを追加します
コマンドリファレンス
| コマンド | 目的 |
|---|---|
filament:install --scaffold | パネルのスキャフォールディングを含めて Filament をインストール |
make:filament-resource | CRUD リソースを作成 |
make:filament-page | カスタムページを作成 |
make:filament-widget | ダッシュボードウィジェットを作成 |
make:filament-panel | 追加のパネルを作成 |
make:filament-user | 管理者ユーザーを作成 |
make:filament-relation-manager | リレーションマネージャーを作成 |
filament:cache-components | 本番環境向けにキャッシュ |
詳細ドキュメント
リファレンスガイド
各コンポーネントの包括的なドキュメントです。
- フォーム - すべてのフォームコンポーネント、検証ルール、レイアウト、条件付きロジック
- テーブル - カラムの種類、フィルター、アクション、テーブル設定
- リソース - CRUD リソース、リレーションマネージャー、インフォリスト、グローバル検索
- インフォリスト - 読み取り専用のデータ表示コンポーネント(TextEntry、ImageEntry、IconEntry)
- ウィジェット - 統計の概要、チャート、テーブルウィジェット
- アクション - モーダルアクション、通知、アクショングループ、ウィザード
- 通知 - フラッシュメッセージ、データベース通知、ブロードキャスト通知
- スキーマ - スキーマシステム、レイアウト、コンポーネントの構成
- テスト - リソース、フォーム、テーブル、認可のための Pest テストパターン
- 認可 - アクセス制御、ポリシー、ロール、マルチテナント
コード例
examples.md では、以下を含む、動作する完全なコード例を確認できます。
- リソースの完全な実装
- フォーム設定
- テーブル設定
- ウィジェット設定
- テストスイート
- 認可パターン
ベストプラクティス
パフォーマンス
getEloquentQuery()を使ってリレーションを事前読み込みし、N+1 クエリを防止しますfilament:cache-componentsを使って本番環境でコンポーネントのキャッシュを有効にします- ページネーションの選択肢を制限し、大規模なデータセットには遅延読み込みを使用します
- ウィジェット内のコストの高い計算をキャッシュします
セキュリティ
- パネルのアクセス制御には、必ず FilamentUser コントラクトを実装します
- リソースレベルの認可には Laravel ポリシーを使用します
- 適切なフォームルールですべての入力を検証します
- 本番環境では認可を決して省略しません
- マルチテナントアプリケーションでは、適切なテナント分離を実装します
コードの構成
- 機能ごとに構成します:
app/Filament/Admin/Resources/ - 複雑なフォームとテーブルは別のクラスに切り出します
- よく使うパターンには再利用可能なフォームコンポーネントを作成します
- リソースの責務を単一に保ちます
- CRUD 以外の機能には専用ページを使用します
テスト
- 各リソースのすべての CRUD 操作をテストします
- 複数のシナリオでフォームの検証ルールを確認します
- テーブル機能(検索、フィルター、並べ替え、アクション)をテストします
- さまざまなユーザーロールで認可を確認します
- ファクトリーを使って現実的なテストデータを作成します
Filament を使用する場面
Filament は以下に最適です。
- 管理パネル:アプリケーションデータを管理するためのバックオフィスインターフェース
- CMS:高度な編集機能を備えたコンテンツ管理システム
- CRM:顧客関係管理ツール
- E コマース:商品、注文、在庫の管理
- SaaS アプリケーション:マルチテナントの管理インターフェース
- 社内ツール:業務プロセス管理とデータ入力
Additional Resources
Version: 1.0.0
License: MIT
Compatibility: Laravel 11+, PHP 8.2+, Livewire v4