「AI でアプリを作るツール」の比較記事は山ほどあります。多くは、新規プロジェクトをゼロから組む文脈で書かれています。個人開発で運営しているこの事業を続けてきた私が知りたかったのは、それとは少し違う問いでした。すでに 2014年から運営している壁紙アプリ事業(累計 5,000万 DL 規模)に、新しい機能を追加する用途では、どの AI アプリビルダーが現実的なのか 。
このプロジェクトでは、Android で稼働している既存アプリの拡張機能として、AI 生成壁紙のユーザーアップロード機能を追加することを検討しました。候補は Rork Max / FlutterFlow / Replit Agent の3つ。6 週間並走させ、最終的に Rork Max を採用した経緯を、判断軸ごとに整理します。新規ゼロイチではなく、既存事業への組み込み視点 で書きます。
評価した3ツールと前提条件
評価対象と私の前提条件は次の通りです。
Rork Max : 2026年に登場した Rork の上位プラン。ネイティブ iOS / Android の生成精度が他社より進んでいる
FlutterFlow : 老舗の Low-code モバイルアプリビルダー。Flutter ベース
Replit Agent : Replit が提供する自律エージェント型のアプリ生成環境
前提条件:
すでに公開中の Android アプリ(壁紙系・累計 5,000万 DL)に追加機能として組み込む
既存の Firebase / AdMob / Google Play Billing と接続する必要がある
iOS と Android で UI が違ってよいが、データレイヤは共通
6 週間で MVP をストア審査に出せるところまで持っていく
評価期間: 2026年4月〜5月の6週間。同じ機能要件を3ツールに与えて並走させました。
6週間並走の実測値
評価指標と結果は次の通りです。
| 指標 | Rork Max | FlutterFlow | Replit Agent |
|----------------------------|-------------------|------------------|------------------|
| MVP 到達までの実日数 | 11 日 | 18 日 | 14 日 |
| 既存 Firebase との接続成功 | ◎ (4時間) | ○ (1日) | △ (3日) |
| AdMob 統合の追加工数 | 2 日 | 5 日 | 7 日 |
| iOS / Android UI 整合工数 | 2 日 | 1 日 (共通UI) | 4 日 |
| ストア審査 1回目通過率 | 通過 | 通過 | リジェクト |
| 月額の運用コスト | $20 + 従量約$10 | $30 | $25 + 従量約$15 |
| 既存 Java/Kotlin コード再利用 | 部分的可能 | 不可 | 不可 |
最も大きく差が出たのが「既存事業への組み込みやすさ 」でした。Rork Max は最終的に React Native コードを出力するので、既存の Android (Java/Kotlin) コードを直接再利用はできませんが、ネイティブモジュール経由で既存の AdMob・課金・Firebase 連携を「呼び出す」設計が組みやすかったのが効きました。
FlutterFlow は Flutter なので、既存の Java/Kotlin コードベースとの距離が遠く、Method Channel 経由のブリッジ設計に時間を取られました。Replit Agent は Web ベースの React 生成が中心で、ネイティブアプリへの組み込みでは選択肢としてやや無理がありました。
既存 Firebase との接続性
Firebase Analytics / Firestore / Cloud Functions の既存配線を活かすのが最大の前提です。Rork Max では次のような構成で繋ぎました。
// rork-generated-feature/services/firebase.ts
import { initializeApp, getApp } from "@react-native-firebase/app" ;
import firestore from "@react-native-firebase/firestore" ;
// 既存アプリの GoogleService-Info.plist / google-services.json を再利用
// → Rork が新規プロジェクトを作るのではなく、既存プロジェクト ID に接続
const FIREBASE_PROJECT_ID = "wallpaper-app-prod-2014" ;
async function uploadGeneratedWallpaper ( userId : string , imageUri : string ) : Promise < string > {
// 既存 Firestore コレクション "wallpapers_ugc" に書く
const docRef = await firestore ()
. collection ( "wallpapers_ugc" )
. add ({
userId,
imageUri,
uploadedAt: firestore.FieldValue. serverTimestamp (),
status: "pending_moderation" ,
});
return docRef.id;
}
Rork Max が出力したコードは、既存の Firebase プロジェクトに @react-native-firebase/app 経由で繋がる形になっており、Web Console の設定を変更せずに導入できました。FlutterFlow では Flutter 用の Firebase SDK が別系統なので、設定の重複・整合性確認に1日かかりました。
AdMob 統合の差
既存アプリは AdMob のメディエーション(Meta Audience Network・AppLovin・Unity Ads の3面)が組まれていて、eCPM の最適化が事業の収益の核です。新機能追加にあたって、このメディエーションを壊さないことが必須要件でした。
Rork Max では、ネイティブモジュールとして既存の AdMob SDK 設定をそのまま呼び出せました。
// rork-generated/services/admob.ts
import { NativeModules } from "react-native" ;
const { LegacyAdMobBridge } = NativeModules;
async function showRewardedAdForGeneration () : Promise < boolean > {
// 既存ネイティブ側の AdMob メディエーション設定をそのまま呼ぶ
const reward = await LegacyAdMobBridge. showRewarded ( "rv_ai_wallpaper_unlock" );
return reward.rewarded === true ;
}
このブリッジ実装に2日。FlutterFlow では Flutter の AdMob プラグインが別系統だったため、Method Channel + 既存ネイティブの再ラップで5日かかりました。Replit Agent は Web 中心の構造のため、ネイティブ広告の組み込み自体に7日かけても完成しなかったので、評価上は「実用ライン未到達」と判定しました。
ストア審査でのリスク
最も警戒したのが、3ツールが出力するコードのストア審査リスクと、本番運用に乗せた後の保守の注意点でした。AI で生成したコードは、表面的には動いても審査基準を意識していない箇所が出やすい。私は過去にもこの種のリスクを踏んだことがあるので、特に Apple の App Tracking Transparency と Google の Data Safety 周りを重点的に見ました。
Rork Max: 1回目で iOS / Android 両方審査通過
FlutterFlow: 1回目で iOS / Android 両方審査通過(Flutter エコシステムが審査対策を熟成している)
Replit Agent: iOS 審査で Guideline 2.1 / Guideline 5.1.1 にひっかかってリジェクト。3回目で通過
Replit Agent のリジェクト理由は、生成コードに含まれていたユーザー識別子の扱いが ATT の同意フロー前にデータ送信していた点でした。生成コードを読み込んで自分で直したのですが、対処に2週間遅延が出たため、本番運用への採用候補からは外しました。同じ罠を回避するには、生成直後に ATT 周りのフローを必ず人間がレビューする手順が必要です。
月額コストの構造
長期運用するアプリ事業では、月額コストの読みやすさがツール選定の隠れた重要因子です。
Rork Max : $20 + 従量 $10 程度 = 月 $30 前後で安定
FlutterFlow : $30 のサブスクのみ(生成回数に上限あり)
Replit Agent : $25 + 従量 $15 = 月 $40 前後だが、エージェントを多用する月は跳ねる
私のアプリ事業は、月の運営コスト構造の予測可能性を重視します。新機能追加が一段落した後の保守フェーズに入ると、AI ビルダーへの依存は下がるので、固定費は安いほど良い。Rork Max の月 $30 前後の安定感が、長期運用視点での加点要素になりました。
既存コードベースとの併存
最後に、これが採用の決定打になった軸を共有します。既存ネイティブコードベースとの併存 。
私の壁紙アプリは Android 単独のネイティブ実装で、Kotlin と Java の混在コードベースを 2014年から積み上げてきました。新機能のために全部書き直す選択肢はなく、新機能を React Native 部分として既存アプリに組み込む必要があります。この「既存 Activity の上にハイブリッドで載せる」設計が、3ツールで最も自然だったのが Rork Max でした。
// 既存の Android アプリ側 (MainActivity.kt)
class MainActivity : AppCompatActivity () {
override fun onCreate (savedInstanceState: Bundle ?) {
super . onCreate (savedInstanceState)
setContentView (R.layout.activity_main)
findViewById < Button >(R.id.btn_ai_wallpaper). setOnClickListener {
// Rork Max で生成した React Native 機能を ActivityForResult で呼び出す
val intent = Intent ( this , RorkGeneratedFeatureActivity:: class .java)
startActivityForResult (intent, REQUEST_AI_WALLPAPER)
}
}
}
この構造であれば、既存の起動フロー・既存の課金フロー・既存の広告フローを壊さずに、新機能だけを React Native で追加できます。FlutterFlow の Flutter モジュール統合も技術的には可能ですが、メモリ使用量・APK サイズへの影響が大きく、5,000万 DL 規模で運用するアプリには負担が大きすぎると判断しました。
既存事業に組み込む場合の推奨事項
ここまでの評価をもとに、既存アプリ事業に AI ビルダーを追加する場合の判断基準として、次の3点を推奨します。ひとつめは、既存のネイティブ広告・課金・分析ライブラリと共存できるかを必ず PoC で確認すること。ふたつめは、ストア審査での1回目通過率を選定指標に含めること(リジェクトは2〜3週間のロスになります)。みっつめは、月額固定費とエージェント従量課金の比率を、保守フェーズで負担になりすぎないか試算すること。私の場合、この3つで Rork Max が最も整合的でした。
採用後3週間の実運用での所感
Rork Max を採用してから3週間経った時点での実運用感も簡単に共有します。
機能追加から最初の3週間で、ユーザーアップロード壁紙の Day 7 リテンションが既存の素材壁紙より +12% 高い
既存アプリのクラッシュ率に変化なし(React Native 部分起因のクラッシュは 0.02% 以下)
AdMob 収益は新機能経由のリワード広告分が月 +$340 で推移
Rork Max の月額費用は実測 $28〜$32 で安定
新規プロジェクト向けの「どれが速いか」ではなく、既存事業に追加する文脈で「どれが安全か」 という別の問いに対しての答えは、私の場合 Rork Max でした。同じ立場のアプリ事業者の方の参考になれば幸いです。
新規ゼロイチでアプリを作る方であれば、評価結果は変わる可能性があります。FlutterFlow の Flutter エコシステムの成熟、Replit Agent の Web 統合のしやすさ、それぞれ別の文脈では強みになります。