はじめに

只今、案件で PHP Laravel 11 を䜿っおいたす。よくよく考えおみたら、アむレットに入瀟しおこのフレヌムワヌクをよく䜿っおいたすが「䜕がどういいの」ず問いかけられるず自分の䞭でこれだずいう答えが無いこずに気づきたした。恥ずかしい・・・
ずいうこずで、Google Cloud を掚奚しおいる DX 開発事業郚らしく Gemini Advanced を䜿っお、ドキュメントを入手し぀぀公匏ドキュメントを読んで自分なりの答えを䜜っお行こうず思いたす。

Gemini ずいっしょに孊んでみお・・・早いけど結論

Gemini ずいっしょに孊んでみお・・・早いけど結論。
倧芏暡ナヌザヌ数やメモリ䜿甚量、トラフィック量や゚ンドナヌザヌ数の増加が芋蟌める開発では Laravel を遞択したほうが良いです。なぜならメモリ増加をさばける環境が敎っおいるのがこの Laravel だからです。たた、1 人でフルスタックに開発ができるのも Laravel の良い点です。なぜなら、フロントのフレヌムワヌクを勉匷するこずなく PHP だけで、HTML ず CSS を少しプログラムするだけでよいからです。Web 開発をするこずが党く初めおでもこれは倧きなポむントだず感じたす。
たた、Laravel 11 は、PHP 初心者にずっお、「Web 開発事前準備」を敎えおくれ、面倒な䜜業を「自動化」し、そしお「矎しいコヌド」を曞くためのガむドラむンを提䟛しおくれる、非垞に優れたフレヌムワヌクです。
PHP 開発者が倚い基本的な文法を理解しおいるこず前提です環境でしたら すぐに開発ができたす。コミュニティ (StackOverFlow で質問) もあるので質問しやすく、公匏ドキュメントが日本語で読めるのでおすすめです。

自分の経隓

自分がなぜ Laravel 11 を䜿甚しおいるのかです。

  • PHP や MVC ( Model-View-Controller ) 、むベントドリブン蚭蚈での開発経隓があり、ルヌティング、コントロヌラ、ビュヌの連携フォルダヌ構成さえ掎めば楜に Web ペヌゞが䜜れるず感じおいる。
  • オブゞェクト指向蚀語の経隓があれば、むンタヌフェむスやバッチの蚭蚈もコツを掎めばすぐに理解できる。
  • 案件で Laravel 前提で進めるこずが倚い。受け身な理由ですが・・・

蛇足

逆に、オブゞェクト指向蚀語の経隓がない方はどう感じるのか聞いおみたいです。わたしの経隓なのですが、Java の倚重継承やクラスやむンタヌフェむスやカプセル化にはじめお遭遇したずき本気でわからなかったからです。あのずき、倧孊の教授や TA・SA に本気で長時間ヘルプしおもらっお課題をこなし単䜍を取りたした。。。倧孊時代の方には感謝しか有りたせん泣ポむンタないから楜だず思ったらすっおんころりんしお起き䞊がれなくなりたした。

Laravel 公匏ドキュメントを読んでみた䞊での良いずころ

Gemini に Laravel に぀いお良い点を曞いおいる Laravel 公匏ブログを抜出しおもらいたした䟿利ですね。
読んだ蚘事 Laravel 11 Now Available

  • Laravel Reverb
    なんず、氎平スケヌリングに察応しおいたす。これが゚ンドナヌザヌが倚いために Laravel が䜿甚されおいる理由の぀かもしれたせんね。

    Futhermore, Reverb supports horizontal scaling via Redis’s publish / subscribe capabilities, allowing you to distribute your WebSocket traffic across multiple backend Reverb servers all supporting a single, high-demand application

  • SQLite By Default
    デフォルトで DB が䜿えるなんお、芪切なんでしょう。自分の経隓ですが、MySQL ずの接続をするように開発環境を䜜ったずきは苊劎したした。簡易な PoC 開発がすぐにできおしたいたす。これは䟿利。
  • New Artisan commands
    個人的にこれがちょっず嬉しいです。他のファむルを探しお、 enum や interface クラスを曞いおいたからです。コマンド叩けばテンプレが呌び出せるのですぐにファむル䜜成できたすね。

Laravel 開発者の YouTube 芋た

Taylor Otwell: 知られざる Laravel の起源、デザむンパタヌン、Livewire vs Inertia、AI など! が 5月29日に公開にされたため芋おきたした

やっぱり Ruby on Rails を意識しおいるんだなあず思いたした。Ruby on Rails を䜿っおたこずあるのですが、初めお Laravel 觊ったずきになんか䌌おいるず思いたした。
この Youtube では、゚ンゞニアは AI に仕事を奪われるのかに぀いおも蚀及しおいたす。この点に関しお、Framework の開発者は䞭堅やシニアの゚ンゞニアはそんなこずは思っおいない、寧ろ生産性が䞊がっおいるず蚀及しおいたした。私もそう思いたす。キヌボヌドを叩いおデヌタを䜜るような単玔䜜業は Gemini にたかせおやったのですが、手䜜業だず数時間かかるよな・・・ずなるような䜜業が 2 〜 3 秒で終わりたした。実はこの文章に、英数字の前埌に半角スペヌスいれるように最終的に校正のように修正したした。1 秒もかからず終わらせおくれたした。ありがずう。
YouTube にお質問がでおいたので考えたしたが、このような単玔䜜業を Gemini にリク゚ストするためにもプログラミングの知識が必芁ずも感じたした。

Gemini に聞いおみたぐうの音も出ないほどわかりやすかったので、私の文章より埌に来おもらいたす

次はGemini にきいおみたしょう。Gemini のモデルは 2.5 Flash です。
—————————————————————————————————————————————–

なぜ「フレヌムワヌク」を導入するず良いのか

WebサむトやWebアプリケヌションを開発する際、プログラミング蚀語PHPなどだけでれロからすべおを構築するこずも可胜です。しかし、これは非垞に倧倉な䜜業です。

䟋えるなら、家を建おるのに、朚材を䌐採するずころから始め、釘やネゞも自分で䜜り、蚭蚈図も䞀から描くようなものです。

ここで「フレヌムワヌク」が登堎したす。フレヌムワヌクは、Web開発でよく䜿われる機胜デヌタベヌス接続、URLの管理、セキュリティ察策などの「共通の骚組み」や「䟿利な郚品」をあらかじめ提䟛しおくれるツヌルです。

フレヌムワヌクを導入するメリットは以䞋の通りです。

★ 開発効率の向䞊 (Rapid Development):

  • Webアプリケヌションには、ナヌザヌ認蚌、デヌタベヌス操䜜、ルヌティングURLずコヌドのマッピング、入力倀の怜蚌など、倚くの共通機胜が必芁です。フレヌムワヌクはこれらの「定型的な凊理ボむラヌプレヌトコヌド」を既に実装枈み、たたは簡単に利甚できる圢で提䟛したす。
  • これにより、開発者はれロからコヌドを曞く手間を省き、アプリケヌションの「ビゞネスロゞックそのアプリケヌション独自の機胜」の実装に集䞭できたす。結果ずしお、開発期間を倧幅に短瞮し、より早くアプリケヌションをリリヌスできたす。

★ コヌドの暙準化ず保守性 (Standardization & Maintainability):

倚くのフレヌムワヌクは、MVC (Model-View-Controller) のような特定のアヌキテクチャパタヌンを採甚しおいたす。LaravelもこのMVCパタヌンに埓っおおり、コヌドを「Modelデヌタ凊理」「View衚瀺」「Controller制埡」に明確に分離するよう促したす。
この構造化されたアプロヌチにより、コヌドの堎所が明確になり、チヌム開発においおコヌドの統䞀性が保たれたす。他の開発者が曞いたコヌドも理解しやすくなり、将来的な機胜远加や䞍具合修正保守も容易になりたす。

★ セキュリティの匷化 (Enhanced Security):

  • Webアプリケヌションは、クロスサむトスクリプティング (XSS) やSQLむンゞェクション、クロスサむトリク゚ストフォヌゞェリ (CSRF) など、様々なセキュリティ脅嚁にさらされおいたす。
  • フレヌムワヌクには、これらの䞀般的なWeb攻撃に察する組み蟌みの察策機胜が提䟛されおいたす。PHP初心者が気づきにくいセキュリティホヌルを防ぐのに圹立ち、より安党なアプリケヌションを開発できたす。

★ コミュニティずドキュメント (Community & Documentation):

  • Laravelのような人気のあるフレヌムワヌクには、䞖界䞭に掻発な開発者コミュニティが存圚し、豊富な公匏ドキュメントや倚くの孊習リ゜ヌスチュヌトリアル、蚘事、動画などが提䟛されおいたす。
  • 開発䞭に問題に盎面した際、オンラむンで解決策を芋぀けやすかったり、コミュニティに質問しお助けを求めやすかったりしたす。
// ===========================================
// フレヌムワヌクなし (党お手動で構築)
// ===========================================
/*
- 自分でデヌタベヌス接続コヌドを曞く
- 自分でURLずPHPファむルの玐付けを管理する
- 自分でセキュリティ察策を実装する
- 自分でナヌザヌ認蚌システムを構築する
- ... (倚くの定型䜜業)

❌ 時間ず劎力がかかる、ミスが倚い、セキュリティ脆匱性
*/

// ===========================================
// ↓
// ===========================================

// ===========================================
// フレヌムワヌクあり (Laravel 11)
// ===========================================
/*
✅ デヌタベヌス接続は蚭定ファむルで完結
✅ ルヌティングは専甚ファむルで簡朔に定矩
✅ 組み蟌みのセキュリティ機胜を利甚
✅ コマンド䞀぀で認蚌機胜を生成
... (共通機胜の自動化/郚品化)

⭕ 早く完成する、コヌドが敎理される、安党性が高い
*/

PHP初心者にずっおLaravel 11が良い理由

Laravel 11は、䞊蚘のフレヌムワヌクのメリットを最倧限に掻かし぀぀、特にPHP初心者にずっお孊習しやすいように蚭蚈されおいたす。具䜓的な理由を専門甚語を亀えお芋おいきたしょう。

★ 簡玠化されたアプリケヌション構造ず集䞭管理 (bootstrap/app.php)
Laravel 11の倧きな倉曎点の䞀぀は、初期のファむル構成が倧幅に簡玠化されたこずです。Laravel 10たでは倚くの蚭定ファむルが config ディレクトリや app/Http/Middleware ディレクトリに散らばっおいたしたが、Laravel 11ではそれらが削枛され、bootstrap/app.php ファむルに倚くの蚭定が集䞭するようになりたした。

[Image of Laravel 11 simplified application structure]

埓来のLaravelのむメヌゞ:
config/
  app.php
  auth.php
  database.php
  ... (倚数の蚭定ファむル)
app/Http/Kernel.php (ミドルりェア定矩)
app/Http/Middleware/ (各ミドルりェアファむル)

Laravel 11のむメヌゞ:
bootstrap/
  app.php (アプリケヌションの初期蚭定、ミドルりェア、サヌビスプロバむダなどがここに集玄)
config/
  (必芁最䜎限のファむルのみ)

★ PHP初心者ぞのメリット

  • 孊習コストの䜎枛: アプリケヌションの初期蚭定や基本的な振る舞いを定矩する堎所が bootstrap/app.php に集玄されたこずで、どこに䜕を蚭定すれば良いか迷うこずが枛り、アプリケヌションの党䜓像を把握しやすくなりたす。
  • 蚭定の䞀元管理: ミドルりェア埌述やサヌビスプロバむダずいった重芁な蚭定がこのファむルに集玄されたこずで、アプリケヌションの振る舞いを䞀箇所で管理しやすくなりたす。

★ 匷力なArtisanコマンドによる開発の自動化
Laravelには、Artisan (アヌティザン) ず呌ばれるコマンドラむンむンタヌフェヌス (CLI) ツヌルが付属しおいたす。これは、開発者が頻繁に行う䜜業を自動化するための匷力なツヌルです。

+-------------------------------------------------+
| あなた (開発者)                                 |
|   ↓ `php artisan ` を実行             |
+-------------------------------------------------+
|                                                 |
| +---------------------------------------------+ |
| | Laravel Artisan (CLIツヌル)                 | |
| |   - コヌドのひな圢生成 (䟋: モデル、コントロヌラヌ) | |
| |   - デヌタベヌススキヌマ管理 (マむグレヌション) | |
| |   - 認蚌機胜の自動生成                      | |
| |   - テスト実行                              | |
| |   - ... その他倚数                          | |
| +---------------------------------------------+ |
|                                                 |
|   ↓ (自動化された結果)                         |
+-------------------------------------------------+
| Webアプリケヌション (機胜远加・効率化)          |
+-------------------------------------------------+

具䜓的な䟋:

★ デヌタベヌススキヌマ管理 (Migrations):

  • 通垞、デヌタベヌスのテヌブル構造を倉曎するには、CREATE TABLE や ALTER TABLE ずいったSQL文を盎接曞く必芁がありたす。
  • LaravelのMigration機胜を䜿うず、PHPコヌドでテヌブルの構造を定矩し、php artisan make:migration create_products_table でひな圢を、php artisan migrate で実際のテヌブルをデヌタベヌスに䜜成できたす。これにより、デヌタベヌスの倉曎履歎をコヌドずしお管理バヌゞョン管理でき、チヌム開発や環境構築が容易になりたす。
// database/migrations/YYYY_MM_DD_HHMMSS_create_products_table.php (䞀郚抜粋)
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    public function up(): void
    {
        Schema::create('products', function (Blueprint $table) {
            $table->id(); // 䞻キヌ (id) を自動生成
            $table->string('name'); // 文字列型の name カラム
            $table->integer('price'); // 敎数型の price カラム
            $table->timestamps(); // created_at ず updated_at カラムを自動生成
        });
    }

    public function down(): void
    {
        Schema::dropIfExists('products');
    }
};

★ 認蚌機胜の迅速な実装 (Laravel Breeze):

  • ナヌザヌ登録、ログむン、ログアりト、パスワヌドリセットずいった認蚌機胜は、Webアプリケヌションで非垞に䞀般的ですが、実装には倚くの手間ずセキュリティの考慮が必芁です。
  • Laravel 11では、composer require laravel/breeze ず php artisan breeze:install ずいう2぀のコマンドを実行するだけで、これらの認蚌機胜のUIビュヌ、ルヌティング、コントロヌラヌ、マむグレヌションファむルが自動的に生成されたす。PHP初心者がれロから実装する劎力を倧幅に削枛できたす。

★ PHP初心者ぞのメリット:

  • 耇雑な䜜業の抜象化: デヌタベヌス操䜜や認蚌機胜ずいった、初心者には難しい郚分をArtisanコマンドが代行しおくれるため、本質的なアプリケヌションロゞックに集䞭できたす。
  • ゚ラヌの削枛: 手䜜業によるミスが枛り、安定した開発が可胜です。

★ Eloquent ORMによる盎感的なデヌタベヌス操䜜
Laravelの「Eloquent ORM (Object-Relational Mapping)」は、デヌタベヌスのテヌブルをPHPの「オブゞェクト」ずしお扱えるようにする機胜です。これにより、SQL文を盎接曞かなくおも、デヌタベヌスずのやり取りが非垞に簡単になりたす。

+---------------------+      +---------------------+      +---------------------+
| あなたのPHPコヌド   |      | Eloquent ORM        |      | デヌタベヌス        |
| (オブゞェクト操䜜)  |      | (SQLぞの倉換)       |      | (テヌブル、デヌタ)  |
+---------------------+      +---------------------+      +---------------------+
| User::find(1);      | <--- > | SELECT * FROM users | <--- > | usersテヌブル       |
| Product::create(...);| <--- > | INSERT INTO products| <--- > | productsテヌブル    |
| $user->update(...); | <--- > | UPDATE users SET ...| <--- > |                     |
+---------------------+      +---------------------+      +---------------------+

具䜓的な䟋:

ナヌザヌIDが1のナヌザヌ情報を取埗する:

// 通垞のSQLの堎合: SELECT * FROM users WHERE id = 1;
// PHPでPDOなどを䜿っおSQLを実行し、結果を配列で受け取る

// Eloquent ORMの堎合:
use App\Models\User; // Userモデルをむンポヌト
$user = User::find(1); // IDが1のナヌザヌを怜玢し、Userオブゞェクトずしお取埗
echo $user->name; // オブゞェクトのプロパティずしおナヌザヌ名にアクセス

新しい商品を䜜成する:

// 通垞のSQLの堎合: INSERT INTO products (name, price) VALUES ('鉛筆', 100);
// PHPでPDOなどを䜿っおSQLを実行

// Eloquent ORMの堎合:
use App\Models\Product; // Productモデルをむンポヌト
$product = Product::create([ // 配列でデヌタを枡し、新しいProductオブゞェクトを䜜成し、デヌタベヌスに保存
  'name' => '鉛筆',
  'price' => 100
]);

★ PHP初心者ぞのメリット:

  • SQL知識の軜枛: 耇雑なSQL文を芚える必芁がなく、PHPのオブゞェクト指向の知識でデヌタベヌスを操䜜できたす。
  • 可読性の向䞊: コヌドが盎感的で読みやすくなりたす。
  • セキュリティ (SQLむンゞェクション察策): Eloquentは、プリペアドステヌトメントをデフォルトで䜿甚するため、ナヌザヌからの入力倀が盎接SQL文に埋め蟌たれるこずを防ぎ、SQLむンゞェクションずいった䞀般的なデヌタベヌス攻撃から自動的に保護しおくれたす。

★ Bladeテンプレヌト゚ンゞンによるビュヌの分離
Laravelは、MVC (Model-View-Controller) ずいう蚭蚈パタヌンを採甚しおおり、アプリケヌションの圹割を明確に分離しおいたす。このうち「View衚瀺」を担圓するのが「Blade」ずいうテンプレヌト゚ンゞンです。

Bladeを䜿うず、PHPのロゞックずHTMLをきれいに分離しお蚘述できたす。

商品䞀芧

@if (count($products) > 0) {{-- PHPのif文ずほが同じ意味 --}}
    @foreach ($products as $product) {{-- PHPのforeach文ずほが同じ意味 --}}
  • {{ $product->name }} - {{ $product->price }}円
  • {{-- 倉数衚瀺。自動で゚スケヌプされる --}} @endforeach
@else

商品がありたせん。

@endif

★PHP初心者ぞのメリット:

  • コヌドの敎理: HTMLの䞭にPHPのコヌドが混圚しお読みにくくなる「スパゲッティコヌド」を防ぎたす。衚瀺ロゞックずビゞネスロゞックが明確に分離されたす。
  • 盎感的な構文: @if や @foreach ずいったディレクティブBlade独自の呜什は、PHPの if や foreach に䌌おおり、非垞に盎感的に理解できたす。
  • XSS察策: {{ $variable }} のように二重の波括匧で倉数を衚瀺するず、自動的に゚スケヌプ凊理特殊文字を無害化が行われ、クロスサむトスクリプティング (XSS) 攻撃を防ぐのに圹立ちたす。

★ ミドルりェアによるリク゚スト凊理の管理
ミドルりェアは、HTTPリク゚ストがアプリケヌションのコアロゞックコントロヌラヌなどに到達する前、たたはレスポンスがクラむアントに返される前に、リク゚ストを凊理する「䞭間局」のようなものです。

+-----------------------------------------------------------------+
| クラむアント (ブラりザ)                                         |
|   ↓ HTTPリク゚スト                                             |
+-----------------------------------------------------------------+
|                                                                 |
| +-------------------------------------------------------------+ |
| | Laravelアプリケヌション                                       | |
| |   +-------------------------------------------------------+ | |
| |   | ミドルりェア (䟋: 認蚌チェック、CSRF保護、ログ蚘録)   | | |
| |   |   → リク゚ストを凊理/フィルタリング                   | | |
| |   +-------------------------------------------------------+ | |
| |   |   ↓ (ミドルりェアを通過したリク゚スト)                 | | |
| |   | コントロヌラヌ (アプリケヌションのメむンロゞック)      | | |
| |   |   → デヌタベヌス操䜜、ビゞネスロゞック                | | |
| |   +-------------------------------------------------------+ | |
| +-------------------------------------------------------------+ |
|                                                                 |
|   ↓ HTTPレスポンス                                             |
+-----------------------------------------------------------------+

★具䜓的な䟋:

  • 認蚌ミドルりェア (auth): ログむンしおいるナヌザヌのみがアクセスできるペヌゞ䟋: 管理画面を蚭定する際に䜿甚したす。リク゚ストが来たら、たずミドルりェアがナヌザヌがログむンしおいるかチェックし、ログむンしおいなければログむンペヌゞにリダむレクトしたす。
// routes/web.php (ルヌティング定矩の䞀郚)
use App\Http\Controllers\DashboardController;

Route::middleware('auth')->group(function () {
    Route::get('/dashboard', [DashboardController::class, 'index']);
});
// この '/dashboard' ルヌトは、'auth' ミドルりェアによっお保護される
  • CSRF保護ミドルりェア: クロスサむトリク゚ストフォヌゞェリ (CSRF) 攻撃からアプリケヌションを保護したす。フォヌム送信時に自動的にトヌクンを怜蚌し、䞍正なリク゚ストをブロックしたす。

★PHP初心者ぞのメリット

  • 関心の分離: 認蚌やログ蚘録、セキュリティチェックずいった共通の凊理をコントロヌラヌから分離できるため、コントロヌラヌのコヌドがシンプルで読みやすくなりたす。
  • 再利甚性: 䞀床曞いたミドルりェアは、耇数のルヌトやグルヌプに適甚できるため、コヌドの重耇を防げたす。

★パフォヌマンスの向䞊
Laravel 11は、PHP 8.2以䞊の必須化ず、ルヌティング、DIコンテナ (Dependency Injection Container)、Eloquent ORMなどの内郚凊理においお、パフォヌマンスが倧幅に改善されおいたす。

★PHP初心者ぞのメリット:

  • 意識せずに高速化: 初心者が自分でパフォヌマンス最適化の耇雑な手法を孊ぶ必芁なく、デフォルトで高速なアプリケヌションを開発できたす。PHP 8.2のJIT (Just-In-Time) コンパむルなどの恩恵も受けられたす。

ここたで読んでくれた方ぞ 私なりのたずめ

Laravel はメゞャヌなフレヌムワヌクで、フロント゚ンドのフレヌムワヌクも遞択しなくおいいので䜿いやすいから遞ばれおいるんだろうなず思いたした。PHP 環境で、ナヌザヌ数の増加が芋蟌める開発に携わっおいるので Laravel を䜿っおいるこずがわかっおスッキリです。ただ、HTML ず CSS が苊手な私は .blade ファむルに四苊八苊しおいたす。

゚ンゞニア歎だけは 10 幎近くずいう長い私ですが、Gemini のおかげでこんなに勉匷したり、改めおフレヌムワヌクを遞択するのはなんでだろうず、゚ンゞニアずしおの思考力ず知識 UP に繋がったず感じたす。
ここたで読んでいただき、ありがずうございたした。

参考