필사 모드: モダン PHP 2026 — PHP 8.4 / Laravel 12 / Symfony 7.3 / FrankenPHP / Octane / Livewire / Filament 徹底ガイド
日本語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);
?>
`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++;
?>
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
HTTPS、HTTP/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 つのバックエンド
| バックエンド | ベース | 強み | 注意点 |
|---|---|---|---|
| **Swoole** | C 拡張 | コルーチン、最高性能 | メモリリークのデバッグが厄介 |
| **RoadRunner** | Go | 安定性、明示的なワーカーモデル | コルーチンなし |
| **FrankenPHP** | Caddy/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 --}}
サーバがインタラクションごとに 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 -->
defineProps({ users: Object });
REST API を作る必要がない。ルーティング、認証、認可はバックエンドのまま。
8.3 どう選ぶか
| 状況 | おすすめ |
|---|---|
| 管理画面、社内ツール、小規模 SaaS | **Livewire 3**(または Filament) |
| 本気の SPA、フルインタラクティブ UI | **Inertia.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 |
| `partner` | B2B パートナー | /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 2 | Psalm |
|---|---|---|
| メンテナ | Ondřej Mirtes | Vimeo(現在はコミュニティ) |
| 強み | 高速解析、巨大エコシステム | より厳密な推論、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
- PHP — [PHP 8.4 Release Announcement](https://www.php.net/releases/8.4/en.php)
- PHP RFC — [Property Hooks](https://wiki.php.net/rfc/property-hooks)
- PHP RFC — [Asymmetric Visibility v2](https://wiki.php.net/rfc/asymmetric-visibility-v2)
- PHP RFC — [Lazy Objects](https://wiki.php.net/rfc/lazy-objects)
- Laravel — [Laravel 12 Release Notes](https://laravel.com/docs/12.x/releases)
- Laravel — [Reverb (WebSockets)](https://laravel.com/docs/12.x/reverb)
- Laravel — [Folio (Page-based routing)](https://laravel.com/docs/12.x/folio)
- Laravel — [Volt (Single-file Livewire)](https://livewire.laravel.com/docs/volt)
- Laravel — [Pennant (Feature flags)](https://laravel.com/docs/12.x/pennant)
- Symfony — [Symfony 7.3 Release](https://symfony.com/blog/category/releases)
- Symfony — [AssetMapper Component](https://symfony.com/doc/current/frontend/asset_mapper.html)
- Doctrine — [Doctrine ORM 3](https://www.doctrine-project.org/)
- Mercure — [mercure.rocks](https://mercure.rocks/)
- FrankenPHP — [frankenphp.dev](https://frankenphp.dev/)
- FrankenPHP — [Worker mode docs](https://frankenphp.dev/docs/worker/)
- Caddy — [caddyserver.com](https://caddyserver.com/)
- Laravel Octane — [Octane docs](https://laravel.com/docs/12.x/octane)
- RoadRunner — [roadrunner.dev](https://roadrunner.dev/)
- Spiral — [spiral.dev](https://spiral.dev/)
- Hyperf — [hyperf.io](https://hyperf.io/)
- Yii — [yiiframework.com](https://www.yiiframework.com/)
- Phalcon — [phalcon.io](https://phalcon.io/)
- Livewire — [livewire.laravel.com](https://livewire.laravel.com/)
- Inertia.js — [inertiajs.com](https://inertiajs.com/)
- Filament — [filamentphp.com](https://filamentphp.com/)
- Statamic — [statamic.com](https://statamic.com/)
- Pest — [pestphp.com](https://pestphp.com/)
- PHPUnit — [phpunit.de](https://phpunit.de/)
- PHPStan — [phpstan.org](https://phpstan.org/)
- Larastan — [GitHub larastan/larastan](https://github.com/larastan/larastan)
- Psalm — [psalm.dev](https://psalm.dev/)
- Rector — [getrector.com](https://getrector.com/)
- Laravel Sail — [Sail docs](https://laravel.com/docs/12.x/sail)
- Laravel Forge — [forge.laravel.com](https://forge.laravel.com/)
- Laravel Vapor — [vapor.laravel.com](https://vapor.laravel.com/)
- Laravel Cloud — [cloud.laravel.com](https://cloud.laravel.com/)
- AdminerEvo — [adminerevo.org](https://www.adminerevo.org/)
- PHPerKaigi — [phperkaigi.jp](https://phperkaigi.jp/)
- PHP Conference Japan — [phpcon.php.gr.jp](https://phpcon.php.gr.jp/)
- pixiv inside (PHP migration cases) — [inside.pixiv.blog](https://inside.pixiv.blog/)
- ウアハン兄弟 技術ブログ — [techblog.woowahan.com](https://techblog.woowahan.com/)
- カカオ Tech — [tech.kakao.com](https://tech.kakao.com/)
- Bref (PHP on AWS Lambda) — [bref.sh](https://bref.sh/)
- INFCON 2025 アーカイブ — [infcon.kr](https://infcon.kr/)
현재 단락 (1/450)
毎年「PHP は死んだ」という記事がトレンドに上がる。そして毎年、その記事を配信しているサーバーは PHP で動いている。Wikipedia、Slack の一部、Facebook の PHP 派生 H...