私はReactNativeに触れてから5年が経ちます。個人開発とクライアントの受託を合わせて10個以上アプリをリリースしてきました。Expoを使うプロジェクトや使わないプロジェクト、Ejectしたプロジェクトにも参画しました。そんな私がExpoを使うべきかどうかについてお話ししていきます。
Expoは使ったほうがいい。
アプリを初めてリリースするとき、iOS、Android共に設定することがいっぱいあります。ただExpo使っていると大半の作業を省略できます。大体1/3くらいの作業量になります。過去にアプリリリース経験がない人は特にExpo使うことをおすすめします。
EAS Buildという神機能がExpoにはあります。これを使うと試験用アプリを対象ユーザに配布、本番リリースといった作業がすごく楽になります。今まで無料だったのですが、最近こちらがiOS、Android共に15回までしか無料で出来なくなりました。以降は1回ごとに2ドルかかります。ただし、週に3回リリースしても無料でできるのでそんなに問題でないでしょう。
Expoは年に4回メジャーアップデートを行います。Expoのアップデートを行うと、そのタイミングでreactやreact-nativeのバージョンや主要パッケージのアップデートを一緒に行なってくれます。
Expoを使っていないとそれらを個別でアップデートしていかなければなりません。また個別アップデートだと、バージョンの互換性も確認取れていないので、厄介です。
Expoは途中でやめることができます。Ejectという機能があり、途中から通常のreact-nativeの開発に戻ることができます。なので、辞める必要が出るまでは、Expoでやってみればいいと思います。
私は過去にExpoの導入を見送ったり、Ejectしたりしたプロジェクトがあります。一つはアプリ外課金です。Expoで課金が実装できないため見送りました。しかし、現在はStripeをExpoで使えるため、問題ないです。
もう一つは動画再生です。こちらも以前はYouTube動画を正常に流すことができませんでした。こちらも現在はExpoで実装できます。
ここまでメリットをたくさん書きましたが、デメリットをいくつか書いていきます。
Expoは少し古いバージョンのReactNativeのバージョンを採用します。そのため、最新のバージョンが使えません。
例えば本日(2023年12月)の最新のExpoは49です。このExpo49で採用しているreact-nativeのバージョンは0.70.8です。ReactNativeの最新は0.73です。(ただ、そんなに最新のバージョンを使うケースがあるかどうかは不明です)
これが一番の欠点です。ガッツリ開発する時はNativeコードに触れる時がでます。そんな時はExpoをEjectする必要があります。具体例としては、
アプリに広告を出したい!react-native-admobを出したけど、他の広告も出したいな〜。他社のSDKも入れてみよう!
上記のようにSDKを導入したい!系は大体Eject必要になります。
まずはExpoでできるところまで進めましょう。どうしても詰まったらEjectすればいいだけなので!
LangJournalは、日記を書くことで英語やフランス語などの外国語を学べるアプリです。英語学習に興味がある方や、私が開発したこのアプリに関心を持っている方は、ぜひインストールしてお試しください。
LangJournalのサイトはこちら