第503回 SORACOM公式ブログ

ソラコム公式ブログ

SMS 本文設計ガイド:文字数節約やアクセス分析の実装

  • この記事をはてなブックマークに追加
  • 本文印刷

 本記事はソラコムが提供する「SORACOM公式ブログ」に掲載された「SMS 本文設計ガイド:文字数節約やアクセス分析の実装」を再編集したものです。

こんにちは、ソラコムのテクノロジー・エバンジェリスト 松下(ニックネーム: Max)です。

SMS(ショートメッセージサービス) は、電話番号だけでメッセージの送受信ができるサービスです。そのシンプルさから、荷物のお届け予定やメンテナンス告知といった情報から、マーケティングやプロモーション、そして IoT においては機器との通信手段と、幅広く利用されています。

一方で SMS は文字数や表現に制限があるため、長文や複雑な説明には不向きです。そのため、受信者が安心してスムーズに行動できるよう、本文を設計することでユーザー体験(UX)の向上が期待できます。

本記事では文字数削減の考え方や、UX を損なわない SMS 本文設計についてご紹介します。

PR

この記事では、SMS の実装としてソラコムの SMS サービス「Soracom Cloud SMS Delivery」の紹介も行っています

SMSの文字数と絵文字の有無

SMSの本文は、装飾などを施さずにシンプルに文字のみにして、1通の文字数を制御することが良いでしょう。この背景には「文字数とSMSのメッセージ数の関係」と「絵文字の誤解リスク低減」の2つがあります。

文字数とSMSのメッセージ数の関係

SMS の文字数は1通あたり最大で全角70文字、半角160文字です。
全角と半角が混在する場合は、半角文字も全角1文字分としてカウントされるため、まずは70文字が目安となります。2019年には最大で全角670文字(半角1530文字)にまで拡張されていますが、これは内部的には文字数に応じて複数に分割して扱っています。

このため、1通のSMSとして送信したつもりでも、文字数に応じて費用が変動します。また、通信キャリアが設けている送信数の制限にも関わります。例えば、NTTドコモでは1日あたりの送信制限が200通未満とされていますが、この制限は送信元の意図ではなく、キャリア内部で処理されるメッセージ数に基づくものです。

SMSを通知で使う場合、多くのケースでは本文を動的に組み立てることになるでしょう。その際、URLのような文字数が可変する情報を盛り込んだ場合、文字数の増加によって意図しない費用増につながる可能性があります。よって、費用を予測可能にし、また到達性を少しでも高めるには、設計段階で最大になりうる文字数を確認するようにしたうえで、実装でも送信文字数が設計内かをチェックする事が不可欠です。

絵文字による誤解リスクの低減

プロモーションメールや SNS 等では、読みやすさや注目してもらうために本文に絵文字による装飾を施すことがあります。一方でSMSにおいては、特に絵文字による装飾は控えた方が良さそうです。

というのも、絵文字は個人差があるコミュニケーションです。例えば

こういった表現は、出荷と着荷のどちらを意味するのかと、解釈の余地が生じます。また、受信環境による表示の差異もあり、検証の手間もかかります。そのため、絵文字の利用を避けて受信者にとって明確な表現を優先することを推奨します(参考資料: 年齢,性別とパーソナリティによる絵文字利用の個人差:10代と20代のSimeji利用者に対するアンケート調査から)。

技術面において、絵文字は全角2文字としてカウントされる文字もあり、実はあまり文字数節約にならなかったという事にもなり得ます。

文字数節約と UX の考え方

SMSの文字数と使用する文字群を踏まえたうえで、具体的な文字数の節約方法と UX (ユーザー体験) を両立する考え方をまとめました。

サンプルとして作った以下のメッセージは、全角63文字分です(全角半角混在のため、半角も全角1文字分としてカウント)。

まず文字数節約は3つのポイントがあります

  • 必要最低限の情報に絞る
  • 整形のための改行や記号は最小限にする
  • URLの短縮化を取り入れる

文字数を節約しても妥協したくないのがユーザー体験(UX)や操作、そして利用状況のモニタリングです。3つのポイントがあります。

  • クリッカブルな本文
  • 送達確認
  • 既存システムでの行動分析

必要最低限の情報に絞る

もっとも重要なことは、必要最低限の情報に絞ることです。具体的には問い合わせ時のキーとなる情報や、URLがあるなら開くべきか否かを判断するための情報です。先のサンプルでは、情報のラベル名に「状況の確認」ではなく「確認」と絞っています。

しかし、絞りすぎると情報が伝わらない可能性もあります。よって、受信者が必要としている情報を洗い出す事が最初に行うことです。

整形のための改行や記号は最小限にする

続いては改行と記号です。改行は1文字としてカウントされます。SMSの表示側での文字の折り返しは環境に違いがあり想定が難しく、改行で整えても表示が崩れる可能性もあります。そのため、改行は情報の区切り程度での利用が良いでしょう。これは本文整形のための記号も同様です。先のサンプルでは “|” という文字で整えています。

URL の短縮化を取り入れる

SMS内に入りきらない情報をポイントする方法として URL を入れることもあります。URL は長くなることが多く、これだけで本文の大半を占めることもあります。そこで検討したいのがURLの短縮化です。SaaS なら BitlyOw.ly があります。ひと手間かかりますが、文字数の削減に効果が高い施策です。また、URL文字数を設計内に収めることにも役立ちます。

URLの短縮化には費用がかかる場合があります。よって、SMSの運用費(主に送信費)との見比べが採用基準となるでしょう。

クリッカブルな本文

ここからは UX に対する考え方です。
SMS受信者に起こしてもらいたいアクションとしては、URLのクリックか電話コールが大半ではないでしょうか。スマートフォンでは文字列から自動的にアクションを認識します。より確実かつ幅広い環境でクリッカブルとして認識してもらうには “tel:” “mailto:” といった「URI スキーム」を指定するとよいでしょう。

送達確認

SMS はメッセージの送達状況(配信の成否の結果確認)が把握できます。つまり、確実性の高いメッセージ送信インフラとして使えるわけです。ここがメールやチャットサービスには無い特徴として、SMS を利用する理由の1つになります。

例えば、送達状況の変化をトリガーに Webhook で連携できるシステムを採用すれば、着信率の算出も可能ですし、後述する行動分析との組み合わせで、お客様のより詳細な行動分析も可能です。

既存システムでの行動分析

SMS 受信者の行動を把握することはサービス改善の要です。特に、すでに利用している解析システムと直接連携することは、別システムで計測したデータとの結合といった運用負荷を削減するだけでなく、多角的な分析に必須です。

Google Analytics 4 (GA4) のカスタムURL に代表されるような、行動分析のためのURLは非常に長くなりますが、先に紹介した「URL 短縮化」を組み合わせれば、文字数を削減しつつ分析できます。
以下は、GA4 のキャンペーン URL ビルダーで作ったカスタム URL と、それを Bitly で短縮した例です。

  • 短縮前: https://lp.soracom.com/sms/?utm_source=sms&utm_medium=banner (60文字)
  • 短縮後: https://bit.ly/4gqxmT6 (22文字)

【PR】ソラコムの SMS サービス「Soracom Cloud SMS Delivery」

Soracom Cloud SMS Delivery は、ソラコムが提供している SMS サービスです。このような特徴があります。

  • REST API で操作
  • バルク(複数宛先に一括)送信対応
  • 送信元は日本国内から、日本の4キャリア対応
  • 送達確認のコールバック Webhook 指定
  • 日本語ドキュメント・日本語サポート

ここでは特に、実装面でご好評をいただいているREST APIについて紹介いたします。
実装はシンプルです。Python 3 であれば標準ライブラリの urllib.request で操作できます。参考までに、AWS Lambda 向けの最小コードは以下の通りです。

import os import json import urllib.request  AUTH_KEY_ID = os.environ['SORACOM_AUTH_KEY_ID'] AUTH_KEY = os.environ['SORACOM_AUTH_KEY']  def lambda_handler(event, context):     # SORACOM API 呼び出し用の認証情報取得 -------------------------------     auth_url = 'https://api.soracom.io/v1/auth'     auth_headers = {'Content-Type': 'application/json'}     auth_data = {'authKeyId': AUTH_KEY_ID, 'authKey': AUTH_KEY, 'tokenTimeoutSeconds': 30}     auth_json_data = json.dumps(auth_data).encode('utf-8')     auth_req = urllib.request.Request(auth_url, data=auth_json_data, headers=auth_headers, method='POST')     with urllib.request.urlopen(auth_req) as auth_res:         cred = json.loads(auth_res.read().decode('utf-8'))      # Soracom Cloud SMS Delivery で SMS を1件送信 ------------------     sms_url = 'https://api.soracom.io/v1/sms_a2p'     sms_headers = {         'Content-Type': 'application/json',         'X-Soracom-API-Key': cred['apiKey'],         'X-Soracom-Token': cred['token']     }     sms_data = {         'to': ['+8180XXXXYYYY'],         'payload': """こんにちは Soracom Cloud SMS Delivery です https://soracom.jp/soracom_cloud_sms_delivery""" # 81文字     }     sms_json_data = json.dumps(sms_data).encode('utf-8')     sms_req = urllib.request.Request(sms_url, data=sms_json_data, headers=sms_headers, method='POST')     with urllib.request.urlopen(sms_req) as sms_res:         sms_res_body = sms_res.read().decode('utf-8')         print(sms_res_body)         return sms_res_body

上記コードを AWS Lambda 上で実行すると、以下のようにSMSメッセージが届きます。

上記の例は本文が81文字です。そこで発展形としては URL をBitly の API で短縮化した後に本文を組み立てるということが考えられます。このように API ベースの仕組みは、組み合わせることで文字数削減の自動化も実現できます。

cURL コマンドでの操作の様子は「Soracom Cloud SMS Deliveryのユースケースとご利用方法紹介」をご覧ください。

実運用に向けて

実運用においては例外処理に加えて認証結果のキャッシュや、送達確認のコールバック指定と確認も必要になる場合があります。送信頻度や送信量もご相談できますので、Soracom Cloud SMS Delivery のページからお気軽にお問い合わせください。

まとめ

文字数が少ない中で、どのように情報をお伝えするのか、また、より多くの情報へアクセスするための最初の入口として SMS は有用です。

SMS は1通あたりの費用に注目が集まりますが、今回ご紹介した文字数の節約で「今できること」としての費用低減が見込めます。その上で、クリッカブルな本文や行動分析を使い慣れたシステムと連携できることが、UX 向上やサービス改善の鍵となります。まだ工夫の余地があるのが SMS と言えるでしょう。

実装例として Soracom Cloud SMS Delivery も併せてご紹介しました。メールや SNS / チャットサービスとは異なるメッセージチャネルとして SMS をご検討ください。

― ソラコム松下 (Max)

投稿 SMS 本文設計ガイド:文字数節約やアクセス分析の実装SORACOM公式ブログ に最初に表示されました。

過去記事アーカイブ

2025年
01月
02月
03月
2024年
01月
02月
03月
04月
05月
06月
07月
08月
09月
10月
11月
12月
2023年
01月
02月
03月
04月
05月
06月
07月
08月
09月
10月
11月
12月
2022年
01月
02月
03月
04月
05月
06月
07月
08月
09月
10月
11月
12月
2021年
01月
02月
03月
04月
05月
06月
07月
08月
09月
10月
11月
12月