🥜

Expoは今後はやりそうな気がする?

2024/12/12に公開

What Expo?

https://expo.dev/

Expo and EAS are
an ecosystem of tools that help you

EXPOとEASは
あなたを助けるツールのエコシステムです

Create universal native apps with React that run on Android, iOS, and the web. Iterate with confidence.

Android、iOS、Webで動作するユニバーサルなネイティブアプリをReactで作成。自信を持って繰り返し開発しましょう。

We are the home for developers building native apps across Android and iOS with JavaScript (neat, right?). We’re open source. Offer a free plan. And are pretty-much the go-to if you’re building a mobile app.

We’re a full ecosystem of tools that help you write, build, update, submit, and monitor mobile apps. App store submission a pain? We’ve got you. Want developer tools in your app? Done. Our application services are built to help you ship faster. And if you get stuck, join our community of developers or say hello and meet our team.

Behind every movie is a production team. Behind every great chef, someone running the restaurant. We’ll take care of the slow stuff so you and your team can focus on building the world’s best apps.

私たちは、JavaScriptを使ってAndroidやiOSのネイティブアプリを開発する開発者のためのホームです。オープンソースです。無料プランもあります。そして、モバイルアプリを開発するなら、私たちが一番頼りになる存在です。

モバイルアプリの作成、ビルド、アップデート、投稿、監視を支援するツールの完全なエコシステムです。アプリストアの登録が面倒?お任せください。アプリに開発者ツールが必要ですか?お任せください。私たちのアプリケーション・サービスは、あなたがより速く出荷できるように構築されています。行き詰まったら、開発者コミュニティに参加したり、私たちのチームにご挨拶してください。

すべての映画の裏には制作チームがいます。偉大なシェフの背後には、レストランを切り盛りする人がいます。あなたのチームが世界最高のアプリを作ることに集中できるよう、私たちが面倒なことはすべて引き受けます。

短く解説するなら

Expo は、React Native でアプリ開発をより簡単にするツールチェーンです。開発者が React Native 単体で開発する場合に意識しないといけなかったネイティブ部分を隠蔽して、アプリケーション本体の開発をより web アプリケーションに近いものにします。

確かに隠蔽されていた気がする。

Expoでのアプリ開発はどうなのか?

最近、Web系の会社で採用事例が増えている気がします。昔は使いづらいと言われていたが今は改善されてきているように思える。

ライバルとして出てくるのが、Flutterですが過去にこんな記事があった。

モバイルアプリ開発は、Flutter一択なのか?

今は違うと思いますけどね。企業によっては、Expo、KMP、.NET MAUIを使いますしオリジナルの方が安定していて、使いたい機能が使える、オリジナルでないと作れないものがあるということから、Swift、Kotlinを選択する企業もあります。

https://zenn.dev/tetsukick/articles/c297b6ee1e64397432e5

筆者は、Flutterエンジニアですが、Reactのコードを業務で書いたことがありSwiftとKotlinの経験も少しありまして、Expoキャッチアップできるのではと思って最近暇があれば学習してます。

TypeScriptJavaScriptがわかればコードは読めると思います。UIを作るには、UIフレームワークを使用するか、CSSと似たようなStyleSheetを使う必要がありますが。styled componentやVanilla Extractを書いているような感覚でしたね。

UI作る方が難しいかもですね。Flutterだとこの辺は簡単。でもiOSはiPhoneのUIにしたいしAndroidだとMaterial Designにしたい要望があったりすると思います。iPhoneなのに、Androidのデザインだと違和感あるなと最近感じてきている。

iOSのUIにする方法は、Flutterでもありますがそこは自動でやってほしい😅

ReactNativeで開発されているアプリ

知ってるアプリだとこちらだったような🤔

https://canary-app.jp/
https://apps.apple.com/jp/developer/shatoku-inc/id1497489800
https://play.google.com/store/apps/details?id=com.shatoku.welfarecard&hl=ja
https://note.com/canly/n/n9560fb6225a6

公式チュートリアルも一ある。慣れたら快適モバイルアプリが開発できるかもしれません?
https://docs.expo.dev/tutorial/introduction/

国内にコミュニティもあるみたいですね。知らなかった!
https://react-native-meetup.connpass.com/
https://x.com/reactnativejp

Githubもあるのか。
https://github.com/react-native-community

Discordのコミュニティは見つからなかった😅
探せばあるんだろうな。

メリット・デメリットについてはこちらのサイトを見た方がわかりやすいと思う。アップデートへの対応が大変らしい😅
https://offers.jp/media/programming/a_3661

最後に

Flutterで普段開発しているエンジニアの個人的な感想を述べるなら、iOSとAndroidでUIがビルドしたときに、それぞれのOSに対応したUIになるので、なんでもマテリアルデザインになるのが嫌だなと最近思う私には体験が良かった。

Expo GoをiPhoneとAndroidにインストールすれば、ビルドしたときにターミナルに表示されるQRコードをスキャンして、Flutterみたいに毎回ケーブル繋いだり、「あれ繋いだけど接続できないぞ?」というストレスは感じませんでしたね。

カメラ機能を実装したときは、app.jsonを設定をするだけで、ネイティブの設定をしなくても権限の許可ができるので意外と早く機能実装ができました。

安定した実機ビルドや開発を求めるなら、SwiftUIかJetpack Composeを使用して開発した方がいいですね。こちらの方がもっと開発体験は良いです。

https://zenn.dev/jboy_blog/articles/432bdf9b14a163
https://zenn.dev/jboy_blog/articles/f64c7bd00799f8

個人で本も作ってみました📕
https://zenn.dev/joo_hashi/books/ab1c0feaf143dc

💙Expoがおすすめな人

  • TypeScriptかJavaScriptがわかる人
  • あまり情報がないが自分で検索して情報を収集して開発できる人
  • 新しい技術に興味がある人
  • 宣言的UIが好きな人

Discussion