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
pnl で簡易的に作る PHP ネイティブアプリケーション
Search
memory
PRO
July 27, 2026
Programming
16
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
pnl で簡易的に作る PHP ネイティブアプリケーション
PHPerKaigi mini #3
memory
PRO
July 27, 2026
More Decks by memory
See All by memory
セグメントとターゲットを意識するプロポーザルの書き方 〜採択の鍵は、誰に刺すかを見極めるマーケティング戦略にある〜
m3m0r7
PRO
1
1k
PHP で mp3 プレイヤーを実装しよう
m3m0r7
PRO
0
460
PHP でエミュレータを自作して Ubuntu を動かそう
m3m0r7
PRO
2
230
AI 時代だからこそ学ぶべき PHP の基礎
m3m0r7
PRO
7
2.5k
JVM の仕組みを理解して PHP で実装してみよう
m3m0r7
PRO
1
630
コードゴルファー道
m3m0r7
PRO
0
650
ChatGPT とつくる PHP で OS 実装
m3m0r7
PRO
3
550
事業観点から見る技術的負債の返済
m3m0r7
PRO
4
1.3k
PHP でアセンブリ言語のように書く技術
m3m0r7
PRO
1
300
Other Decks in Programming
See All in Programming
AIが無かった頃の素敵な出会いの話
codmoninc
1
220
分散システム、なんですぐ死んでしまうん?耐障害性を高めたいあなたのためのレジリエンスパターン入門
mshibuya
7
6.9k
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
17
9.3k
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
4
1.8k
Prismを使った型安全な暗号化_関数型まつり2026
_fhhmm
0
150
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
360
霧の中の代数的エフェクト
funnyycat
1
430
作るコストが小さくなった時代 幸せに働くために改めて考えたいこと 〜エンジニアとして価値を出し続けるために注視している二分野〜
yuppeeng
0
120
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
3
650
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
2.4k
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
860
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
400
Featured
See All Featured
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
270
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.8k
30 Presentation Tips
portentint
PRO
1
350
Mind Mapping
helmedeiros
PRO
1
290
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Navigating Team Friction
lara
192
16k
It's Worth the Effort
3n
188
29k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
390
The untapped power of vector embeddings
frankvandijk
2
1.8k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.2k
Leo the Paperboy
mayatellez
8
1.9k
Transcript
pnl で簡易的に作る PHP ネイティブアプリケーション PHPerKaigi mini #3 めもりー 1
めもりー m3m0r7 m3m0r7 m3m0r7 複数のスタートアップ企業,上場 企業でソフトウェアエンジニアや CTO として活動。 2
3
FFI を使うことで PHP でネイティブライブラリの呼び出せる 4
しかし,FFI をそれなりに使うには それなりの設計と,それなりの知識が必要 5
FFI を使うのに必要な設計と知識 ヘッダーファイルのパス解決 FFI で動くものと動かないもの マクロの処理 #include の解決 6
たとえば libc 7
libc のパス 実装 アーキテクチャ パス macOS Apple libSystem Apple Silicon
/usr/lib/libSystem.B.dylib Alpine musl x86_64 /lib/libc.musl-x86_64.so.1 musl arm64 /lib/libc.musl-aarch64.so.1 glibc x86_64 /lib/x86_64-linux-gnu/libc.so.6 glibc arm64 /lib/aarch64-linux-gnu/libc.so.6 Ubuntu Windows 8 UCRT C:\Windows\System32\ucrtbase.dll (または msvcrt.dll)
OS,アーキテクチャによって全然違う 9
ところで FFI のマニュアルを見てみよう… 10
11
12
パス解決は自分でやるしかない 13
ヘッダーに必要な型を 大量に定義する必要があるし… 14
15
ヘッダーファイルをそのまま流し込むこんでも エラーになる場合がある 16
PHP Fatal error: Uncaught FFI\ParserException: ';' expected, got '{' at
line 2 in /Volumes/develop/sandbox/b.php:13 Stack trace: #0 /Volumes/develop/sandbox/b.php(13): FFI::cdef('static inline i...') #1 {main} thrown in /Volumes/develop/sandbox/b.php on line 13 17
18
FFI は考慮すべきことが盛り沢山 19
そこで… 20
この課題をすべて解決するのが pnl 21
pnl: PHP Native Library https://github.com/m3m0r7/pnl 22
リリースからバイナリを落としてきて パスを通せばすぐ使えます 23
pnl install libsdl 24
ネイティブライブラリのインストールから PHP 用ランタイムの用意までたったこれだけ! 25
26
IDE Helper 等も出力されるので, メソッド・関数のサジェストももちろん AI フレンドリーな開発も可能 27
MessageBox もサクッと表示できたり 28
デスクトップに走り回るねこアプリを作ったり 29
ブロック崩しも作れます 30
なんなら四人麻雀も作れます 31
これ全部 PHP やで? 32
(pnl 自体は Rust で作られてますが…) 33
ご清聴ありがとうございました 34