SlideShare a Scribd company logo
1 of 37
Twilio+Railsで作る
SMS個人認証
株式会社ソニックガーデン
伊藤 淳一
SonicGarden Study #1
はじめに
•このスライドやサンプルアプリの
コードは後ほど公開します
•Twitterのハッシュタグ = #sg_study
•質問も#sg_studyでどうぞ
•本編の最後でまとめて回答します
Call me!
050-3159-6306
聞こえた人はツイート
#sg_study
※そのうち使えなくなるかも
About me
伊藤淳一
Twitter: @jnchito
Blog: give IT a try
僕は今ココにいます。
日本のへそ=西脇市
Wikipedia
みなさんは今どこで
観ていますか?
#sg_study を付けてツイート!
SonicGarden Study?
•SonicGardenが主催するIT勉強会
•USTで役立つ技術情報をライブ配信
•世界中どこからでも参加可能!
この人が弟子(19)
Today’s Menu
•Twilioとは何か?
•Rails + SMS個人認証の作り方
Demo
Twilioとは何か?
What’s Twilio?
•電話やSMSのAPIを提供するサービス
•アプリで音声通話やSMSが操れる!
•電話をかける/受けることも可能
•米Twilio社がサービスを開発、提供
Good Points
•機能豊富なAPI
•多彩な言語をカバーするライブラリ
•Ruby, Java, .NET, PHP, etc
•海外での利用実績も多数
•日本語での読み上げやSMS送信も可能
US or JP?
•USサイトと日本サイトがある
•http://www.twilio.com
•http://twilio.kddi-web.com
•日本サイトのSMSは準備中
•2013/05現在
How much?
•My電話番号 490円/月 or $1∼5/month
•電話をかける 0.25∼16円/分
•電話を受ける 0.25∼1円/分
•かけた側の通話料金も発生
•SMS 1.2¢/通
•無料トライアルアカウントもあり
TwiML?
•Twilioの挙動を定義するXML
•ただし音声通話向けなので、今回は
使いません
Rails + SMS個人認証
の作り方
SMS個人認証って?
•アプリでランダムな認証コードを作成
•携帯電話に認証コードを送信
•ユーザの入力したコードが同じならOK
•手軽に本人確認が可能
SMSの考慮点
•国際SMSになってしまう(2013/05現在)
•様々な制約から100%届く保証がない
•日本のTwlioさん、期待してます!
•携帯電話を持っていないとNG
•解決策: サポートセンターでフォロー
開発の準備
1. USサイトでアカウントを作る
2. My電話番号を購入 ($1/month)
•トライアルアカウントは使えない
•+1ではじまるUSの電話番号を選択
3. 電話番号に加え、下記の情報を確認
•AccountSID, AuthToken
Rails側の処理フロー
1. フォームデータを保存
2. 認証コードを作成、保存
3. SMSで認証コードを送信
4. 認証コードが一致することを検証
Model (1/2)
class	
  PresentEntry
database	
  columns
:verification_code
:verified
attr_accessor
:verification_code_confirmation
Model (2/2)
class	
  PresentEntry
after_create
issue_verification_code()
send_verification_code()
verify_and_save()
実際のコード
RSpec?
•sms-specというGemが便利
•自動的にMockを作成
•送信メッセージの検証も可能
まとめ
What’s Twilio?
•電話やSMSのAPIを提供するサービス
•アプリで音声通話やSMSが操れる!
•電話をかける/受けることも可能
•米Twilio社がサービスを開発、提供
開発の準備
1. USサイトでアカウントを作る
2. My電話番号を購入 ($1/month)
•トライアルアカウントは使えない
•+1ではじまるUSの電話番号を選択
3. 電話番号に加え、下記の情報を確認
•AccountSID, AuthToken
Rails側の処理フロー
1. フォームデータを保存
2. 認証コードを作成、保存
3. SMSで認証コードを送信
4. 認証コードが一致することを検証
Where’s the code?
•コードはGitHubに置いてあります。
•https://github.com/JunichiIto/
twilio-sms-verification
Questions?
#sg_study でツイート
してください
次回予告
Next?
•「MailChimpでメールマーケティング」
•技術者向けの概要説明
•Railsアプリへの組み込み方
•講師は若きCTO @mat_aki
•Doorkeeperでぜひメール登録を!
Thank you.
Twilio+rails+sms #sg_study

More Related Content

Similar to Twilio+rails+sms #sg_study

CodeIQベストコード発表会 #sg_study
CodeIQベストコード発表会 #sg_studyCodeIQベストコード発表会 #sg_study
CodeIQベストコード発表会 #sg_studyJunichi Ito
 
「RSpec初心者に送るRSpec最強チュートリアル」発表資料 #sg_study
「RSpec初心者に送るRSpec最強チュートリアル」発表資料 #sg_study「RSpec初心者に送るRSpec最強チュートリアル」発表資料 #sg_study
「RSpec初心者に送るRSpec最強チュートリアル」発表資料 #sg_studyJunichi Ito
 
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―Hisao Soyama
 
5分で分かる(かもしれない)バグバウンティ
5分で分かる(かもしれない)バグバウンティ5分で分かる(かもしれない)バグバウンティ
5分で分かる(かもしれない)バグバウンティshuna roo
 
見える!「IoT」NefryでJenkinsのXFD作ってみた
見える!「IoT」NefryでJenkinsのXFD作ってみた見える!「IoT」NefryでJenkinsのXFD作ってみた
見える!「IoT」NefryでJenkinsのXFD作ってみたTone Blue
 
LT for my university
LT for my universityLT for my university
LT for my universityssusera1f3c6
 
座談会資料(趣旨説明資料) 20161117
座談会資料(趣旨説明資料) 20161117座談会資料(趣旨説明資料) 20161117
座談会資料(趣旨説明資料) 20161117知礼 八子
 
20201006 勉強会駆動開発
20201006 勉強会駆動開発20201006 勉強会駆動開発
20201006 勉強会駆動開発K K
 
ITコミュニティに関する自由研究
ITコミュニティに関する自由研究ITコミュニティに関する自由研究
ITコミュニティに関する自由研究NISHIHARA Shota
 
20200704_twiliojp-ug_okayama_4
20200704_twiliojp-ug_okayama_420200704_twiliojp-ug_okayama_4
20200704_twiliojp-ug_okayama_4Takeshi Furusato
 
MeetIoT 1st on 2016/3/27
MeetIoT 1st on 2016/3/27MeetIoT 1st on 2016/3/27
MeetIoT 1st on 2016/3/27忠宗 松井
 
てのひらサイズで学べるか!?「認証の三要素」
てのひらサイズで学べるか!?「認証の三要素」てのひらサイズで学べるか!?「認証の三要素」
てのひらサイズで学べるか!?「認証の三要素」NISHIHARA Shota
 
見える!「IoT」 NefryでJenkinsのXFD作ってみた
見える!「IoT」 NefryでJenkinsのXFD作ってみた 見える!「IoT」 NefryでJenkinsのXFD作ってみた
見える!「IoT」 NefryでJenkinsのXFD作ってみた Tone Blue
 
Techlion vol8 yusuke #techlion
Techlion vol8 yusuke #techlionTechlion vol8 yusuke #techlion
Techlion vol8 yusuke #techlionYusuke Yamamoto
 
IT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipmIT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipm鉄次 尾形
 
Handoffは動かない〜これから役立たないバッドノウハウ集
Handoffは動かない〜これから役立たないバッドノウハウ集Handoffは動かない〜これから役立たないバッドノウハウ集
Handoffは動かない〜これから役立たないバッドノウハウ集Yuichi Yoshida
 
iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術vaccho
 
勉強会旅人のススメ
勉強会旅人のススメ勉強会旅人のススメ
勉強会旅人のススメand hyphen
 
エンジニアがプロダクト育成を始めるまでにやったこと
エンジニアがプロダクト育成を始めるまでにやったことエンジニアがプロダクト育成を始めるまでにやったこと
エンジニアがプロダクト育成を始めるまでにやったことTakao Sumitomo
 

Similar to Twilio+rails+sms #sg_study (20)

CodeIQベストコード発表会 #sg_study
CodeIQベストコード発表会 #sg_studyCodeIQベストコード発表会 #sg_study
CodeIQベストコード発表会 #sg_study
 
「RSpec初心者に送るRSpec最強チュートリアル」発表資料 #sg_study
「RSpec初心者に送るRSpec最強チュートリアル」発表資料 #sg_study「RSpec初心者に送るRSpec最強チュートリアル」発表資料 #sg_study
「RSpec初心者に送るRSpec最強チュートリアル」発表資料 #sg_study
 
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
 
5分で分かる(かもしれない)バグバウンティ
5分で分かる(かもしれない)バグバウンティ5分で分かる(かもしれない)バグバウンティ
5分で分かる(かもしれない)バグバウンティ
 
見える!「IoT」NefryでJenkinsのXFD作ってみた
見える!「IoT」NefryでJenkinsのXFD作ってみた見える!「IoT」NefryでJenkinsのXFD作ってみた
見える!「IoT」NefryでJenkinsのXFD作ってみた
 
LT for my university
LT for my universityLT for my university
LT for my university
 
座談会資料(趣旨説明資料) 20161117
座談会資料(趣旨説明資料) 20161117座談会資料(趣旨説明資料) 20161117
座談会資料(趣旨説明資料) 20161117
 
20201006 勉強会駆動開発
20201006 勉強会駆動開発20201006 勉強会駆動開発
20201006 勉強会駆動開発
 
ITコミュニティに関する自由研究
ITコミュニティに関する自由研究ITコミュニティに関する自由研究
ITコミュニティに関する自由研究
 
20200704_twiliojp-ug_okayama_4
20200704_twiliojp-ug_okayama_420200704_twiliojp-ug_okayama_4
20200704_twiliojp-ug_okayama_4
 
MeetIoT 1st on 2016/3/27
MeetIoT 1st on 2016/3/27MeetIoT 1st on 2016/3/27
MeetIoT 1st on 2016/3/27
 
てのひらサイズで学べるか!?「認証の三要素」
てのひらサイズで学べるか!?「認証の三要素」てのひらサイズで学べるか!?「認証の三要素」
てのひらサイズで学べるか!?「認証の三要素」
 
見える!「IoT」 NefryでJenkinsのXFD作ってみた
見える!「IoT」 NefryでJenkinsのXFD作ってみた 見える!「IoT」 NefryでJenkinsのXFD作ってみた
見える!「IoT」 NefryでJenkinsのXFD作ってみた
 
Techlion vol8 yusuke #techlion
Techlion vol8 yusuke #techlionTechlion vol8 yusuke #techlion
Techlion vol8 yusuke #techlion
 
IT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipmIT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipm
 
Handoffは動かない〜これから役立たないバッドノウハウ集
Handoffは動かない〜これから役立たないバッドノウハウ集Handoffは動かない〜これから役立たないバッドノウハウ集
Handoffは動かない〜これから役立たないバッドノウハウ集
 
iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術
 
勉強会旅人のススメ
勉強会旅人のススメ勉強会旅人のススメ
勉強会旅人のススメ
 
エンジニアがプロダクト育成を始めるまでにやったこと
エンジニアがプロダクト育成を始めるまでにやったことエンジニアがプロダクト育成を始めるまでにやったこと
エンジニアがプロダクト育成を始めるまでにやったこと
 
Kernelvm8
Kernelvm8Kernelvm8
Kernelvm8
 

More from Junichi Ito

起業するっておもしろい!~子育て中の主婦が突然パン屋を始めました~
起業するっておもしろい!~子育て中の主婦が突然パン屋を始めました~起業するっておもしろい!~子育て中の主婦が突然パン屋を始めました~
起業するっておもしろい!~子育て中の主婦が突然パン屋を始めました~Junichi Ito
 
About Nishiwaki.rb and Kobe.rb
About Nishiwaki.rb and Kobe.rbAbout Nishiwaki.rb and Kobe.rb
About Nishiwaki.rb and Kobe.rbJunichi Ito
 
田舎からリモートで働くという生き方
田舎からリモートで働くという生き方田舎からリモートで働くという生き方
田舎からリモートで働くという生き方Junichi Ito
 
How to upgrade your rails application to rspec3
How to upgrade your rails application to rspec3How to upgrade your rails application to rspec3
How to upgrade your rails application to rspec3Junichi Ito
 
give IT a try 読者向けオフ会
give IT a try 読者向けオフ会give IT a try 読者向けオフ会
give IT a try 読者向けオフ会Junichi Ito
 
なぜ私はソニックガーデンのプログラマに転身できたのか?(Short ver.)
なぜ私はソニックガーデンのプログラマに転身できたのか?(Short ver.)なぜ私はソニックガーデンのプログラマに転身できたのか?(Short ver.)
なぜ私はソニックガーデンのプログラマに転身できたのか?(Short ver.)Junichi Ito
 
なぜ私はソニックガーデンのプログラマに転身できたのか?
なぜ私はソニックガーデンのプログラマに転身できたのか? なぜ私はソニックガーデンのプログラマに転身できたのか?
なぜ私はソニックガーデンのプログラマに転身できたのか? Junichi Ito
 
The FizzBuzz Programing Contest
The FizzBuzz Programing ContestThe FizzBuzz Programing Contest
The FizzBuzz Programing ContestJunichi Ito
 

More from Junichi Ito (9)

起業するっておもしろい!~子育て中の主婦が突然パン屋を始めました~
起業するっておもしろい!~子育て中の主婦が突然パン屋を始めました~起業するっておもしろい!~子育て中の主婦が突然パン屋を始めました~
起業するっておもしろい!~子育て中の主婦が突然パン屋を始めました~
 
About Nishiwaki.rb and Kobe.rb
About Nishiwaki.rb and Kobe.rbAbout Nishiwaki.rb and Kobe.rb
About Nishiwaki.rb and Kobe.rb
 
田舎からリモートで働くという生き方
田舎からリモートで働くという生き方田舎からリモートで働くという生き方
田舎からリモートで働くという生き方
 
How to upgrade your rails application to rspec3
How to upgrade your rails application to rspec3How to upgrade your rails application to rspec3
How to upgrade your rails application to rspec3
 
give IT a try 読者向けオフ会
give IT a try 読者向けオフ会give IT a try 読者向けオフ会
give IT a try 読者向けオフ会
 
なぜ私はソニックガーデンのプログラマに転身できたのか?(Short ver.)
なぜ私はソニックガーデンのプログラマに転身できたのか?(Short ver.)なぜ私はソニックガーデンのプログラマに転身できたのか?(Short ver.)
なぜ私はソニックガーデンのプログラマに転身できたのか?(Short ver.)
 
なぜ私はソニックガーデンのプログラマに転身できたのか?
なぜ私はソニックガーデンのプログラマに転身できたのか? なぜ私はソニックガーデンのプログラマに転身できたのか?
なぜ私はソニックガーデンのプログラマに転身できたのか?
 
Procon 20111031
Procon 20111031Procon 20111031
Procon 20111031
 
The FizzBuzz Programing Contest
The FizzBuzz Programing ContestThe FizzBuzz Programing Contest
The FizzBuzz Programing Contest
 

Twilio+rails+sms #sg_study