Lean Engineer

リーンエンジニア〜効率的に実験しながら、技術を学ぶブログ

ReactNativeでハイブリッドアプリのメリット・デメリットを考える

 ReactNativeはiOS / Androidアプリを同一コードで作れる便利なライブラリで、FacebookやInstagramなどが採用している。

 ReactNativeで一からアプリを作る場合は、とても便利である。何個か簡単なアプリを作ってみたが、同一コードで両OS動くのは便利だ。それに、ネイティブのコードを書くより、Reactを書くほうが生産性が高いと感じることも多い。特にViewを作るときなどだ(ただし、アニメーションなど凝ったViewを作るのは大変だとおもう)。それに、reduxなど強力ライブラリもあり、混沌としたネイティブアプリアーキテクチャを考えなくてすむ。

ハイブリッドアプリ

 さて、既存のアプリにReactNativeを導入する、いわゆるハイブリッドアプリを考えたい。最近では、ハイブリッドアプリで作っていたAirBnBがハイブリッドをやめる!と発表したことで、話題になった。

デメリット

 確かに、機能が増えたり、やりたいことが多くなると、いろいろなデメリットが出てくると思う。特にネイティブの機能を多用するようなアプリだと、ブリッジ(Native Module)を書き、それをReactNativeのバージョンに合わせて、メンテナンスをしていく必要がある。これは辛い。

メリット

 一方で、国内ではハイブリッドやるぞ!という声も聞こえ始めた。僕も、それほどネイティブ機能を使わないようなアプリの場合は、ReactNativeの恩恵を受けられると考えている。特に、情報を表示するだけのViewが多いようなアプリにおいては、iOS / Android / WebとクロスプラットフォームでViewをそれぞれ作るのはコストがかかる。

ハイブリッドにするなら使い所を考える

 ということで、ハイブリッドにしていくなら、メインじゃない機能で、Viewを作るのがめんどくさい画面で、ReactNativeを導入していくのがよかろうと考えている。例えば「その他」画面などだ。

 そのような画面は、できるだけメンテナンスしたくないし、変更があるときは、簡単に変更できる方がありがたい。ネイティブのViewで作るよりは、ReactNativeのViewで作るほうが、変更は楽だと思う。それに、一つのコードの変更で、両OS対応できる。

 ということで、ハイブリッドアプリを検討していきたいと思った次第である。とはいえ、0からReactNativeで作るよりは、超えないといけない壁もあるので、これから検討していきたい。