Google Developers Meetup#1に行ってきた

Posted at 26 Nov 2015

Introduction

2015/11/26に開催されたGoogle Developers Meetup #1に参加してきました。
Google Developer Relationsチームとして一方向的に発信するだけではなくカジュアルに話す機会を作ろうとしており、その一環として始めたそうです。 "#1"と番号がついていることからも分かる通り引き続き開催していく予定とのこと。 個人的にはインフラやデータ解析基盤の話も今後是非やっていただきたいです。

Android Design Support Libraryの出来るまで

Speaker: Yuichi Araki (Developer Programs Engineer)
Twitter/@yuichi_araki

スライドURL: http://yaraki.github.io/slides/gdm01

Android Design Suport Library

  • Material Designのコンポーネント群
  • 2014/06 GoogleI/O 2014 Material Designを発表
    • Youtubeに発表時の有名な動画があるが(下記)これはただのイメージで、見ててこれを作るのは大変そうだなと思っていた。まさか自分が作るとは...
  • 2015/05 Google I/O 2015 Design Support Libraryをリリース(ver. 22.2.0)
  • 2015/11: ver. 23.1.1

既存ライブラリ

  • Support v4, AppCompat
  • なぜこれらに新しいモノを追加しないのか。
    • Support v4: リソースが入らない。
    • AppCompat: バックポート専門。ポリシー上入れられない。

Android Design Support Libraryについて

  • 使い方はネットで。
  • よくハマるポイントとしてcompileSdkVersionをあわせ忘れることがあるので注意。
android{
  compileSdkVersion: 23
}

dependencies{
  (略)
  compile <ここを同じ23にする!>
}

最近入ったもの

  • snap
    • 要素の中途半端なところで画面が止まらないように画面の状態に応じて自動スクロールする。
  • 文字数カウンター
    • TextViewで制限する場合と違い文字数制限を超えて入力できる。何かを貼り付けた後不要な部分を消すとかができる。
  • NavigationViewのapp:actionLayout
    • NavigationView の項目の右端に任意のレイアウトを配置する。

カスタムビューに関するTips

画面の回転時に何を保存するか

画面が回転するときに何を保存すべきか、すべきでないかは難しい。 EditTextのようにユーザーが編集するものは保存し、TextViewのようにlayout.xmlの中で指定するもの(縦横で値を変えたいもの)は保存しないのが正しい。

RTL

  • marginStart, marginEndはAPI17以降。
  • GravityはAPI14以降でstart/endが入った...が実際は14以前でも動く。

レイアウト変更を引き起こす操作を知る

レイアウト変更を引き起こす操作を知って必要最小限にしないとパフォーマンスに影響が大きい。

ライブラリに関するTips

リソースを隠す

values/public.xmlに宣言したものはpublic。隠すものを指定できないが、public以外がprivateになる。

ご意見・ご要望

b.android.com

AndroidのFingerprint APIについて

Takeshi Hagikura (Developer Programs Engineer) Twitter/@thagikura

スライドURL: https://t.co/CoPYkgQ5SU

Password is annoying

  • 盗まれやすい
  • 覚えておかなくてはいけない
  • セキュリティ的に弱い

FingerprintAPI

  • パスワードの問題を解決する。
  • FingerpringAPIはAndroidのKeystoreと指紋認証を組み合わせて使うためのもの。

Keystore

FIDO

  • FIDO
  • ローカル端末の信頼性の高い認証情報をオンライン認証に利用するという仕様。Googleなどが参加。
  • パスワードをなくしてセキュアな認証を広めよう。

Confirm Credential

  • デバイスの認証情報をサードパーティアプリから使えるようにしたもの。
  • タイムアウトが設定できる。
    • サードパーティでもある認証した後に設定したtimeout秒数は再認証の必要なく鍵を使える。
    • timeoutを超えると再認証。
  • サンプルコード: github.com/googlesamples/android-ConfirmCredential

Firebase: Build Extraordinary Apps (AIを使ったリアルタイムモバイルゲーム開発)

Speaker: Ian Lewis (Developer Advocate, Google Cloud Platform Tokyo, Japan)
Twitter/@IanMLewis

*uploadされたスライドは見つかりませんでした。こちらが近いです。 http://www.slideshare.net/GoogleCloudPlatformJP/firebase-mobile-development-gcpug

Tensor Flowの話ではありません。

課題

  • サーバ側
    • アプリを作るときに、クラウドを使うのは良いがサーバ側をどうするかというのが悩みになりがち。
    • DB、ストレージとかCDNにのせたいとか、結構複雑で時間のかかることがいろいろある。
    • その分の時間を楽しいアプリを作る時間に使いたい。
  • クライアント側
    • クライアント側はでWeb、Android、iOS、TV、車など端末が多く対応するのが大変。
  • リアルタイム通信
    • エンゲージメントを高めるためにリアルタイム通信を入れたい(ゲーム、チャット)が、それを作るのは結構大変。
    • 技術的には可能なのはわかるが結構時間がかかる。より良い方法はないのか。。。

Firebaseの機能

  • そこでFirebaseというMBaaSが役に立つ。
    • リアルタイムデータベース(NoSQL、JSONデータベース)
    • ユーザー認証を標準で入っている
    • 静的ファイルホスティング。CDNに乗せられて効率的に配信される。

リアルタイムデータベース

リアルタイムは難しい

  • 複雑なトランスポート。
  • 多数のコネクション管理。
  • 信頼性の低いネットワーク(携帯など)でコネクションが戻った時にちゃんと動くようにする。
  • 複数のプラットフォームに対応する(iOS、Android)

Firebaseの開発は簡単なのかな?

  • これまで: Device <-> Application Server <-> Database
  • Firebase: Device <-> Firebase(サーバサイドコード不要、簡単な開発、スケーラブル)
  • Management ConsoleでUIからセキュリティ設定や分析などができるようになっている。

Demo

*コードを見せて説明していました。

  • Simple Firebase Game: Asteroid
  • AI対戦はどうする?
    → サーバサイドが書けなくてもクライアントサイドでBotを用意すれば良い。
  • firebase.comで試してみて下さい。無料プランもあります。

What's New?

  • セキュリティ設定を簡単にできるコンパイラBoltが提供された。
  • Firebase CLIデータベースコマンドが追加された。
  • FirebaseUIというAndroid/iOSモバイルフレームワークができた。

Q&A

  • リアルタイムでの同期とは具体的にはどれくらいか?
    大抵の場合は10〜15msだが保証はない。100ms、200msもたまにある。ネットワークが悪かったり、更新が頻繁すぎたりすると遅れる。
  • デモのAsteroidで100人同時接続とかするとどうなりますか?
    そもそも最適化していない。このゲームはフレームごとに同期しているので厳しいかも。RPG(MMO)なら問題ない。
もどる