NativePHP Kitchen Sink APP
NativePHP Kitchen Sink は、Web ではなくスマートフォン上で、Laravel をどこまで活用できるかを示す、フル機能のモバイルデモアプリです。
NativePHP Mobile を使用して構築されたこのアプリは、React Native、Flutter、その他のフロントエンドフレームワークを必要とせず、Android または iOS アプリ内で直接、完全な Laravel バックエンドを実行します。Kitchen Sink は、シンプルでありながら強力な真実を証明します。Laravel で動作するものは、スマートフォンでも動作するということです。
ネイティブ機能をテストする場合でも、NativePHP の動作を学習する場合でも、ゼロから新しいアプリを構築する場合でも、Kitchen Sink は、すぐに使える堅牢なプレイグラウンドを提供します。
存在意義
モバイル開発といえば、長らくスタックの切り替えを意味してきました。Laravel 開発者がネイティブモバイルアプリを開発したい場合、Swift、Kotlin、または JavaScript を学習する必要がありました。アプリのロジックを再構築し、データベースアクセスを再検討し、認証フローを再実装し、APIとUIを何らかの方法で同期させる必要がありました。
NativePHPは、これら全てを変えます。
Laravel開発者は、使い慣れた同じLaravelコードベースを使って、本格的なネイティブモバイルアプリを構築できます。Kitchen Sinkは、この概念実証を現実のものにしたものです。Laravelアプリをネイティブシェルに直接バンドルし、AndroidとiOSに直接接続するカスタムコンパイルされたPHPランタイムを搭載しています。
その結果? 1つのコードベース、1つのバックエンド、1つのスキルセット。そして、ネイティブ機能へのフルアクセス。すべてPHPから。
内容
Kitchen Sinkは単なるデモではありません。NativePHPで現在できることすべてを網羅した、生きたカタログであり、将来登場する機能のテスト場でもあります。
標準で含まれる機能は以下の通りです。
生体認証
PHPからシンプルなLaravelロジックを使用して、Face IDまたは指紋スキャンでユーザーを保護します。
カメラアクセス
ネイティブカメラアプリを開き、写真を撮影して、Laravel ルートに直接アップロードし、処理できます。
プッシュ通知
タップアクションやバックグラウンド処理を完全に制御しながら、ローカルとリモートの両方でプッシュ通知を送受信できます。
トースト、アラート、バイブレーション
スナックバー、アラート、バイブレーションフィードバックなどのネイティブ UI アクションを、クリーンで読みやすい PHP 呼び出しでトリガーできます。
ファイルピッカーとストレージ
デバイスからファイルや写真を選択し、Laravel アプリにアップロードして、Web と同じように保存できます。
シートの共有
Laravel からシステム共有ダイアログを開き、ユーザーがメッセージ、WhatsApp、Slack などのアプリにコンテンツを共有できるようにします。
ディープリンク
アプリを特定のビューに起動する受信リンクを処理します。これらはすべて Laravel ルーティングによって管理されます。
セッションと認証の永続化
NativePHP は、リクエスト間で完全なセッション状態を維持します。Cookie、CSRF トークン、認証はブラウザと同じように永続化されます。
Livewire + Inertia のサポート
ブラウザ以外でも、Livewire または Inertia を使って動的なインタラクションを駆動できます。PHP がロジックを処理し、NativePHP がビューを処理します。
本物の Laravel で構築
Kitchen Sink にバンドルされている Laravel アプリは、まさに本物の Laravel アプリです。Laravel の標準的な機能をすべて使用しています。
web.php 内のルート
コントローラーとミドルウェア
Blade テンプレート
Livewire コンポーネント
Eloquent モデルとマイグレーション
設定ファイル、.env、サービスプロバイダーなど、必要な機能がすべて揃っています。
アプリが起動すると、NativePHP が組み込みの PHP ランタイムを起動し、Laravel へのリクエストを実行し、その出力を WebView にパイプします。そこから、フォームの送信、クリック、Livewire アクションなどのインタラクションがキャプチャされ、Laravel にルーティングされてレスポンスが再レンダリングされます。
Laravel にとっては、これは単なるリクエストです。ユーザーにとっては、ネイティブアプリです。


