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-07-05中級

ワンタイムコードの入力欄をExpoで作る — SMS自動入力とセグメント表示を両立させる

6桁の確認コードを入れる画面は、見た目こそ単純ですが、SMSの自動入力・貼り付け・1文字ずつの削除まで含めると意外と作り込みが必要です。iOSとAndroidの自動入力を最初に押さえ、単一のTextInputで崩れにくいセグメント表示を組む実装をまとめました。

Rork539Expo175React Native227認証14UX設計7

プレミアム記事

個人開発で運用しているアプリに電話番号の確認を足したとき、最初は素朴に6つの TextInput を横並びにしました。見た目は整っていたのですが、テスターから「SMSで届いたコードが上に出てこない」「貼り付けたら1マス目にしか入らない」と立て続けに指摘が届きました。マスを分けた瞬間に、iOS の自動入力もクリップボードの一括貼り付けも壊れていたのです。私自身、App Store に複数のアプリを出しながら、この「確認コード欄」だけは何度も作り直してきました。

コードを入れる画面は、サインアップや決済の直前という、いちばん離脱されたくない場所に置かれます。ここで一手間かかるだけで、せっかく興味を持ってくれた人が離れてしまいます。今回は Expo(React Native)で、SMS の自動入力・貼り付け・削除のすべてが自然に動く入力欄を組み立てていきます。

マスを分けると自動入力が届かなくなる

確認コード欄でまず引っかかるのが「見た目」と「入力の実体」の食い違いです。デザイン上は1文字ずつ独立したマスに見せたい。けれど OS の自動入力は、ひとつの入力フィールドに対して「6桁の文字列」をまとめて流し込もうとします。

6つの TextInput に分けてしまうと、iOS はどのフィールドへ挿し込めばよいか判断できず、キーボード上部の候補(コードのサジェスト)自体が出なくなります。Android の SMS 自動入力も同様に、単一のフィールドを前提に動きます。貼り付けも「フォーカスされた1マス」にしか入りません。

ここから導かれる方針はひとつです。見た目は分割し、入力の実体は1つにまとめる。つまり透明な TextInput を1枚だけ置き、その値を1文字ずつ描画して「マスが並んでいるように見せる」構成にします。

iOSとAndroidの自動入力を最初に指定する

先に自動入力の指定を固めておきます。ここを後回しにすると、UIを作り込んだあとで「なぜか候補が出ない」と時間を溶かします。両OSで必要な属性は異なります。

目的iOSAndroid
コードの自動入力textContentType="oneTimeCode"autoComplete="sms-otp"
キーボード種別keyboardType="number-pad"(数字コードの場合)
入力途中の自動修正抑制autoCorrect={false} / textContentType は上記を優先

注意したいのは、importantForAutofill を古い記事の見よう見まねで指定すると、逆に Android の sms-otp が無視される場合があることです。まずは上の最小構成から始め、必要になってから足すのが安全です。

import { TextInput } from "react-native";
 
// 実体となる単一の入力欄。見た目は後段のマスで描くため透明にします
<TextInput
  value={code}
  onChangeText={handleChange}
  keyboardType="number-pad"
  textContentType="oneTimeCode" // iOS: SMS のコードを候補表示
  autoComplete="sms-otp"        // Android: SMS 自動入力
  maxLength={6}
  autoFocus
  style={{ position: "absolute", opacity: 0 }}
/>

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

この記事の続きを読む

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

この記事で得られること
iOSの textContentType=oneTimeCode と Androidの autoComplete=sms-otp を両OSで効かせる正しい指定順序
見た目は6つのマス目、実体は1つのTextInput にする実装パターン(自動入力・貼り付けが壊れない)
貼り付けで6桁が一度に入る場合と、1文字ずつ削除する場合の両方を破綻させないキー操作の設計
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

アプリ開発2026-06-27
「本当に削除しますか?」を出す前に — 取り消せる削除という選択肢
リストの項目を消すたびに確認ダイアログを出すと、ユーザーは反射的にOKを押すようになります。Rork(Expo)アプリで「取り消せる削除」を実装し、確認を出すべき場面と出さない場面を切り分ける設計ノートです。
アプリ開発2026-08-16
グラフが壊れて見えるのは、データが多いときではなく最初の数日でした
記録アプリの折れ線グラフが、データの少ない最初の数日だけ線が消える。原因はY軸の幅が0になり座標がNaNになることでした。実測した挙動と、描画前に置く小さな正規化層を紹介します。
アプリ開発2026-08-06
壁紙の上の文字が読めるかを、端末ではなく取り込み時に決める — 判定指標を4つ測り比べた記録
壁紙の上に置くステータスバーや見出しが読めるかを、端末での画像解析ではなく取り込み時のメタデータで決める設計です。240枚のコーパスで判定指標を4つ実測し、縮小画像での判定が何と一致するのかまで記録しました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →