Noblesse Oblige

App/iOS/Android/Unity/cocos2d/VR/GameJam/Hackathon/肉 ブログの記事は勉強会の書きなぐりメモが多め

【DroidKaigi 2017】Android リアルタイム通信アプリ作成Tips

セッション情報

speakerdeck.com

発表者

  • Fumihiko Shiroyama
  • Mikkei Inc.
  • github: srym

Realtimeについて

いいところ

  • リッチ

悪い点

  • 難しい
    • 一瞬ネット切れたときどうするんだ
    • Proxyの中ではどうするんだ

Realtime Libaries

  • WebSocket
  • Firebase Raltime Database
  • Realtime Mobile Pratform

WebSocket

  • WebSocket Server <-> WebSocketClient
  • Httpの拡張
  • 軽く効率が良い
    • 最小2kb Header + Payload
  • 双方向通信

OkHttp Supports WebScoket

  • 有名なHtppClientが対応した

Tips

  • WebSocketは軽くて薄い文ユーザーがやらないといけないことが多い
    • ブロードキャストやルーム作成など

Good Points

  • Simple and Open Free
  • Server Hook point
  • binary suport
  • can scale
    • Redis Pub/Sub
    • ある程度確立されている

Bad Points

  • 繋がってない時に送られたものは全て失われる

Firebase Realtime Database

  • Remote Database <-> Local Database <-> Client
    • クライアントはローカルのDBに書き込み、リモートとローカルが同期される
  • by Google
  • ローカルDBがあるのでオフラインで動かせる
  • Google基盤なのでスケールについても心配する必要がない

Data Structure

  • json
  • リレーションがない
    • Joinもないので重複したデータで管理
    • まぁ仕方ない

Security Rule

  • 非常に簡単に書ける
  • 公式にサンプルいっぱいある

Instapp Plugin

  • Plugin入れれば使える
    • firebase Realtime Database
  • ぽちぽちでok

Firebase Console

  • ここでどんなデータが書き込まれているのか簡単に見れる

Listeners

  • 基本使うのは2種類だけ
    • ValueEventListenr
    • ChildEventListner

Tips

  • Pull-to-Refresh
  • Desc Ordering
    • 逆順ソートができない
    • やりたいなら、タイムスタンプを判定させる
      • setPriprituy(timestamp * -1)

Good

  • Offline Support and Sync
  • 簡単にセキュリティルールを設けられる
  • 他のfirebase,Googleのサービスとの連携
  • スケールもきにする必要ない

Bad

  • バイナリサポートしていない
  • サーバーのフックポイントがない
    • 定期巡回できない
    • 卑猥なもの送れてしまう
  • トリッキーなーオーダーに限度がある

RealmMobilePlatform

  • ORMapper
  • Cross Platform

使い方

  • 資料見て

メモ

  • firebaseと同じようにローカルDBと同期できるようになった
  • サーバー立てて使う
  • 認証
    • Realmの認証もあるしGoogleの認証も使える
  • Realm3.0がつい先日でた
    • ChangeListenerが強化された
    • 新しく追加されたデータだけ取れるようになった
  • RealmRecycleViewAdapter
    • 良いっぽい

Good

  • Offline Support and Sync
  • Developer Edition Free

Bad

  • Developer EditionだとServer hookできない