対象読者
- モバイルアプリを作ってみたいReactエンジニア
- モバイルアプリのリリース作業を手軽に行いたい方
前提環境
筆者の検証環境は以下の通りです。
- macOS Sonoma 14.6.1
- Node.js 22.8.0
- npm 10.8.2
- Expo 51.0.32
- React Native 0.74.5
Webに軸足を置いたモバイルアプリ開発の需要
モバイルアプリ開発の分野は、他の多くの分野と同じように進化を続けています。かつてはObjective-C言語で処理を書いてInterface BuilderやStoryboardでUIを組むのが主流だったiOSアプリ開発は、現在ではSwift言語とSwiftUIが主流になりました。同様に、Java言語で処理を書いてLayout XMLでUIを組むのが主流だったAndroidアプリ開発は、Kotlin言語とJetpack Composeが主流になってきています。これらは「言語のモダン化」と「宣言的UIの採用」といった方向への改善と見なすことができ、近代的なGUIアプリケーション開発の大きな潮流となっています。
また、モバイルアプリ需要の高まりに応じて、AndroidアプリとiOSアプリを別々に作る余裕のない現場が増えたためか、AndroidとiOSのどちらでも動作するコードを書くためのツールが求められるようになりました。そういった時代の後押しを受ける形で、日本国内ではFlutterが有名になりましたね。Flutterは近代的に進化したDart言語で、宣言的UIによってGUIを管理する開発スタイルが前述の潮流とも相性が良く、国内の多くの開発者に支持されています。
いずれも素晴らしいツールであることは明白ですが、普段はWeb開発でJavaScriptやTypeScriptを書いているエンジニアにとっては、少し遠い世界のように感じられるかもしれません。「優れたエンジニアは言語を選ばないはずだ」と言われると耳が痛いですが、チームの練度や採用方針によっては、言語の選択肢を絞ったほうが都合がいいこともあるでしょう。そういった場合に、JavaScriptやTypeScriptでモバイルアプリを開発できるツールがあると、事業に貢献できる幅が広がって便利そうです。
そんな都合のいいツールのひとつとして、実行環境としてのReact Native(リアクトネイティブ)と、その上で動くフレームワークであるExpo(エクスポ)があります。その名のとおり、ReactによるUI構築や状態管理の方法論でモバイルアプリを開発できるツールです。また、Expoにはモバイルアプリの運用をサポートするExpo Application Service(エクスポアプリケーションサービス、EAS)というコマンドラインツールやSaaSが整備されており、ビルドやリリース、証明書の更新といった、煩雑な作業を簡略化するための機能が揃っています。EASが受け持つ作業は、モバイルアプリを運用する中でも特に煩わしい部分なので、これを使えるだけでもExpoの採用には大きなメリットがあると言えるでしょう。
本連載では、ExpoとEASでどんなことができるのかを解説していきます。アプリの作り方だけではなく、アプリの運用を取り巻くさまざまなトピックの中で、ExpoとEASがどのように役立つのかを見ていきましょう。