Lynx - Web技術ベースのネイティブアプリ開発ツール
(lynxjs.org)- TikTok(ByteDance)が作った、より高速でスムーズな React Native代替
- Lynxは、Web技術を使って ネイティブUI を生成できるよう支援する技術ファミリー
- 1つのコードベースでモバイルやWebなど多様なプラットフォームに対応可能
- TikTokのような大規模アプリで、性能重視のUIプログラミングとRustベースのツール群を提供
- 既存のクロスプラットフォーム開発の限界を超えるため、オープンソース化を決定
大規模かつ高速なネイティブアプリを提供
- モバイルアプリのユーザーにとって、ネイティブでない体験はネガティブな印象につながる
- 空白画面、0.1秒のアニメーション遅延、一貫性のないUIなどは信頼低下の要因
- さまざまなプラットフォームに対応しながら同一の体験を構築することは、依然として難しい課題
- Lynxは単一コードベースで多様なプラットフォームをサポートし、開発時間とコストを削減可能
- TikTokはLynxを段階的に導入し、成功した結果を得た
- TikTok Studio、Shop、LIVEなど多様なプラットフォームでLynxを使用
- 大規模イベント(Disney100、Met Galaなど)でもLynxを活用
Webコミュニティにインスピレーションを与え、成長を促進
- Webプラットフォームは本来ドキュメントベースで設計されたが、徐々にアプリ開発プラットフォームへ進化してきた
- PhoneGap(Cordova)やReact Nativeは、Web技術とネイティブUIを結びつけた先駆的な事例
- LynxはWeb技術の強みを保ちながら、明確な制約と拡張を通じてアプリ開発に最適化されたモデルを提供
- Web技術への準拠: マークアップとCSSをサポート
- 拡張と差別化: Webとは異なる明確な設計意図を適用
マークアップとCSSベースのデザインが可能
- LynxはWeb開発方式の親しみやすさを維持
- CSSアニメーションとトランジション効果をサポート
- CSSセレクタと変数をサポートし、テーマ設定が可能
- クリッピング、マスキングなど最新のCSSビジュアル効果をサポート
メインスレッドの効率的な利用
- ユーザースクリプトを2つのランタイムに分けて処理
- メインスレッドランタイム: PrimJS(JavaScriptエンジン)ベースで、UIの初期レンダリングと優先度の高いイベントを処理
- バックグラウンドランタイム: 基本的なユーザーコードを実行
- 2つの中核機能を提供
- Instant First-Frame Rendering (IFR): 最初のフレームを即時レンダリング → ブランク画面を除去
- Main-Thread Scripting (MTS): 高優先度イベントをスムーズに処理
- LynxベースのUIは平均2〜4倍高速な実行性能を提供
Lynxのオープンソース化
- LynxはByteDanceが開発し、TikTokで広範に利用されている
- TikTokはLynxのオープンソースを支援し、技術強化、コミュニティ活性化、エコシステム成長に貢献する予定
クロスプラットフォーム技術の大衆化
- 既存のクロスプラットフォーム開発は一部の主要ベンダーが主導してきた
- Lynxは単一ソリューションではなくメタインフラを提供 → 多様なアプローチを許容
- ReactLynx: LynxベースのReactスタイルなコンポーネント化と宣言的UIをサポート
- Rspeedy(Rustベースのバンドラー)を提供 → 高速ビルドとモジュールフェデレーションをサポート
- Lynxは特定のフレームワークやレンダリングバックエンドに依存しない
- Chromium、Flutter、React Nativeなどのプロジェクトから着想を得ている
- ブラウザでLynxを動作させることも可能 → デスクトップ、TV、IoTなどへ拡張可能
新たな始まり
- Lynxはすでに本番環境で使われており、バージョン3.xとして公開された
- オープンソースを通じて透明な開発プロセスを公開する予定
- 追加コンポーネント、グラフィックスレンダラー、フレームワークなどは今後公開予定
- オープンソースコミュニティと協力し、クロスプラットフォーム開発の限界を超えていくことを目指す
- コミュニティからのフィードバックと貢献を歓迎
3件のコメント
事前ビルド済みの Lynx Explorer を使うのは開発段階だけになりそうですし、現実的には Lynx Explorer をビルドする過程にも effort がかかる、という理解です。
React Nativeにとても興味があるので、こちらも気になりますね。
上記の内容は、公式紹介文である Lynx: Unlock Native for More から引用しました。