Clickatell 経由で SMS を送信する
すこしまえに、Gmail の新規登録に SMS による認証が追加されたらしい。日本では必要ないはずだけどヘルプは日本語化されている。
Gmail アドレスを登録するには、SMS 機能を搭載した携帯電話が必要となります。 携帯電話をお持ちでない場合は、友だちの携帯電話でコードを受け取ることができます。
Gmail へのこの新しい登録方法を提供することにした理由の 1 つは、ユーザーを保護し、不正使用を防止するためです。Google は、迷惑メールや不正使用からの保護を重視しています。ユーザーの皆様からは、Gmail には迷惑メールがあまり届かないというお言葉をいただいています。Google では、迷惑メール送信者が迷惑メールを送信または配信したり、Gmail アドレスを取得(迷惑メール送信者はさまざまなアドレスを使用して迷惑メールを送信します)したりできないよう、数多くの対策を講じています。作成するアドレス数は携帯電話番号ごとに制限できるため、携帯電話に招待コードを送信するのもこの対策の一環です。
SMS を送信するにはいくつか方法がある。
一番簡単なのはメールアドレスが SMS の受け口になっているキャリアだ。残念ながら日本には無いのだけど、たとえば AT&T は電話番号@txt.att.net にメールを送るとその電話番号に SMS として送られるらしい。LiveJournal の Send a Text Message にまとまっている。
次に簡単なのが HTTP や SOAP 経由で SMS を送ってくれるサードパーティのサービスを利用すること。たとえば Clickatell なんかがあげられる。
大変そうなのが、自分で電話に AT コマンドを送ったり、キャリアの SMS センターに直接つなぐ方法。Kannel は両方、ruby-sms は前者のみの機能を提供しているようだけど、あまり理解に自信は無い。
Clickatell
Clickatell を使うと、こんな感じで SMS が送信できる。
% curl 'http://api.clickatell.com/http/sendmsg?user=[ユーザー名]&password=[パスワード]&api_id=[API ID]&to=[電話番号]&text=[本文]'; echo ID: [16進数っぽい30桁超の値] %
スクリーンショットをとりながらユーザー登録、とかやらなかったので大幅に手順を省略しました。
SMS の送信は有料なので注意が必要だ。Clickatell の場合まずクレジットを買って、SMS の送信のたびにクレジットが減っていく、というシステムをとっている。クレジットはまとめて買うと多少割引もある。実際の値段については Message Pricing を参照。
ちなみに、クレジットを PayPal で買うときは反映にすこし時間がかかるので、あせって複数回買ったりするのはやめましょう。はい、やりましたとも。
日本で SMS 認証は流行るのか?
無理なんではないかと。
まず、日本でいう「SMS」は「電話番号だけでとどくアレ」くらいの意味で、海外 (というか GSM 圏) でいう SMS より意味が広い。キャリア間の相互運用性が低い中、キャリア外から送ることは難しいと思う。Clickatell の対応表 には KDDI の文字があるけど、これが C メールを指すかというと微妙 (未実験)。
つぎに、日本の携帯電話の HTTP まわりには、契約者や電話番号などにひもづいた ID をリクエストヘッダにつけて送信するという風習があって、それが不正使用対策としてよく使われているという事情がある。最初に引用した Gmail のニーズは、これで代用できそうだ。
そもそも SMS が送れるのか、送れたとして、事業者にとって ID より便利なのか、という二つを考えると、SMS をつかった認証は流行らない気がする。
日本のインターネットが終了する日 でいわれているように、ID の送信はプライバシー上の問題が大きいので、それとくらべると SMS 認証のほうが良さげだ。でもたぶん使われないし、SMS そのものも今後ふつうの電子メールや XMPP あたりに置き換えられていく技術のように思いました。