Overview of Google I/O 2019 for Android

Overview of Google I/O 2019 for Android

D2bcabeeb1ddff142fb8988b412cb4d3?s=128

Yuki Anzai

May 18, 2019
Tweet

Transcript

  1. Overview of Google I/O 2019 for Android あんざいゆき (@yanzm)

  2. Yuki Anzai • Android App Developer (2009~) • CEO of

    uPhyca Inc. (2011~) • Google Developer Expert for Android • Organizer of GTUG Girls and droid girls • Twitter : @yanzm
  3. Google I/O

  4. Google I/O • 年1回開催される Google の技術者向けイベント • 会場はカリフォルニア州の Mountain View

    にある Shoreline Amphitheatre • Mountain View : いわゆるシリコンバレーにある街の⼀つ • Shoreline Amphitheatre : 屋外コンサート会場 • 今年はサングラスをくれなかった!
  5. None
  6. None
  7. Android

  8. Kotlin • Kotlin first!

  9. Kotlin • Androidの公式サポート⾔語の⼀つ(他は Java, C++) • Google I/O 2017で発表 •

    Java と相互運⽤性がある • 標準ライブラリで⽤意されている関数群がリッチ • Null 安全性(Nullable 型と NonNull 型が別)
  10. What's new in Android (Google I/O'19) https://www.youtube.com/watch?v=td3Kd7fOROw

  11. Kotlin Sessions • What's New in Kotlin on Android, 2

    Years In (Google I/O'19) • https://www.youtube.com/watch?v=ldM6QZy9e0s • Kotlin Under the Hood: Understand the Internals (Google I/O'19) • https://www.youtube.com/watch?v=Ta5wBJsC39s • Understand Kotlin Coroutines on Android (Google I/O'19) • https://www.youtube.com/watch?v=BOHK_w09pVA
  12. Android Q • 次の OS version いまここ

  13. Android Q • Share sheet • Bubbles • Notification Action

    • Dark Theme • Magnifier • Privacy • ...
  14. Q の機能を試す android { compileSdkVersion "android-Q" defaultConfig { targetSdkVersion "Q"

    } }
  15. Share sheet • 共有機能の改善 • Sharing Shortcuts • https://developer.android.com/preview/features/sharing

  16. None
  17. Share sheet session • What's new in the Android OS

    User Interface (Google I/O'19) • https://www.youtube.com/watch?v=nWbW58RMteI
  18. Bubbles • 新しい multitasking way • 画⾯にアイコンが floating で表⽰され、タップすると expand

    する • 使えるとき • Messaging, Calling, User initiated • https://developer.android.com/preview/features/bubbles
  19. What's new in Android (Google I/O'19) https://www.youtube.com/watch?v=td3Kd7fOROw

  20. What's new in the Android OS User Interface (Google I/O'19)

    https://www.youtube.com/watch?v=nWbW58RMteI
  21. Bubbles session • What's new in the Android OS User

    Interface (Google I/O'19) • https://www.youtube.com/watch?v=nWbW58RMteI
  22. None
  23. Dark Theme

  24. Dark Theme • Dark Theme & Gesture Navigation (Google I/O'19)

    • https://www.youtube.com/watch?v=OCHEjeLC_UY&t=22s
  25. Dark Theme

  26. Dark Theme • theme を Dark/Light に切り替える System theme setting

    が追加された • デバイスがバッテリーセーバーモードに⼊ったら、システム UI は⾃動で Dark Theme になる • Dark Theme のサポートは強く推奨されている • Material Design : https://material.io/design/color/dark-theme.html https://developer.android.com/preview/features/darktheme
  27. Force Dark • ⾃動でアプリを dark theme に変換する • opt-in するには

    • Force Dark よりも Custom の Dark Theme を⽤意したほうがよい • とりあえず force dark の⾒た⽬を確認したい → developer options の force dark を有効にする <style name="AppTheme" parent="..."> <item name="android:forceDarkAllowed">true</item> </style>
  28. AppCompat and MDC • DayNight <style name="AppTheme" parent="Theme.AppCompat.DayNight"> ... </style>

    <style name="AppTheme" parent="Theme.MaterialComponents.DayNight"> ... </style>
  29. class MyApplication : Application() { override fun onCreate() { super.onCreate()

    AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM) // MODE_NIGHT_YES // MODE_NIGHT_NO // MODE_NIGHT_FOLLOW_SYSTEM // MODE_NIGHT_AUTO_BATTERY // MODE_NIGHT_UNSPECIFIED } } class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) delegate.localNightMode = AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM } }
  30. アプリ内設定 • ユーザーがアプリのテーマを選べるようにすべき • Dark → MODE_NIGHT_YES • Light →

    MODE_NIGHT_NO • System default → MODE_NIGHT_FOLLOW_SYSTEM • Auto battery → MODE_NIGHT_AUTO_BATTERY
  31. Dark Theme 対応まとめ • AppCompat or MDC の DayNight を利⽤し、ユーザーが設定できるよう

    にする • AppCompat と MDC を v1.1.0 にアップデートする • Force Dark でとりあえずの dark theme 対応ができる • ⾊の直接指定をやめ、Theme attribute を利⽤する
  32. https://developer.android.com/guide/topics/text/magnifier の内容は現時点(2019/6/1)で古いので注意

  33. Privacy • パーミッション関係の変更 • Mac address のランダム化 • foreground service

    に関する変更 • Shared Storage アクセスに関するの変更 • ...
  34. Privacy • Overview of Privacy Changes in Android Q (Google

    I/O'19) • https://www.youtube.com/watch?v=bFp2n5OxYEE
  35. Overview of Privacy Changes in Android Q (Google I/O'19) https://www.youtube.com/watch?v=bFp2n5OxYEE

    Location のパーミッションに、アプリが foreground にある間だけ許可、というのが増えた
  36. Overview of Privacy Changes in Android Q (Google I/O'19) https://www.youtube.com/watch?v=bFp2n5OxYEE

    不変なデバイス識別⼦(IMEIとか)が READ_PHONE_STATE パーミッションで取得でき なくなった
  37. Overview of Privacy Changes in Android Q (Google I/O'19) https://www.youtube.com/watch?v=bFp2n5OxYEE

    MAC アドレスのランダム化がデフォルトになった (P ではオプション)
  38. Overview of Privacy Changes in Android Q (Google I/O'19) https://www.youtube.com/watch?v=bFp2n5OxYEE

    MAC アドレスのランダム化がデフォルトになった (P ではオプション)
  39. Overview of Privacy Changes in Android Q (Google I/O'19) https://www.youtube.com/watch?v=bFp2n5OxYEE

    foreground service になるときにタイプを指定 しなくてはいけなくなった
  40. Overview of Privacy Changes in Android Q (Google I/O'19) https://www.youtube.com/watch?v=bFp2n5OxYEE

    Shared Storage へのアクセスに変更が⼊った
  41. Shared Storage • external storage として知られているもの • storage permission によって管理される

    storage pool • What’s New in Shared Storage (Google I/O'19) • https://www.youtube.com/watch?v=3EtBw5s9iRY
  42. Shared Storage in Q • MediaStore にデータを追加するときや、以前追加したデータにアクセス するときは permission が不要になった

    • MediaStore の他のアプリが追加したデータにアクセスするときは permission が必要 • MediaStore 外のファイルにアクセスするときは system picker 経由でな ければならない
  43. Android Studio

  44. Android Studio sessions • What's New in Android Studio UI

    Design and Debugging Tools (Google I/ O'19) • https://www.youtube.com/watch?v=oWTG5g5rT4s • What's New in the Android Studio Build System (Google I/O'19) • https://www.youtube.com/watch?v=LFRCzsD7UhY • Android Studio: Tips and Tricks (Google I/O'19) • https://www.youtube.com/watch?v=ihF-PwDfRZ4
  45. Android Studio sessions • What's New in Android Studio UI

    Design and Debugging Tools (Google I/ O'19) • https://www.youtube.com/watch?v=oWTG5g5rT4s • What's New in the Android Studio Build System (Google I/O'19) • https://www.youtube.com/watch?v=LFRCzsD7UhY • Android Studio: Tips and Tricks (Google I/O'19) • https://www.youtube.com/watch?v=ihF-PwDfRZ4 ↓ 便利機能とか、ショートカットキーとかがたくさん紹介されている   オススメ
  46. Resource Manager • Android Studio 3.4 • リソース管理の新しい window •

    Batch import • Bulk import SVG and convert them to VectorDrawable • Preview all layouts • Integration with Layout Editor
  47. What's New in Android Studio UI Design and Debugging Tools

    (Google I/O'19) https://www.youtube.com/watch?v=oWTG5g5rT4s
  48. What's New in Android Studio UI Design and Debugging Tools

    (Google I/O'19) https://www.youtube.com/watch?v=oWTG5g5rT4s
  49. What's New in Android Studio UI Design and Debugging Tools

    (Google I/O'19) https://www.youtube.com/watch?v=oWTG5g5rT4s
  50. What's New in Android Studio UI Design and Debugging Tools

    (Google I/O'19) https://www.youtube.com/watch?v=oWTG5g5rT4s
  51. What's New in Android Studio UI Design and Debugging Tools

    (Google I/O'19) https://www.youtube.com/watch?v=oWTG5g5rT4s
  52. What's New in Android Studio UI Design and Debugging Tools

    (Google I/O'19) https://www.youtube.com/watch?v=oWTG5g5rT4s
  53. Emulator • Foldables • Headless emulator build • UIなしでエミュレータを起動 •

    CIでエミュレータを利⽤する場合に適している • https://androidstudio.googleblog.com/2019/02/emulator-2818- canary.html
  54. Emulator • Best Practices in Using the Android Emulator (Google

    I/O'19) • https://www.youtube.com/watch?v=Up3hyBSDAMA
  55. AndroidX

  56. CameraX • alpha • Camera2 ベース • Android 5.0 (API

    Level 21) 以降をサポート • ML Kit など機械学習との連携が簡単 • Extension という optional add-on 機能で、ポートレイトモードやHDR などデバイス独⾃の機能をサポート
  57. CameraX • Android Jetpack: Understand the CameraX Camera-Support Library (Google

    I/O'19) • https://www.youtube.com/watch?v=kuv8uK-5CLY
  58. Android Jetpack: Understand the CameraX Camera-Support Library (Google I/O'19) https://www.youtube.com/watch?v=kuv8uK-5CLY

    動画の撮影は対応していない そこまで優先度⾼くなさそう...
  59. CameraX • https://developer.android.com/training/camerax • Codelab: https://codelabs.developers.google.com/codelabs/ camerax-getting-started/

  60. Jetpack

  61. None
  62. Jetpack Security Library • ファイル・SharePreferences の暗号化 • Android 6.0 (API

    Level 23) 以降をサポート • 保管時のデータの読み書き、キーの作成と検証に関連するセキュリティの ベストプラクティスの実装 • security best practices : https://developer.android.com/topic/ security/best-practices
  63. Jetpack Security Library • Security on Android: What's Next (Google

    I/O'19) • https://www.youtube.com/watch?v=0uG_RKiDmQY • https://developer.android.com/topic/security/data.md • https://developer.android.com/jetpack/androidx/releases/security
  64. Jetpack Benchmarking Library • Android Studio から Kotlin ベースまたは Java

    ベースのコードをすばや くベンチマークすることができるライブラリ • https://developer.android.com/studio/profile/benchmark.html androidTestImplementation "androidx.benchmark:benchmark:1.0.0-alpha01"
  65. Jetpack Benchmarking Library • Improving App Performance with Benchmarking (Google

    I/O'19) • https://www.youtube.com/watch?v=ZffMCJdA5Qc
  66. ConstraintLayout 2.x • Flexibility • Virtual Layouts • Helpers &

    Decorators • Programming APIs • Optimizer • MotionLayout • Design Tools: UI Builder, Motion Editor
  67. ConstraintLayout 2.x • What's New in ConstraintLayout (Google I/O'19) •

    https://www.youtube.com/watch?v=29gLA90m6Gk implementation "androidx.constraintlayout:constraintlayout:2.0.0-beta1"
  68. Virtual Layouts • Flow mode • FlexBox 的なレイアウトができる • https://developer.android.com/

    reference/androidx/constraintlayout/ helper/widget/Flow
  69. Constraint Helpers • アニメーションなどを View と分離して定義 • 再利⽤しやすい

  70. Programming APIs • ConstraintProperties val properties = ConstraintProperties(findViewById<View>(R.id.text)) properties.visibility(View.INVISIBLE) .apply()

    val set = ConstraintSet() set.clone(constraintLayout) set.setVisibility(R.id.textView, View.INVISIBLE) set.applyTo(constraintLayout)
  71. MotionLayout • ConstraintLayout のサブクラス • constrains (制約) を xml file

    に分離 • 最初と最後の ConstraintSet を指定することで、その間を⾃動でアニメー ションをさせることができる • KeyPosition, KeyAttribute, KeyTimeCycle
  72. Documentation • Reference : https://developer.android.com/reference/androidx/ constraintlayout/classes • Medium : Introduction

    to MotionLayout part I ~ IV • Sample : https://github.com/googlesamples/android- ConstraintLayoutExamples
  73. Jetpack Compose • https://developer.android.com/jetpack/compose • 宣⾔的にUIを構築するためのツールキット • リアクティブプログラミングモデル と Kotlin

    Coroutines の suspend の 仕組みに影響を受けている • pre-alpha stage
  74. Jetpack Compose • Declarative UI Patterns (Google I/O'19) • https://www.youtube.com/watch?v=VsStyq4Lzxo

  75. Architecture Components

  76. Architecture Components • 堅牢で、テストしやすく、保守しやすいアプリを作るのを助けるライブラ リ集 • Data Binding, Lifecycle, Navigation,

    Paging, Room, WorkManager
  77. Architecture Components • What's New in Architecture Components (Google I/O'19)

    • https://www.youtube.com/watch?v=Qxj2eBmXLHg
  78. Kotlin First! • ktx • Kotlin だけの機能 • Kotlin 向けの

    API デザイン • coroutines サポート • ...
  79. Data Binding • コンパイルが⾼速化 • Distributed build cache をサポート •

    Incremental annotation processing • experimental 機能 : android.databinding.incremental = true • Android Studio 3.5 でより⾼機能な Refactoring support • Better error message
  80. What's New in Architecture Components (Google I/O'19) https://www.youtube.com/watch?v=Qxj2eBmXLHg Elegance +

    Compile Time Safety + Build Speed Impact
  81. What's New in Architecture Components (Google I/O'19) https://www.youtube.com/watch?v=Qxj2eBmXLHg

  82. What's New in Architecture Components (Google I/O'19) https://www.youtube.com/watch?v=Qxj2eBmXLHg

  83. Lifecycle • ViewModel は configuration の変更(例えば画⾯回転)による再⽣成を 超えてインスタンスが保持される • ViewModel はプロセスを超えて保持されない

  84. SavedStateHandle • ViewModel のデータをプロセスが kill されても保持する仕組み • onSaveInstanceState() と同じ •

    Parcelable data • data size 制限
  85. What's New in Architecture Components (Google I/O'19) https://www.youtube.com/watch?v=Qxj2eBmXLHg

  86. What's New in Architecture Components (Google I/O'19) https://www.youtube.com/watch?v=Qxj2eBmXLHg

  87. What's New in Architecture Components (Google I/O'19) https://www.youtube.com/watch?v=Qxj2eBmXLHg

  88. lifecycle-livedata-ktx liveData.observe(lifecycleOwener, Observer { newValue -> ... }) implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.2.0-alpha01"

    liveData.observe(lifecycleOwener) { newValue -> ... }
  89. lifecycle-livedata-ktx Transformations.map(liveData) { user -> user.name } implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.2.0-alpha01" liveData.map

    { user -> user.name }
  90. by viewModels() class MainActivity : AppCompatActivity() { private lateinit var

    viewModel: MainViewModel override fun onCreate(savedInstanceState: Bundle?) { ... viewModel = ViewModelProviders.of(this) .get(MainViewModel::class.java) implementation "androidx.activity:activity-ktx:1.0.0-alpha08" implementation "androidx.fragment:fragment-ktx:1.1.0-alpha09" class MainActivity : AppCompatActivity() { private val viewModel: MainViewModel by viewModels()
  91. WorkManager • On-demand initialization • 必要になったときだけ WorkManager を初期化 • WorkManage

    2.1.0 alpha • Google Play Services integration • totally optional, No API changes • Coming soon
  92. WorkManager • Robolectric support • stable • Worker unit testing

    • TestWorkerBuilder, TestListenableWorkerBuilder • 2.1.0 alpha
  93. Room • Coroutines support

  94. None
  95. Room • Coroutines support • Full Text Search

  96. None
  97. None
  98. Room • Coroutines support • Full Text Search • DatabaseView

  99. None
  100. None
  101. 次の version の Paging では... • エラー処理含めた built in のネットワークサポート

    • headers & footers • RxJava & Coroutines 対応の改善 • Soon in EAP, alpha this summer
  102. 次の version の Navigation では... • ViewModels scoped Navigation Graphs

    • Navigated by URI • Dialog destinations • Future: Better support for dynamic features
  103. Google Play

  104. • What's New in Google Play (Google I/O'19) • https://www.youtube.com/watch?v=o_oUeciBknU

    • Customizable Delivery with the App Bundle and Easy Sharing of Test Builds (Google I/O'19) • https://www.youtube.com/watch?v=flhib2krW7U Google Play sessions
  105. App Bundle • apk とは別の publishing format • 拡張⼦は .aab

    • デバイスが必要とするリソースだけをアプリにダウンロード&インストー ル • Google のアプリも多くが App Bundle に移⾏した
  106. What's New in Google Play (Google I/O'19) https://www.youtube.com/watch?v=o_oUeciBknU

  107. What's New in Google Play (Google I/O'19) https://www.youtube.com/watch?v=o_oUeciBknU

  108. None
  109. In-app update • アプリからアップデートをトリガーする • アプリから離れることなくアップデート可能 • https://developer.android.com/guide/app-bundle/in-app-updates • update

    flow : Immediate or Flexible
  110. Customizable Delivery with the App Bundle and Easy Sharing of

    Test Builds (Google I/O'19) https://www.youtube.com/watch?v=flhib2krW7U
  111. Customizable Delivery with the App Bundle and Easy Sharing of

    Test Builds (Google I/O'19) https://www.youtube.com/watch?v=flhib2krW7U
  112. Conditional delivery • dynamic feature modules を指定した条件を満たすデバイスにのみ配信 する機能 • Country(国),

    minSDK version, Device の機能(カメラがあるかな ど)で指定できる • https://developer.android.com/studio/projects/dynamic-delivery/ conditional-delivery
  113. On-demand delivery • 特定の dynamic feature module を on-demand にインストール・削除

    する機能 • https://developer.android.com/studio/projects/dynamic-delivery/ on-demand-delivery • 例)Contact support 機能を必要になってからインストールする • 例)オンボーディング処理が終わったら、オンボーディング機能を削除す る
  114. Customizable Delivery with the App Bundle and Easy Sharing of

    Test Builds (Google I/O'19) https://www.youtube.com/watch?v=flhib2krW7U
  115. Internal app sharing • apk や App Bundle を Google

    Play にアップロードすることで、リンク 経由で社内チームやテスターがダウンロード&インストールできる機能 • https://support.google.com/googleplay/android-developer/ answer/9303479 New Tools to Optimize Your App's Size and Boost Installs on Google Play (Google I/O'19) https://www.youtube.com/watch?v=rEuwVWpYBOY
  116. Internal app sharing • アップロードする⼈は Play Console のメンバーでなくてもよい • production

    key で署名しなくてもよい = デバッグビルドでもよい • version code 制限がない • メーリングリストで配信先を制限 or リンクを知っている⼈は誰でもダウ ンロード可能
  117. Internal app sharing • https://play.google.com/apps/publish/internalappsharing/ にビルド した apk/aab をアップロード •

    ⽣成されたリンクからアプリをインストールできる • インストールする側は PlayStore アプリで開発者モードになり、 Internal app sharing を有効にする必要がある
  118. Customizable Delivery with the App Bundle and Easy Sharing of

    Test Builds (Google I/O'19) https://www.youtube.com/watch?v=flhib2krW7U
  119. What's New in Google Play (Google I/O'19) https://www.youtube.com/watch?v=o_oUeciBknU 似たアプリを選択して、Google Play

    Console でベンチマークを⽐較できるようになった
  120. What's New in Google Play (Google I/O'19) https://www.youtube.com/watch?v=o_oUeciBknU metrics が新しくなった

  121. What's New in Google Play (Google I/O'19) https://www.youtube.com/watch?v=o_oUeciBknU 新しい平均 rating

    は、より最近の rating に重みを持たせるようになる
  122. What's New in Google Play (Google I/O'19) https://www.youtube.com/watch?v=o_oUeciBknU レビューへの返信⽂をサジェストしてくれる

  123. Installs on Google Play • Google Play でのインストールに関する改善 • Uninstall

    Wizard • Optimized downloads • Optimized native libraries • Peer-to-peer • Data at no cost
  124. Installs on Google Play • New Tools to Optimize Your

    App's Size and Boost Installs on Google Play (Google I/O'19) • https://www.youtube.com/watch?v=rEuwVWpYBOY
  125. アプリをインストールしようとして容量が⾜りなくて失敗したときに、アプリ のサイズや使⽤履歴に応じてアンインストールする他のアプリをサジェスト

  126. None
  127. ゲームエンジンなど共通する native libraries を共有して、アプリ固有の部分 だけダウンロード

  128. https://android-developers.googleblog.com/2018/10/offline-p2p- installs-beta.html

  129. None
  130. App size • App upload size • App download size

    → インストール率に影響する • App size on device [new] → アンインストール率に影響する
  131. Google Play の統計に app download size と app size on

    device が含まれる ようになった
  132. Google Play console に app download size と app size

    on device に関する 情報が含まれるようになった
  133. Google Play console でアプリのサイズ (app download size と app size

    on device) の時間変化が⾒れるようになった
  134. Google Play console でアプリのサイズの構成が⾒れるようになった

  135. Google Play Billing

  136. Play Billing • What's New with Google Play Billing (Google

    I/O'19) • https://www.youtube.com/watch?v=N4004Set4F8
  137. Play Billing Library 2.0 • Kotlin と C++ 版は coming

    soon • Billing Library が official way に • AIDL/Billing Library 1.x は deprecated • https://developer.android.com/google/play/billing/ billing_library_releases_notes
  138. What's New with Google Play Billing (Google I/O'19) https://www.youtube.com/watch?v=N4004Set4F8 コンビニ払いや銀⾏振込など

  139. What's New with Google Play Billing (Google I/O'19) https://www.youtube.com/watch?v=N4004Set4F8 Install

    時に Subscribe(フリートライアル → Subscribe) するプランが追加された
  140. Acknowledge all purchases • ⾮消費型アイテムの購⼊確認がとれたら、Google Play 側に acknowledge を送らないといけなくなった •

    3⽇以内に acknowledge を送らないと返⾦される
  141. Consistent Offers • Play の購⼊フローで promotion 価格を表⽰し、それで購⼊できるように なる

  142. What's New with Google Play Billing (Google I/O'19) https://www.youtube.com/watch?v=N4004Set4F8 購⼊カートが出てくるまでの

    時間が短くなった
  143. What's New with Google Play Billing (Google I/O'19) https://www.youtube.com/watch?v=N4004Set4F8 in-app

    での購⼊に任意の data を添付できるようになった A/B テストや、ユーザーの identify に便利
  144. What's New with Google Play Billing (Google I/O'19) https://www.youtube.com/watch?v=N4004Set4F8

  145. Subscription • Subscribe & Install • Install 時に Subscribe(フリートライアル →

    Subscribe) するプランが追加された
  146. Subscription • Subscribe & Install • one time promotion codes

  147. Google Play Console から Subscribe ⽤の promotion code を発⾏できるようになった

  148. Subscription • Subscribe & Install • one time promotion codes

    • Pause subscription • Subscription を Pause できるようになっ た(今まではキャンセルのみ)
  149. Subscription • Subscribe & Install • one time promotion codes

    • Pause subscription • Cancel Survey report on console •
  150. Subscription がキャンセルされた時のレポートが Google Play Console 上で⾒えるようになった(いままでは API 経由のみ)

  151. Subscription • Subscribe & Install • one time promotion codes

    • Pause subscription • Cancel Survey report on console • Longer Grace Period 課⾦処理の失敗で Subscription が⽌まった ときの猶予期間を⻑くできるようになった (今までは 3 - 7⽇)
  152. トレンドは Modularize ?

  153. Modularize sessions • Build a Modular Android App Architecture (Google

    I/O'19) • https://www.youtube.com/watch?v=PZBg5DIzNww • Build Testable Apps for Android (Google I/O'19) • https://www.youtube.com/watch?v=VJi2vmaQe6w
  154. Thank you