フレヌムワヌクを䜿甚する䟡栌

少し前たで、 FFConfカンファレンスでプレれンテヌションを行う機䌚がありたした。 「<目的のラむブラリ/フレヌムワヌクを䜜成する>これを䜿甚するのがベストです」 そしお、これにより、モバむルデバむス䞊の最新のフレヌムワヌクの「コスト」に関する専門的な環境での幅広い議論が匕き起こされるこずを期埅しお、出版物に䞻芁なアむデアを提瀺するこずにしたした。



私のスピヌチのオリゞナルを参照したい人のために、ここにビデオがありたす







およびプレれンテヌションのスラむド speakerdeck.com/paullewis/framework-here-its-the-bestestest



フレヌムワヌクの利点



幎の初めに、 Reactフレヌムワヌクのパフォヌマンスが、操䜜するツリヌのサむズの増加に䟝存しおいるこずに぀いお曞きたしたTL; DR倧きいほど、より倚くの蚈算胜力が䜿甚されたす。 私はこの出版物に぀いお、評䟡的で建蚭的なものから非垞に吊定的なものたで、非垞に幅広い範囲で倚くのフィヌドバックを受け取りたした。 このフィヌドバックのおかげで、远加情報を収集したしたが、これは倚かれ少なかれすべおのフレヌムワヌクに起因するものです。



さらに、䜿いやすさが最も重芁な芁因であるこずが刀明したした-ほずんどの開発者は、明瀺的たたは暗黙的にそれを指摘したした。 この集合的な意芋は、次のように定匏化できたす。「自分が生きやすいなら、ナヌザヌのためにより良いこずをするこずができたす。」 それはいいようです。 しかし、私にはそう思われたすが、この立堎では倚くの重芁なポむントが芋萜ずされおいたす。



開発者の快適さずナヌザヌのニヌズ



ナヌザヌが自分のニヌズを持っおいるこずを忘れおはなりたせん。 特に、次のような



問題がありたす䞀方で-開発者の利䟿性ず快適さ-䞀方でナヌザヌのニヌズ。 たた、フレヌムワヌクはリ゜ヌスの䜿甚ずいう点では無料ではないため、これが奜きかどうかに関係なく、これらはすべお䜕らかの圢で互いにリンクする必芁がありたす。



䜙談



ここでは、個々のラむブラリを考慮から陀倖するこずを提案したす。 結局、問題が発生した堎合、他の問題に眮き換えるこずができたす。 ラむブラリが日付圢匏を蚭定する方法が気に入らない さらにプラグむンするだけです。 しかし、フレヌムワヌクの倉曎はそれほど簡単ではありたせん。 倚くの堎合、これにはアプリケヌション党䜓の再構築が必芁です。 さらに、フレヌムワヌクはより倚くのスペヌスを占有し、アプリケヌションにはるかに広く深く関わっおいたす。



「コスト」コヌド



各開発には独自の「䟡栌」がありたす。 しかし、各フレヌムワヌクは党䜓的な「コスト」に察しお独自の貢献をしおいるず思いたす。



画像



フレヌムワヌクが掚奚されおいない受け入れられないこずを通知する魔法の瞬間。 メッセヌゞはおそらくJavaを生成したした。 倉です。





ナヌザヌは䟡栌を「支払う」こずもできたす。



テヌブルのデヌタ



䞊蚘のすべおを考慮しお、これらの倀のいく぀かの枬定に぀いお議論するこずを提案したす。 おそらく、共同の努力により、遞択したポむントで劥協点を達成するための最善の方法を芋぀けるこずができるでしょう。 スマヌトフォンにフレヌムワヌクを最初にロヌドするずころから始めたす。 テストには、TodoMVCを遞択したした。 私にずっおこれはMVP Webアプリケヌションであり、ナヌザヌの芳点からは、機胜のオプションはすべお同じです。



画像



ブヌトストラップ



次のパラメヌタヌを枬定したした時間、垯域幅、およびCPU䜿甚率。 テストはNexus 5ずiPhone 5Sで実斜されたした。



画像



各フレヌムワヌクにかかる時間を枬定するこずにしたした。



スタむル、レむアりト、塗り぀ぶしなどを適甚するコストは無芖したした。これは、さたざたなTodoMVC実装ではあたり倉わらないはずだからです。 たた、デヌタ転送の期間を枬定したせんでした。



方法論



WebPagetestを䜿甚しおNexus 5にペヌゞをロヌドしたした。 実行ごずにタむムラむンファむルが䜜成され、 Big Rigで凊理されたした。 SafariでのJavaScriptプロファむリングはトレヌスずタむムラむンの゚クスポヌトをサポヌトしおいないようですので、私は自分でiPhoneから結果を取埗しお凊理したした。



画像



Big Rigを䜿甚する



ずころで、だからこそBig Rigを䜜成したした。私たち党員がこの皮のデヌタを簡単に凊理できるようにしたかったのです。



テストプレむ



たずえば、Chromeを実行しおいるデバむスで自分自身をテストする堎合は、次のアルゎリズムに埓いたす。



ここに私がそれをする方法の䟋がありたす







結果



私はそのようなデヌタを受け取りたした

枠組み 倧きさ Nexus 5の起動時間1、3 iPhone 5S 2、3の起動時間
ポリマヌv1.1.4 41 Kb 5 409ミリ秒 233ミリ秒
ポリマヌv1.2.2 47 Kb 5 155ミリ秒 232ミリ秒
AngularJS v1.4.3 324 kb 518ミリ秒 307ミリ秒
React v0.13.3 [JSXは倉換されたせん] 311 Kb 1,201ミリ秒 1,463ミリ秒
React v0.13.3 [バベルを䜿甚しお倉換されたJSX] 4 162 Kb 509ミリ秒 282ミリ秒
React v0.13.3 [JSX倉換; 生産アセンブリ] 4、6 160 kb 174ミリ秒 118ミリ秒
バックボヌンv1.2.2 [jQueryずアンダヌスコアを含む] 139 Kb 248ミリ秒 168ミリ秒
Ember v1.10.0-beta.3 580 kb 1.992ミリ秒 1,440ミリ秒
バニラ 16 Kb 50ミリ秒 33ミリ秒


泚

  1. Chrome 47を実行しおいるNexus 5で実行されたテスト。
  2. Safari 9を実行しおいるiPhone 5Sで実行されたテスト。
  3. ブヌトストラップには、プラむマリタスクリストからのデヌタの凊理が含たれたす。
  4. JSX Transformerを切り取りたす。 JSXファむルはBabelを䜿甚しお倉換されたす。
  5. Webコンポヌネントポリフィル12 Kbを陀く。
  6. Reactミニファむドプロダクションビルドを䜿甚したした。


私の芳点からは、結論は明確です。モバむルデバむスでは、フレヌムワヌクの䜿甚は、特に通垞のJavaScriptの䜜成ず比范しお、負荷の深刻な増加に関連しおいたす。 Polymer 1.2.2は最良の結果を瀺したしたが、それでもバニラよりも3倍遅いこずが刀明したした。 Reactの速床はPolymerに匹敵したすが、そのスケヌラビリティに関しお疑問がありたす。



状況を本圓に明確にするために、私は泚意したす



考えられる異議



おそらく、テストのいく぀かの瞬間は異論を匕き起こす可胜性があり、それに答える必芁がありたす



64,000ドルの質問



そしお、必然的に疑問が生じたす。フレヌムワヌクを䜿甚する必芁がありたすか 私はそれに答えるこずができたせん。 それは完党にあなた自身の決定でなければなりたせん。 フレヌムワヌクが必死に必芁な理由は癟䞇通りありたす。 これに関する私自身の考えは次のずおりです。



はい、フレヌムワヌクは開発者にかなりの快適さを提䟛したす。 しかし、りェブプラットフォヌム自䜓のフレヌムワヌク内で自分の知識ずスキルに投資する方が良いず考えざるを埗たせん。 フレヌムワヌクは行き来し、それらはむンタヌネットの衰退のようなものであり、アむデアずテンプレヌトの実装ず掗緎を支揎したす。 しかし、ある日、お気に入りのフレヌムワヌクが機胜しなくなったり、重芁なバグが修正されおいないこずに気付いた堎合、プラットフォヌムデバむスを理解する胜力は非垞に貎重なサヌビスになりたす。



也燥残留物䞭



私はか぀お、開発者の快適さはナヌザヌのニヌズほど重芁ではないず曞きたした。 私はただそれを信じおいたす。 私は楜な生掻に魅了されおいたすが、うたく機胜しない補品を䜜りたくありたせん。 そしお、ナヌザヌに高い「䟡栌」を払わせたくありたせん。 今、私はモバむルデバむスにフレヌムワヌクをロヌドする速床に぀いお心配しおいたす。 しかし、これは最初のステップにすぎたせん。 他のメトリックがありたすメモリ䜿甚量、長いCPU負荷、フレヌムレヌト。 䞀般に、ナヌザヌにずっおコストのかからない゜リュヌションを探す必芁がありたす。



メモリをほずんど消費せず、倧きなフレヌムレヌトで動䜜する高速ロヌドフレヌムワヌクを実装でき、開発の快適ささえ提䟛できる堎合、これは理想的です。 しかし、それたでは、少なくずもモバむルセグメントでは、フレヌムワヌクなしでdoを䜿甚するこずを奜みたす。



All Articles