radioc@?

レディオキャットハテナ

【勉強会メモ】Osaka Mix Leap Study #16 - Android Jetpack 勉強会

yahoo-osaka.connpass.com

  • 日時:2018/06/14(木) 19:00 〜 21:30
  • 場所:ヤフー株式会社 大阪グランフロントオフィス

AndroidJetpack概要&旧AACの紹介

中谷 克紀 (GDG神戸)さん

speakerdeck.com

Android Jetpackの目的

  • 開発速度を上げましょう
  • ボイラープレートを減らしましょう
  • アプリを高品質にしましょう

Jetpack一覧

developer.android.com

パッケージ名の変更

  • androidxのパッケージ名に変更

LiveData

  • Lifecycleを考慮してデータ反映
  • Activityと同じ生存期間のため画面回転などで破棄される

LiveData  |  Android Developers

ViewModel

  • Activityより長い生存期間
  • LiveDataとViewModelを組み合わせると回転を気にしなくて良くなる
  • ViewModelでViewやContextを参照しない
    • 低メモリ状態で破棄されることはありうる

developer.android.com

Room

developer.android.com

LiveData+ViewModel+Room

  • LiveData:ライフサイクルを意識せずにUIに反映
  • ViewModel:画面の回転時の処理を気にせずに実装
  • Room:データベースへ簡単にアクセス

まとめ

  • 自分のやりたい作業に集中できる
  • Googleが提供するライブラリなので最新バージョンへの追従も早いはず
  • バックポートも提供できるはず

Navigation Architecture Component

河本 泰孝(株式会社tech vein(テックベイン))さん

www.slideshare.net

Navigationとは

  • 画面遷移の実装をシンプルにするライブラリ
  • 現在1.0.0 alpha02

Navigationで何が嬉しいのか?

⇒今まで何が大変だったことをシンプルにする

  • Fragment管理が複雑
  • DeepLinkが複雑
  • データの受け渡しが型安全でない
  • 画面遷移のテストは大変

Navigation Graph

  • ある画面から別の画面に遷移するのを視覚的に表現
  • 画面のことをDestinationと呼ぶ
    • FlagmentとActivity

Navigation Editor

  • Android Studio 3.2が必要
  • 新しいリソースタイプ navigation を作成
  • 適当な名前でxmlを作成

navigation-ui

  • ハンバーガーメニューから開いて切り替えみたいな処理がいらない

データの受け渡し方

  • Bundleオジェクトを使う
  • Sefe Arge Gradleプラグインを使う
  • 型安全にデータ受け渡し

DeepLink

  • プッシュ通知やURLスキームから画面遷移が容易になる

今後追加されそうな機能

  • startActivityForResultがサポート?
  • DialogFragmentへの遷移
  • 複数のアクティビティ間でUpボタンのサポート
  • Shared Elementサポート

Deep Dive into Slice

森 洋之 (ヤフー株式会社)さん

speakerdeck.com

Sliceについて

  • テンプレート化されたUI
    • ある程度形のきまった統一感のあるUI
  • インタラクティブ
  • アップデート可能
    • テンプレートの追加などが可能

Sliceの仕組み

  • SliceProviderを作る(ContentProviderを継承)
  • URIをもとにSliceを要求
  • UIを構造化されたデータで表現

実装方法

どこで使われるか?

  • Google Search
    • 検索時に自分のアプリのSliceを表示してくれる

by App Name

by General Terms

  • FirebaseAppIndexesでIndexを追加
  • Manifest intent-filter
  • App IndexingのURIをSliceproviderのURIに変換

3rd party to 3rd party

  • アプリ間で連携
    • 例)Yahooメールの内容をYahooアプリ内に表示
  • サードパーティに開放するかは未定

Sliceめいたものをつくるなら

  • Bundleと相互変換できるクラスHogeをつくる
  • ContentProviderClientを使って高速にBundleをやりとりする
  • Hoge⇒Viewのロジックを書く

ContentProviderClient  |  Android Developers

まとめ

  • Sliceは古典的なAPIを上手につかっている
  • 最初はGoogle検索アプリで使われる
  • サードパーティでも表示できるかは不透明
  • でも似たようなことは自前でできる

いつも聞いてビール飲んで帰るだけというのも申し訳ないので今回はLTにチャレンジしてみた。

speakerdeck.com

先日参加したGoogle I/Oの報告会でも紹介されたML Kitを使ってみたレポートです。

【勉強会メモ】Google I/O 2018 報告会 関西 in 京都 - radioc@?