Skip to content
Published on

モダン PHP 2026 — PHP 8.4 / Laravel 12 / Symfony 7.3 / FrankenPHP / Octane / Livewire / Filament 徹底ガイド

Authors

1. 2026 年の PHP — 「死んだ」と言った人たちへ(もう一度)

毎年「PHP は死んだ」という記事がトレンドに上がる。そして毎年、その記事を配信しているサーバーは PHP で動いている。Wikipedia、Slack の一部、Facebook の PHP 派生 Hack、WordPress が支える Web の約 43%、Shopify のチェックアウトの一部、そして日本と韓国の無数のコマースバックオフィスがそうだ。

2026 年の PHP は、惰性だけで生き残った言語ではない。言語そのものがふたたび魅力的になった。

  • PHP 8.4 (2024.11) — Property Hooks(一級の getter/setter)、非対称可視性、Lazy Objects、new MyClass()->method() チェーン
  • Laravel 12 (2025.2) — Reverb WebSocket サーバ、Folio ファイルベースルーティング、Volt 単一ファイルコンポーネント、Pennant フィーチャーフラグ
  • Symfony 7.3 — Doctrine 3、Mercure プッシュ、AssetMapper、新しい Scheduler
  • FrankenPHP — Caddy ベースの単一バイナリ。ワーカーモード + Early Hints + 並行性
  • Octane — Laravel を long-running プロセスに(Swoole / RoadRunner / FrankenPHP アダプタ)
  • Livewire 3 / Inertia.js — 「Vue / React なしでリアクティブ」
  • Filament 3 / 4 — Laravel 管理画面の事実上の標準
  • Pest 3 / PHPUnit 11 / PHPStan 2 / Rector — テスト、静的解析、自動マイグレーション

この記事の立場は明確だ。2026 年に PHP を選ぶことは「過去を引きずる」選択ではない。フルスタックの生産性を最短で得る合理的な選択だ。 日本と韓国のレガシーモダナイゼーションでも、新規プロジェクトでも同じである。

この記事のすべてのコードは PHP 8.4 と Laravel 12 / Symfony 7.3 を前提とする。8.3 との互換性が問題になる箇所は別途明示する。


2. PHP 8.4 (2024.11) — Property Hooks、非対称可視性、Lazy Objects

PHP 8.4 は 2024 年 11 月 21 日に GA となった。「言語としては終わっている」という批判をもっとも早くひっくり返したリリースだ。

2.1 Property Hooks — getter/setter が一級市民に

Java、C#、Kotlin が何十年も前から持っていた機能が、ついに PHP に来た。

class User
{
    public string $firstName;
    public string $lastName;

    // 仮想プロパティ — アクセス時に計算
    public string $fullName {
        get => "{$this->firstName} {$this->lastName}";
        set(string $value) {
            [$this->firstName, $this->lastName] = explode(' ', $value, 2);
        }
    }
}

$u = new User();
$u->fullName = 'Ada Lovelace';
echo $u->fullName; // "Ada Lovelace"
echo $u->firstName; // "Ada"

これまでは __get / __set マジックメソッドで回避してきたが、IDE 補完も効かず、静的解析も難しかった。これからは本物のプロパティに見え、PHPStan / Psalm も本物のプロパティとして推論する。

2.2 非対称可視性(Asymmetric Visibility)

「読み取りは public、書き込みは private」が一行で書ける。

class Account
{
    // 読み取りは public + 書き込みは private
    public private(set) int $balance = 0;

    public function deposit(int $amount): void {
        $this->balance += $amount;
    }
}

$a = new Account();
$a->deposit(100);
echo $a->balance; // 100 OK
$a->balance = 9999; // Error: 外部から代入不可

Java の「final フィールド + getter」のボイラープレートが丸ごと消える。

2.3 Lazy Objects(遅延オブジェクト)

ORM や DI コンテナがもっとも欲しがっていた機能だ。空の「殻」だけ用意し、初回アクセス時に初期化する。

$reflector = new ReflectionClass(HeavyService::class);
$lazy = $reflector->newLazyGhost(function (HeavyService $instance): void {
    $instance->__construct(/* expensive deps */);
});

// $lazy は未初期化
$lazy->doSomething(); // この瞬間に初期化コールバックが走る

Doctrine、Symfony DI、Laravel コンテナはみな、8.4 の Lazy Objects 上で独自のプロキシコードを削っている最中だ。

2.4 new MyClass()->method() — 括弧が一組減る

// PHP 8.3 まで
$dt = (new DateTime('now'))->format('Y-m-d');

// PHP 8.4
$dt = new DateTime('now')->format('Y-m-d');

小さな変化だが、コードが目に見えて読みやすくなる。

2.5 新しい配列関数と HTML5 パーサ

array_find($users, fn($u) => $u->isAdmin());
array_find_key($users, fn($u) => $u->name === 'Ada');
array_any($users, fn($u) => $u->isActive());
array_all($users, fn($u) => $u->isVerified());

$dom = Dom\HTMLDocument::createFromString('<p>Hello</p>');

PHP 8.4 は、8.0(JIT / Union types)、8.1(enum / readonly)、8.2(readonly class)、8.3(typed const)に続く、もう一つの大きな飛躍だ。


3. Laravel 12 (2025.2) — Reverb / Folio / Volt / Pennant

Laravel 12 は 2025 年 2 月 24 日にリリースされた。「フレームワークにこれ以上何を足せるのか」に対する答えだ。

3.1 Reverb — Laravel の一級 WebSocket サーバ

Pusher と Soketi を経て、Laravel はついに自前の WebSocket サーバ Reverb を持った。ReactPHP ベースで、FrankenPHP / Octane と組み合わせれば 1 ホストで数万同時接続をさばける。

composer require laravel/reverb
php artisan reverb:install
php artisan reverb:start
// app/Events/MessageSent.php
class MessageSent implements ShouldBroadcast
{
    public function __construct(public Message $message) {}

    public function broadcastOn(): array {
        return [new PrivateChannel("chat.{$this->message->room_id}")];
    }
}

フロントは Laravel Echo で 1 行。

Echo.private(`chat.${roomId}`).listen('MessageSent', (e) => {
  appendMessage(e.message);
});

3.2 Folio — ファイルシステムベースのルーティング

Next.js / Nuxt 風のファイルルーティングが Laravel に来た。resources/views/pages/ 配下のファイルがそのままルートになる。

resources/views/pages/
├── index.blade.php/
├── dashboard.blade.php/dashboard
└── users/
    ├── index.blade.php/users
    └── [id].blade.php/users/{id}
// resources/views/pages/users/[id].blade.php
<?php
use function Laravel\Folio\name;
use App\Models\User;

name('users.show');

$user = User::findOrFail($id);
?>

<h1>{{ $user->name }}</h1>

web.php を触らずにページが増えていく。小規模なサイドプロジェクトや管理画面に最適だ。

3.3 Volt — Livewire 3 単一ファイルコンポーネント

Vue SFC によく似た Livewire。PHP ロジックと Blade テンプレートが 1 ファイルに同居する。

<?php
use function Livewire\Volt\{state, computed};

state(['count' => 0]);

$increment = fn () => $this->count++;
?>

<div>
    <button wire:click="increment">+</button>
    <span>{{ $count }}</span>
</div>

Folio + Volt の組み合わせは「Laravel で 1 画面をもっとも早く作る方法」の新しい答えだ。

3.4 Pennant — 一級フィーチャーフラグ

use Laravel\Pennant\Feature;

Feature::define('new-checkout', fn (User $user) => $user->isInternal());

if (Feature::active('new-checkout')) {
    return view('checkout.v2');
}

LaunchDarkly のような SaaS なしで、DB ベースのフィーチャーフラグを 1 週間で導入できる。

3.5 その他 — 新スターターキット、Workflows、Vite 6

Laravel 12 は React / Vue / Livewire 別の公式スターターキット、Workflows(公式ワークフローエンジン)、Vite 6、Tailwind 4 を標準で同梱する。laravel new ひとつで認証・管理画面・課金まで到達できる時代になった。


4. Symfony 7.3 — Doctrine 3 + Mercure + AssetMapper

Symfony は「Laravel に見えないようにする」もう一つの正解だ。より明示的で、よりコンポーネント志向で、「エンタープライズ PHP の事実上の標準」である。

4.1 7.x ラインアップ

  • 7.0 (2023.11) — PHP 8.2+ を要求
  • 7.1 (2024.5) — 新しい Asset Mapper 統合
  • 7.2 (2024.11) — JSON Streamer、Profiler 改善
  • 7.3 (2025.5) — Doctrine 3 の安定サポート、Mercure 一級アダプタ

4.2 Doctrine ORM 3 + DBAL 4

#[ORM\Entity]
class Product
{
    #[ORM\Id, ORM\Column, ORM\GeneratedValue]
    public int $id;

    #[ORM\Column(length: 200)]
    public string $name;

    #[ORM\Column(type: 'decimal', precision: 10, scale: 2)]
    public string $price;
}

Doctrine 3 は enum、readonly、非対称可視性を一級でサポートする。PHP 8.4 の Property Hooks とも自然に噛み合う。

4.3 Mercure — サーバから ブラウザへのプッシュ

WebSocket がオーバースペックなときは、Server-Sent Events ベースの Mercure ハブを使う。Symfony 7 では一級統合だ。

public function publish(HubInterface $hub): Response {
    $hub->publish(new Update(
        '/orders/42',
        json_encode(['status' => 'shipped']),
    ));
    return new Response();
}

4.4 AssetMapper — 「Node 不要のフロント」

php bin/console importmap:require bootstrap

Webpack / Vite を入れずに importmap + ブラウザの ES Modules で SPA 風のフロントを作れる。管理画面や社内ツールには特によく合う。

4.5 Scheduler と Messenger

#[AsSchedule('default')]
class MainSchedule implements ScheduleProviderInterface
{
    public function getSchedule(): Schedule {
        return (new Schedule())->add(
            RecurringMessage::cron('0 3 * * *', new DailyReport()),
        );
    }
}

cron + キュー + ワークフローが 1 コンポーネントに統合された。Laravel の schedule:run + Horizon に対応する。


5. FrankenPHP — Caddy ベースの単一バイナリ PHP ランタイム

FrankenPHP は 2022 年に Kévin Dunglas(API Platform / Mercure の作者)が始めたプロジェクトで、Caddy Web サーバの中に PHP インタプリタを内蔵した Go バイナリだ。2024 年に 1.0 GA、2026 年現在 Laravel と Symfony の双方で公式サポートされている。

5.1 何がインパクトなのか

従来の PHP スタック:

nginx → php-fpm → PHP
3 プロセス、3 つの設定ファイル

FrankenPHP:

単一の frankenphp バイナリ → PHP
HTTPSHTTP/3、メトリクス、静的ファイル、PHP 実行すべてが 1 プロセス

5.2 ワーカーモード — long-running PHP

最大の特徴はワーカーモードだ。リクエストごとに PHP を起動するのではなく、起動済みのワーカーがリクエストループを回す。

// public/worker.php
require __DIR__ . '/../vendor/autoload.php';
$kernel = (require __DIR__ . '/../bootstrap/app.php')
    ->handleRequest(Request::capture());

$handler = static function () use ($kernel) {
    // リクエストごとのハンドラ — Octane が内部で呼ぶ
    return $kernel->handle(Request::capture());
};

\frankenphp_handle_request($handler);
# Caddyfile
{
    frankenphp {
        worker ./public/worker.php
    }
}

example.com {
    root * public/
    php_server
}

リクエストごとのブート時間が消えることで、Laravel の平均レスポンスタイムが 50〜80% 短縮される事例は珍しくない。

5.3 Early Hints (103) — 本当に速くなるトリック

// 本文の生成前に 103 Early Hints で CSS / JS のプリロードを指示
return response()
    ->withHeaders(['Link' => '</css/app.css>; rel=preload; as=style'])
    ->earlyHints();

ブラウザは本文が届く前から CSS を取りに行く。LCP が 200〜400ms 改善するのが標準だ。

5.4 埋め込みモード — 単一バイナリデプロイ

frankenphp build 一発で、PHP インタプリタ + アプリコード + Caddy が 1 バイナリになる。scp 1 回でデプロイ完了。Docker すら不要だ。

frankenphp build --output ./myapp
scp ./myapp user@server:/srv/myapp
ssh user@server './myapp run'

6. Laravel Octane — Swoole / RoadRunner / FrankenPHP

Octane は「Laravel を long-running プロセスとして起動する公式アダプタ」だ。PHP ワーカープールが 1 度の起動でメモリに常駐し、リクエストごとにコンテナを再利用する。

6.1 3 つのバックエンド

バックエンドベース強み注意点
SwooleC 拡張コルーチン、最高性能メモリリークのデバッグが厄介
RoadRunnerGo安定性、明示的なワーカーモデルコルーチンなし
FrankenPHPCaddy/Go単一バイナリ、Early Hintsもっとも新しい
composer require laravel/octane
php artisan octane:install --server=frankenphp
php artisan octane:start --workers=8

6.2 Octane が変える 2 つのこと

  1. ブート時間 — Laravel の平均ブートが 80ms なら、ワーカー 1 回起動後は 0ms。
  2. シングルトンのライフタイム — コンテナに登録したシングルトンがリクエスト間で生き残る。これが落とし穴だ。 リクエストの状態がシングルトンに紛れ込むと、次のリクエストに漏れて事故になる。
// 危険 — ユーザリクエストオブジェクトをシングルトンに固定するな
$this->app->singleton('user', fn () => Auth::user()); // BAD

// 安全 — リクエストごとに作り直す
$this->app->scoped('user', fn () => Auth::user());     // GOOD

Octane は php artisan octane:reload でワーカーを無停止再起動する。コードデプロイ後の 1 行で済む。


7. RoadRunner + Spiral — Go ベースのランナーとフレームワーク

RoadRunner は Spiral Scout が作った Go ベースの PHP アプリケーションサーバだ。2018 年にスタートし、2026 年現在 v2025 ラインが本番安定運用されている。

7.1 RoadRunner の差別化点

  • ワーカープールは Go が管理、リクエストは gRPC で PHP ワーカーに分配
  • HTTP、gRPC、キュー(Beanstalk / SQS / AMQP / NATS)、ジョブスケジューラ、KV が 1 プロセス
  • メトリクスは OpenTelemetry で一級エクスポート
# .rr.yaml
version: '3'

server:
  command: 'php worker.php'

http:
  address: '0.0.0.0:8080'
  pool:
    num_workers: 8

jobs:
  pipelines:
    high:
      driver: memory
      config:
        priority: 1

7.2 Spiral — PHP の「Go スタイル」フレームワーク

Spiral は RoadRunner を作ったチームの自前フレームワークだ。Laravel / Symfony と違い、最初から long-running PHP を前提に設計されている。

  • DI は PSR-11
  • ORM は Cycle ORM(DataMapper、Doctrine の代替)
  • ルーティングは属性ベース
  • キュー、gRPC サービス、ワークフロー(Temporal と一級統合)が標準同梱
#[Route(route: '/users/<id:int>', methods: 'GET')]
public function show(int $id, ORM $orm): array {
    return $orm->getRepository(User::class)->findByPK($id)->toArray();
}

「Laravel はマジック過多、Symfony は重すぎる」という層に刺さる。

7.3 Hyperf — 中国発のコルーチンフレームワーク

Hyperf は Swoole コルーチンベースの非同期フレームワークだ。中国本土では Laravel を上回る認知度を持ち、日本・韓国の一部のゲームサーババックエンドでも採用されている。

#[AutoController]
class UserController {
    #[GetMapping(path: '/users/{id}')]
    public function show(int $id): array {
        return User::find($id)->toArray();
    }
}

コルーチンベースなので、Node.js の Promise.all パターンに近い書き味が自然だ。


8. Livewire 3 + Inertia.js — Laravel リアクティブ / SPA

「React / Vue なしで SPA のような UX」を実現する 2 つのアプローチ。

8.1 Livewire 3 — サーバーコンポーネントの PHP 版

Livewire 3 は 2023 年に大幅に書き直された。Alpine.js と深く統合し、React Server Components と似た動きをする。

// app/Livewire/Counter.php
class Counter extends Component
{
    public int $count = 0;

    public function increment(): void {
        $this->count++;
    }

    public function render(): View {
        return view('livewire.counter');
    }
}
{{-- resources/views/livewire/counter.blade.php --}}
<div>
    <button wire:click="increment">+</button>
    <span>{{ $count }}</span>
</div>

サーバがインタラクションごとに HTML 片を返す。ネットワークは少し使うが、JS コードはほぼゼロだ。管理画面や社内ツールには最強の選択肢である。

8.2 Inertia.js — Laravel / Rails 上の SPA

Inertia は「SPA のためのフルスタックアダプタ」だ。バックエンド(Laravel / Rails / Django)のコントローラが Vue / React / Svelte コンポーネントと props を返す。

// コントローラ
public function index() {
    return Inertia::render('Users/Index', [
        'users' => User::paginate(20),
    ]);
}
<!-- resources/js/Pages/Users/Index.vue -->
<script setup>
defineProps({ users: Object });
</script>

<template>
  <ul>
    <li v-for="u in users.data" :key="u.id">{{ u.name }}</li>
  </ul>
</template>

REST API を作る必要がない。ルーティング、認証、認可はバックエンドのまま。

8.3 どう選ぶか

状況おすすめ
管理画面、社内ツール、小規模 SaaSLivewire 3(または Filament)
本気の SPA、フルインタラクティブ UIInertia.js + Vue / React
静的サイト + 少しのインタラクションAlpine.js のみ

9. Filament — Laravel 管理画面の事実上の標準

Filament は Dan Harrin が作った「Laravel 管理画面ジェネレータ」だ。2022 年の v2 以降爆発的に成長し、2024 年に v3、2025 年に v4 と続いた。2026 年の Laravel 管理画面は事実上 Filament だ。

9.1 何を提供するか

  • リソース(CRUD)ジェネレータ — php artisan make:filament-resource User
  • テーブル、フォーム、ウィジェット、通知がコンポーネント
  • マルチテナンシー(サブドメイン、パスプリフィクス)
  • Role / Permission(Spatie パッケージと統合)
  • Livewire 3 の上で動作
class UserResource extends Resource
{
    protected static ?string $model = User::class;

    public static function form(Form $form): Form {
        return $form->schema([
            TextInput::make('name')->required(),
            TextInput::make('email')->email()->required(),
            Select::make('role')->options([
                'admin' => 'Admin',
                'user'  => 'User',
            ]),
        ]);
    }

    public static function table(Table $table): Table {
        return $table
            ->columns([
                TextColumn::make('name')->searchable(),
                TextColumn::make('email')->copyable(),
                TextColumn::make('created_at')->dateTime(),
            ])
            ->filters([
                SelectFilter::make('role'),
            ])
            ->actions([
                EditAction::make(),
                DeleteAction::make(),
            ]);
    }
}

20 行未満のコードで「検索 + フィルタ + ページネーション + アクション」を備えた管理画面ができる。Django Admin としばしば比較されるが、Filament の方がデザインの磨きとカスタマイズの自由度で上回る

9.2 管理画面ではなく「アプリビルダー」として

Filament はもはや管理画面専用ではない。Panels という概念で、顧客向けダッシュボード、パートナーポータル、社内オペレーションツールを 1 つのコードベースから作れる。

Panel対象URL
admin社内管理者/admin
partnerB2B パートナー/partner
customerエンドユーザ/app

10. Statamic — フラットファイル CMS

Statamic は「WordPress に飽きた Laravel 民」の答えだ。コンテンツを DB ではなく Markdown + YAML ファイルに保存する。

10.1 何が良いか

  • ファイル = コンテンツ → Git に入る → コードレビューがコンテンツレビュー
  • Laravel ベース → パッケージ、キュー、認証がそのまま使える
  • 標準同梱の Control Panel が綺麗
  • Antlers テンプレートエンジン + Blade 両対応
  • ヘッドレスとして GraphQL / REST へエクスポート可能
# content/collections/articles/2026-05-16.hello.md
---
id: a1b2c3
title: 'Hello, Statamic'
author: youngju
---
# 本文の Markdown
Hello, world.

10.2 向いているところ

  • マーケティングサイト、ブログ、ドキュメントサイト
  • コンテンツ更新頻度が低く、デザインの自由度を高めたい場所
  • Git ベースのワークフロー(PR で記事レビュー)を採用したいチーム

WordPress との違いは明確だ。Statamic は 開発者寄り、コードファースト、WordPress は 編集者寄り、UI ファースト


11. ツールチェイン — Pest / PHPUnit 11 / PHPStan 2 / Psalm / Rector

11.1 Pest 3 — 表現力の高いテストランナー

Pest は PHPUnit の上に「Jest 風 DSL」を乗せる。2024 年に 3.0、2025 年に 4.x。

// tests/Feature/UserTest.php
use App\Models\User;

it('creates a user', function () {
    $user = User::factory()->create(['name' => 'Ada']);
    expect($user->name)->toBe('Ada');
});

test('admin can list users')
    ->actingAs(User::factory()->admin()->create())
    ->get('/admin/users')
    ->assertOk();

ブラウザテストも一級になった(pest --browser)。Pest 4 からは Playwright の上で動く。

11.2 PHPUnit 11

依然として業界標準。Pest も内部では PHPUnit の上で動く。

final class UserTest extends TestCase
{
    public function testItCreatesUser(): void {
        $user = User::factory()->create();
        $this->assertNotNull($user->id);
    }
}

11.x では #[Test]#[DataProvider] などの属性形式が既定スタイルになった。

11.3 PHPStan 2 vs Psalm

項目PHPStan 2Psalm
メンテナOndřej MirtesVimeo(現在はコミュニティ)
強み高速解析、巨大エコシステムより厳密な推論、taint 解析
Laravel 適合度非常に高い(Larastan)中程度
2026 年の勢い強いやや鈍化

新規 Laravel / Symfony プロジェクトの大半は PHPStan 2 + Larastan で始める。

composer require --dev phpstan/phpstan larastan/larastan
vendor/bin/phpstan analyse --level=8 app/

レベル 8(最大)でクリーンになれば「型安全な PHP」を名乗れる。

11.4 Rector — 自動リファクタリング

Rector は「AST ベースの自動マイグレーションツール」だ。PHP 7 → 8、Laravel 10 → 11 → 12、Symfony 6 → 7 のようなメジャーアップグレードを一発でこなす。

// rector.php
use Rector\Config\RectorConfig;
use Rector\Set\ValueObject\LevelSetList;

return RectorConfig::configure()
    ->withPaths([__DIR__ . '/app'])
    ->withPhpSets(php84: true)
    ->withSets([LevelSetList::UP_TO_PHP_84]);
vendor/bin/rector process

「リファクタリングが怖くて上げられない PHP 5 / 7 レガシー」に対する最大の処方箋だ。


12. ホスティング — Forge / Vapor / Cloud

Laravel 陣営は「言語 → フレームワーク → ツールチェイン → ホスティング」までの垂直統合を完成させた。

12.1 Forge — VPS プロビジョニング SaaS

  • 2014 年ローンチ、もっとも長い歴史を持つ Laravel ホスティングツール
  • DigitalOcean / AWS / Linode / Vultr / Hetzner の VPS を自動構成
  • nginx + PHP-FPM + Redis + Supervisor + Let's Encrypt が自動セットアップ
  • 2025 年から FrankenPHP の一級サポート

12.2 Vapor — サーバレス(AWS Lambda)

  • Laravel を AWS Lambda 上で動かす(PHP は Bref 経由)
  • コールドスタートは平均 300〜500ms
  • キューは SQS、DB は RDS Aurora、キャッシュは Redis(ElastiCache)
  • 「トラフィックがスパイクするサービス」によく合う

12.3 Cloud — Laravel 11 / 12 時代のマネージドホスティング

Laravel Cloud は 2024 年に発表、2025 年に GA となった「Vercel スタイル」のマネージドホスティングだ。

  • git push → 自動ビルド + デプロイ + ドメイン + SSL
  • FrankenPHP ワーカーモードを既定ランタイムに採用
  • Postgres / Redis / キュー / ジョブスケジューラを 1 ダッシュボードで
  • リージョン: 米国 / EU / アジア(シンガポール)、追加中

Vercel が Next.js を一級ホストするように、Cloud は Laravel を一級ホストする。

状況おすすめ
トラフィックがほぼ一定、コスト重視Forge + VPS
スパイクが強い、AWS と深く統合Vapor
「何も考えずに上げたい」Cloud

13. 日本 / 韓国 — ピクシブ、Cookpad、メルカリ、ウアハン兄弟、カカオ

「実在の企業が PHP をどこで使っているか」を、日本と韓国の事例で見てみよう。

13.1 日本

  • ピクシブ(pixiv) — 日本のイラスト SNS。創業時から PHP。社内ツールや本体の一部は今も PHP が稼働している。2024 年の PHP 8.3 マイグレーション、2025 年の PHP 8.4 マイグレーション事例が PHPerKaigi で発表された。
  • Cookpad — Ruby on Rails の代表例として知られるが、買収した子会社や実験的プロダクトには PHP が残っている。
  • メルカリ — 初代モノリスは PHP(Symfony)。マイクロサービス化以降は Go 中心だが、一部のバックオフィスと補助システムは PHP のまま。
  • クックパッド株式会社、サイバーエージェント、GMO ペパボ、ピクスタ — 多様な PHP 事例が PHPerKaigi や PHP Conference Japan で毎年発表される。
  • 日本は韓国よりも PHP コミュニティが固く、カンファレンスが活発だ。PHPerKaigi と PHP Conference Japan は毎年数百人が集まる。

13.2 韓国

  • ウアハン兄弟(Baemin) — 創業初期のバックオフィスは PHP、一部の管理画面・社内ツールは今も PHP。新規は Java / Kotlin だが、社内管理画面ビルダーとして Filament を検証したという発表が INFCON 2025 にあった。
  • カカオ — 一部の広告・マーケティング LP、社内ツール。カカオゲームズのバックオフィスにも PHP がある。
  • GS Shop、E-Mart Mall、11번가など、韓国型コマースのバックオフィスはいまも PHP / CodeIgniter / CakePHP の上で動いている部分が多い。
  • 新規スタートアップの PHP 採用は減ったが、エージェンシー / マーケティング / CMS 市場では圧倒的だ。

13.3 共通するパターン

  • 「新規は Go / Kotlin / TypeScript、管理画面・CMS・マーケ・レガシーは PHP」
  • 本当に死ぬのは PHP ではなく レガシーフレームワーク(CodeIgniter 3、CakePHP 2、Symfony 2 / 3) の方
  • PHP 8.4 + Laravel 12 + FrankenPHP は このレガシーをモダナイズする最短経路

14. 誰が PHP を選ぶべきか — 2026 年の意思決定ガイド

「言語そのもの」ではなく「状況」が答えを決める。

14.1 PHP が正解の場合

  • 一人〜小規模チームで SaaS を素早く立ち上げたい → Laravel 12 + Filament + Forge
  • 社内管理画面、運用ツール、バックオフィス → Filament 単体
  • マーケサイト + ブログ → Statamic
  • PHP レガシーのモダナイゼーション → PHP 8.4 + Rector + Pest + Octane
  • JS を最小化したい UI → Livewire 3(または Inertia)
  • WordPress の代替が欲しい → Statamic またはヘッドレス + Laravel API

14.2 PHP を選ぶべきでない場合

  • 超低レイテンシ(1ms 未満)、十万単位の同時接続のリアルタイム系 → Go / Rust / Elixir
  • データサイエンス、ML 学習 → Python
  • モバイルネイティブ、ゲームクライアント → Swift / Kotlin / C++ / C#
  • AWS Lambda のコールドスタートが致命的な場所 → Node.js / Rust

14.3 「モダン PHP」スタック — 2026 年のフルスタック SaaS 推奨

PHP 8.4
Laravel 12
FrankenPHP(ワーカーモード)+ Octane
Livewire 3 + Volt + Filament 4
Postgres 16 + Redis 7
Pest 3 + PHPStan 2(レベル 8)+ Rector
Laravel Cloud(または Forge + Hetzner)

このスタックなら「個人開発者が 1 ヶ月で課金まで備えた SaaS を立ち上げる」という言い回しは誇張ではない。

14.4 最後に一言

2026 年の PHP は、2016 年の PHP が浴びていた揶揄を、もう聞かない。言語は良くなり、エコシステムは固まり、ホスティングは滑らかになった。 日本と韓国でも「レガシーを生かす言語」と「新しいフルスタックを最速で立ち上げる言語」の両方として定着した。

「PHP は死なない」というジョークの次の行は、こう書き直されるべきだ。「PHP は死なないどころか、ふたたび魅力的だ。」


参考 / References