SMS APIの用途と重要性
SMS(Short Message Service)はインターネット接続なしに届くため、到達率が非常に高い通知手段です。SMS認証(OTP)・注文確認・配送通知・緊急アラートなど、確実に届けたい重要な情報の伝達に活用されています。
主要なSMS APIサービス
Twilio
- 料金:$0.0079/SMS(日本あて)程度、電話番号レンタル料別途
- 特徴:最も有名なSMS・音声API、豊富なSDK・ドキュメント
- サービス:SMS・音声通話・WhatsApp・Verifyサービス(OTP専用)
AWS SNS(Simple Notification Service)
- 料金:日本あて SMS は $0.08/通前後
- 特徴:AWSと統合しやすい・大量送信に対応
- 注意:日本向けSMSの配信率はキャリアによって異なる
Vonage(旧Nexmo)
- 特徴:グローバルな到達率に強み・2要素認証APIが使いやすい
- 無料枠:新規登録でクレジットあり
SMSゲートウェイ(国内)
国内専業のSMSゲートウェイ(ソフトバンク・KDDI系など)は日本キャリアへの到達率が高い反面、契約審査が必要で個人・スタートアップには敷居が高い場合があります。
Twilio SMS APIの実装例(OTP送信)
import twilio from 'twilio';
const client = twilio(
process.env.TWILIO_ACCOUNT_SID,
process.env.TWILIO_AUTH_TOKEN
);
// OTP生成と送信
const generateOTP = () => Math.floor(100000 + Math.random() * 900000).toString();
const sendOTPSMS = async (phoneNumber) => {
const otp = generateOTP();
// OTPをデータベースに保存(有効期限付き)
await saveOTP(phoneNumber, otp, new Date(Date.now() + 10 * 60 * 1000));
await client.messages.create({
body: `認証コード:${otp}(10分間有効)`,
from: process.env.TWILIO_PHONE_NUMBER,
to: phoneNumber
});
return { success: true };
};
Twilio Verify(OTP専用サービス)
TwilioはVerifyというOTP特化のサービスも提供しており、OTPの生成・送信・検証をTwilio側で管理できます。自前でOTPを管理するよりもセキュアで実装が簡単です。
// Verifyを使ったOTP送信
const verification = await client.verify.v2
.services(process.env.TWILIO_VERIFY_SID)
.verifications
.create({ to: phoneNumber, channel: 'sms' });
// OTP検証
const check = await client.verify.v2
.services(process.env.TWILIO_VERIFY_SID)
.verificationChecks
.create({ to: phoneNumber, code: userInputCode });
if (check.status === 'approved') {
// 認証成功
}
SMS配信の注意事項
- 日本の国番号は+81(例:09012345678→+819012345678)
- 送信者名(Sender ID)の制限:国によってはアルファベット送信者名が使えない
- 宣伝SMSには事前同意と送信停止手段の提供が法的に必要
- Twilioのトライアルアカウントは認証済み番号にしか送信できない
まとめ
SMS APIは高い到達率が求められる認証・重要通知に最適です。TwilioのVerifyサービスはOTP実装のベストプラクティスに沿った簡単な実装を可能にします。日本国内への配信精度が重要な場合は、複数のSMS APIを試して到達率を比較することをお勧めします。マーケティングSMSには法的要件への準拠を必ず確認してください。