Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PHPでGUIアプリを作れなかった(pecl編)
Search
chiroruxx
September 02, 2023
0
410
PHPでGUIアプリを作れなかった(pecl編)
第155回PHP勉強会@東京で発表したスライドです。
chiroruxx
September 02, 2023
Tweet
Share
More Decks by chiroruxx
See All by chiroruxx
Go Connectへの想い
chiroruxx
0
170
eBPF with PHPをさわる
chiroruxx
0
120
sl完全に理解したつもり
chiroruxx
0
110
命名をリントする
chiroruxx
1
790
良い命名かを調べるリンターを作った + α
chiroruxx
0
110
GoLandを布教する会
chiroruxx
0
37
PHPはいつから死んでいるかの調査
chiroruxx
3
650
元phperから見たGoの良いところ
chiroruxx
0
94
Go Connectへの想い
chiroruxx
0
490
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
Adopting Sorbet at Scale
ufuk
77
9.5k
Visualization
eitanlees
146
16k
Building Adaptive Systems
keathley
43
2.7k
Facilitating Awesome Meetings
lara
54
6.5k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Embracing the Ebb and Flow
colly
86
4.8k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
How to Think Like a Performance Engineer
csswizardry
25
1.7k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.4k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
Transcript
1)1Ͱ(6*ΞϓϦΛ ࡞Εͳ͔ͬͨ QFDMฤ 第155回 PHP勉強会@東京
ࣗݾհ ▪ ちひろ ▪ Twitter: @chiroruxxxx ▪ 会社: 株式会社モリサワ
/BUJWF1)1͕Ͱ͢Ͷʂ https://nativephp.com/
/BUJWF1)1 ▪ PHP で GUI アプリを作るための Laravel プラグイン – Electron
などなどで実現 – route で指定した内容を表示する (WebView のようなイメージ) ▪ ついに PHP で GUI アプリを作れるようになった! ▪ PHP にとって GUI 元年になるかもしれない! Window::open() ->route('top');
(6*ݩɾɾɾʁ🤔
1)1ͬͯલ͔Β (6*࡞Ε·͢ΑͶ ͬͨ͜ͱͳ͍͚Ͳ
https://www.php.net/manual/ja/refs.ui.php
6*Ϟδϡʔϧ ▪ PHP7 以上 ▪ Pecl 拡張モジュール ▪ Windows /
Mac / Linux で動く ▪ libui を入れておく必要がある
Πϯετʔϧ # 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
݁Ռ ▪ 結果、ビルドできず – 古い文法で書かれてそう? ▪ (最終更新も 7 年前だなぁ・・・) ▪
C に詳しい人ならビルドできるかも? ▪ GitHub の Issue でもみんなビルドできなくて困ってた ISO C99 and later do not support implicit function declarations
·ͱΊ ▪ 素直に NativePHP を使いましょう
͓·͚ ▪ Issue で他のリポジトリがおすすめされてた
DIPQJOTQIQMJCVJ ▪ UI モジュールと同じように libui を使用して動く ▪ Pecl 拡張モジュールではなく FFI
で動く – FFI は PHP で C のコードを動かす仕組み
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();
͓·͚ͷ·ͱΊ ▪ 「PHP は好きだけど Web は嫌い」みたいなニッチな人にはいいかも ▪ OS デフォルトの UI
を使えるのは利点か ▪ libui のビルドが必要 ▪ 書くコードはわりとつらい – いい感じにラップするフレームワークがあれば良さげ?