こんにちは、かつコーチです。
先日、Laravel Japan ConferenceでNativePHPの開発に携わる方とお話しする機会がありました。
「PHPエンジニアがLaravelの知識のまま、デスクトップアプリやモバイルアプリを作れる」という発想そのものに、会場でも注目が集まっていたのが印象的でした。
この記事では、そのNativePHPが一体どんなフレームワークなのか、仕組みと他の選択肢との違いを初心者にもわかるように解説します。
NativePHPとは?
PHPだけでネイティブアプリを作れるフレームワーク
NativePHPとは、PHP(主にLaravel)だけでデスクトップアプリ・モバイルアプリを開発できるフレームワークです。
これまでPHPは「Webサーバー上で動くバックエンド言語」という位置づけが基本でした。
NativePHPは、そのPHPをデスクトップ(Windows/macOS)やモバイル(iOS/Android)で動くアプリケーションのロジック実装にも使えるようにする、という発想の技術です。
デスクトップアプリ版は2025年4月に、モバイルアプリ版は2025年5月2日にそれぞれ正式リリースされています。
なぜ今、注目されているのか
理由はシンプルで、Laravelエンジニアが新しい言語やフレームワークを学ばずに、デスクトップ・モバイルアプリまで作れるようになるからです。
Web開発とアプリ開発は、これまで別のスキルセットとして扱われることがほとんどでした。
NativePHPは、その境界を「Laravelの知識」だけで越えられる可能性を示している点が、多くのPHPエンジニアの関心を集めています。
仕組みと他フレームワークとの違い
NativePHPの内部構造
NativePHPは、フロントエンドとバックエンドが分かれた二層構造になっています。
- フロントエンド:WebView(ブラウザの表示エンジン)でHTML・CSS・JavaScriptを描画
- バックエンド:PHP(Laravel)でビジネスロジックを処理
つまり、見た目の部分はWebページを表示する技術を使いながら、中身の処理はいつも通りLaravelのルーティングやコントローラ、Bladeテンプレートで組み立てられる、という仕組みです。
JavaScriptとPHPの間は、イベントベースの非同期通信でやり取りします。
Electron・Tauriとの比較表
デスクトップアプリのフレームワークとしては、Electron・Tauriが有名です。それぞれの特徴を比較してみます。
| フレームワーク | ベース言語 | バンドル方式 | アプリサイズ | PHPエンジニアの学習コスト |
|---|---|---|---|---|
| NativePHP | PHP | Electron | 大 | 低(Laravelの知識がそのまま使える) |
| Electron | JavaScript/Node.js | Chromium+Node.js | 大(200MB超) | 中 |
| Tauri | Rust | Rust+WebView | 小(20〜40MB) | 高 |
Electronはアプリサイズが大きくなりがちで、Tauriは軽量な反面Rustの学習が必要です。
NativePHPは内部的にElectronをベースにしているためアプリサイズは大きめですが、「新しい言語を覚える必要がない」という一点で、既存のLaravelエンジニアには大きなメリットになります。
実際に使ってみる:基本的な使い方
インストールから起動まで
NativePHPは、Laravelプロジェクトを作る感覚でスタートできます。
composer create-project nativephp/starter my-app
cd my-app
php artisan serve
前提条件は、PHP 8.1以上・Composer・Node.js(16以降、フロントエンドビルド時に必要)です。
筆者が最初に触ったとき、Node.jsのバージョンが古くビルドに失敗したことがありました。
Error: The engine "node" is incompatible with this module.
フロントエンドのビルドに使うNode.jsのバージョンは、事前に最新のLTS版へ揃えておくのがつまずかないコツです。
ウィンドウを開くコード例
デスクトップアプリのウィンドウは、Laravelのコードの中で次のように設定します。
use Native\Laravel\Facades\Window;
Window::open()
->width(1024)
->height(768)
->title('My NativePHP App')
->route('dashboard');
route('dashboard')の部分は、普段Laravelでルーティングを組むときと同じ感覚で指定できます。
// routes/web.php
Route::get('/dashboard', [DashboardController::class, 'index']);
コントローラやBladeテンプレートも、Webアプリの開発と同じ書き方がそのまま使えます。
どんな場面で使うと向いているか
現状の対応プラットフォーム
2026年8月時点で、NativePHPが対応しているのはmacOS(Ventura以降)とWindows 10/11です。
Linux対応は今後の予定として挙がっており、まだ全プラットフォームを網羅しているわけではありません。
OSごとに一部仕様や動作の差異があるため、「一度作れば完全に同じ挙動で全OSに配れる」と過信せず、実機での検証は必要です。
向いているユースケース
- 社内業務アプリ(在庫管理・POSシステムなど)
- 社内ツール(データダッシュボード、ログビューワー)
- オフライン対応が必要なアプリケーション
- 既存のLaravel Webアプリを、そのままデスクトップ化したいケース
すでにLaravelでWebアプリを持っている会社が、「同じ機能を社内向けデスクトップアプリとしても提供したい」という場面では、特に効果を発揮しやすい技術だと感じます。
まとめ
この記事のポイント
- NativePHPは、PHP(Laravel)だけでデスクトップ・モバイルアプリを作れるフレームワーク
- WebViewでUIを描画し、PHP(Laravel)でロジックを処理する二層構造
- Electron・Tauriと比べ、既存のLaravelスキルをそのまま使える学習コストの低さが最大の強み
- 2026年8月時点の対応OSはmacOS・Windowsのみで、Linux対応は今後の予定
- 既存Laravelアプリのデスクトップ化や社内ツール開発との相性が良い
次に読むべき記事
- Laravel 13とは?Laravel 12からの変更点まとめ
- Laravel 13のAI SDKを徹底解説
タグ: Laravel, NativePHP, 中級者向け, 実践Tips
