HN 日本語サマリー

← 一覧へ戻る
Web開発

Show HN: WASMレイアウトとGPUレンダリングを備えたJavaScript Webアプリを280KBで

Show HN: JavaScript web apps with WASM layout and GPU rendering in 280 KB (github.com)

12 pointsby rkaehn3 コメント

要約

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」機能フラグを無効にする必要があります。)