JavaScriptフレームワークに対する、あるGoogle社員の争い
ソフトウェアの専門家マット・アサイは、JavaScriptフレームワークに対し次のように語った。
GoogleはモバイルWebを重視している。 だが、彼らはこれまでHTML5にあまりにも資金を投じてきておらず、今になってこれをカバーしようとしているところだ。
また、GoogleはインドのFlipkartの様な立ち位置が微妙なアプリをWebに引っ張り戻そうと、宗教的とも言える熱意を上げている。このことから、モバイルWebのパフォーマンス向上を劇的に向上しようとする意識についてはいうまでもない。
GoogleのモバイルWebへの関心は隠しようも無い中、これまでのモバイルWebアプリを形作ってきたJavaScriptフレームワークに対する彼らの姿勢を、我々は信じていいものだろうか?というのも、Googleを代表するChrome開発チーム出身のポール・ルイスは、JavaScriptフレームワークは開発者にとっての利点よりも、貧弱なユーザーエクスペリエンスによる弊害の方が大きいと考えている。
この観点についてEmber.jsの共同設立者 トム・デールは、それは間違いだという。
ユーザの犠牲の上に成り立つ開発者にとっての利点
アプリ製作者がネイティブで作るかWebで作るかという問題は、開発において熱くなる話題だ。どちらにも問題となる十分な理由がある。そして、この問題はReact Nativeの様なフレームワークによって解消される兆しも見られる。
しかしながら、ルイスとデールとの論点は、「フレームワークベースの開発」対「フレームワークから外れたWeb開発」という点だ。
ルイスはEmber.jsやGoogleのAngular.jsの様なフレームワークが開発者たちにとって大きな利点になっていると認めている。この様なフレームワークは使っていて楽しいものであり、最低限の要件を超スピードで実現できるものだと彼は言う。
しかしながら問題は、パフォーマンスの頭打ちに行き当たるところだ。これはいただけない。ネットワークが弱いところやデバイスの性能が貧弱な場合はなおさらだ。
エンドユーザーにとっては大した問題ではないかもしれないが、その頭打ちは顕著なものになり得る。ルイスの経験では、フレームワークではレイテンシ、帯域幅、CPUやメモリの使用量その他の理由から、最適なパフォーマンスは実現できないという。
開発者にとっても問題はある。まずフレームワークを学ばねばならず、変更があれば都度学習するか、他にいいフレームワークが出てきたら代わりにそれを学ばなければならない。
開発者がハッピーになることでユーザーもハッピーになる
デールとは私もかつてFacebookに買収されたHTML5の企業、Strobeで一緒に働いていたことがあるのだが、彼はルイスとは何度もやりあっている。
彼の主張とは、「フレームワークはアプリ開発の複雑さを増すこと無く、また開発に関わるチームを時間とともに成長させるものだ」というものだ。
アプリがより大きく複雑なものになるにつれ、開発者一人が改変、管理することは難しくなり、新しい人がプロジェクトに参加すれば事態は更に悪くなる。
「多くの開発者たちは、ゆくゆくはコードがえらく複雑なものになり、新しい機能を盛り込むのに四苦八苦する事になるプロジェクトに関わっている。フレームワークはこの問題の助けとなるものだ」と彼は言う。
さらに言うとデールは、もしデモのためにやっつけで作ったようなアプリであれば、フレームワークが無いことが問題にはならないと付け加える。
しかし長期的な開発となるとフレームワークは重要なものであり、結局はエンドユーザーのためにもなるという。
「開発者の生産性が高ければ高いほど、フレームワークにより、より多くのバグを潰し、多くの機能を盛り込み、遅延箇所の特定が行える」と彼は述べる。
議論の落ち着くところとは
Microsoftのクリスティアン・ヘイルマンによると、デールのいう長期的な観点は必ずしも成り立たないという。アプリとビジネスの優先順位は変わるものだからだ。 だからといってルイスの意見が支持されるというわけでもない。
Paravelの開発リーダー デイブ・ルパートによれば、「クライアントサービスにおいて、もし非常に軽快なWebサイトを提供できたとしても、それが維持保守などができない様なものだとしたら、それは失敗作だ」と言っている。
デールもルイスも正しいが間違えている、というのがおそらく正解だろう。
これまでもそうであった様に、実際はどの様なアプリか、どの様な開発者かによって変わってくる。そしてルイスはフレームワーク支持派にとってもアンチにとっても正解と思えるある一言で締めくくっている。
「Webプラットフォーム自体の知見に賭けることは長い目で見て正しい判断だ」
フレームワークを使うことはいいアイデアかも知れないが、そのフレームワークが何を抽象化しようとしていることを深く理解することは更に良いことだ。
ReadWrite Japan編集部
[原文]
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- React Nativeとネイティブアプリでの開発の違いとは
- 需要No. 1言語はどれ? 2016年度人気プログラミング言語を徹底比較
- 【データから紐解く!】2017年の人気プログラミング言語を徹底比較!
- クライアントサイドMVCフレームワーク「Ember 3.1」リリース
- MozillaのWebAssemblyとは何か?: よりパワフルなWebアプリ
- オープンソースのアプリケーション開発フレームワーク「Flutter 3.19」「Dart 3.3」リリース
- クライアントサイドMVCフレームワーク「Ember 3.2」リリース
- クライアントサイドMVCフレームワーク「Ember 3.2」リリース
- 「ネイティブアプリかWebアプリか」の争いはいい加減やめにしよう
- 今すぐ知っておくべき!モダンな10のWeb技術