FwrdのロゴFwrdApp Storeでダウンロード

iPhoneでSMSのワンタイムコードをCI・QAに渡す方法

Fwrd · · 更新:

SMSのワンタイムコードをCIやQAの自動化に取り込むには、コードを受け取るSIMをチーム用のiPhoneに入れ、ショートカットの「メッセージ」のオートメーションで、コードのSMSを1通ずつFwrdに渡します。Fwrdは、それをご自分のHTTPS WebhookへJSONで投稿します。あとはCIのジョブが、そのエンドポイントから最新のコードを読み取り、サインイン画面に入力します。

必要なもの: コードを受け取る番号のSIMを入れた、iOS 26以降のiPhone。ショートカットアプリ(最初から入っています)。Fwrd。そして、CIから読み取れる公開のHTTPSアドレスです。ステージング用のルートや、n8nのワークフローなどが使えます。FwrdはIPアドレスと、.localや.internalの名前を受け付けず、ログイン用のヘッダも送らないので、アドレスに長い秘密の文字列を含めてください。

SMSのコードは、なぜ自動化しにくいのですか?

SMSのコードは、実行環境ではなく電話に届くため、パイプラインから読める場所へ誰かが運ぶまで、CIが止まってしまうからです。

多くのチームでは、こうしたチェックを書く人が、コードを受け取る自分の電話しか持っていません。Fwrdを入れたチーム用のiPhoneなら、その電話が、パイプラインから読めるものになります。

チーム用のiPhoneが向くのは、どんなときですか?

向いているのは、コードが特定のキャリアの番号に届く必要がある場合です。サインインするサードパーティのサービス、すでに会社の電話に紐づいたステージングのアカウント、番号の種類によって処理が変わる流れなどです。TwilioのLookupのドキュメント(2026年10月17日に確認)によると、アプリは携帯電話の番号と、固定されないVoIP番号を見分けられます。後者は、オンラインで取得する仮想番号と説明されています。チーム用のiPhoneのSIMはキャリアの本物の番号なので、お客様の場合と同じようにコードが届きます。

トレードオフは、電話1台は番号1つで、電源とオンラインの状態を保つ必要があることです。以降のセクションで、どちらも説明します。

iPhoneのSMSのコードをCIに送る手順

Fwrdに、コードだけを残すWebhookの送り先を追加し、続けて、コードのSMSをFwrdに渡す「メッセージ」のオートメーションを作ります。エンドポイント側の詳細は、Webhookのガイドで説明しています。

  1. FwrdにWebhookを追加します。 Fwrdを開き、「+」をタップして「Webhook」を選びます。「設定」欄に、エンドポイントのHTTPSアドレス全体を貼り付け、「テストメッセージを送信」をタップしてエンドポイントにフィールドを見せたら、チェックマークで保存します。

  2. コードだけを残します。 同じ送り先で、「転送するSMS」の「一部のSMSのみ」を選び、「コードらしいもの」をオンにします。4〜8桁のコードを含むSMSが残ります。条件は1つなので、無料プランでも使えます。

  3. 「メッセージ」のオートメーションを作成します。 iOS 27では、ショートカットを開き、「ライブラリ」>「オートメーション」の順にタップして、「+」をタップします。「ショートカットを説明」が表示されたら「編集」をタップします。「オートメーション」>「メッセージ」の順にタップし、「差出人」を「メッセージ」に変更して、code(またはサービスのSMSに含まれる単語)を入力します。iOS 26では、「オートメーション」タブを開き、「+」をタップして「メッセージ」を選び、「メッセージが次を含む」にその単語を入力します。

  4. 確認なしで実行されるようにします。 iOS 27では、トリガーの横の矢印をタップし、「実行前に確認」がオフになっていることを確認します。ⓘ>「プライバシー」で、「ロック中に実行を許可」がオンになっていることを確認します。iOS 26では「すぐに実行」を選び、「次へ」>「新規ショートカットを作成」の順にタップします。

  5. Fwrdのアクションを追加します。 「転送」で検索し、「メッセージをすべての送り先に転送」を追加します。「メッセージ」を「ショートカットの入力」に設定します(iOS 26では「ショートカットの入力」>「メッセージ」)。戻るをタップして保存します(iOS 26では「完了」)。

  6. CIでコードを読み取ります。 エンドポイントで、受け取った本文を、届いた時刻とともに保存します。実行がコードを要求した後は、それ以降に受け取った最新のSMSを定期的に取得し、正規表現で数字を取り出します。

  7. これで完了です。 コードのSMSが、iPhoneのロック中でもロック解除中でも、自動的にエンドポイントへ届きます。

エンドポイントは何を受け取りますか?

届いたままのSMSの本文を、contentとtextの両方に入れたJSONを、POSTで受け取ります。タイムスタンプは含まれないため、時刻はご自分の側で記録してください。

{
  "content": "Your verification code is 482913",
  "text": "Your verification code is 482913"
}

同じSMSに対する送信は、すべて同じIdempotency-Keyヘッダを持つため、重複は取り除けます。送信がタイムアウトしたり、429や5xxのエラーになったり、接続が切れたりすると、Fwrdは最大2回まで再送します。15秒以内に2xxの応答があれば配信済みとして扱い、リダイレクトは拒否されます。Fwrdの「設定」で「差出人を含める」をオンにし、Fwrdのアクションで「差出人」を選ぶと、本文にsenderフィールドも加わります。同じ番号に複数のサービスからSMSが届く場合に便利です。

この方法でできないこと

  • 1つの番号で、同時に扱えるのは1回の実行だけです。 同じ番号でコードを要求する並列のジョブは、互いのコードを読んでしまうことがあります。サインインの手順を順番待ちにするか、コードを要求した実行に対応付けてください。
  • 無料プランは、毎月15件までです。 それを超えると翌月までコードが届かなくなり、忙しいパイプラインではすぐ上限に達します。Fwrd Proなら上限がなくなります。料金は、米国で月額$4.99、または年額$29.99です。
  • 受信専用です。 FwrdはiPhoneからSMSを送れないため、CIのためにSMSを送ることはできません。
  • 電話の電源とオンラインの状態が必要です。 再起動後は、誰かが一度ロックを解除するまで転送が待機します。また、3日間ロックを解除しないiPhoneは自動的に再起動します。充電しておき、誰かが手に取れる場所に置いてください。
  • Fwrdのアクションは、有効なすべての送り先に届きます。 同じ電話が別の送り先にも転送している場合は、代わりに「メッセージを送り先に転送」を使い、Webhookを選んでください。
  • 新着のSMSだけです。 オートメーションを作る前に届いたコードは送られません。

パイプラインではなく人がコードを必要とする場合は、チームの2FA共有:SMSコードをSlackやTeamsへで、その設定を紹介しています。

自動化でのSMSのコードについてのよくある質問

SeleniumやPlaywrightは、SMSのコードを直接読めますか?

いいえ。ブラウザの自動化では、電話のメッセージは見えません。まず、何かがSMSを電話の外へ運ぶ必要があります。たとえば、ショートカットのオートメーションとFwrdで、スクリプトが取得するWebhookへ投稿する方法です。

コードはFwrdのサーバーを通りますか?

いいえ。Fwrdにはアカウントも、自前のサーバーもありません。SMSはiPhoneからご自分のHTTPSエンドポイントへ直接送られ、アドレスはiPhoneのキーチェーンに保存されます。

ショートコードの送信元でも動きますか?

はい。オートメーションは送信元ではなくSMSの内容で一致を判断するので、連絡先にない短い番号からのコードも、codeのような単語で一致します。

n8nのワークフローをエンドポイントにできますか?

はい。POSTに設定したWebhookノードを追加して、その本番用のURLを使い、ワークフローを公開してください。公開しないと応答しません。手順は、iPhoneのSMSをZapier、Make、n8nに送る方法で紹介しています。

SMSのコードを、CIが読める場所へ

Fwrdは、チーム用iPhoneに届く条件に合うSMSを、ご自分のHTTPS WebhookへJSONで投稿します。アカウントは不要で、Fwrdのサーバーも通りません。毎月15件まで無料で始められます。

毎月15件まで無料。Fwrd Proなら、転送とフィルタの上限がなくなり、「転送しない」リストも使えます。料金は月額$4.99、または年額$29.99で、年額プランには対象の方向けに7日間の無料トライアルがあります。

App Storeでダウンロード

iPhone · iOS 26以降