SlideShare a Scribd company logo
IPメッセージングを
AWS lambdaで実装した話
自己紹介
髙橋克己(たかはしかつみ)
facebook: http://fb.com/katsumi.takahashi
グローバル・インターネット・ジャパン株式会社 代表取締役
独立系ソフトハウスに勤務後、1994年に独立。

主に、通信事業者向けの研修の企画・運営と、Webサービスの開発
を中心に事業を展開。

フルスタックエンジニア。

Twilio-UG 東京メンバー。
 Smart Communication Award 2014応募作品
留守電メッセージが文字で届く、国内初の留守番電話サービス
TRANSREC
 Smart Communication Award 2015 最優秀賞受賞作品
あなたの代わりに電話をかけます
自動電話リレーサービス
I m DOer
2016.2.22∼
Twilio事業部ソリューションアーキテクト
本日の立ち位置はTwilio-UGメンバーですw
本日のアジェンダ
• サンプルプログラムの解説
• AWS lambdaに移植した話
• IPメッセージングの補足情報
サンプルプログラム
の解説
サンプルプログラムはどこにある?
• 公式サイトのQuick Start
• JavaScriptのサンプル

https://jp.twilio.com/docs/api/ip-messaging/guides/quickstart-js

C#/Java/Node.js/PHP/Python/Rubyがあります
• iOSのサンプル

https://jp.twilio.com/docs/api/ip-messaging/guides/quickstart-ios

サーバーアプリとしてPHPのサンプルがあります
• GitHubのTwilio公式アカウント
• https://github.com/twilio

iOS、Android、JavaScript(Node.js)用など
今回はQuick StartのJavaScripts版(Node.js)
ファイル構成
ipm-quickstart-node-master
├── .env.example ←Account SIDなどの設定情報
├── .gitignore
├── LICENSE
├── README.md
├── index.js ←サーバーサイド(Express)
├── package.json  ←必要なライブラリ 
├── public
│ ├── index.css ←ブラウザ側CSSファイル
│ ├── index.html ←ブラウザ側HTMLファイル
│ └── index.js ←ブラウザ側JavaScripts
└── randos.js ←ユーザ名をランダムに生成するjs
Node.js
+ Express
システム構成図
./package.json
ヘルパーライブラリ

twilio@3.0.0-edge
最新版は
twilio@3.3.0-edge ?
Twilioの公式

GitHubに最新版あり
./public/index.html
JavaScript
SDK

最新版は0.9.4最新版は、https://www.twilio.com/docs/api/ip-messaging/
changelogs/javascript を参照してください。
ここ
にメッセージが

表示される
アクセストークン取得フロー SDK
AP名+Id+DevId
./public/index.js
49行目、アクセストークンをリクエスト(ajax) ・・・前ページ①
50行目、ブラウザベースでアクセスする際のデバイスIDはなんでも良い
53行目、返却されたidentityがユーザ名(ユーザ名はサーバーで生成)
58行目、返却されたtokenでAccessManagerを初期化 ・・・前ページ③
59行目、AccessManagerを使ってIPMessagingを初期化
Class
• IPMessaging
• Channel、Member、Messageに関するクラス
• twilio-ip-messaging.js
• AccessManager
• アクセストークンに関するクラス
• twilio-common.jsとして独立?
公式ドキュメントによる推奨設定
<script src="https://media.twiliocdn.com/sdk/js/
common/v0.1/twilio-common.min.js"></script>
<script src="https://media.twiliocdn.com/sdk/rtc/js/ip-
messaging/v0.9/twilio-ip-messaging.min.js"></script>
./index.js(サーバーサイド)
ユーザ名を生成
エンドポイントの識別子
IPメッセージングのサービスSID
アクセストークンに対してエンドポイントを許可
JWT形式でトークンを返却
ユーザ名をトークンに格納
アクセストークンの生成
アプリケーション名
./public/index.js(続き)
64行目、チャネルを検索
69行目、チャネルを新規に作成
./public/index.js(続き)
89行目、チャネルに参加
95行目、チャネルのイベントリスナー「messageAdded」を定義
AWS lambdaに
移植した話
なぜlambda?
• サンプルプログラムだとサーバーがいるよね
• サーバーサイドが必要なのは、トークンの生成のみ
• クライアントはJSで動くので、静的HTML→S3で良くね?
• Node.jsのサンプルがあるので、lambdaに移植しやすい
GitHubにソースをあげてあります。
$ git clone https://github.com/mobilebiz/ipmlambda.git
システム構成図
デモでは、ここが
Localhostだった
移植作業
• ./index.js内のアクセストークン生成部分を、API Gateway
とlambdaに置き換える。
• ユーザ名を生成するrandos.jsとtwilioのヘルパーライブラ
リーは、すべてzipパッケージにしてlambdaにデプロイす
る。
• ./public配下のコンテンツをS3に配置し、静的Webサービ
スとして配信する。
lamdbaにデプロイするzipの構成
• index.js ←lamdba用に書き換えたトークン生成プログラ
ム
• randos.js ←サンプルプログラムそのまま
• node_modules ←Twilioヘルパーライブラリを格納した
フォルダ
index.js
index.js(続き)
index.js(続き)
S3に配置するファイルの構成
• index.html ←サンプルプログラムそのまま
• index.css ←サンプルプログラムそのまま
• index.js ←API Gateway経由でアクセストークンを取得
するように改修
デプロイ作業
• zipパッケージの作成
• lambdaファンクションの新規登録
• API Gatewayの設定
• S3にコンテンツを配置
• S3の静的ウェブホストの設定
詳しくはQiitaの記事を読んでね♡
http://qiita.com/mobilebiz/items/077dea8fe58c45c9c16f
IPメッセージング

の補足情報
念のためおさらい
サービス
ロール
チャネル
ロール
ユーザの生成方法
• 明示的なユーザの生成(REST API)
• POST /Services/{Instance SID}/Users
• パラメーター
• Identity:ユニークなユーザ名
• RoleSid:ユーザに割り当てられるサービスロールのSID
• アクセストークン生成時に自動生成
• サンプルプログラムはこの方法で生成
• この時のロールは「service user」
メンバーのチャネルへの追加方法
• 明示的なメンバーの追加(REST API)
• POST /Services/{Instance SID}/Channels/{Channel SID}/
Members
• パラメーター
• Identity:ユニークなユーザ名
• RoleSid:メンバーとして割り当てられるチャネルロールの
SID
• Channelクラスのjoin()で参加
• サンプルプログラムはこの方法で生成
• この時のロールは「channel user」

<参考>デフォルトロール
生成したユー
ザに割当
チャネルに
参加したメンバー
に割当
IPメッセージングの料金
• コマンド発行数
• Twilioに発行されたコマンド1つに付き、$0.00004(50,000コマ
ンドまでは無料)
• データ転送量
• エンドポイントに対してTwilioから転送されたデータ量に対して、
1GBあたり$0.4(オープンβ時は無料)
• データストレージ
• Twilio内で保持するリアルタイムデータ(チャネル、ユーザ、メッセー
ジなど)を月で集計し、1GBあたり$3(オープンβ時は無料)
• エンドポイント接続数
• 1時間内で最も多かったエンドポイント数に対して、1エンドポイ
ントあたり$0.0001(オープンβ時は無料)
※オープンβ時点、日本国内の料金は未定
Let s Enjoy !

More Related Content

PDF
Twilio x AITalk 勉強会資料
PDF
「自動電話リレーサービス」を作ってみてわかった、Twilioを使ったビジネスの可能性
PDF
Twilioビジネスセミナー資料
PDF
TRANSREC開発秘話(TwilioビジネスセミナーVol.7)
PPTX
今日からでもできる!とある企業のtwilio活用方法
PDF
Twilioビジネスセミナー Vol.5 - コールセンター
PDF
Twilioビジネスセミナー20141023 twilioで変わる皆様のビジネス - 杉山 一夫
PDF
Twilioビジネスセミナー20141023 twilioで切り拓く新しいビジネス - 小出 範幸
Twilio x AITalk 勉強会資料
「自動電話リレーサービス」を作ってみてわかった、Twilioを使ったビジネスの可能性
Twilioビジネスセミナー資料
TRANSREC開発秘話(TwilioビジネスセミナーVol.7)
今日からでもできる!とある企業のtwilio活用方法
Twilioビジネスセミナー Vol.5 - コールセンター
Twilioビジネスセミナー20141023 twilioで変わる皆様のビジネス - 杉山 一夫
Twilioビジネスセミナー20141023 twilioで切り拓く新しいビジネス - 小出 範幸

What's hot (20)

PPTX
Bluemixユーザー会発表資料 - デモ付き
PDF
IIJmio meeting 5 みおふぉん教室:電話料金節約術
PDF
【Interop tokyo 2014】 無線LANとFacebookを活用したデジタルマーケティングの導入
PDF
Twilioビジネスセミナー20140624
PDF
IIJmio meeting #2 みおぽんAPIの話
PDF
LINE BOOT AWARDS 2018 FINAL STAGE プレゼンテーション
PDF
IIJmio meeting#4 みおふぉん教室
PPTX
いもうとBOTのご紹介
PDF
第2回 ボット自慢LT大会の資料(あにBOT)
PDF
ビジネスワールドトークのご案内
PDF
IIJmio meeting #3 音声通話サービスのお話
PPTX
東北で3年間クラウドのフルマネージドサービスをやってきて感じたこと
PPTX
いもうとBOT - [3/28]LINE Bot Developers Meetup発表資料
PDF
LTF・LTCR_サービス概要資料
PDF
ミラロボ(RPA Community)
PDF
IIJmio meeting 7 みおふぉん教室 スマホメールの引っ越し方
PDF
Kintone hands on
PDF
LINE WORKSを活用したチャットボットが現場とkintoneを繋ぐ
PPTX
Edtechスタートアップ成否のポイント
PDF
[LWTT] LINE WORKS のトーク履歴をSFDC上で管理しよう
Bluemixユーザー会発表資料 - デモ付き
IIJmio meeting 5 みおふぉん教室:電話料金節約術
【Interop tokyo 2014】 無線LANとFacebookを活用したデジタルマーケティングの導入
Twilioビジネスセミナー20140624
IIJmio meeting #2 みおぽんAPIの話
LINE BOOT AWARDS 2018 FINAL STAGE プレゼンテーション
IIJmio meeting#4 みおふぉん教室
いもうとBOTのご紹介
第2回 ボット自慢LT大会の資料(あにBOT)
ビジネスワールドトークのご案内
IIJmio meeting #3 音声通話サービスのお話
東北で3年間クラウドのフルマネージドサービスをやってきて感じたこと
いもうとBOT - [3/28]LINE Bot Developers Meetup発表資料
LTF・LTCR_サービス概要資料
ミラロボ(RPA Community)
IIJmio meeting 7 みおふぉん教室 スマホメールの引っ越し方
Kintone hands on
LINE WORKSを活用したチャットボットが現場とkintoneを繋ぐ
Edtechスタートアップ成否のポイント
[LWTT] LINE WORKS のトーク履歴をSFDC上で管理しよう
Ad

Viewers also liked (16)

PPSX
ODP
Carnaval
DOCX
Foro act 3 jesquiveli
PDF
Sistemas operativos para móviles
PPTX
Popayan
PPTX
tempat tidur tumpuk
PPTX
tempat tidur set
PPTX
Music Video Coursework - Album Poster Analysis
PPT
Modelo Java Enterprise Edition
DOCX
Interviul motivaţional
PPTX
2_C言語入門 - VisualStudioについて
PPTX
Presentasi proposal s3 framework pembelajaran
DOCX
Trabajo final de arbitraje
DOCX
Guia de setudio prueba 2 leng verbal no verbal corrección
PDF
Kinetic isotope effects
Carnaval
Foro act 3 jesquiveli
Sistemas operativos para móviles
Popayan
tempat tidur tumpuk
tempat tidur set
Music Video Coursework - Album Poster Analysis
Modelo Java Enterprise Edition
Interviul motivaţional
2_C言語入門 - VisualStudioについて
Presentasi proposal s3 framework pembelajaran
Trabajo final de arbitraje
Guia de setudio prueba 2 leng verbal no verbal corrección
Kinetic isotope effects
Ad

Similar to Ipメッセージング勉強会 (20)

PDF
Jidery紹介資料(2015年5月8日版)
PDF
Jidery紹介資料(2015年4月24日版)
PDF
Jidery紹介資料(2015年6月17日版)
PDF
TwilioJP-UG 大阪 第0回 「IoTな時代に向けて クラウドサービスで電話を使いたおそう」クロージング
PDF
Tech on meetup online#01
PDF
TwilioJP-UG 大阪 第0回 「IoTな時代に向けて クラウドサービスで電話を使いたおそう」オープニング
PPTX
Cloudpackが実現するビジネス課題の解決と新しい価値の提供
PPTX
モバイル開発を便利にするAWS
PPTX
Twilioと山下と学び
PPTX
クラウドネイティブが行なういまどきWebサービス開発
PDF
20190517 twilio business seminar in osaka #3
PPTX
金融業界におけるAPIエコノミー / Fintech meetup / IBM
PDF
駅すぱあとWebサービスにおけるAWSとその周辺
PDF
オフライン行動を支えるメール配送管理 at サイタ
PDF
How to work Tableau x Google Cloud Platform in CyberAgent AdTech Studio
PPTX
Explore aws in depth
PPTX
クラウド x IoT実践事例のご紹介
PPTX
Real World Twilio
PPT
第二回SoftLayerユーザー会 ラズベリーパイとオブジェクトストレージを繋いでみた
PDF
Aws lambda 事始め
Jidery紹介資料(2015年5月8日版)
Jidery紹介資料(2015年4月24日版)
Jidery紹介資料(2015年6月17日版)
TwilioJP-UG 大阪 第0回 「IoTな時代に向けて クラウドサービスで電話を使いたおそう」クロージング
Tech on meetup online#01
TwilioJP-UG 大阪 第0回 「IoTな時代に向けて クラウドサービスで電話を使いたおそう」オープニング
Cloudpackが実現するビジネス課題の解決と新しい価値の提供
モバイル開発を便利にするAWS
Twilioと山下と学び
クラウドネイティブが行なういまどきWebサービス開発
20190517 twilio business seminar in osaka #3
金融業界におけるAPIエコノミー / Fintech meetup / IBM
駅すぱあとWebサービスにおけるAWSとその周辺
オフライン行動を支えるメール配送管理 at サイタ
How to work Tableau x Google Cloud Platform in CyberAgent AdTech Studio
Explore aws in depth
クラウド x IoT実践事例のご紹介
Real World Twilio
第二回SoftLayerユーザー会 ラズベリーパイとオブジェクトストレージを繋いでみた
Aws lambda 事始め

Ipメッセージング勉強会