RORK LABEN
MAX — Rork MaxはSwiftのネイティブアプリを生成し、iPhone・iPad・Apple Watch・Apple TV・Vision Pro・iMessageに対応しますPUBLISH — Rork Maxは2クリックでApp Store公開まで進められます。料金は月$200ですRN — 標準のRorkはReact Native(Expo)でiOS/Androidのネイティブアプリを生成。素早く形にするならこちらですPRICE — Rorkは無料で開始でき、有料プランは月$25からですFUND — Rorkはa16zから280万ドルを調達。月間訪問は74.3万を超え、成長率は85%とされていますFLOW — 作りたいアプリを平易な言葉で説明すると、ストアに配信できる動くコードが生成され、カメラや通知など端末機能も使えますMAX — Rork MaxはSwiftのネイティブアプリを生成し、iPhone・iPad・Apple Watch・Apple TV・Vision Pro・iMessageに対応しますPUBLISH — Rork Maxは2クリックでApp Store公開まで進められます。料金は月$200ですRN — 標準のRorkはReact Native(Expo)でiOS/Androidのネイティブアプリを生成。素早く形にするならこちらですPRICE — Rorkは無料で開始でき、有料プランは月$25からですFUND — Rorkはa16zから280万ドルを調達。月間訪問は74.3万を超え、成長率は85%とされていますFLOW — 作りたいアプリを平易な言葉で説明すると、ストアに配信できる動くコードが生成され、カメラや通知など端末機能も使えます
記事一覧/開発ツール
開発ツール/2026-06-19中級

Rork が生成したフォーム画面を実戦仕様に直す — react-hook-form と zod で入力体験を立て直す

Rork が出力するフォーム画面は、useState の積み重ねと素朴なバリデーションで一見動きます。けれど実機ではキーボードが送信ボタンを隠し、入力のたびに全体が再描画されます。react-hook-form と zod で作り直す手順を、個人開発の運用視点でまとめました。

Rork424React Native168フォーム3react-hook-formzod

プレミアム記事

Rork に「ログイン画面を作って」と頼むと、数十秒で動く画面が返ってきます。私自身、個人開発で運用している壁紙アプリの設定画面やフィードバックフォームを Rork で下書きさせることがありますが、生成直後のフォームをそのまま App Store に出したことは一度もありません。理由は単純で、生成コードは「画面として成立している」ものの「指で触れる道具」にはなっていないからです。

具体的には、入力するたびに画面全体がちらつき、iPhone の実機ではキーボードが送信ボタンを覆い隠し、通信が遅いと送信ボタンを2回押せてしまいます。これらは Rork が悪いというより、AI が下地を作り、人が仕上げるという役割分担のうち「仕上げ」の部分です。ここでは、生成されたフォームを react-hook-form と zod で実戦仕様に組み直す手順を、判断の根拠とともに残します。

Rork 生成フォームに共通する3つの崩れ方

生成直後のコードは、たいてい次のような形をしています。フィールドごとに useState を置き、ボタンを押した瞬間にまとめて検証する素朴な作りです。

// Rork が出力しがちな素朴なフォーム(問題を抱えている)
function LoginScreen() {
  const [email, setEmail] = useState("");
  const [password, setPassword] = useState("");
  const [error, setError] = useState("");
 
  const onSubmit = async () => {
    if (!email.includes("@")) {
      setError("メールアドレスの形式が正しくありません");
      return;
    }
    if (password.length < 8) {
      setError("パスワードは8文字以上です");
      return;
    }
    await signIn(email, password); // 連打すると複数回走る
  };
 
  return (
    <View style={{ padding: 16 }}>
      <TextInput value={email} onChangeText={setEmail} placeholder="メール" />
      <TextInput value={password} onChangeText={setPassword} secureTextEntry placeholder="パスワード" />
      {error ? <Text style={{ color: "red" }}>{error}</Text> : null}
      <Button title="ログイン" onPress={onSubmit} />
    </View>
  );
}

この実装には、実機で初めて表に出る問題が3つ潜んでいます。

入力1文字ごとに画面全体が再描画される

useState の更新は、その state を持つコンポーネント(ここでは LoginScreen 全体)を再レンダリングします。フィールドが2つなら気づきませんが、5つ6つと増え、検証ロジックや派生表示が乗ってくると、文字を打つたびに重い再描画が走り、入力が一拍遅れて感じられます。私の経験では、設定画面のように項目が多いフォームでこの遅延が顕著になります。

キーボードが送信ボタンを隠す

View をそのまま並べただけの画面は、ソフトウェアキーボードが出ると下半分が覆われます。とくに iPhone のパスワード欄にフォーカスした瞬間、肝心の送信ボタンが見えなくなり、ユーザーはキーボードを閉じてからでないとボタンを押せません。この一手間が、入力完了直前の離脱を生みます。

通信中にボタンを連打できてしまう

onSubmit は非同期ですが、実行中であることをどこにも記録していません。通信が遅い回線では、ユーザーは「反応がない」と感じてもう一度押します。結果として同じ送信が二重に走り、アカウント作成フォームなら重複登録、課金導線なら二重課金の温床になります。

なぜ react-hook-form と zod を選ぶのか

選択肢としては、Formik や独自フックという道もありますが、私は react-hook-form と zod の組み合わせを推奨します。判断の根拠は3つあります。

第一に、react-hook-form は入力値を「非制御」に近い形で内部に保持し、画面全体の再描画を避けられます。第二に、zod でスキーマを1か所に書けば、型(TypeScript)とバリデーションが同じ定義から導かれ、ずれが起きません。第三に、どちらも依存が軽く、Rork が吐く Expo プロジェクトにそのまま乗ります。

Expo プロジェクトには次のように追加します。

# Rork からエクスポートしたプロジェクトのルートで
npx expo install react-hook-form
npx expo install zod @hookform/resolvers

@hookform/resolvers は zod スキーマを react-hook-form に橋渡しするアダプタです。これを忘れると検証が一切走らないので、最初に入れておきます。

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

この記事の続きを読む

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

この記事で得られること
Rork 生成フォームが実機で崩れる3つの原因(全体再描画・キーボード被り・二重送信)を切り分け、どこから直すか判断できるようになります
react-hook-form の Controller と zod スキーマで、TextInput を1つずつ包む再利用コンポーネントを実装できるようになります
KeyboardAvoidingView の iOS/Android 差とサーバーエラーの差し戻しまで含め、ログイン画面を本番品質に仕上げられるようになります
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

開発ツール2026-04-15
Rorkアプリでキーボードが入力フィールドを隠す問題の完全対処ガイド
Rorkアプリでキーボードが表示されるとテキスト入力フィールドが隠れる問題の原因と解決策を解説します。KeyboardAvoidingView・ScrollView・useKeyboard フックを使った実践的な対処法を紹介します。
開発ツール2026-04-02
Rork でアンケートアプリを作る入門ガイド — フォーム設計・回答収集・集計グラフの実装
Rork を使ってアンケート収集アプリをゼロから作る方法を解説。フォーム設計・複数回答形式・Supabase によるデータ保存・集計グラフ表示まで、初心者でも 1 日で完成できる実践ガイドです。
開発ツール2026-06-19
Rork アプリの API 通信を堅くする — トークン更新・再試行・冪等性の設計
Rork が生成する fetch はそのままだと、トークン切れ・電波の揺らぎ・二重送信に弱いままです。トークンの自動更新、再試行とバックオフ、冪等性キーを一つのクライアント層に集約する設計を、実装コードと運用の数値とともに整理しました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →