0
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?

NativePHP v2 (nativephp/desktop) でエクスプローラー作ってみた

0
Posted at

NativePHPってなに?

じつはPHPでデスクトップアプリが作れるって知ってます?
NativePHPって奴がありましてね・・・。(ゲス顔
最近、(といっても先月だけど)こいつのバージョンがアップしたそうな

以前から気になっていたものの、実際に実装したことはなかったので
ちょっと試しに触ってみるかーと思い、ネイティブアプリっぽいものを作ろうと考えて
エクスプローラーアプリを作ってみました。
GitHub

今後のメモがてら、導入〜実装までメモを残そうと思います。

構築〜実装まで実践する

インストール

nativephpを始める前にやることが1つ。それはLaravelの環境を作ること!

composer create-project laravel/laravel

いつものコマンドで環境を作った後に

compoer require nativephp/desktop

と続けてnativephpをインストールします。
nativephpのインストールができたら、続けてプロジェクトに適用します。
他のライブラリ(jetstreamやlivewireなど)と同じインストールの流れです。

php artisan native:install

基本的にこれだけ。nativephp本来が持つelectron関連のコードもカスタムしたい場合は

php artisan native:install --publish

でプロジェクト側にコードが表出するので、そこからカスタムします。

いざ実装

ベースはLaravelなので、いつものMVCで実装できます。
ボタンクリックしたらControllerが動き、Modelを使い、場合によってはService層も実装して
bladeで画面表示、という流れです。
nativephp特有の話をすると、先ほどインストールした時に
app/Providers/NativeAppServiceProvider.php というファイルができているはずです。
アプリケーション起動時の設定やアプリケーションメニューなどの設定はここで行います。

class NativeAppServiceProvider implements ProvidesPhpIni
{
    public function boot(): void
    {
        // Language menu (English is always the default on app startup)
        // Menu items emit MenuItemClicked events that are handled by JavaScript
        $languageMenu = Menu::make(
            Menu::radio('English', true)->id('change_language_en'),
            Menu::radio('日本語')->id('change_language_ja')
        )->label('Language');

        if (PHP_OS_FAMILY === 'Darwin') {
            // For MacOS
            Menu::create(
                Menu::app(), // MacOSアプリケーションのメニュー(About xx)
                $languageMenu
            );
        } else {
            Menu::create(
                $languageMenu
            );
        }

        // 画面起動時の設定(ウィンドウサイズとか)
        Window::open()
            ->width(1920)
            ->height(1200)
            ->showDevTools(false)
            ->title('File Explorer')
            ->route('explorer.index');
    }

    public function phpIni(): array
    {
        // php.iniの設定をアプリケーション起動中にオーバーライドしたい場合は
        // ここで設定ができる
        return [
        ];
    }
}

実行・デバッグ

php artisan native:run を実行すると、アプリケーションが立ち上がります

Windowsの場合
nativephp-de-explorer-win.png

Macの場合
nativephp-de-explorer-mac.png

終わりに

簡単にまとめると

  • NativePHPはLaravelベースで開発できる。Laravel環境構築後にライブラリを入れれば動く
  • ネイティブ部分はelectronで動作する。処理のオーバーライドも可能
  • OSやアーキテクチャ別にビルドできる

という感じになります。

新しい仕組みで開発というより、Laravelの延長線上のようなイメージで触れたので
入りやすかったです。
今回は手軽に実装するために、よくあるMVCモデルで実装しましたが
Viteなども使えるので、SPAやLivewireなども織り交ぜて開発してみたいなと思いました。

0
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
0
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?