💡

expo eject後の開発・ビルド(Expo development client, EAS build)

2 min read

自己紹介

株式会社Another woksでエンジニアインターンをしています。エンジニア歴は1年。
主にreactnativeでのアプリ開発をしています。

はじめに

現在インターン先で「複業クラウド」というアプリをReactNative、expoで開発しています。
最近行ったexpoの「eject」をテーマに記事を書きます。
今回はそもそもexpoとは?という話から書きました。

expoとは(超簡単に)🤔

ReactNativeアプリの開発やビルドを支援してくれるサービス。
様々なライブラリを提供しており、とても便利。

expoを使うと

開発が楽になる

webアプリと同じような開発体験
QRコードをかざすだけで実機での開発ができる
push通知や認証ライブラリ、カメラ機能などのexpoが提供している優秀なライブラリを使用できる。

ネイティブの知識がほとんど不要

ios/androidの設定についてはexpo側でやってくれるので、swiftやjavaの知識はほとんど必要ない。
reactに慣れている人であればかなり学習コストが低い

ビルドが簡単

ios/androidのそれぞれのビルド設定を共通のjsonファイルに記述できる。
コマンド一つでビルド可能

expoにおける2種類の開発アプローチ

Managed workflow

expoがネイティブ開発の複雑な部分を管理してくれるので「managed」
nativeを意識せずにjavascriptのような開発体験ができる
コマンド一つでOTAupdateが可能 (一部の変更を審査なしで無線更新できる)

Bare workflow

expoの管理から外れたworkflowなので「bare(裸)」
ネイティブレイヤーのコードを自由に変更することが可能。
管理から外れた代償として、ネイティブ関連の設定を自分で行わなければならない。

ejectとは?🤔

Managed workflowからBare workflowに移行すること

つまり、expoの管理から外れて、自由にネイティブのコードを変更できるようにすること。
ネイティブレイヤーに依存しているライブラリやプラグインを使用したいときにejectすることになる。

ejectしたはいいけど、今までexpoに頼っていた開発やビルドはどうしよう、、🙀

救世主🦸

Expo Application Services (EAS) 🌟

EASとは

Expo Application Services
アプリと開発プロセスを改善するための新しい機会を開拓する次世代のサービス(expo公式引用)
2020年末から開始されたのでまだまだ発展途上。

https://expo.dev/pricing

EAS Build

コマンド一つでビルドできる
ネイティブコードの変更を含んでいてもビルドできる。
eas.josnで環境ごとにテスト用のビルド、ストア用のビルドなど環境を分けて設定ができる。

https://docs.expo.dev/build/introduction/

Expo development client

今年の7月にリリースされた
manageのExpoGoとほぼ同じような開発体験
ネイティブレイヤーに変更がない場合は、今まで通りjavascriptレイヤーの開発に集中できる
開発するのに毎回xcodeやandroidstudioを起動しなくていいので非常に楽。
今までネイティブレイヤーをカスタムしたExpoGoアプリを作成するイメージ。

https://docs.expo.dev/clients/getting-started/

最後に

EASは発展途上なので今後が楽しみ。✨
近いうちにEAS submitというOTAupdateが可能になるサービスがリリースされるらしい。
ejectからdeployするまでの間にたくさんの壁にぶち当たったのでちょっとずつ記事にしていこうとおもっています!

▼複業でスキルを活かしてみませんか?複業クラウドの登録はこちら!

https://talent.aw-anotherworks.com/?login_type=none

Discussion

ログインするとコメントできます