背後にある力
あなたの大きなアイデア

Laravelは、非常に生産性の高いフルスタックWebフレームワークです。Laravelとその豊富なエコシステムをLivewire、React、またはVueと組み合わせることで、次の大きなアイデアを構築し、これまで考えられなかったほどの速さでリリースできます。

はじめましょう Laracastsを見る

素晴らしいものになるために必要なすべて。

Laravelには、すべての最新Webアプリケーションに必要な一般的な機能のためのエレガントなソリューションが標準装備されています。パッケージを探したり、車輪の再発明に時間を費やすのをやめて、素晴らしいアプリケーションの構築を始めましょう。

認証

ユーザーの認証は、認証ミドルウェアをLaravelルート定義に追加するのと同じくらい簡単です。

Route::get('/profile', ProfileController::class)
->middleware('auth');

ユーザーが認証されると、Authファサードを介して認証されたユーザーにアクセスできます。

use Illuminate\Support\Facades\Auth;
 
// Get the currently authenticated user...
$user = Auth::user();

もちろん、独自の認証ミドルウェアを定義して、認証プロセスをカスタマイズできます。

Laravelの認証機能の詳細については、認証ドキュメントを参照してください。

認可

認証されたユーザーが特定のアクションを実行する権限があるかどうかを確認する必要があることがよくあります。Laravelのモデルポリシーはそれを簡単に行えます。

php artisan make:policy UserPolicy

生成されたポリシー クラスで認証ルールを定義したら、コントローラー メソッドでユーザーの要求を認証できます。

public function update(Request $request, Invoice $invoice)
{
Gate::authorize('update', $invoice);
 
$invoice->update(/* ... */);
}

詳細はこちら

Eloquent ORM

データベースが怖いですか?そうではありません。LaravelのEloquent ORMを使用すると、アプリケーションのデータとのやり取りが簡単になり、モデル、マイグレーション、および関係をすばやく足場を組むことができます。

php artisan make:model Invoice --migration

モデルの構造と関係を定義したら、Eloquentの強力で表現力豊かな構文を使用してデータベースとやり取りできます。

// Create a related model...
$user->invoices()->create(['amount' => 100]);
 
// Update a model...
$invoice->update(['amount' => 200]);
 
// Retrieve models...
$invoices = Invoice::unpaid()->where('amount', '>=', 100)->get();
 
// Rich API for model interactions...
$invoices->each->pay();

詳細はこちら

データベースマイグレーション

マイグレーションはデータベースのバージョン管理のようなもので、チームはアプリケーションのデータベーススキーマ定義を定義および共有できます。

public function up(): void
{
Schema::create('flights', function (Blueprint $table) {
$table->uuid()->primary();
$table->foreignUuid('airline_id')->constrained();
$table->string('name');
$table->timestamps();
});
}

詳細はこちら

バリデーション

Laravelには90を超える強力な組み込みバリデーションルールがあり、Laravel Precognitionを使用すると、フロントエンドでライブバリデーションを提供できます。

public function update(Request $request)
{
$validated = $request->validate([
'email' => 'required|email|unique:users',
'password' => Password::required()->min(8)->uncompromised(),
]);
 
$request->user()->update($validated);
}

詳細はこちら

通知とメール

Laravelを使用して、メール、Slack、SMS、アプリ内などで、美しくスタイルされた通知をユーザーにすばやく送信します。

php artisan make:notification InvoicePaid

通知を生成したら、アプリケーションのユーザーの1人にメッセージを簡単に送信できます。

$user->notify(new InvoicePaid($invoice));

詳細はこちら

ファイルストレージ

Laravelは、ローカルファイルシステムやAmazon S3のようなクラウドベースのファイルシステムとやり取りするための単一の統合APIを提供する、堅牢なファイルシステム抽象化レイヤーを提供します。

$path = $request->file('avatar')->store('s3');

ファイルがどこに保存されていても、Laravelのシンプルでエレガントな構文を使用してファイルとやり取りできます。

$content = Storage::get('photo.jpg');
 
Storage::put('photo.jpg', $content);

詳細はこちら

ジョブキュー

Laravelを使用すると、遅いジョブをバックグラウンドキューにオフロードして、Webリクエストを軽快に保つことができます。

$podcast = Podcast::create(/* ... */);
 
ProcessPodcast::dispatch($podcast)->onQueue('podcasts');

ワークロードを処理するために必要な数のキューワーカーを実行できます。

php artisan queue:work redis --queue=podcasts

キューの可視性と制御をさらに強化するために、Laravel Horizonは、Laravel駆動のRedisキュー用に美しいダッシュボードとコード駆動構成を提供します。

詳細はこちら

タスクスケジューリング

表現力豊かな構文で定期的なジョブとコマンドをスケジュールし、複雑な構成ファイルに別れを告げましょう。

$schedule->job(NotifySubscribers::class)->hourly();

Laravelのスケジューラーは、複数のサーバーを処理でき、組み込みの重複防止機能も提供しています。

$schedule->job(NotifySubscribers::class)
->dailyAt('9:00')
->onOneServer()
->withoutOverlapping();

詳細はこちら

テスト

Laravelはテスト用に構築されています。ユニットテストからブラウザテストまで、アプリケーションのデプロイに自信を持てるでしょう。

$user = User::factory()->create();
 
$this->browse(fn (Browser $browser) => $browser
->visit('/login')
->type('email', $user->email)
->type('password', 'password')
->press('Login')
->assertPathIs('/home')
->assertSee("Welcome {$user->name}")
);

詳細はこちら

イベントとWebSockets

Laravelのイベントを使用すると、アプリケーション全体でイベントを送受信でき、リスナーをバックグラウンドキューに簡単にディスパッチできます。

OrderShipped::dispatch($order);
class SendShipmentNotification implements ShouldQueue
{
public function handle(OrderShipped $event): void
{
// ...
}
}

フロントエンドアプリケーションは、Laravel EchoとWebSocketsを使用してLaravelイベントをサブスクライブすることもでき、リアルタイムで動的なアプリケーションを構築できます。

Echo.private(`orders.${orderId}`)
.listen('OrderShipped', (e) => {
console.log(e.order);
});

詳細はこちら

これはほんの表面をなぞっただけです。Laravelは、メール検証、レート制限、カスタムコンソールコマンドなど、Webアプリケーションの構築に必要なすべてのものをカバーしています。詳細を学ぶためにLaravelドキュメントを確認するか、Laravelブートキャンプですぐに始めましょう。

1つのフレームワーク、
さまざまなフレーバー。

アプリケーションのフロントエンドを構築する方法はたくさんあります。ありがたいことに、Laravelではオプションが幅広く開かれています。従来のPHPバックエンド、Laravel Livewireを使用した最新のフロントエンド、ReactやVueに飽きることがない場合でも、Laravelを使用すると、非常に洗練された保守可能なアプリケーションを短時間で配信できます。

Laravel Inertia は、Laravel バックエンドとフロントエンド間のルーティングとデータ転送を処理します。API を構築したり、2 つのルートセットを維持したりする必要はありません。Laravel のすべての機能を 1 つの素晴らしいモノレポで使用して、データベースからフロントエンドのページコンポーネントのプロパティにデータを簡単に渡すことができます。

UserController.php
1class UserController
2{
3 public function index()
4 {
5 $users = User::active()
6 ->orderByName()
7 ->get(['id', 'name', 'email']);
8 
9 return Inertia::render('Users', [
10 'users' => $users,
11 ]);
12 }
13}
Users.jsx
1import Layout from './Layout'
2 
3export default function Users({ users }) {
4 return (
5 <Layout>
6 {users.map(user => (
7 <Link href={route('users.show', user)}>
8 {user.name} ({user.email})
9 </Link>
10 ))}
11 </Layout>
12 )
13}

Inertia を使用すると、サーバーレンダリングされたマルチページアプリケーションを作成する開発エクスペリエンスとシンプルさと、JavaScript SPA のユーザーエクスペリエンスと応答性を実現できます。

フロントエンドのコンポーネントは、API 呼び出しやデータ操作ではなく、ユーザーのインタラクションに焦点を当てることができます。手動で HTTP リクエストをトリガーしたり、応答を処理したりする必要はもうありません。

Inertia は、検索エンジン最適化の恩恵を受けるアプリケーション向けに、初期ページロードでのサーバーサイドレンダリングも提供します。

詳細はこちら

仕組みは?

アプリケーションの最初のページロードは、Inertia を搭載した SPA とページプロパティを 1 回のリクエストで返します。リンクのクリックやフォームの送信による後続のリクエストは、必要なページプロパティのみを自動的に返します。

新しいアセットをデプロイすると、Inertia は自動的に次のリクエストをフルページロードとして実行するため、ユーザーは最新のアセットを見逃すことなく利用できます。

Livewire は、JavaScript フレームワークの代わりにサーバーレンダリングされたテンプレートを使用して、動的なインターフェースを構築するための最新の方法です。サーバーレンダリングされたアプリケーションを構築するシンプルさとスピードと、JavaScript SPA のユーザーエクスペリエンスを兼ね備えています。実際に見てみないと信じられないでしょう。

Search.php
1use Livewire\Component;
2 
3class Search extends Component
4{
5 public $search = '';
6 
7 public function render()
8 {
9 $users = User::search($this->search)->get();
10 
11 return view('livewire.search', [
12 'users' => $users,
13 ]);
14 }
15}
search.blade.php
1<div>
2 <input wire:model="search"
3 type="text"
4 placeholder="Search users..." />
5 
6 <ul>
7 @foreach ($users as $user)
8 <li>{{ $user->username }}</li>
9 @endforeach
10 </ul>
11</div>

Livewire を使用する場合、DOM や状態を管理するために JavaScript は必要ありません。いくつかのインタラクションのために少しだけ追加します。Alpine.js は、Livewire アプリケーションと組み合わせるのに最適な軽量 JavaScript ライブラリです。

Livewire コンポーネントの状態が変化すると、フロントエンドが自動的に更新されます。しかし、Livewire はそれだけではありません。リアルタイム検証、イベント処理、ファイルダウンロード、承認などのサポートが含まれています。

詳細はこちら

仕組みは?

Livewire は、Blade テンプレート言語を使用してサーバー上で HTML をレンダリングします。ページをリアクティブにするために必要な JavaScript を自動的に追加し、データが変更されるとコンポーネントを自動的に再レンダリングして DOM を更新します。

フロントエンドは必要ないですか?問題ありません。Laravel は、JavaScript SPA およびモバイルアプリケーションに最適なバックエンド API です。使い慣れたフロントエンド開発ワークフローを維持しながら、Laravel のすべての機能にアクセスできます。

UserController.php
1class UserController
2{
3 public function index()
4 {
5 return User::active()
6 ->orderByName()
7 ->paginate(25, ['id', 'name', 'email']);
8 }
9}
result.json
1{
2 "data": [
3 {
4 "id": 1,
5 "name": "Taylor Otwell",
6 "email": "[email protected]",
7 },
8 // ...
9 ],
10 "from": 1,
11 "to": 25,
12 "total": 50,
13 "per_page": 25,
14 "current_page": 1,
15 "last_page": 2,
16 "first_page_url": "https://api.laravel.app/users?page=1",
17 "last_page_url": "https://api.laravel.app/users?page=2",
18 "next_page_url": "https://api.laravel.app/users?page=2",
19 "prev_page_url": null,
20 "path": "https://api.laravel.app/users",
21}

認証については、Laravel の安全なクッキーベースの認証を利用できます。または、モバイルアプリケーションを構築する場合、またはフロントエンドがバックエンド API とは別にホストされている場合は、Laravel Sanctum または Laravel Passport を使用できます。

API が非常に大規模に動作する場合は、Laravel アプリケーションを Laravel Octane および Laravel Vapor と組み合わせて、負担をかけずにトラフィックを処理します。

飛び込んでみましょうスターターキットで。

Livewire と React のどちらが好きでも、Laravel のスターターキットを使用すると、すぐに実行を開始できます。数分で、Laravel と Tailwind をお好みのフロントエンドと組み合わせた、完全に機能するアプリケーションを手に入れることができます。

Laravel Breeze

Laravel Breeze は、Tailwind スタイルの認証ユーザープロファイル管理テンプレートを含む軽量のスターターキットです。

  • ユーザー登録とログイン
  • パスワードのリセット
  • メール認証
  • ユーザープロファイル管理
  • Blade または Inertia (Vue または React を使用)
  • オプションの TypeScript サポート
  • オプションのダークモードサポート

詳細はこちら

Laravel Jetstream は、認証ビュー、ユーザープロファイル管理、チーム管理などを含む、強力なスターターキットです。

  • ユーザー登録とログイン
  • パスワードのリセット
  • メール認証
  • ユーザープロファイル管理
  • ユーザープロファイル写真
  • Livewire または Inertia (Vue を使用)
  • オプションのチーム管理
  • オプションのダークモードなど...

詳細はこちら

コミュニティ
とエコシステム。

Laravel の最大の強みは、その情熱的なコミュニティとエコシステムです。世界中で開催されるカンファレンスを楽しんだり、お近くのミートアップに立ち寄ってみてください。専用のコースプラットフォームである Laracasts から学習し、豊富なパッケージとチュートリアルをお楽しみください。