1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PHPでネイティブアプリ開発する時代へ ― NativePHP入門

1
Posted at

はじめに

医療ITエンジニアの三浦です。
Laravel / PHPエンジニア向けに、NativePHPの概要と可能性を紹介します。

なぜ今クロスプラットフォーム開発?

クロスプラットフォーム開発とは、1つのコードで複数環境のソフトウェアを構築する開発手法のことです。その背景には、

  • 対応プラットフォームの増加
  • 開発スピードとコスト最適化
  • 技術成熟と品質向上
  • ビジネス要求の変化

があります。

対応プラットフォームの増加

以前はWindows対応だけで十分なケースも多くありました。現在はMac、iOS、Linux、Windows、Web、と様々な環境に対応した製品でないと選ばれにくくなりました。
医療現場でもiOSやAndroidの端末が普通に使われるようになっています。

開発スピードとコスト最適化

複数環境のソフトウェアを、複数の開発者が、複数のプログラミング言語で開発を行うと時間とコストが掛かります。
クロスプラットフォーム開発は、これらを大きく改善する開発手法です。

技術成熟と品質向上

当初のクロスプラットフォーム技術は「ハイブリッドアプリ」と呼ばれる、ブラウザコンポーネントにWebアプリを埋め込んだ簡易的なものでした。
最近ではFlutterやReact Nativeなど、独自描画やOS APIを直接利用できる、「よりネイティブらしい」開発環境が実用レベルとなっています。

ビジネス要求の変化

さらに近年のビジネスでは、アイデアを素早く最小限の形で市場に投入し、フィードバックを得ながら製品を成長させることが求められています。

NativePHPとは?

クロスプラットフォーム開発で使用する開発言語はWeb系のものが多いです。その中でも歴史の長いPHP言語で開発できる環境がNativePHPです。
以下の特徴があります。

  • Laravel / PHPでデスクトップアプリを開発
    • PHPの知識だけで、Windows・macOS向けのネイティブアプリを作成可能
  • Web技術 × ネイティブ機能
    • BladeやLivewireを使いつつ、ファイル操作・通知などOS機能に対応
  • クロスプラットフォーム対応
    • 1つのコードベースで複数OSに配布でき、業務アプリ開発と相性が良い
    • デスクトップアプリの開発は無料
    • モバイルアプリの開発は有料(Free~\$200/年~\$350/年)
      ※ 執筆時点のライセンス体系。詳細は公式サイト参照。

PHP+Composer+Laravel

NativePHPアプリの内部構成は次のようになります。

  • PHP+Composer+LaravelでWebアプリを作成
  • NativePHP+NodeでElectronやフロントエンドを作成
    ※ Node.js はElectronの実行・ビルド用途で使用

NativePHPv2では実行環境としてElectronが必須となっています。
Laravelアプリの開発者は、いつものようにアプリを作った後、NativePHPでネイティブアプリ化するという流れになります。

NativePHPでWindowsアプリをビルド

必要環境

以下が必要です。

  1. PHP 8.3+
  2. Laravel 11 or higher
  3. Node 22+
  4. Windows 10+ / macOS 12+ / Linux

PHPのバージョンについて
8.3+ という表記ですが、2026.01.17時点、8.5を使用すると php artisan native:run コマンドを実行してもElectronが起動しません。
理由は vendor\nativephp\php-bin\bin(プラットフォーム)(アーキテクチャ)\に php-8.5.zip が作成されないためです。
8.5で動かす必要がある場合は、ここにphp-8.5.zipを作成して配置してください。

vendor\nativephp\php-bin\bin\win\x64
image.png

まずはComposerとPHPのバージョン確認です。

>composer -V
Composer version 2.9.3 2025-12-30 13:40:17
PHP version 8.4.16 (C:\work\tmp\php\php-8.4.16\php.exe)
Run the "diagnose" command to get more detailed diagnostics output.

PHP拡張機能も必要なので、php.iniで以下を有効化します。

  • fileinfo
  • mbstring
  • openssl
  • pdo_sqlite
  • sqlite3
  • zip

Laravelアプリ作成

適当なフォルダでLaravelアプリを作成します。

>composer create-project laravel/laravel my-app
Creating a "laravel/laravel" project at "./my-app"
Installing laravel/laravel (v12.11.1)
  - Installing laravel/laravel (v12.11.1): Extracting archive
Created project in C:\work\tmp\php\my-app
> @php -r "file_exists('.env') || copy('.env.example', '.env');"
Loading composer repositories with package information
Updating dependencies
Lock file operations: 111 installs, 0 updates, 0 removals
  - Locking brick/math (0.14.1)
  - Locking carbonphp/carbon-doctrine-types (3.2.0)
(以下省略)

試しに実行してみます。

>cd my-app
>php artisan serve

   INFO  Server running on [http://127.0.0.1:8000].

  Press Ctrl+C to stop the server

実行できました。
image.png
ここまでは普通のLaravelアプリ(Webアプリ)です。

NativePHPビルド

LaravelアプリにNativePHP依存関係を追加します。

>composer require nativephp/desktop
./composer.json has been updated
Running composer update nativephp/desktop
Loading composer repositories with package information
Updating dependencies
Lock file operations: 4 installs, 0 updates, 0 removals
  - Locking nativephp/desktop (2.0.2)
  - Locking nativephp/php-bin (1.1.1)
(以下省略)

NativePHPをインストールします。

>php artisan native:install
  Would you like to publish the Electron project? (yes/no) [no]
❯

  Would you like to install the NativePHP NPM dependencies? (yes/no) [yes]
❯

 Installing NPM dependencies (This may take a while)...

 Installing NPM dependencies using the npm package manager...


  Installing composer scripts

 Installing `composer native:dev` script alias...

 native:dev script installed!

 Installing `native:install ` post-update-cmd script

 post-update-cmd script installed!

  Publishing NativePHP Service Provider...

   INFO  Publishing [nativephp-provider] assets.

  Copying file [C:\work\tmp\php\my-app\vendor\nativephp\desktop\resources\stubs\NativeAppServiceProvider.php.stub] to [C:\work\tmp\php\my-app\app\Providers\NativeAppServiceProvider.php]  DONE

   INFO  Publishing [nativephp-config] assets.

  Copying file [C:\work\tmp\php\my-app\vendor\nativephp\desktop\config\nativephp.php] to [C:\work\tmp\php\my-app\config\nativephp.php]  DONE

  Would you like to start the NativePHP development server: (yes/no) [no]
❯

  NativePHP scaffolding installed successfully.

3回質問されますが、すべてデフォルト(そのままEnter)で進めます。

①Electronプロジェクトを発行するか...いいえ

Would you like to publish the Electron project? (yes/no) [no]

②NativePHP NPM依存関係を解決するか...はい

Would you like to install the NativePHP NPM dependencies? (yes/no) [yes]

③NativePHP 開発サーバーを起動するか...いいえ

Would you like to start the NativePHP development server: (yes/no) [no]

実行します。

>php artisan native:run

  Starting NativePHP dev server…

 Fetching latest dependencies…

 Installing NPM dependencies (This may take a while)...

 Installing NPM dependencies using the npm package manager...


 Starting NativePHP app

 Running the dev script with npm...

実行できました!
image.png

まとめ

Laravel / PHPエンジニアは、NativePHPを使うことでWebアプリだけでなく、ネイティブアプリも開発できるようになりました。
PHPエンジニアにとって、数あるクロスプラットフォーム開発環境の中で、NativePHPは有力な選択肢となるでしょう。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?