RORK LABEN
BUILD — Rork Max はクラウド上の実機 Mac に Xcode と iOS SDK を載せ、SwiftUI を書き、ビルドし、エラーを読んで直す反復を回します。コードを吐いて終わりではない点が生成物の質に効いていますNATIVE — 生成されるのは React Native ではなく純粋な Swift / SwiftUI です。AR や Metal、ウィジェットなど React Native からは届かない機能に手が届くことが、他ビルダーとの実質的な差になりますPLATFORMS — 対応は iPhone・iPad・Apple Watch・Apple TV・Vision Pro に加えて iMessage まで含みます。ウォッチや拡張から入る設計を試すのに向いていますCOMPANION — Rork Companion により、有料の Apple Developer アカウントなしで生成したアプリを実機の iPhone で確認できます。最初の一本を試す段階の障壁が一段下がりましたPRICING — 無料で開始でき有料プランは月額25ドルから、Rork Max は月額200ドルの Max プランです。回収できる本数と規模を先に見積もっておく価値がありますDEADLINE — Google Play は2026年8月31日以降、新規アプリと更新の双方に対象 API レベル36 以上を要求します。残り10日で、生成物の targetSdkVersion は自分で確認が必要ですBUILD — Rork Max はクラウド上の実機 Mac に Xcode と iOS SDK を載せ、SwiftUI を書き、ビルドし、エラーを読んで直す反復を回します。コードを吐いて終わりではない点が生成物の質に効いていますNATIVE — 生成されるのは React Native ではなく純粋な Swift / SwiftUI です。AR や Metal、ウィジェットなど React Native からは届かない機能に手が届くことが、他ビルダーとの実質的な差になりますPLATFORMS — 対応は iPhone・iPad・Apple Watch・Apple TV・Vision Pro に加えて iMessage まで含みます。ウォッチや拡張から入る設計を試すのに向いていますCOMPANION — Rork Companion により、有料の Apple Developer アカウントなしで生成したアプリを実機の iPhone で確認できます。最初の一本を試す段階の障壁が一段下がりましたPRICING — 無料で開始でき有料プランは月額25ドルから、Rork Max は月額200ドルの Max プランです。回収できる本数と規模を先に見積もっておく価値がありますDEADLINE — Google Play は2026年8月31日以降、新規アプリと更新の双方に対象 API レベル36 以上を要求します。残り10日で、生成物の targetSdkVersion は自分で確認が必要です
記事一覧/開発ツール
開発ツール/2026-08-16上級

App Store 2.5.2 に触れる実装を、提出前にリポジトリから洗い出す

リモートから届いた値でアプリの機能が変わる実装は、審査ガイドライン 2.5.2 の対象になり得ます。境界の引き方と、提出前にコードから機械的に洗い出す手順をまとめました。

App Store87審査9Expo175React Native227リモート設定3

プレミアム記事

リモート設定に新しいキーを足すとき、決まって手が止まる場所があります。

「この値でアプリの見た目が変わるのは良い。では、この値で画面そのものが差し替わるのはどうなのか」。運用している壁紙アプリは、カタログもテキストもサーバー側から配っています。配信で変えられる範囲が広いほど運用は楽になりますが、広げすぎた先に審査があります。

2026年3月、Apple が Replit と Vibecode の App Store 上での更新を止めた件が報じられました。根拠として挙げられたのが、審査ガイドライン 2.5.2 です。生成したコードをアプリの中で実行できる設計が問題になった、という整理がされています(Apple Blocks Updates for AI Vibe Coding Apps in App Store)。

Rork で作ったアプリを出す側から見ると、これは他人事ではありません。AI にコードを書かせること自体は何も禁じられていませんが、書かれたコードをアプリの中で走らせる導線が残っていると、対象になり得ます。しかも、その導線は自分で意図して作った覚えがなくても入り込みます。

以下では、その導線をコードから機械的に洗い出す手順をまとめます。実際に動かしたスクリプトと、走らせて分かった誤検知の出方まで含めています。

2.5.2 が見ているのは配信経路ではなく、機能が変わるかどうか

まず条文を正確に押さえておきます。2.5.2 は、アプリが「そのアプリ(および他のアプリ)の機能を導入または変更するコードをダウンロード・インストール・実行すること」を禁じています(App Review Guidelines)。

ここで読み違えやすいのが主語です。禁じられているのは「コードをダウンロードすること」そのものではありません。禁じられているのは、それによって機能が導入・変更されることです。

この読み方が正しいことは、例外規定の形から逆算できます。WebKit の中で動く JavaScript は、この条項の下で認められています。教育目的でコードを実行させるアプリも、条件付きで認められています。もし「リモートから届いたコードを実行するのが一律に駄目」だったなら、これらの例外は成立しません。

私自身、最初はここを取り違えていました。「サーバーから何かを取ってくる処理は全部危ない」と思って設計していた時期があります。実際の線はもっと具体的なところに引かれています。

リモートから届くものアプリの側で起きること2.5.2 の観点
壁紙カタログの JSON一覧の中身が変わるデータの差し替え。機能は変わらない
Remote Config のしきい値すでに実装済みの分岐の入り方が変わるレビュー済みの機能の範囲内
EAS Update の JS バンドル実装が新しいものに入れ替わる解釈実行層の更新。認められた運用
式を表す文字列を eval に渡すその場で新しい処理が生まれる機能の導入にあたる
リモート URL からの動的 import審査時に存在しなかった実装が動く機能の導入にあたる

3行目と4行目を並べたときの違和感が、この条項の要点です。EAS Update は JS バンドルを丸ごと入れ替えます。差し替わるコードの量でいえば、eval に文字列を1行渡すのとは比べものになりません。それでも前者は成立していて、後者が問題になります。

境界は「コードがどこから来たか」ではなく、「レビューされたときの機能の範囲を超えるか」に引かれています。 OTA 更新は、レビュー済みのアプリと同じ目的・同じ機能を保ったまま実装を差し替える運用として扱われます。一方 eval は、審査時点で誰も見ていない処理を実行時に生み出す口を開けたままにします。バイト数の問題ではなく、範囲が閉じているかどうかの問題です。

この見方を持っておくと、判断が速くなります。新しい実装を入れるとき、「これは配信か、それとも生成か」と自問すれば、たいていその場で答えが出ます。

境界の外に出やすい6つの実装

洗い出しの対象を先に決めます。個人開発の規模で実際に混入し得るのは、次の6種類でした。上の3つは提出前に消すべきもの、下の3つは用途を説明できるなら残せるものとして分けています。

  1. eval(...) — 文字列をそのままコードとして実行します
  2. new Function(...)eval と同じ扱いです。式評価ライブラリを自作すると入りがちです
  3. import("https://...") — 実行時にリモートのモジュールを読み込みます
  4. injectedJavaScript — WebView に注入する JS。定数なら問題ありませんが、サーバーから受け取った文字列だと話が変わります
  5. source={{ html: ... }} — 任意の HTML を描画する経路です
  6. リモート値から画面実装を選ぶマップ — components[remote.screen] のような形です

4〜6を「消すべき」に入れていないのは、これらが正当な実装として広く使われているからです。ヘルプ画面を WebView で出すのも、リモート値でタブの並びを変えるのも普通の設計です。問題になるのは、そこに流し込まれる値の出どころが外部で、かつ内容が事前に決まっていない場合だけです。

だからこの6つは「見つけたら消す」ではなく「見つけたら出どころを辿る」ためのリストとして扱います。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
自分のアプリのどの実装が審査の 2.5.2 に触れうるのかを、提出前にコードから切り分けられるようになる
リモートで変えてよいもの(データ・設定)と変えてはいけないもの(機能そのもの)の線を、自分の設計に引けるようになる
リジェクトを受けてから慌てて実装を削る事態を避けられるようになり、審査が長引いている時期でも公開日の見通しを保てる
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Rork Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

開発ツール2026-08-20
ベータ SDK でビルドしたアプリは、TestFlight には配れても審査には出せません
ベータ版の Xcode でビルドしたアプリは TestFlight には配布できますが、App Store の審査には提出できません。手元のビルドがどの SDK で作られたかを確認する方法と、eas.json で提出用ビルドを守る設定をまとめました。
開発ツール2026-08-17
Expo UI の drop-in 置き換えで、依存が本当に1本減る条件
Expo UI が SDK 56 で安定版になり、コミュニティ製パッケージ8件に drop-in の置き換えが用意されました。import を1行入れ替えても依存が減らない場合があります。減る条件を依存グラフから機械的に判定する手順をまとめました。
開発ツール2026-08-14
ライセンス表示に載せる依存は、lockfile の dev/prod では決まりません
AI ビルダーが書き出したプロジェクトの依存を実際に分類し、ライセンス表示に載せる範囲をどう決めたかの記録です。copyleft の検出結果と配布物の境界の食い違いを、本番プロジェクトの実データで確かめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →