>100 Views
August 29, 26
スライド概要
SAPPORO ENGINEER BASE #16 モバイル開発 で登壇したスライド
PHPでスマホアプリが 作れるらしい SAPPORO ENGINEER BASE #16 モバイル開発
今日の話 PHPで、スマホアプリが 作れるように なった なぜすごいのかは、PHPがどういう言語なのかを知らないと伝わらない。まずそ こから。
なぜすごいのか
PHPは、Webサイトの裏側で動く言語 1995 WordPress Laravel 誕生した年 中身はPHP 今日いちばん使われている道具
PHPは、ずっと向こう側にいる言語だった HERE 手元 ブラウザだけ THERE ← 向こう側(サーバー) PHPはここで動く
アプリは、プログラムがスマホの中に入っている だからインストールが必要で、圏外でも動き、カメラや位置情報も触れる。
PHPは、スマホの中には入れない PHP iPhone Swift Android Kotlin 向こう側の言語 両方まとめて Flutter / React Native どれもPHPではない。
PHPそのものを、アプリの中に 丸ごと入れ てしまった HERE 手元(アプリの中) アプリ自身がPHPを実行する THERE ← サーバー もう要らない/圏外でも動く
“I think it’s super cool... it’s just wild” Taylor Otwell Laravel の作者
本物のボタンやリストが、そのまま出てくる Webっぽい見た目ではなく、iPhoneやAndroidが持っている部品がそのまま表示 される。ブラウザを画面に埋め込む方式(WebView)を使わない。
遅くも、重くもない 240fps+ < 50MB PHP 8.4 画面の描画速度 アプリのサイズ(1ファイル) アプリの中で動くPHP
どう動いているのか
Swift/Kotlinのシェルの中に、PHPが同梱されている シェルアプリ(Swift / Kotlin)= ひとつのプロセス SwiftUI / Jetpack Compose 本物のネイティブビュー ↕ メモリ共有(HTTPなし) libphp(埋め込み PHP) Laravel も Blade もそのまま動く サーバーもネットワークも介さず、PHP が直接ネイティブ UI を動かす
WebViewはよくできている。それでもユーザーには分 かる スクロールの物理、テキスト描画、画面遷移、コンテキストメニュー、ダークモード、文字サ イズ設定、スクリーンリーダー。ブラウザでは近似、OS純正なら標準装備。 v4ではネイティブUIが既定。WebViewは1つのコンポーネントとして残り、画面単位で移行でき る。
SuperNative / EDGE 書くのはBladeのまま EDGE(Element Definition and Generation Engine)のBladeタグに、Tailwind風のユーティ リティクラスを当てて画面を組む。 <native:button class="justify-center"> スタイルを当てた <div> ではなく、そのOSの他のアプリと同じボタン。
Bladeの出力先が、HTMLからバイト配列に差し替 わった Bladeコンポーネント → 固定長のバイト配列 HTMLではない ネイティブ側で解釈 → トランスパイラでもHTML→ネイティブ変換でもなく、独自のBladeエンジン。 SwiftUI / Composeのビューツ リー
境界で通行料を払わない よくある方式 NativePHP JSONにして ブリッジを渡す 同じメモリを 共有している 更新ごとに毎回 ホップもブリッジ呼び出しもない
触るのは3行 composer install php artisan native:install php artisan native:run デモアプリ:nativephp/super-native
まとめ PHPしか書けなくても、 スマホアプリが作れ る WebViewの上のごまかしではなく、Bladeの出力先を差し替えて、OS純正のUIをPHPから直 接組み立てている。