とりあえずやってみればいいじゃん

とりあえずやってみればいいじゃん

エンジニア関連のことについてつらつら書くブログ

CA.apk - Google I/O 2018 報告会 #ca_apk 参加レポート

Google I/O報告イベントに参加したのでそのレポートです。

cyberagent.connpass.com

間違っているところがもしかしたらあるかもしれませんが箇条書きしていきます。

初参加者からみたGoogle I/OとMaterial Theming / 並木 弥生さん

  • tapple誕生を担当している
    • マッチングアプリ売上国内No.1
    • やったことあるけどメッセージ続かなかったという人がいたがそれを解決する機能ができた

セッション以外で興味深かったこと

  • genderへの配慮
    • 申込時のgender欄が細かい
    • 入場バッジに自分を何て呼んでほしいか(He/Sheなど)をシールで貼る
  • 障害、人種、宗教へのサポートも

  • パパママサポート

    • 会場マップ上に哺乳瓶マークがついていて、授乳室が用意されている
    • 豪華な託児所もある(申込者しか開示されない)
    • アメリカでは12歳以下の子供を一人で留守番させておくことは幼児虐待にあたる
  • 会場のフェス感

  • feedbackを大事にしていて、部屋にボタンが設置されていたりする
  • セッションはYouTubeで見られるので、現地でしかできないことを優先するべき

セッションで興味深かったこと:Material Theming

  • 今までルールに縛られやすかったがデザインの柔軟性が高められるようになった
    • Lyft, Geniun, NPRなどはすでに対応
  • 関連する便利なツール:Material Theme Editor
  • エディターがあるから楽しようと思えば楽できる
  • このツール上で差分確認ができる

  • Gallery

    • Flutterもサポートしている
    • ガイドラインの参照が瞬時にできる
    • 今はコードの書き出しができないが、今後どんどんアップデートしていくのでは?

developer向けの話

  • Material Components
    • すでに試せる

Navigation Component / 竹田 智さん

  • 一番気になるもの:Android Jetpack
    • 今回話すのはNavigtationの話
      • 画面遷移の実装を簡単、素早くできる
    • 各機能は個別に提供されているので適宜採用できる
    • これによって構成を変えるという選択もあるかも

Navigationとは

  • iOSアプリ開発でのStoryboardみたいなかんじ
    • ひと目で画面間の関係がわかる
  • 画面遷移をXMLベースのリソースとして定義できる
  • Safe Argumentsで型安全な引数のサポートができる

Navigationを導入するには

  • 4つのライブラリと1つのGradle pluginを入れる
    • safe-argsは単体で使える
  • Code Labで簡単に動かせる

画面遷移にアニメーションを付けるには

  • エディタから簡単にアニメーションを付けることができる
    • プルダウンで選択して設定できる

Android App Bundle / 荒谷 光さん

Android App Bundleとは

  • keynoteで発表された
  • アプリの容量が大きくなるとダウンロード率が下がるというGoogleのデータがある
  • Google的にも、みんながこれに対応してくれれば通信量が削減できるのでやってほしいと思っている様子
  • .aabと.apkはイコールではない
    • .aabは必要なリソースのみを端末にインストールする形式
    • 平均的に30%くらいの容量削減が見込める
    • 自社アプリでもコードをほとんど変更せず、35.8%の削減に成功

Dynamic Delivery

  • 初回DLでは必要な部分だけダウンロード
    • まだβ
  • Google Play Instant
    • Instant Appのゲーム版のこと?
  • ゲームは容量大きいからダウンロード障壁が高い
    • お試しのような形で一部ダウンロードできる?
    • Candy Crashが対応しているらしい

どのようにAndroid App Bundleに対応するか

  • IDE上で簡単に
  • CIを使っている場合はコマンドからも対応できる
  • ストアでも、bundletoolというものを使っても削減後の容量を知ることができる
  • これからのアプリはモジュール化が必須になってくる
  • Instant Appsは10MBまで配布可能に
  • 今後Instant Apps, Dynamic Deliveryはデフォルト構成に

その他

  • Googlerと話した方が良い

WorkManager / 毛受 崇洋さん

WorkManagerとは

  • Jetpack - Architectureの中の一つ
  • 遅れてもいいけどちゃんと実行して欲しいものをいいかんじにやってくれる
  • システムがアプリを終了したとしても動作を保証したいタスクのために使うべき
    • メディアファイルのサーバへのアップロード、データベースへの保存など

WorkManagerの導入

  • 中心となるクラス
    • Work:作業をするクラス
    • WorkPequest:Workのリクエストのクラス

androidx.work.Data

  • 10KBしか保管できないのでDBだと思ってはいけない

WorkManagerの機能紹介

  • Workの依存グラフが作れる
    • RxJavaのzipみたいなことができる
  • Workに条件を付けられる
    • ネットワークに繋がった時のみ、充電中のみなどの設定ができる
  • LiveDataで今の状態が見られる
    • 好きにネームスペースが作れる

WorkManagerの内側

  • DBに情報を入れてから実行し、その間にプロセスが止まってもいいようにしている
    • Roomに依存している

WorkManagerのテスト

  • TestDriver()を使って同期的に動かしてテストできる

ベストプラクティス

  • 実行できる機会を伺えるようにConstraintで条件を書く
    • アップロードするにはネットワークが必要だ、としておけば、繋がった時にアップロードしてくれる

公募LT

懇親会中に4人の方のLTがありました。資料が公開されているものについてはここに貼っておきます。

Wear OS by Google / syarihuさん

What’s new with CosntraintLayout 2.0 / seto_hiさん

Waiting for slices / ymnderさん

Google I/O Extended Tokyo 2018レポート / shgmn9さん

Togetter

あとで追加するかも