Expo CLI を初めて使ったのは2019年頃のことです。それまでは React Native CLI でネイティブビルド環境を自前で管理していましたが、Expo の登場でビルドまわりの手間がかなり減ったと感じたのを覚えています。アーティスト・クリエイターの廣川政樹です。2014年から個人でアプリを作り続けており、複数のアプリを合計すると累計5,000万ダウンロードを超えました。その経験の中でビルド環境は何度も変わってきましたが、Rork の登場はその流れの中でもかなり大きな変化だと感じています。
Rork のビルドフローを初めて体験したとき、率直に言うと「これはまるで別の世界だ」と思いました。良い意味でも、戸惑いの意味でも。
ここではExpo CLI と Rork を実際に使って同じ機能を実機でビルドするまでの体験を比較します。ターミナルに慣れた開発者が Rork を使ったときに感じる「距離感」と、逆に Rork の方が明らかに優れていた点の両方をお伝えします。
そもそもビルドフローの何が変わったか
Expo CLI(EAS Build 込み)でのアプリ開発の流れは、おおまかに以下のようになります。
# Expo CLI + EAS Build の一般的なフロー(概要)
# 1. プロジェクト作成
npx create-expo-app my-app --template blank-typescript
cd my-app
# 2. 開発中はシミュレーター or Expo Go で確認
npx expo start
# 3. 実機テスト用の Dev Client ビルド(初回)
eas build --profile development --platform ios
# 4. 本番ビルド
eas build --profile production --platform ios
# 5. ストア提出
eas submit --platform iosXcode や Android Studio との格闘が減った分、Expo は間違いなく楽になりました。それでもターミナルとの対話、eas.json の設定、証明書の管理、ビルドが通らないときの依存関係の解決など、ある程度のコマンドライン経験が前提です。
Rork の場合、コードを書く場所からビルド・プレビューまでが同じ画面の中に収まっています。実機への反映は「プレビュー」ボタンを押すだけで、QR コードをスキャンすれば手元の iPhone で動く。それが初めての体験でした。
実機に届くまでの時間を比べる
同じ要件(ボタン1つ・画面1枚・簡単なアニメーション付き)のプロトタイプを、Expo CLI と Rork でそれぞれ作ったときの「作業開始から実機で動作確認できるまでの時間」を記録しました。
Expo CLI(EAS Build あり)での実機確認まで
- プロジェクト作成 → 10分(テンプレート選択・依存関係インストール)
- コンポーネント実装 → 30分
- Expo Go でのシミュレーター確認 → 即時(ただしネイティブモジュールが絡むと Expo Go では動かない)
- Dev Client ビルド(初回) → 約25分(EAS のキューと証明書処理が入るため)
- 実機での確認 → Dev Client インストール後すぐ
合計の目安:70〜90分(初回)
Rork での実機確認まで
- プロジェクト作成 → 2分(テンプレート選択だけ)
- プロンプトでUI生成 → 5〜10分
- 「プレビュー」→ QR スキャン → 約3分
- 実機での確認 → そのまま
合計の目安:10〜15分(初回でも)
数字だけ見ると明確に Rork が速いです。ただし「速い」と「使いやすい」は別の話で、ここからがポイントになります。
ターミナルに慣れた開発者が感じる Rork の「距離感」
Expo CLI を使いこんでいる開発者にとって、Rork のインターフェイスは最初、少し手が届かない感じがします。具体的には以下のような場面です。
ファイル構造が直接見えない
Expo CLI では src/components/ や app/(tabs)/ の構造を自分で管理できます。Rork では内部の React Native ファイル構造が抽象化されており、どのファイルにどのコンポーネントが書かれているかを直接確認するには GitHub 連携が必要です。
慣れた開発者ほど「この状態管理はどこに書かれているのか」「カスタムフックはどう扱われているのか」が気になります。
外部ライブラリの導入に制限がある
Expo CLI では package.json に直接ライブラリを追加できますが、Rork では内部的に使えるライブラリに制限があります。特定のネイティブモジュール(カメラ、Bluetooth、センサー系など)を組み込もうとした場合、Rork 単体では対応できないことがあります。
デバッグ情報の見え方が違う
エラーが出たとき、Expo CLI ならターミナルにスタックトレースが表示されます。Rork ではチャット形式で「エラーが起きました」とAIが伝えてくれますが、生のスタックトレースを追いたいときは GitHub 経由でコードを出してから手元でビルドすることになります。
これらは「欠点」というより「設計思想の違い」です。Rork はコマンドラインに不慣れな開発者を強くサポートするために、あえてこの抽象化レイヤーを設けています。その判断には一定の合理性があると思います。
Rork が明らかに優れていた点
距離感を感じた部分がある一方で、Rork の方が体験として良かった場面も複数ありました。
プロトタイプから確認ループが明確に速い
「この画面デザイン、感触はどうか」を確認するだけなら Rork の速度は強みです。Expo CLI だとデザインの確認のためだけにビルドを回すのはコストが高い。Rork では「プロンプトで修正→即プレビュー」が何度でもできます。
12年間アプリを作ってきて分かることは、デザインはコードを書く前から確認したいということです。早い段階で実機の感触を確認することで、作り直しが減る。Rork はその循環を短くしてくれます。
非エンジニアとの共同制作がしやすい
デザイナーやコンテンツ担当者に「ここを直してほしい」と伝えるとき、Expo CLI ではコードを触れる人しか対応できません。Rork ならプロンプトで変更できるため、非エンジニアのメンバーでも画面修正の議論に参加できます。
アプリ開発を続けていると、コードを書く人と使う人の間の翻訳コストが意外と大きいと気づきます。Rork はその翻訳コストを下げてくれる側面があります。
App Store 申請までの流れが想像より整っている
Rork から GitHub にエクスポートして EAS Build でビルドする流れ、実際に試しましたが想像よりスムーズでした。Rork が生成するコードは Expo ベースのため、そのまま EAS Build に渡せます。詳しい手順はRork アプリに Expo Dev Client を導入する手順で確認できます。
どちらをどんなときに使うか — 12年の感覚での判断軸
この比較を経て、今の私の使い分けはこんな感じです。
Rork を選ぶ場面
- 新しいアイデアのプロトタイプを作って感触を確かめたいとき
- ネイティブモジュール(カメラ・Bluetooth等)が不要な UI 中心のアプリを短期間で出したいとき
- 非エンジニアとイテレーションしながら作るとき
Expo CLI を選ぶ場面
- 特定のネイティブ機能を細かくコントロールしたいとき
- アプリが大規模になってコンポーネント管理を自分で設計したいとき
- 既存コードベースへの追加開発
分かれ道になるのは「ネイティブモジュールが必要かどうか」と「自分でファイル構造を管理したいかどうか」の2点です。
AdMob のバナー広告を組み込んだ壁紙アプリを Rork だけで完結しようとすると、今のところ難しい部分が出てきます。一方でシンプルな情報提示型のアプリや、サブスクリプション課金を RevenueCat で管理するアプリなら Rork + GitHub エクスポートの流れで十分な実用性があります。
詳しいストア公開の手順はRorkで作ったアプリをApp StoreとGoogle Playに公開する方法にまとめています。Expo 依存関係でビルドが通らないときはRork アプリの Expo 依存関係エラー解決ガイドも参考になります。
全体を振り返って — 「どちらが優れているか」ではなく「何を作りたいか」で選ぶ
Rork と Expo CLI は、目指している場所が異なります。Rork はアイデアから実機確認までの速度を最短にするツールで、Expo CLI(EAS Build)はコードの完全なコントロールとプロダクション品質の両立を目指すツールです。
ターミナルに慣れた開発者が Rork を試したとき、「足りない部分」を先に見つけてしまいがちですが、「速く動かす」という点で Rork が強いのは本当のことです。
まず Rork でプロトタイプを作り、実機の感触を確認してから、必要に応じて GitHub エクスポート+Expo CLI に切り替える。その流れが、今の個人開発では一番現実的だと感じています。