RORK LABEN
RORKMAX — Rork MaxはReact Nativeではなく純粋なSwiftコードを生成し、iPhone・iPad・Apple Watch・Apple TV・Vision Pro・iMessageまで見据えた真のネイティブアプリを作れますAPPLE — 2026年のRorkはAppleエコシステムのネイティブ強化が明確なテーマになっていますEXPO — 通常の生成はReact NativeとExpoが土台。作業後には本物のプロジェクト構造とコードが残り、そのまま手で育てられますFUNDING — Rorkは直近で1,500万ドルを調達し、月間743,000訪問・85%成長という新たなバイラルを得ていますPRICING — 無料で始められ、有料プランは月額25ドルから。Rork Maxは月額200ドルですCROSS — iOS・Android・Webを単一のプロンプトから生成し、フォローアップの微調整で仕上げられますRORKMAX — Rork MaxはReact Nativeではなく純粋なSwiftコードを生成し、iPhone・iPad・Apple Watch・Apple TV・Vision Pro・iMessageまで見据えた真のネイティブアプリを作れますAPPLE — 2026年のRorkはAppleエコシステムのネイティブ強化が明確なテーマになっていますEXPO — 通常の生成はReact NativeとExpoが土台。作業後には本物のプロジェクト構造とコードが残り、そのまま手で育てられますFUNDING — Rorkは直近で1,500万ドルを調達し、月間743,000訪問・85%成長という新たなバイラルを得ていますPRICING — 無料で始められ、有料プランは月額25ドルから。Rork Maxは月額200ドルですCROSS — iOS・Android・Webを単一のプロンプトから生成し、フォローアップの微調整で仕上げられます
記事一覧/開発ツール
開発ツール/2026-07-14上級

Rork が生成した fetch コードに、Zod の検証境界を1枚だけ挟む

Rork が生成したネットワークコードは、レスポンスの形を暗黙に信頼します。APIが変わると画面は静かに真っ白になります。生成UIとネットワークの間にZodのparse層を1枚だけ差し込み、壊れ方を予測可能にする実装を、実運用の数値とともに紹介します。

Rork504React Native204zod2API5エラー処理

プレミアム記事

ある朝、私が個人開発しているアプリの一つで、特定の一覧画面だけが真っ白になっているという報告が届きました。クラッシュログには何も出ていません。落ちてはいないのです。ただ、データが表示されないだけでした。

原因はサーバー側にありました。前日にAPIのレスポンスで price フィールドが数値から文字列に変わっていたのです。Rork が生成していた fetch コードは、そのフィールドをそのまま数値として扱っていました。型の食い違いは実行時まで誰にも気づかれず、画面の描画だけが静かに止まっていました。

生成されたネットワークコードのこの「静かな壊れ方」は、個人開発で複数のアプリを回していると避けて通れない問題です。私自身、App Store と Google Play に出しているアプリで、同じ轍を何度も踏んできました。生成コードを全部書き直すのではなく、ネットワークとUIの間に検証の境界を1枚だけ挟む。ここでまとめるのは、その最小限のアプローチです。

生成された fetch コードは、なぜ静かに壊れるのか

Rork のようなAIビルダーが fetch コードを書くとき、レスポンスの形はプロンプトや1つのサンプルから推論されます。生成されるのは、たいてい次のようなコードです。

// Rork が生成しがちな典型的な fetch
async function getProducts() {
  const res = await fetch("https://api.example.com/products");
  const data = await res.json();
  // data.items は配列である「はず」— でも保証はどこにもない
  return data.items.map((item) => ({
    id: item.id,
    name: item.name,
    price: item.price, // number である「はず」
  }));
}

このコードは、生成された瞬間は正しく動きます。問題は、レスポンスの形が「その瞬間の想定」に固定されていることです。

APIが itemsresults に改名したら、data.items.mapundefined.map になって例外を投げます。price が文字列になったら、例外は投げずに、金額計算が NaN になったり、比較がおかしくなったりします。後者のほうが厄介です。落ちてくれるバグは気づけますが、静かに間違うバグは本番で長く生き残ります。

TypeScript の型注釈は、この食い違いを守ってくれません。型は開発時の約束であって、実行時にサーバーから届くJSONを検査してはくれないからです。境界の外から来るデータは、いつでも型を裏切ります。

検証境界を1枚だけ挟むという考え方

対策として「生成コードを信用せず全部手で書き直す」という選択もあります。ですが、それは Rork を使う意味を薄めてしまいます。私が3ヶ月ほど使ってきた実感として、足場(画面の骨格やレイアウト)はAIに任せ、要所だけ自分で通す、という分担が現実的でした。

その「要所」の一つが、ネットワークとUIの境界です。

考え方はシンプルです。生成された fetch とUIコンポーネントの間に、レスポンスを検査して信頼できる形に変換する層を1枚だけ挟みます。この層を通り抜けたデータは、以降のコードが安心して型どおりに扱えます。層の内側(サーバーとの通信)で何が起きても、UIには「検査済みのデータ」か「扱えるエラー」のどちらかしか流れません。

この境界を実装する道具として、実行時にスキーマを検証できる Zod がよく合います。フォームの入力検証で Zod を使ったことがある方は多いと思いますが、同じ発想をAPIレスポンスの側にも向けるわけです。入力側の検証についてはRork が生成したフォーム画面を react-hook-form と zod で立て直す方法で扱っています。この記事はその逆方向、サーバーから来るデータの側の話です。

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

この記事の続きを読む

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

この記事で得られること
APIの形が変わるたびに画面が静かに真っ白になっていた人が、壊れ方を予測できる検証境界を今日から入れられる
生成コードを全部書き直さずに、ネットワークとUIの間にZodのparse層だけを差し込む具体的な実装とコードを手に入れられる
再生成のたびに検証層が消える問題を、AIが触らない置き場所の設計で防げるようになる
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

開発ツール2026-06-19
Rork アプリの API 通信を堅くする — トークン更新・再試行・冪等性の設計
Rork が生成する fetch はそのままだと、トークン切れ・電波の揺らぎ・二重送信に弱いままです。トークンの自動更新、再試行とバックオフ、冪等性キーを一つのクライアント層に集約する設計を、実装コードと運用の数値とともに整理しました。
開発ツール2026-06-19
Rork が生成したフォーム画面を実戦仕様に直す — react-hook-form と zod で入力体験を立て直す
Rork が出力するフォーム画面は、useState の積み重ねと素朴なバリデーションで一見動きます。けれど実機ではキーボードが送信ボタンを隠し、入力のたびに全体が再描画されます。react-hook-form と zod で作り直す手順を、個人開発の運用視点でまとめました。
開発ツール2026-07-13
WebViewのpostMessageは投げたら終わり — 相関IDで要求と応答を結ぶブリッジを設計する
WebView と React Native の postMessage は片道通信で、送った処理が成功したのか分かりません。相関IDと応答を組み込んだ要求・応答型ブリッジを、動く TypeScript コードで設計します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →