顧客にシンプルな予約リマインダーを送信しただけなのに、SMSの請求額が理由もなく2倍になっていたことはありませんか?この現象は、SMSメッセージのエンコードに直接関係しています。これは見落とされがちな技術的要素ですが、コミュニケーション予算に大きな影響を与える可能性があります。

SMSメッセージのエンコードとは?

SMSエンコードの定義を明確にするには、モバイルネットワークがすべての文字を同じように読み取るわけではないことを理解する必要があります。エンコードとは、メッセージ内の文字、数字、記号を、通信事業者が送信可能なバイナリデータ(0と1)に変換する技術的プロセスのことです。

歴史的に、携帯電話ネットワークは非常に軽量なメッセージを送信するように設計されていました。現在、SMSの送信を規定する主な規格は以下の2つです。

  • GSM-7:1文字あたり7ビットを使用する標準的なエンコードです。1通のSMSで最大160文字まで送信できます。
  • UCS-2(Unicode):1文字あたり16ビットを使用する、より表現豊かなエンコードです。非ラテンアルファベット、複雑な特殊文字、絵文字などに必要となります。この場合、1通のSMSの制限はわずか70文字に縮小されます。

GSM-7 vs UCS-2:特殊文字と絵文字の罠

個人経営のビジネス(美容室、クリニック、自動車学校など)において、問題が発生するのはここからです。GSM-7文字コード表に含まれない文字が1つでも入ると、メッセージ全体が強制的にUnicodeに切り替わります。

フランス語でよく使われる「ç」「ê」「ë」などの特殊文字やアクセント記号のSMSエンコードや、UCS-2エンコードによるSMSでの絵文字送信は、1メッセージあたりの文字数制限を即座に160文字から70文字へと減少させます。このように、絵文字がSMSエンコードに与える影響は絶大です。メッセージが複数のパーツ(セグメント)に分割され、多くの従来のプロバイダーでは送信コストが倍増してしまいます。

この違いをより分かりやすくするために、比較表を用意しました。

エンコード規格文字数制限(1通のSMS)使用可能な文字通常の請求への影響
GSM-7160文字基本ラテンアルファベット、数字、スペース、およびいくつかの一般的なアクセント記号(é, à, è, ù)標準料金(1クレジット)
UCS-2 (Unicode)70文字すべてのアルファベット(アラビア語、キリル文字、中国語/日本語など)、絵文字、複雑なアクセント記号(ç, ê, ï)料金が2倍または3倍に(複数セグメントに分割)

UnicodeエンコードがSMS料金に与える影響

UnicodeエンコードがSMS料金に与える影響は、TwilioやPlivoといった従来のSMSゲートウェイにおける最大のコストの罠です。これらのプラットフォームは、SMSの「セグメント」単位で課金します。1セグメントはGSM-7では160文字ですが、Unicode文字が1つでも検出されると、わずか70文字に減少します。

例えば、自動車整備工場を経営しており、次のような予約リマインダーを送信するとします。

"Bonjour ! Votre véhicule est prêt. Merci de passer le récupérer avant 18h au garage. À bientôt !"

このメッセージは107文字です。そのまま送信する場合、標準のGSM-7エンコードが使用されます(アクセント付き大文字の「À」はゲートウェイによっては問題になることがありますが、他は標準的です)。これにより、1セグメント分のSMS料金のみが発生します。

もし、メッセージをより親しみやすくするために最後に車の絵文字を1つ追加すると、メッセージはUCS-2に切り替わります。すると、108文字になったメッセージは、Unicodeの厳格な制限である70文字を超えてしまいます。その結果、メッセージは2つのセグメントに分割されます。従来の通信事業者では、絵文字1つのせいで、このメッセージに対して2倍の料金を支払うことになります。

このような想定外の出費を避けるために、多くの企業が代替手段を探しています。MySMSGateを使用すると、ご自身のAndroidスマートフォンを接続してメッセージを送信できます。メッセージの長さやエンコードに関係なく、送信されたSMS 1通につき0.02ドルの一律固定料金が適用されます。隠れたセグメントごとの課金は一切ありません。コスト効率の高いオプションの詳細については、小規模ビジネス向けの最安SMSゲートウェイに関するガイドをご覧ください。

開発者向け:SMS API送信で選択すべきエンコードは?

自社のアプリケーションや管理ソフトウェアにSMS通知を統合する場合、「SMS API送信で選択すべきエンコード」という技術的な疑問が生じるでしょう。

MySMSGateを含むほぼすべての最新のAPIは、UTF-8でエンコードされたJSON形式のリクエストを受け付けます。ただし、SMSゲートウェイはその後、このUTF-8ストリームをモバイルネットワーク向けに変換する必要があります。最大限の互換性を確保し、文字化け(よくある疑問符「?」や黒い四角「■」など)を防ぐためには、SMSゲートウェイのUTF-8エンコード設定を適切に行うことが不可欠です。

以下は、複雑な分割を気にすることなく、MySMSGateのAPIを介して正しくエンコードされたメッセージを送信するための、Pythonによる簡単な実装例です。

import requests

url = "https://mysmsgate.net/api/v1/send"
headers = {
    "Authorization": "Bearer VOTRE_CLE_API",
    "Content-Type": "application/json"
}
payload = {
    "to": "+33612345678",
    "message": "Votre rendez-vous est confirmé pour demain à 14h ! ",
    "sim_slot": 1
}

response = requests.post(url, json=payload, headers=headers)
print(response.json())

当社のAPIは、この変換をシームレスに処理します。さらに、配信に失敗した場合には自動返金メカニズムが組み込まれているため、実際に配信が成功した分のみお支払いいただけます。ご自身のサーバーへの完全な統合については、API経由でAndroid携帯からSMSを送信するチュートリアルをご覧ください。

SMSの二重エンコードを防ぐには?

SMSの二重エンコードを防ぐ方法として、HTTPライブラリによってすでに処理されている文字列に対して、コード内でさらにエンコード関数(urlencodeやutf8_encodeなど)を適用していないか確認してください。二重にエンコードされたデータを送信すると、顧客の元には奇妙な記号の羅列が含まれた判読不能なメッセージが届くことになります。

SMS/MMSビデオのエンコードプリセットという特殊なケース

モバイル通信の分野では、SMS/MMSビデオのエンコードプリセットという用語を目にする事があります。テキストエンコード(GSM-7やUCS-2)とは異なり、このプリセットはMMSで送信されるマルチメディアファイル(動画、アニメーション画像)の圧縮とフォーマットに関連しています。

モバイルネットワークは、MMSに対して非常に厳しいサイズ制限を設けています(通信事業者によって異なりますが、多くの場合300KBまたは600KB未満)。ビデオエンコードプリセットは、動画の解像度とビットレートを劇的に下げることで、通信事業者のゲートウェイで拒否されることなく配信できるようにします。テキスト通知や業務用のリマインダーのみを送信することが目的であれば、これらの複雑な設定について心配する必要はありません。

SMSエンコードに関するよくある質問

ビジネスSMSを送信する際のエンコードや特殊文字の取り扱いについて、頻繁に寄せられる質問にお答えします。

フランス語の単純なアクセント記号1つで、なぜSMSの料金が2倍になるのですか?

「ç」(セディーユ付きのc)、「ê」(サーカムフレックス付きのe)、「à」(グラーヴ付きのa)などの特定の文字は、標準のGSM-7文字コード表に含まれていません。これらの文字を1つでも使用すると、送信ソフトウェアはメッセージ全体をUnicode(UCS-2)モードに切り替えます。その結果、1通あたりのSMS制限文字数が160文字から70文字に減少します。テキストが70文字を超えると2つのセグメントに分割され、従来の通信事業者では送信コストが2倍になります。

送信前にSMSのエンコードをテストするにはどうすればよいですか?

オンラインには、SMSセグメントのテストツール(一般に「SMS Length Calculator」と呼ばれます)が存在します。テキストを貼り付けるだけで、非表示の文字や絵文字がUnicodeへの切り替えを強制しているかどうか、またプロバイダーから請求される正確なセグメント数を即座に確認できます。

MySMSGateはどのようにしてUnicodeによる追加費用の発生を防ぐのですか?

各セグメントごとに課金する従来のAPI(Twilio、Plivoなど)とは異なり、MySMSGateはメッセージの長さや、特殊文字・絵文字の使用有無に関わらず、送信されたメッセージ1通あたり0.02ドルの一律固定料金を適用します。メッセージは当社のプラットフォームに接続されたご自身のAndroidスマートフォンを経由して直接送信されるため、不当なセグメント分割手数料が発生することはありません。