Slide 1

Slide 1 text

1)1Ͱ(6*ΞϓϦΛ ࡞Εͳ͔ͬͨ QFDMฤ 第155回 PHP勉強会@東京

Slide 2

Slide 2 text

ࣗݾ঺հ ■ ちひろ ■ Twitter: @chiroruxxxx ■ 会社: 株式会社モリサワ

Slide 3

Slide 3 text

/BUJWF1)1͕࿩୊Ͱ͢Ͷʂ https://nativephp.com/

Slide 4

Slide 4 text

/BUJWF1)1 ■ PHP で GUI アプリを作るための Laravel プラグイン – Electron などなどで実現 – route で指定した内容を表示する (WebView のようなイメージ) ■ ついに PHP で GUI アプリを作れるようになった! ■ PHP にとって GUI 元年になるかもしれない! Window::open() ->route('top');

Slide 5

Slide 5 text

(6*ݩ೥ɾɾɾʁ🤔

Slide 6

Slide 6 text

1)1ͬͯલ͔Β (6*࡞Ε·͢ΑͶ ΍ͬͨ͜ͱͳ͍͚Ͳ

Slide 7

Slide 7 text

https://www.php.net/manual/ja/refs.ui.php

Slide 8

Slide 8 text

6*Ϟδϡʔϧ ■ PHP7 以上 ■ Pecl 拡張モジュール ■ Windows / Mac / Linux で動く ■ libui を入れておく必要がある

Slide 9

Slide 9 text

Πϯετʔϧ # install meson pip3 install --user meson # install ninja brew install ninja # install libui git clone [email protected]:andlabs/libui.git && cd libui meson setup build ninja -C build # install ui module pecl install ui-beta

Slide 10

Slide 10 text

݁Ռ ■ 結果、ビルドできず – 古い文法で書かれてそう? ■ (最終更新も 7 年前だなぁ・・・) ■ C に詳しい人ならビルドできるかも? ■ GitHub の Issue でもみんなビルドできなくて困ってた ISO C99 and later do not support implicit function declarations

Slide 11

Slide 11 text

·ͱΊ ■ 素直に NativePHP を使いましょう

Slide 12

Slide 12 text

͓·͚ ■ Issue で他のリポジトリがおすすめされてた

Slide 13

Slide 13 text

DIPQJOTQIQMJCVJ ■ UI モジュールと同じように libui を使用して動く ■ Pecl 拡張モジュールではなく FFI で動く – FFI は PHP で C のコードを動かす仕組み

Slide 14

Slide 14 text

DIPQJOTQIQMJCVJ require_once __dir__ . "/vendor/toknot/php-libui/src/UI.php"; use UI¥UI; $ui = new UI('/usr/local/lib/libui.dylib'); $ui->init(); $mainWindow = $ui->newWindow("libui Control Gallery", 640, 480, 1); $ui->controlShow($mainWindow); $ui->main();

Slide 15

Slide 15 text

͓·͚ͷ·ͱΊ ■ 「PHP は好きだけど Web は嫌い」みたいなニッチな人にはいいかも ■ OS デフォルトの UI を使えるのは利点か ■ libui のビルドが必要 ■ 書くコードはわりとつらい – いい感じにラップするフレームワークがあれば良さげ?