当記事は、7 Strengths of React Every Programmer Should Know About | vacuumlabs (Jun 21, 2016) by Samuel Hapákを日本語に翻訳したものです。
JavaScriptはこの6年で大きくその地位を向上させてきました。JavaScriptは有名なサーバーサイド言語になり、オフラインファーストSPAは用語として定着し、そしてJavaScriptは他の言語のための有名なコンパイル先となりました。
JavaScriptは、ElectronやReact Nativeのような技術やハイブリッドアプリを通して、ついにはデスクトップとモバイルのプラットフォームとなってきています。
この3年でもう一つ革命が起こり始めました。FacebookのプログラマーであるJordan WalkeがReact.jsを生み出しました。Reactはそれ以来、数百ないし数千ものプログラマーのJavaScriptのコードの書き方を変えてきました。
Reactの途方もない成功の裏にはそれなりの理由があります。
1. バグが出にくいよりシンプルなコード
Reactはユーザーインターフェースの複雑さを減らしてくれます。それが、まさにReactの優れている最も強力な理由となります。Reactは関数型プログラミングのアイデアによって作られたJavaScriptのフレームワークの始めてのメインストリームとなります。とても素晴らしいことです。なぜなら関数型プログラミングは、論理的記述を簡単にしてくれるからです。
デバッグすることもとても簡単です。副作用を回避することやイミュータブルな値を持つことにより、コードの中の問題の発見を驚くべきほど簡単にしてくれます。
それに加えて、Reactのコミュニティは、例えば過去にさかのぼることができるデバッガーのような、素晴らしいデベロッパーツールのセットを作ってきました。
2. Reactはとてつもなく速い
実際にReactは、手動でDOMを操作するよりもかなり速いです。FlipboardがモバイルWeb上で60fpsのパフォーマンスを達成するために、独自のReact-Canvasライブラリを開発したのもそうした理由からです。
すべての変更後にDOMを修正すれば遅くなります。それゆえReactはVirtualDOMと呼ばれるDOMの簡略化されたJavaScriptのバージョンを作り、差分アルゴリズムを使って実際のDOMに必要な変更のみ適用させています。
JavaScriptは適度に高速な言語で、典型的なWebアプリはたった数百のDOM要素から構成されます。Reactもまた、複雑なアプリであっても60fpsを達成するために効率的な方法をサポートしています。
3. 既存のコードと喧嘩しない
Facebookのエンジニアは既存のコードベースとうまく統合できるようにReactをデザインしました。彼らはFacebookのサイトを作るのに数年を費やしてきました。従ってReactを使えるようにするためだけにすべてを書き換えるようなことは認められなかったわけです。
また、ReactはjQueryやAngular、Backbone、それ以外のJavaScriptフレームワークと一緒に使うこともとても簡単です。
4. 一度覚えたら、どこでも書ける
ユーザーはモバイルWebの18倍以上もの時間をネイティブアプリに費やします。今日プロダクトを成功させるためには、少なくともWeb、iOSそしてAndroidをカバーしなければなりません。
別々に各プラットフォームの開発とメンテナンスをすることは、一般的にはソフトウェア開発のコストを3倍にすることを意味します。このような多様な環境において、ユーザーのために一貫性のある体験を提供することは本当にトリッキーなこととなってしまいます。
ハイブリッドアプリはその解決策であるかのように思えるかもしれません。入り口の障壁は低く、すべてのプラットフォームでコードを再利用でき、一つのクロスプラットフォームチームで一貫性を維持することがとても簡単になります。
残念ながらハイブリッドアプリはしばしば満足のいくユーザー体験を届けてくれないことがあります。ユーザーをイライラさせることはビジネスにとってリスキーです。なぜならモバイルユーザーはそこまで寛大ではないからです。これはFacebookが苦労しながら学んできたことです。
React Nativeは違います。JavaScriptやWeb開発で使っているツールを使って同じようにネイティブアプリを作ることができます。React Nativeはホットリローディング(動的なリロード)をサポートし、ReployやCodePushのようなツールによってあなたのアプリを瞬時にカスタマーやテスターに送り届けることができます。プラットフォーム間でコードを再利用できるとは驚きですか?Facebookはグループのアプリのコードベースの87%をAndroidとiOSのプラットフォーム間でシェアしています。
5. Reactのコミュニティーは常にヘルプを厭わない
Facebookはコミュニティのイノヴェーションを取り入れるために労を厭いません。ClojureScriptやCycle.js、Elmのような競合する技術のスピーカーでさえも公式なReactのカンフェレンスで登壇の機会が与えられています。Reactにおけるとても大きなイノヴェーションのいくつかは実際にClojureScriptによってインスパイアされ、いくつかはEmberから取り入れられ、そしていくつかはElmからもたらされました。
ClojureScriptやElm、Angular、Emberであろうとなかろうと、これらの言語の優れた人物は「Reactive Community」のメンバーであり、一緒に働くべきだと毎日気づかせてくれます。
Reactのエコシステムはデベロッパーの経験や生産性にすこぶるフォーカスされています。コミュニティは、より良いコードを書くことを助けてくれる驚くべき数のツールやプロジェクトを作ってきました。BabelJSやRedux、React Router、Immutable.js、React Native Playground、Flow、Relayのようなものです。
Facebook自身コミュニティと一緒に働くことを重視してきました。FacebookはBabelJSやReduxの作成者を雇い、これらのプロジェクトにリソースを割いてきています。
FacebookはReactコミュニティーの唯一の大きなサポーターではありません。YahooやMozilla、Airbnb、Netflix、そしてそれ以外の大きな企業もその製品においてReactを利用しており、便利なオープンソースのライブラリやツールなどを伴ってコミュニティをサポートしてきています。
6. JavaScriptのままである
ElmやClojureScript、PureScript、そしてそれ以外の素晴らしい言語は、React.jsと競い合っています。これらの言語は全てJavaScriptでは勝負できないくらい興味をそそられるような大きな力を持っています。しかし、これらの言語は完全に新しい言語やエコシステムとなり、入り口の障壁がとても高いです。
React.jsは革命的なコンセプトをもたらしてきていますが、そもそもJavaScriptです。これまで関数型プログラミングをやってこなかったとしても、おそらく簡単に、そして安全にReact.jsを始めることができるでしょう。
7. どこでもあなたに影響を及ぼします。十分に備えておきましょう。
Reactの裏にあるアイデアから逃れることは不可能です。Angular 2もEmberもReactからいくつかキーとなるアイデアを採用してきています。そしてVirtualDOMのアイデアは、ClojureScriptやElmなどの関数型コミュニティにおいてさらに大きなインパクトを与えてきています。
React.jsは単なるライブラリではありません。React.jsは我々のプログラミングの方法を永久に変えてしまいました。乗り遅れないでください。今すぐReactを勉強し始めましょう!
結論
ReactはWebやモバイルそしてデスクトップのフロントエンドの構築方法を変えています。数千のプログラマーはReactのおかげで評価できないほどの生産性の向上を経験しています。
Reactはすべてのプロジェクトにとって完全な選択肢ではないです。しかし、あなたのプロジェクトにおいてReactはあなたを助けてくれるでしょう。そして、おそらくReactに出会う機会がだんだん増えてくることでしょう。Reactはきっと注目するに値しますよ。
この記事をレビューしてくれた@notbrent、 @steida、 @nikgraf、 @jlongster、 @rtfeldmanに大変感謝します。
当記事は、7 Strengths of React Every Programmer Should Know About | vacuumlabs (Jun 21, 2016) by Samuel Hapákを日本語に翻訳したものです。
コメント