BT

起動時間削減を目指すPrepack JavaScriptコンパイラ

| 作者: David Iffland フォローする 4 人のフォロワー , 翻訳者 h_yoshida フォローする 1 人のフォロワー 投稿日 2017年6月21日. 推定読書時間: 3 分 |

原文(投稿日:2017/05/08)へのリンク

Facebookは、React Nativeアプリの初期化コード限定で“JavaScriprtの高速実行”を実現するプロジェクトを公開した。

Prepackと呼ばれるこのツールは、コンパイル時に実行可能な計算処理、特にコードの初期化フェーズで実行される処理を削減しようというものだ。JavaScriptエンジンの完成度が向上した現在、パフォーマンスの最大限の向上は、現実的なユーザーエクスペリエンスの向上によって得る必要がある。モバイルアプリの場合、特定のプラットフォーム用に開発されたネイティブコードには、React NativeなどのJavaScriptで記述されたアプリに対して固有のメリットがある。それによってReact Nativeアプリの起動時間が改善されれば、ユーザエクスペリエンスに劇的な影響を与える可能性があるのだ。Nikolai Tillmann氏はこの問題に取り組むため、2016年9月にFacebookに参加した。

プロジェクトのページで紹介されているすべての例では、グローバルレベルで行われた処理がその処理結果に削減されることにより、クライアントのJavaScriptエンジン起動時に実行される不要なコンパイルが削減される様子を確認できる。Prepack自体は“JavaScriptのクリーンリファレンス実装”であり、コードが実際に何を行うか判断するため、実際にそのJavaScriptを実行している。

現状のプロジェクトでは、React Nativeの初期化パフォーマンス向上に重点を置いている。起動はアプリで最も大きなコストのひとつだからだ。JavaScriptエンジンが行うべきオンデバイスコンパイルが少ないほど、パフォーマンスは向上するはずである。しかしながらプロジェクトは、自身の環境について理解していない。“Prepackにはdocumentwindowの知識が組み込まれていません。実際にそのようなプロパティの参照コードを事前パックする場合、それらはundefinedと評価されます”、とドキュメントには記されている。

このプロジェクトは、“実運用レベルには達していない”と明確に示されている。差し当たっての大きな目標は、React Nativeおよび関連ツールチェーンと共に正しく動作できるようにすることだ。Webとnode.jsは“中期的”機能としてリストされているので、Webアプリケーションに手軽に統合したい開発者はもう少し待たなくてはならない。ただし、バンドルサイズの削減がWeb開発者の優先事項であるならば、それはPrepackの目標には含まれていない。プロジェクトのホームページの一番下の部分に、次のような注意書きがある。

Closure CompilerがJavaScriptのコードサイズに重点を置くのに対して、Prepackは実行時のパフォーマンスを重視しています。

メリットはコンパイル対象次第である、とTillman氏は記している

Prepackは従来のコンパイラに対して、完全に補完的な存在です。その強みは、JavaScriptビルトインに関する完全な知識のあることです。これはコンパイル時、コードの事前評価において使用されます。極端な場合は、プログラム全体が実行結果に変換される可能性もあります。実際にメリットを享受するためには、解析オーバーヘッドがキャッシュ可能な環境を使用することが必要です。純粋な実行時間に関しては、初期化フェーズで最大10倍の改善を確認しています。

 
 

この記事を評価

Adoption Stage
スタイル
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT