swchrm logs

妄想技術録

実践『実践Expo』 〜第一章のかんそうと知識の整理〜

毎度のことながら段落どうのこうのは気にせず頭の中を整理するように書く。

React Nativeのよいところはビルドが速い。最初に一度ビルドしてしまえば、あとはJSの変更点だけを再ビルドするので速いらしい。これは業務で携わってない分にはわからないけど、これがあるからといってReact Nativeを採用するくらいの魅力にはならないのではないかなという印象。ネイティブのアプリのビルドがどれくらいかかるかは知らないので想像でしか無いけど。本によると規模がでかいと10分以上かかるとか。コーヒーでも入れに行けばいいと思ったけど、頻繁にこれだと確かにだるい。 でも実際はバグらないかとかドキュメントがしっかりしているかとか、そっちのほうが自分は大切な気がした。プロトタイプを半日で作る用の技術ってことなら大事になってくるとは思う。

JSXで書く。これはReactで採用されているJavaScriptDSL。React NativeでもJSXで書く。

ハイブリッドアプリとの違いは、ハイブリッドアプリはあくまでアプリ内のWebViewを利用して描画する、だからコーディングはHTML5 + CSS + JavaScriptで、ネイティブのAPIは基本的には使えない(…はず。)なのに対して、React NativeはKotlinやSwiftなどを触る必要がでてくる。率直な感想としては、せっかくJS(もっといえばWebアプリ)っぽく書くことができるのがReact Nativeの強みだから、ネイティブにもJSを書いてアクセスしたいなぁというのが浮かんだ。これを解決するのがExpoで、ネイティブの機能をJavaScriptを書くことで使えるようになる。React Nativeは、Web開発、とくにReact.js(React.ts)を習得している人がアプリ開発を行う際に学習コスト的な意味でコスパが良さそうな技術だと思う。あとは、市場的に先にWebでアプリを展開してから、ウケればアプリ…みたいなことをするときに良さそう。逆に先にアプリならいろいろ他にも技術はある。Flutterとか。シェアとかコミュニティ規模とか、そういった違いは割愛。。でも最近はReact Native for Webとか出てきてるし、先にReact Nativeでモバイルアプリを制作してからWebに移行する際にReact Native for Webを採用して…ということができそう。たしかつい最近、ExpoがReact Native for Webに対応した。

blog.expo.io

Firebaseへの対応は、ver30.0.0時点では一部ないものがあるようだけど、正体的にはそれも対応される予定らしい。

Expoを使う際の登場人物は4人。

  1. Expo Client
  2. Expo CLI
  3. Expo Snack
  4. Expo SDK

Clientは動作確認用?アプリで、CLIはinit等を行う。SnackはWeb IDEで、手元にモバイルがなくても簡単な動作確認ができる。SDKはネイティブのモジュールを利用できるようになるライブラリ。

ここまで読んだExpoの印象は「多少ネイティブの機能とか使えなくなってもいいからとにかくWebっぽくアプリを使いたい!」ときにジャスト・フィットするツール。よっぽどこったことをしなければExpoは必須なんじゃなかろうか。そもそもなんでReact Nativeを採用するのといったところに、AndroidiOSの技術者を十分に集められない(金がなかったり人が居なかったり)から、React Nativeでやるみたいな場合は少なくないと思う。となると、やはりできるだけWeb文化圏の知識を応用して書きたいはず。ここまでが仮に正しいとすれば、Expoは大体のReact Nativeでの開発に必要になってきそうだなぁ〜。と思いました。

書籍自体の印象としては、導入をハードル低めに入ってくれて好き。本格的な中身はこれからなのでまだよくわかんない。

お次はSnackを使ってのサンプルの表示をやる。

snack.expo.io