非エンジニアの社長にReactとは何かを説明する③
前回までのあらすじ
- WebページはHTML形式のデータで表現される
- JavaScriptによりWebページに動きを付けることが出来る
- Reactを使うとWebページを書き換える上で面倒なことを代わりにやってくれる
その他のReactの良いところ:ReactNative
前回Reactの最大の特長であるVirtualDOMについて説明しました。
とはいえ、VirtualDOMだけなら別のライブラリ(有名どころではVuejs)などでも利用できます。
(初めて導入したのはReactでしたが、優れた概念は後続のライブラリにも導入されるのは当然です。)
が、その中で我がチームはReactを採用しました。
Reactには他のjavascript系ライブラリとの明確な差別要素があるためです。
ReactNativeです。
これは、Webで使うReactの記法と仕組みを理解すると、その様式でiOS,Androidのネイティブアプリ(ストアで配布も出来る普通のアプリ)を作れてしまうというものです。
貧者のツール1と揶揄されることもありますが、
専門のiOSやAndroidエンジニアを抱えていなくても、Web技術の応用で
Web版=>アプリを展開というよくあるリリースパターンが実現できるすごい奴です。
Reactの歴史とReactNative
なぜReactがReactNativeというものを備えることになったのか。
それについてはReactの歴史を振り返ってみると分かりやすいかと思います。
Reactの誕生とHTML5
Reactは元々FaceBook社でFaceBookを実装するために作られたライブラリです。
(今はオープンソース化されていますが、FaceBook社の影響は依然として極めて強いです。)
Reactが誕生したのは、2010年代初頭で、ちょうど、HTML5という新しいHTMLの規格が盛り上がっている時代でした。
HTMLについては、これまでの回で説明しましたが、Webページのソースの記述形式です。
HTMLの規格は5という番号から分かるように、何度か改訂が行われていたのですが、このHTML5は非常に大きな改訂でした。
何しろ前の4.01が出たのが1999年と10年以上前でしたし、内容的にもそれまでFlashなどのプラグインで行っていた様々な機能を標準として取り込む劇的な変化がありました。
ブラウザ上でできることが非常に増えたので、「HTML5の力を使えばわざわざネイティブアプリなんか作らなくても全部Webで完結できるのでは?」という雰囲気が出てくるのも当然だったかと思います。
おそらく、Reactもそのような期待を背負っていたのでしょう。
が、現実はそうは甘くはありませんでした。
HTML5に対する幻滅
現在、Web+スマホ用アプリというパターンのサービスが多いことから分かるかと思いますが、
Webサービスだけでスマホまで全てカバーできるというのは幻想でした。
実際、ザッカーバーグも2012年の時点で「HTML5に期待をかけすぎたのは失敗だった」2と語っています。
ブラウザで出来ることは増えましたが、あくまでもWebページを表示するものに過ぎず、アプリを作る基盤ではありません。
アプリとしては必須ないし非常に重要だけれども、ブラウザでは苦手な操作というものがいくつも見つかったのです。(タイムラインのスクロールしてどんどんロードしていく機構など)
では3プラットフォーム分作るのか?
とはいえ、一つのサービスを作るのに、3プラットフォーム(WEB,iOS,Android)分作るのはコストが大きいですし、異なるスキルを持ったエンジニアを抱える必要も出てきます。
どのプラットフォームもなるべく同じスキルかつコード流用できる形で書きたいところです。
そこでFaceBookが開き直って作ったのがReactNativeです。
Reactで作ったWebページがスマホで使い物にならないなら、Reactでスマホアプリを作れるようにしてしまえというわけです。
もちろん、最終的な生成物が別々なので完全に同じコードで全て動かせるというわけではありませんが、
iOSとAndroidでは90%くらいは同じコードで行けるとの統計がありますし、
WebエンジニアがiOS/Andoroidアプリを作る場合、1からそれぞれの開発手法を習得するより、
ReactNativeでアプリを書いた方がはるかに低コストで対応できるのは明白です。
潤沢な開発力のない貧者的なスタートアップには非常にうれしいフレームワークがここに誕生しました。
作った張本人のFaceBookは貧者とはとても言えませんけれども、そのFaceBookですらマルチプラットフォームを別々に作るのは嫌ったわけです。
素直に恩恵に預かろうと思います。
まとめ
- VirtualDOMだけなら他ライブラリでもOK
- ただ、ReactNativeという形でスマホアプリ開発にも応用が利く
- ReactはiOS/Androidエンジニアを抱える余裕のない貧者の味方
-
iOSやAndroidの熟練したエンジニアをたっぷりと抱えているチームだったら、それぞれ作りこんだ方がいいものが出来ます。が、わが社を始め世の中そんなに恵まれたチームばかりではないのです。 ↩