Show HN: WASMレイアウトとGPUレンダリングを備えたJavaScript Webアプリを280KBで
Show HN: JavaScript web apps with WASM layout and GPU rendering in 280 KB (github.com)
要約
Uniformは、ネイティブフレームワークのプラットフォーム依存性や、HTML/CSSベースのクロスプラットフォームフレームワークの制限を解決することを目指す新しいフレームワークです。Cで書かれたレイアウト・レンダリングエンジンをWASMにコンパイルし、軽量なネイティブランタイムと組み合わせることで、280KBという小さなバンドルサイズでクロスプラットフォームアプリを開発できます。ホットリロード機能により、全プラットフォームで高速なイテレーションサイクルを実現します。
全文翻訳
過去1年間、クロスプラットフォームアプリをより良く書く方法を探してきました。
私が解決しようとしている問題は以下の通りです。
- ネイティブフレームワークは一部のプラットフォームでしか動作しないため、ターゲットごとにUIの実装を書き直す必要があります。
- プラットフォーム自体と同じペースで更新されるため、開発者は新機能を使用するためにユーザーベースを分割するか、バグ修正を長時間待つことを余儀なくされます。
- また、開発者は特定の高水準言語の使用を強制されるため、クリエイティブアプリやゲームのような高いパフォーマンス要件を持つアプリには適していません。
- ブラウザエンジンをバンドルするクロスプラットフォームフレームワークはコード再利用の問題を解決しますが、HTML/CSSの制限を引き継ぎます。
- レイアウトとレンダリングを制御するものは、Webで使用するには効率的かつ軽量ではなく、コンパイル言語の使用が必要です。
理想的には、UIフレームワークをアプリケーションに直接バンドルできるようにしたいと考えています。これにより、開発者はUIフレームワークの新機能を使用したり、問題をすぐに修正したりできるようになります。また、改善のためのアイデアが、委員会によって決定されるのではなく、自然な形で競合できるようになります。
Uniformは、これらの問題を解決するための私のアイデアです。その構造は以下の通りです。
- Cで書かれ、WebではWASMに、その他のすべてのプラットフォームではネイティブコードにコンパイルされるレイアウトおよびレンダリングエンジン
- 最高のパフォーマンスと効率のために、各関数呼び出しが直接コアに転送されるJavaScript API
- macOSおよびiOSで同じJavaScriptコードを実行できるネイティブランタイム(2MB未満)(今後さらにプラットフォームを追加予定)。ランタイムは、アプリストアにアップロードするためのパッケージ化されたアプリを生成することもできます。パッケージ化の手順もJSで記述されています。
Uniformは、すべてのプラットフォームでホットリロードを介して非常に高速なイテレーションサイクルをサポートします。iOSでさえ、アプリの実行中にアプリのJSソースコードを変更できます。変更は次のディスプレイリフレッシュで表示されます。コンピュータやインターネットへの接続は不要です。ネイティブパフォーマンスで、電話上でゼロからアプリを作成できます。
リンクされたリポジトリのREADMEには、多くの例とコアアイデアの詳細な説明が含まれています。AIの使用なしで手書きされています。
そして、ライブデモはこちらです。https://raffk.com/hn-demo/
WebGPUをサポートする任意のブラウザで動作するはずです。(Safariで120Hzサポートを得るには、「Prefer Page Rendering Updates near 60fps」機能フラグを無効にする必要があります。)