RORK LABEN
ENGINE — Rork MaxはClaude CodeとClaude Opus 4.6を基盤に、ネイティブSwiftアプリを直接生成しますCORE ML — Rork MaxからCore MLの端末内推論・HealthKit・HomeKit・NFC・App Clipsといった機能に手が届きますSEED — Rorkは2026年4月にLeft Lane Capital主導で$15Mのシードを調達し、Peak XVやa16z Speedrunが参加しましたM&A — Rorkはアプリビルダー Paperline を買収し、エンジニアリング人材の獲得を目的に買収を継続する方針ですMARKET — Gartnerは2026年末までに新規アプリの75%がローコードまたはノーコードで作られると予測していますGROWTH — ノーコードAI市場は2024年の$4.9Bから2029年に$24.8Bへ、年38.2%の成長が見込まれていますENGINE — Rork MaxはClaude CodeとClaude Opus 4.6を基盤に、ネイティブSwiftアプリを直接生成しますCORE ML — Rork MaxからCore MLの端末内推論・HealthKit・HomeKit・NFC・App Clipsといった機能に手が届きますSEED — Rorkは2026年4月にLeft Lane Capital主導で$15Mのシードを調達し、Peak XVやa16z Speedrunが参加しましたM&A — Rorkはアプリビルダー Paperline を買収し、エンジニアリング人材の獲得を目的に買収を継続する方針ですMARKET — Gartnerは2026年末までに新規アプリの75%がローコードまたはノーコードで作られると予測していますGROWTH — ノーコードAI市場は2024年の$4.9Bから2029年に$24.8Bへ、年38.2%の成長が見込まれています
記事一覧/アプリ開発
アプリ開発/2026-07-05中級

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

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

Rork498Expo139React Native201認証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-07-07
高さの異なる画像を2列で美しく並べる—Rork の Expo アプリで壁紙ギャラリーを段組みにする
縦横比のばらつく画像を numColumns では美しく並べられない理由から、列の高さを見て振り分ける段組みアルゴリズム、FlashList の masonry での仮想化、依存を増やさない実装まで、壁紙ギャラリーを実コードで組みます。
アプリ開発2026-06-29
クリップボード連携のUXを整える — iOSのペースト許可バナーを増やさずに「コピー」と「貼り付け」を成立させる
expo-clipboard で「コピー」と「貼り付け」を実装するとき、iOS のペースト許可バナーが頻発して使い勝手を損なうことがあります。バナーの発生条件を押さえ、hasStringAsync で内容を読まずにボタンを出し分ける設計をまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →