どんなにシンプルな仕組みでも、 通信は必ず成功するとは限りません。
むしろ、
失敗することのほうが自然
です。
SMSが届かない理由は、一つではない
SMSはシンプルな仕組みに見えます。
しかし実際には、
- 送信側システム
- API基盤
- 通信事業者のネットワーク
- 受信側キャリア
- ユーザーの端末環境
といった複数のレイヤーを通過しています。
さらにそれぞれのレイヤーには、
- スパム対策フィルター
- レート制限
- セキュリティ制御
といった「守り」の仕組みが存在します。
つまり、
「届かない」ことには、必ず理由がある
そしてその理由は、一つではありません。
完璧な通信は存在しない
ネットワークは不安定です。
ユーザーの環境も制御できません。
システム同士の連携も、常に成功するとは限りません。
だからこそ、
成功を前提に設計すること自体がリスクになります。
失敗を前提にした設計
通信を扱うシステムでは、
「失敗すること」を前提に設計する必要があります。
例えば:
- リトライ設計
- タイムアウト制御
- ステータスの確認
これらはすべて、
失敗を前提にした設計です。
フォールバックという考え方
さらに重要なのが、
フォールバック(代替手段) です。
SMSが届かない場合でも、
別の手段で情報を届けることができれば、 ユーザー体験は維持されます。
音声というもう一つの選択肢
その代表的な手段が、音声です。
- SMSが受信できない環境
- スマートフォンを使っていないユーザー
- 固定電話しか持たないケース
こうした状況でも、
音声であれば情報を届けることができます。
冗長性は「安心」になる
SMSと音声を組み合わせることで、
- 届かないリスクを下げる
- 利用できるユーザーの幅を広げる
- システム全体の信頼性を高める
といった効果が生まれます。
まとめ
通信は、必ず失敗する可能性があります。
だからこそ、
- 失敗を前提にする
- 再試行を設計する
- 代替手段を用意する
この3つが重要になります。
信頼できるシステムは、 成功によってではなく、 失敗への備えによって支えられている。
それが、通信設計の基本なのかもしれません。