Google I/O 2018 に見る これからの Android アプリ開発方法

Google I/O 2018 に見る これからの Android アプリ開発方法

D2bcabeeb1ddff142fb8988b412cb4d3?s=128

Yuki Anzai

June 02, 2018
Tweet

Transcript

  1. 2.

    • blog : Y.A.M の雑記帳 • y-anz-m.blogspot.com • twitter :

    @yanzm (やんざむ) • uPhyca Inc. (株式会社ウフィカ) • Google Developer Expert for Android あんざいゆき
  2. 3.
  3. 4.

    10 years • いろんな UI の流⾏行行り → OS のデザイン変遷 →

    Material Design → Material Theming • 新しい機能のバックポートが欲しい → Support Library • ユースケースに対し様々な実現⽅方法 → ベストプラクティス → Jetpack • いろんなアプリが電池を消費 → OS で制限 → Doze, App Standby • アプリのサイズがどんどんでかくなって⼤大変 → Android App Bundle • アプリがどんどん複雑になって⼤大変 → Android Architecture Components
  4. 5.

    Google Play upload 要件 • targetSdkVersion を最新の stable(今だと 26)にしない と

    Google Play に apk を upload できなくなる • 2018年年8⽉月 〜 : 新規のアプリ • 2018年年11⽉月〜 : 既存のアプリ • https://android-developers.googleblog.com/2017/12/ improving-app-security-and-performance.html
  5. 6.

    Google Play upload 要件 • native libraries は 64-bit version

    を提供しないと Google Play に apk を upload できなくなる • 2019年年8⽉月 〜 • https://android-developers.googleblog.com/2017/12/ improving-app-security-and-performance.html
  6. 8.

    IDE : Android Studio Preview • https://developer.android.com/studio/preview/ • Canary Channel

    : ⼀一番最新の開発バージョン • Dev Channel : Canary の次 • Beta Channel : Dev の次 • Stable Channel : 安定版
  7. 13.

    Material Design • https://material.io/ • Material Design is a visual

    language that synthesizes the classic principles of good design with the innovation of technology and science. • Google I/O 2014 で発表 • Google が⼈人とお⾦金金と時間をかけてリサーチ • Develop : https://material.io/develop/
  8. 15.

    Material Theme Editor • Sketch Plugin • Sketch https://www.sketchapp.com/ •

    https://material.io/tools/theme-editor/ • コードラボ • https://codelabs.developers.google.com/codelabs/ theme-editor-designlab/
  9. 16.
  10. 17.
  11. 18.
  12. 19.

    Gallery • https://gallery.io/login • デザインした画⾯面のストック&共有 • Google Account でログイン •

    バージョン管理理 • コメント • Inspect, Material Components へのリンク • Material Theme Editor 連携
  13. 20.
  14. 21.
  15. 22.
  16. 23.
  17. 24.
  18. 25.
  19. 26.
  20. 27.
  21. 29.

    Material Gallery App (Android, iOS) • https://gallery.io/apps • Gallery Project

    の各 image を デバイスで表示 • コメント⼊入⼒力力 https://www.youtube.com/watch?v=TIB3q68ZHYw
  22. 30.

    レイアウト • ConstraintLayout • 制約(Constraint)を指定して View を配置 • レイアウトエディタ対応 •

    https://developer.android.com/training/constraint-layout/ • CoordinatorLayout • Behavior を指定して View の動きを制御
  23. 31.

    レイアウトエディタ • GUI でレイアウトを編集 • Android では XML で レイアウトを定義

    • GUI での変更更は XML に適⽤用される • https:// developer.android.com/ studio/write/layout-editor
  24. 33.

    AndroidX • 今までの Support Library の package と artifact が変わる

    • android.support.* → androidx.* など • https://developer.android.com/topic/libraries/support- library/refactor • https://android-developers.googleblog.com/2018/05/hello- world-androidx.html • いままでの package での Support Library は 28.0.0 が最後 のリリースになる
  25. 36.

    What is Android Jetpack? • Android Jetpack はすぐれた Android アプリを作るための

    コンポーネント・ツール・ガイダンスのセット • https://android-developers.googleblog.com/2018/05/ use-android-jetpack-to-accelerate-your.html • 使う使わないは⾃自由 • 使いたいものだけ使えばよい
  26. 37.
  27. 39.

    Foundation • AppCompat : 必須 • Android KTX : Kotlin

    で開発するなら⼊入れると便便利利 • Multidex : 必要になれば必須 • Test : 必須
  28. 41.

    Animation & Transition • ほぼ必須 • ObjectAnimator • Transition Support

    Library • DynamicAnimation implementation 'com.android.support:transition:28.0.0-alpha1' implementation 'androidx.transition:transition:1.0.0-alpha1' implementation 'com.android.support:support-dynamic-animation:28.0.0-alpha1' implementation 'androidx.dynamicanimation:dynamicanimation:1.0.0-alpha1'
  29. 43.

    Fragment • ほぼ必須 • Framework の Fragment は Deprecated •

    Support Library の Fragment を使う implementation 'com.android.support:support-fragment:28.0.0-alpha1' implementation 'androidx.fragment:fragment:1.0.0-alpha1'
  30. 44.

    Layout • AppCompat : 必須 • ConstraintLayout : 必須 •

    CoordinatorLayout : ほぼ必須 implementation 'com.android.support:appcompat-v7:28.0.0-alpha1' implementation 'com.android.support.constraint:constraint-layout:28.0.0-alpha1' implementation 'com.android.support:coordinatorlayout:28.0.0-alpha1' implementation 'androidx.appcompat:appcompat:1.0.0-alpha1' implementation 'androidx.constraintlayout:constraintlayout:1.1.0' implementation 'androidx.coordinatorlayout:coordinatorlayout:1.0.0-alpha1'
  31. 45.

    Design Support Library • 必須 • Material Design に対応した Components

    集 implementation 'com.android.support:design:28.0.0-alpha1' implementation 'com.google.android.material:material:1.0.0-alpha1'
  32. 48.

    Behavior • Download Manager : ダウンロード機能が必要なら • Media & Playback

    : ⾳音楽や動画再⽣生機能が必要なら • Permissions : ランタイムパーミッション対応は必須 • Notifications : Channel 対応は必須 • Sharing : 共有機能はユーザビリティ的にほぼ必須
  33. 49.

    Slices • New • https://developer.android.com/guide/slices/ • ⾃自分のアプリの情報を他のアプリに表示する仕組み • Google Search

    が 2018 summer 対応予定 implementation 'androidx.slice:slice-core:1.0.0-alpha2' implementation 'androidx.slice:slice-builders:1.0.0-alpha2'
  34. 51.

    Architecture • Data Binding : 使いたければ • Lifecycles : LiveData

    を使うなら • LiveData : 便便利利 • ViewModel : すごい便便利利 • Room : 使いたければ
  35. 52.

    Navigation • New • 遷移関係を XML で宣 ⾔言的にかける • 実際の遷移時には結局

    コードが必要 • 便便利利度はまだよくわか らない
  36. 53.

    Navigation • https://developer.android.com/topic/libraries/architecture/ navigation/ • コードラボ • https://codelabs.developers.google.com/codelabs/ android-navigation/ implementation

    'android.arch.navigation:navigation-fragment:1.0.0-alpha01' implementation 'android.arch.navigation:navigation-ui:1.0.0-alpha01'
  37. 54.

    WorkManager • New • API Level 14 以降に対応 • 内部で

    JobScheduler や (あれば) FirebaseJobDispatcher や AlarmManager を利利⽤用 • Background Service がシステムによって終了了させられる ようになったので、WorkManager に切り替える
  38. 58.

    APK • Android アプリの配布形 式 • [Build] - [Build Bundle(s)

    / APK(s)] - [Build APK(s)] • [Build] - [Generate Signed Bundle / APK] - [APK]
  39. 60.

    Android App Bundle • 解像度やCPUなどデバイ スのスペックに必要なリ ソースだけインストール する仕組み • [Build]

    - [Build Bundle(s) / APK(s)] - [Build Bundle(s)] • [Build] - [Generate Signed Bundle / APK] - [Bundle]
  40. 61.
  41. 63.
  42. 64.

    まとめ • 今後 targetSdkVersion は最新の stable に • Material Theme

    Editor、Gallery を使ってみよう • Kotlin で書いてみよう • Jetpack の機能を把握しておこう • アプリのサイズが⼤大きいなら Android App Bundle の利利⽤用 を検討しよう