読者です 読者をやめる 読者になる 読者になる

ReactNative でアプリ作ろうと思ったが途中でやめた話

最近 ReactNative 熱いし、 Web エンジニアがネイティブアプリサクサク作れたら俺たちネイティブアプリエンジニアの仕事なくなるじゃん、と思って ReactNative でアプリ作ってみるか、という気持ちになった。

Showcase 見ると Facebook, Instagram, Airbnb などそうそうたるアプリが作られてるし、今後は ReactNative がネイティブアプリのデファクトスタンダードになっていくのでは?という説も否定できない。

作り始める前の ReactNative のイメージとしては、 React がわかれば iOS / Android アプリが作れて、細かいことは ReactNative が吸収してくれて開発者は重要なところを書いていけばいい、という印象を持っていた。

作ろうと思ったのはリストを並べてタップしたら情報が表示される感じの、よくある RSS リーダみたいなやつ。

最初は Deco IDE 入れて Getting Started で感触をつかむことから始めた。

最初思ったことは LiveReload が最高で、 Cmd + S したら画面が再描画されるの革命的だった、 Xcode の Cmd + R して数十秒待ってる世界と比べるとやばい。

書き方としては React と全く一緒で、

<TabBarIOS>
  <TabBarIOS.Item>
    ...
  </TabBarIOS.Item>
</TabBarIOS>

みたいに書くと TabBar が表示されていい感じに書ける。
Xcode で書くと Storyboard で TabBar 設置して RootController 設定して〜みたいになる。
初心者からすると Storyboard の設定とかわからんし、慣れないとわかりにくいが、コードでかける ReactNative の方が直感的でええやん、と思った。

ただ、書いているうちにだんだんつらくなってきて、

  • コードの補完を全然してくれない
  • シンタックスエラーを吐いてくれない
  • なんかよくわからんが上手くいかない

などで嫌になってきた。

上二つは IDE 頑張ってくれという感じなのだが、「なんかよくわからんが上手くいかない」のは完全に俺が悪くて、

<View>
  <NavigatorIOS
    …
  />
</View>

というように NavigatorIOS を View で囲んでしまっていたのが原因だった。
完全に俺が悪いけど、気がつくまでに 1 時間くらいかかってしまった。
ただ、開発進んでいくと似たようなことでまたハマるんだろうな〜という気もする。

それとは別に、 ListView をタップした時や画面遷移時の背景とかちゃんと自分で指定しないといけないっぽくて、いろいろと自分で頑張って書かないといけない感じがした。

ReactNative を始める前は、細かいことはいい感じにやってくれると思っていたので、そこらへんの自分の期待値とのギャップがあり、最初「やるぞ!」となってた気持ちが萎えてしまった。

開始から辞めるまで 3 時間だったので、深いところまで行きつけてないし、Xcode での開発よりいいところもあったけど、今後ずっとこれ書いていくのはやだなあ、と思ってしまった。

ReactNative それ自体に関しては、ロジックは iOS / Android 共用できる強さがあるし、軽く触った感じ Native 部分は隠蔽されているので Web エンジニアでも全然書いていけると思う。

2016年10月時点の自分の印象としては、iOS / Android ネイティブで書いていけるなら、それぞれちゃんと書いたほうが良いのでは、という感じです。