7. Copyright @ NIFTY Corporation All Rights
アプリとサーバの現状
7
アプリ サーバ
・認証
・結果
・データ(テキスト/バイナリ)
・プッシュ通知
だいたい同じ
8. Copyright @ NIFTY Corporation All Rights
サーバに求められるもの
8
・安定性
・セキュリティ対策
・定期的なアップデート
絶対に落ちないこと!
高速に動き続けること!
クラックされないこと!
9. Copyright @ NIFTY Corporation All Rights
mBaaSに置き換えてみる
9
アプリ
・認証
・結果
・データ(テキスト/バイナリ)
・プッシュ通知
ニフティクラウド
mobile backend
アプリの開発に集中!
10. Copyright @ NIFTY Corporation All Rights
ニフティクラウド mobile
backendの主な機能
10
プッシュ通知
データ
ストレージ
ファイル
ストレージ
SNS連携 認証
位置情報
検索
11. Copyright @ NIFTY Corporation All Rights
対応プラットフォーム
11
Objective-C
(2014年12月より64bit対応)
Android
JavaScript
(2014年12月よりnodeサポート!)
Unity
12. Copyright @ NIFTY Corporation All Rights
Web API
12
RESTfulなAPI
・データの追加、更新、削除、検索
・バイナリファイルの追加、更新、削除、検索
・認証
・プッシュ通知の追加、更新、削除、検索
https://github.com/moongift/ncmb-ruby-client
13. Copyright @ NIFTY Corporation All Rights
本題
13
IoT と mBaaS をいかに組み合わせるか?
14. Copyright @ NIFTY Corporation All Rights
IoTデバイスの問題点1
14
小型=小バッテリー
常時電源が使えるとは限らない
小さなメモリ/ストレージ
蓄積したデータを廃棄?
15. Copyright @ NIFTY Corporation All Rights
よくない利用
15
IoTデバイス
デスクトップ
スマートフォン
Webサーバ
22. Copyright @ NIFTY Corporation All Rights 22
IoTデバイス
スマートフォン APNs/GCM
mBaaSを使った例
!
ニフティクラウド
mobile backend
プッシュ作成サーバ
23. Copyright @ NIFTY Corporation All Rights
プッシュ作成サーバ
23
require 'sinatra/base'
require 'ncmb'
class Server < Sinatra::Base
get '/' do
NCMB.initialize application_key: ENV['APPLICATION_KEY'] ¦¦ "", client_key: ENV['CLIENT_KEY'] ¦¦ ""
@push = NCMB::Push.new
@push.immediateDeliveryFlag = true
@push.target = ['ios']
@push.message = params["m"]
@push.deliveryExpirationTime = "3 day"
if @push.save
status 201
body ''
else
status 403
body ''
end
end
end
https://github.com/moongift/push_server/
24. Copyright @ NIFTY Corporation All Rights
MQTTに対応させる場合
24
require 'mqtt'
require 'uri'
require 'ncmb'
# Create a hash with the connection parameters from the URL
uri = URI.parse ENV['CLOUDMQTT_URL'] ¦¦ 'mqtt://localhost:1883'
conn_opts = {
remote_host: uri.host,
remote_port: uri.port,
username: uri.user,
password: uri.password,
}
MQTT::Client.connect(conn_opts) do ¦c¦
NCMB.initialize application_key: ENV['APPLICATION_KEY'] ¦¦ "", client_key: ENV['CLIENT_KEY'] ¦¦ ""
loop do
# The block will be called when you messages arrive to the topic
c.get(ENV['TOPIC']) do ¦topic, message¦
@push = NCMB::Push.new
@push.immediateDeliveryFlag = true
@push.target = ['ios']
@push.message = message.force_encoding('utf-8')
@push.deliveryExpirationTime = "3 day"
@push.save
end
end
end
https://github.com/moongift/push_server_mqtt
25. Copyright @ NIFTY Corporation All Rights
IoTの問題3
25
M2M(Machine to Machine)とは言うけど
そもそもプロトコルを合わせられない…
26. Copyright @ NIFTY Corporation All Rights
良くない利用
26
IoTデバイス IoTデバイス
プロコトルの違い
仕様のすりあわせ
NAT越の必要あり
27. Copyright @ NIFTY Corporation All Rights 27
mBaaSを使った例
IoTデバイス IoTデバイスニフティクラウド
mobile backend
M2C2M
28. Copyright @ NIFTY Corporation All Rights 28
mBaaSを使った例
IoTデバイス IoTデバイスニフティクラウド
mobile backend
29. Copyright @ NIFTY Corporation All Rights
M2C2Mの例
29
お父さんいまどこメーター
via http://qiita.com/
kazunori279/items/
7dbbb525ab0cf6d5d9b5