DevFest Kansai 2016

DevFest Kansai 2016」に参加しました。

基調講演

「Firebase Overview」

  • 登壇者: 鈴木拓生 (twitter)

Firebaseの解説でした。

Firebaseは「クラウドのデータベース」くらいの認識だったのですが、リアルタイムデータベースという特性を活かしたサービスをすべて包括するものになっていました。

「Android 7.0」

  • 登壇者: 荒木佑一 (twitter)

Android 6.0のころのDozeは端末が机の上に置かれているなど完璧に静止していないと、省電力にする機能を発揮しない仕様でしたが、今はポケットに入れて操作していないときなどでも、少なからず動作してバッテリーの消費を抑えているそうです。

「Android Studio 2.2」

  • 登壇者: 荒木佑一 (twitter)

C++のためにCMakeが正式にサポートされたそうです。NDKも正式サポートされたそうなのですが、登壇者の型がNDKのことを「レガシー」と表現されていたので、NDK以外の新しい選択肢があるの?とちょっと気になりました。

「Google Cloud Platform」

  • 登壇者: 佐藤一憲 (twitter)

たくさんお話されていたので、気に留まったことを箇条書きにしておきます。

  • 東京リージョンができた。海外リージョンと比べて、レイテンシが低い。
  • 日本語のサポートを増やしてる。
  • Pokemon GoはGCPで動いてる。リリース前にNianticがGoogleに伝えていた50倍のトラフィックが流れた。
  • 書籍「Site Reliability Engineering: How Google Runs Production Systems」で解説されているような専門のチームがそのトラフィックの問題を解決した。
  • Customer Reliability Engineerというチームを作って、そういった問題に関して、顧客向けに同様のサポート、コンサルティングをしている(日本はまだチームは作れていないが同様の相談は受けてる?)。
  • ディスクのI/Oアクセスが処理コストが高い。そのため、データが頻繁に書き込まれるアプリケーションとバックアップ用途では、コストが大きく異なる。
  • GoogleはI/Oアクセスの頻度から、アプリケーション用途とバックアップ用途で処理を分岐している(ハードウェアを分けてる?)。
  • 機械学習を独自に実装するための低レベルのAPIと、画像認識など特定用途向けのAPIを提供している。
  • 有山さんの本を買ってもらえばいい。
  • ディープラーニングが組み込まれたGoogle翻訳、最近は自信たっぷりに間違える。
  • 有山さんが行っている画像認識は46000枚(聞き間違いかもしれません…)の画像で17時間くらいの計算時間。複数のコンピュータで処理すれば早く終る。
  • GCPならTensorflowがすぐに動かせる。

Google関連のそのほか

  • 登壇者: 鈴木拓生 (twitter)

主にWeb向けの方への話でした。

  • Progressive Web Appsはネイティブでしかできなかったようなことがブラウザ上で実現できる。suumoやAliExpressのモバイル向けのページが使用してる。
  • Payment Request API。クレジットカードの支払いのダイアログがネイティブアプリっぽく出せる。
  • Tensorflow 0.9で、iOS、Android、Raspberry Piをサポート。
  • Google Homeは単純なアイデアしか思いつかない。
  • Material Design Award 2016。日本ではC Channelが受信
  • マテリアルデザインのガイドラインが翻訳されてる

「GoでRCカーシミュレータを作ってみた」

GCP上にラジコンカーを走らせる仮想世界を構築した話でした。

最初はAsia-Eastリージョンを使用して、50msの遅延があったそうなのですが、東京リージョンに変更してから10msになったそうです。

物理エンジンにODEというものを使用されているそうで、あとで調べてみると、最近勉強しているROSでも使用することがあるようなので、記憶に留めておくことにしました。

「Back to the Custom View」

  • 登壇者: 有山圭二 (twitter)

カスタムビューを作るときの注意事項などの解説でした。

  • AnalogClockはdeprecatedになった。
  • DigitalClockに対してTextClockができてる。
  • カスタムビューの事例としては「AspectRatioImageView」が有名。
  • Viewを継承したときの2番目のコンストラクタはレイアウトファイルでエラーになるから必ずつくる。
  • onSizeChanged(Viewのサイズ変更と確定)も重要。
  • (onSizeChangedの中でサイズが変更されることをビジーループで判定するコードを示して)動いてたけどやめてほしい。
  • onTouch時の返り値(独自の処理をする場合にtrueを返すよう)に注意する。
  • マルチタッチは、MotionEventCompatを使う。
  • ピンチイン・アウトはScaleGestureDetectorを使う。
  • Double Touch Dragは、ScaleGestureDetectorCompatを使う。
  • ジェスチェ検知はとにかくGestureDetectorを使う。
  • スクロール量の計算はScrollerとOverScrollerを使う。原則、OverScrollerを使う。
  • Interpolatorはアニメーションで言うところの中割り。グラフ化するとわかりやすい。
  • onDrawは16ms以内(60fps内)に完了させる。
  • 描画可能なBitmapサイズには制限がある(単純なメモリ使用量などの環境依存の問題を話しているニュアンスではなかった)。
  • Q: Fragmentを使うタイミングは?
    • A: あまり使いたくない派。onDrawやCanvasでやるのが手早いときはカスタムビューを選んでる。
  • Q: 非同期処理をカスタムビューに入れてしまいたいときは?
    • A: なるべくカスタムビューの外側で非同期処理して、カスタムビューはコントロールされる側にする。

「動かす」

サポートライブラリのtransitionを一人で担当していると話されていて、びびりました。

仕事でAndroidアプリを開発することは多いのですが、ハードウェアとの通信機能が正常に動作すればいい仕事が多く、アニメーションまわりのノウハウが身についていないので、豊富なサンプルを参考に遊ぶ機会を作りたいと思いました。

「Googleがめざす、誰もが使える機械学習」

  • 登壇者: 佐藤一憲 (twitter)

発表の中でちらっと表示された「playground.tensorflow.org」をあとで確認してみたら、ニューラルネットワークのパラメータを色々調整して動作確認できるページでした。 ここでさわれるパラメータの意味を押さえられると、理解した感が得られる気がします。

Tensorflowの活用事例として、次のものを解説されました。

Googleでは次のサービスなどで活用。

TensorFlow専用のLSIも開発しているそうです。

Tensorflowがまだなかった頃と、作られてからの機械学習の工程の解説図がわかりやすかったので、ちゃんと写真を取っておけばと思いました。

「Cardboardは日本人向きじゃない!メガネでも使えるJAGOVISORの紹介と日本Androidの会VR部・金沢支部の活動」

GoogleのCardboardのようにスマホを入れてVRするためのケースを色々作ってきた中で得られた知見の解説でした。

書籍「UnityによるVRアプリケーション開発」の翻訳をオライリーにせっついたそうです。編集者の方が、あまり反応がないことを気にされているので、レビューとかどんどん書いてくれ、とのことです。

GoogleのCardboardやオキュラスなどの主要なVRヘッドセットだと起こる、次のような問題を解決するように色々作られてきたことを解説されました。

  • 視界がVRで埋まってしまうと恐い->環境光が入る隙間を残す。
  • 髪が乱れるのを嫌う方が頭に固定しないで手にもつ->持ちやすいように持ち手を作る。
  • 目の間隔が広い人でも使えるように、サイズ調整を広めにとる。
  • ダンボールは汗でへにゃへにゃになる->防湿の素材で作る。

VRを楽しむにはIPD(Interpupillary distance、瞳孔間距離)の設定が重要!ということも話されていました(コメントでご指摘頂き、ごそっと思い出しました)。目と目の距離、瞳孔と瞳孔の距離は人によって様々なので、オキュラスなどのVRヘッドセットはソフトウェアがその差異を吸収してくれますが手動での設定が必要です。ちゃんと設定を行わないと、目が疲れたりして快適に楽しめないそうです。

IPDが長い方の場合、ヘッドセットによっては調整可能な範囲に収まらない場合があるので要注意です。VRのアプリを開発しているにもかかわらず、調整範囲に収まらず、悲観に暮れている方がいるそうです…。

「Firebase Test Lab 無料枠を使ってみました」

無料枠がすんなり使えなかった話なのですが、Android Studioの設定を色々見て回るなど、いつものAndroid的な問題だなぁという感じでした。

「Android 7.1 App Shortcut」

ランチャアイコンの長押しでショートカットが表示される機能の解説と、現時点の開発時の注意事項でした。

この機能自体知らなかったので、実装しないといけなくなったら、この発表を思い出すことにします。

「プロダクトを育てるのにGoogleのサービスが助けてくれること」

Googleのサービスが充実されていなかったころに、アプリの情報収集のシステムを自前で構築した話でした。

アドレス1つ

ネットワークの運用などをされる方にはあるあるネタのようでした…。

  1. sshとhttpsの両方で443番を使用したい
  2. sslhパッケージを使用すればsshとhttpsが443番を共有できることがわかった。
  3. httpとそのほかも443番を使用したい。
  4. centrifugeというツールを作った。
  5. RDPなども443番を使用したい。
  6. goconnect-proxyを作った。

「Espresso と Firebase Test Lab で Android アプリのテストを自動化する」

課金ありのFirebase test Labの話でした。使用するときに参考にしたいです。

「Deep learning with C++ - an introduction to tiny-dnn」

tiny-dnnの解説でした。

他の機械学習のライブラリでの学習結果などを活用できるそうなので、Raspberry Piなどのリソースが限られているもので使えそうです。

Android間違い探し

  • 登壇者: 赤井忠昭 (twitter)

AndroidのJavaコードから、ビルドできないものや実行時エラーが発生する、よくある間違い探しでした。答えを聞くとあるある、という感じでしたが、ぱっと見では全然わかりませんでした…。