BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース TikTokのネイティブ型クロスプラットフォームUIフレームワーク Lynxがオープンソース化

TikTokのネイティブ型クロスプラットフォームUIフレームワーク Lynxがオープンソース化

原文リンク(2025-03-24)

TikTokを運営するByteDance社は、ネイティブ型クロスプラットフォーム環境でのモバイルアプリ開発用フレームワーク・ツールコレクション Lynxをオープンソース化したと発表した。今回のオープンソース化で、Webマークアップ、CSS、JavaScriptを使用できるようになる。LynxのカスタムJavaScriptエンジンとピクセルパーフェクトなUIレンダリングを活用した、ネイティブアプリ開発ツールの提供を目指している。

LynxはChromium、Flutter、React Nativeにインスピレーションを受けており、フォームファクターの多様化やマルチプラットフォームサポートで高まる複雑さに対応することでネイティブ開発を大規模かつ迅速に提供することを目指している。こうした苦労の裏では、「同じエクスペリエンスを何度も再構築しては徒労になり、チームの結束の乱れては公開が延期している」と、LynxのソフトウェアアーキテクトであるXuan Huang氏は説明している。

Lynx自体も同様の法則に基づいています。「アプリ開発に特化した代替Web」だと考えてください。Lynxは、Webテクノロジーに関連した知的財産の保護を目的としており、選び抜かれたアプローチの採用、WebのようなAPIのサポートや明確な意図を持った制約・拡張の実装が行われています。

こうした目標の実現に向けてマークアップやCSSを採用しており、ウェブ開発者による自身のスキルを活かしたLynxでのモバイルアプリ開発が可能になっている。 Lynxは、CSSアニメーション・CSSトランジションテーマ設定用のCSSセレクタ・CSS変数に加え、グラデーション、クリッピング、マスキングといったモダンCSS視覚効果をネイティブサポートしている。

一方、Lynxではwebモデルとして一般的なウェブシングルスレッドを採用しておらず、デュアルスレッドモデルが静的選択されている。メインスレッドは特権タスク・同期タスク・ノンブロッキングタスク処理に特化しており、バックグラウンドスレッドでユーザーコード処理を実行する。このアプローチで、Lynxの最初のフレームの即時的なレンダリング、すなわち「初回フレームレンダリング(TTFF)」メトリックの最適化が可能になった結果、メインスレッドで優先度の高いイベントやジェスチャーを効率的に処理する応答性の高いインターフェイスが実現できたのだ、とHuang氏は述べている。

Lynxを構成するコンポーネントには、Lynx core engine、宣言的UIを作成するReactベースのフロントエンドフレームワークReactLynx、Webpack互換のRust製高速バンドラであるRspackをベースとしたバンドラRspeedy、JavaScriptの最適化エンジンであるPrimJS、ElectronベースのデバッガLynx DevToolなどがある。 Lynxでは、Lynxアプリのブラウザ実行用Webフロントエンドも提供されている。

Syntax FMのポッドキャストで、ByteDance社のエンジニアであるZack Jackson氏は、LynxをReactの自社バージョンであると説明している。また、このLynxで同社アプリUIすべての多様なチームにまたがるアーキテクチャの統一を維持している。 しかし、Huang氏の公式発表では、LynxのサポートをReactに限定してはおらず、他のフロントエンドもオープンソース化する予定があると力説している。

Lynxは、主にTikTokアプリの検索バーや、TikTokクリエイター向けのコンテンツ作成・管理アプリTikTok Studioで使用されている。

ByteDance社の社員だと語るHacker Newsユーザー suzakusは、重要度の高いiOSとAndroidクライアントの一部の記述はC++言語が利用されプラットフォーム間移植が可能になっている一方、UIコンポーネントの大半を含む部分にKotlinやSwiftが使用されていると投稿している。一見すると、この発言はHuang氏の説明と真逆であり、同社のアプリ全体におけるLynxの汎用性の低さが浮き彫りになったように思えるが、両者の主旨は同じである。

余談になるが、同社が根強い人気があるとはいえ現存する最古のウェブブラウザに因んだプロジェクト名を選んだ理由がHacker Newsで説明されている。

Lynxというプロジェクト名は深く考えたものではなく、Lynxsブラウザも意識してはおりませんでした。ですが、こうして多くのコードやユーザーが依存するプラットフォームになっていたため、あえてオープンソース化に合わせた名称変更もしないことになったのです。

末尾ではあるが、Huang氏が、同社で追加のUIコンポーネント、カスタムレンダラー、その他のフロントエンドフレームワークなどのLynxコンポーネントもオープンソース化が予定されており、フレームワークのデスクトップ、テレビ、IoTデバイスなどの他のプラットフォームへの拡張も計画されていると明言した点にも触れておきたい。

作者について

関連するコンテンツ

BT