Expo
#ReactNative
Expoとは
ReactNativeでの開発をすぐ簡単に行える統合開発環境(IDE)。
開発者がすぐ効率よく開発を行えるように以下の3種の神器 + 1が用意されている。
Expo CLI:
Expoプロジェクトをサクッと作成したり、動作検証、ビルド、デプロイなどなんでもできちゃうCLI。
Expo Go:
Expoプロジェクトで作ったReactNativeアプリケーションを動作させれるモバイルアプリ。
Expoで作ったアプリをMacのエミュレータで動作させる時とかも、このExpo Goがインストールされて、その上で動作確認できてる。
Expo SDK
Expo Goで動作させれる機能やAPI、ライブラリなどが詰め込まれたパッケージ。
このExpo SDKに依存した開発をしないとExpo Goで動作させれない危険性が多分にある。
EAS:
なんかビルドしたり、ストアにアップロードしてくれたりする奴らしい。
CahtGPTさんに聞いた
Expoの特徴的な点は、Expoクライアントアプリを通じてネイティブ機能に直接アクセスできることです。一部のReact Nativeパッケージは、Expoのクライアントアプリ上で直接動作するため、CocoaPodsなどの依存関係管理ツールを使用する必要がありません。
利用ポイント
思いついたアイデアをReactNativeですぐ実装したいて時。
つまりプロトタイプ的にすぐ作りたい時に利用する。
開発、動作テスト、ビルドまで、ま〜じですぐできます。
トレードオフ
使える機能に制限がある。
1. ネイティブコードは触れない。ReactNativeでは自分でネイティブコードも触れるけどExpoは無理。
2. Expo SDKが提供してない機能は使えない。
例えば、ReactNative製のライブラリをインストールして使おうと思っても、それがExpo SDKと互換性が無いならだめ。
3. Expo SDKは最新のReactNativeよりも少し前のバージョンをサポートしてるんだとか。
てことで、最新のExpo使っても、最新のRNを利用できない。
ためになる資料たち
怖くないexpo eject - TECH STAND #2 - Speaker Deck
Tips
hr.icon
Expoから拡張したいって時は...
expo ejectを使って、Bare workflowに移行していく。
ただし!Bare workflowにしたらバグるのもあるらしい....w。
怖くないexpo eject - TECH STAND #2 - Speaker Deck
ExpoにはReactNative開発時による見る「ios」「android」ディレクトリは必要ない
そういうの必要なくビルドとかできる。煩わしいよね。
注意.iconただし、Bare workflowになると必要になる。というか勝手に作られる。
「expo install」の意味
どうやら、Expo SDKと互換性のあるバージョンをインストールしてくれるらしい。なのでこれでインストールしておけば損なしかも。
npm installとexpo installの違いって何? - Qiita
npm install vs npx expo install
Use libraries - Expo Documentation
The npx expo install command will pick a version of the library that is compatible with your project and then use your JavaScript package manager (such as npm) to install it.
Expo SDKに含まれてる機能たち
fyi/whats-in-the-sdk.md at main · expo/fyi · GitHub
Reference - Expo Documentation