Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

Yuki Anzai

June 02, 2018
Tweet

More Decks by Yuki Anzai

Other Decks in Technology

Transcript

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

    @yanzm (やんざむ) • uPhyca Inc. (株式会社ウフィカ) • Google Developer Expert for Android あんざいゆき
  2. 10 years • いろんな UI の流⾏行行り → OS のデザイン変遷 →

    Material Design → Material Theming • 新しい機能のバックポートが欲しい → Support Library • ユースケースに対し様々な実現⽅方法 → ベストプラクティス → Jetpack • いろんなアプリが電池を消費 → OS で制限 → Doze, App Standby • アプリのサイズがどんどんでかくなって⼤大変 → Android App Bundle • アプリがどんどん複雑になって⼤大変 → Android Architecture Components
  3. 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
  4. 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
  5. IDE : Android Studio Preview • https://developer.android.com/studio/preview/ • Canary Channel

    : ⼀一番最新の開発バージョン • Dev Channel : Canary の次 • Beta Channel : Dev の次 • Stable Channel : 安定版
  6. 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/
  7. 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/
  8. Gallery • https://gallery.io/login • デザインした画⾯面のストック&共有 • Google Account でログイン •

    バージョン管理理 • コメント • Inspect, Material Components へのリンク • Material Theme Editor 連携
  9. Material Gallery App (Android, iOS) • https://gallery.io/apps • Gallery Project

    の各 image を デバイスで表示 • コメント⼊入⼒力力 https://www.youtube.com/watch?v=TIB3q68ZHYw
  10. レイアウト • ConstraintLayout • 制約(Constraint)を指定して View を配置 • レイアウトエディタ対応 •

    https://developer.android.com/training/constraint-layout/ • CoordinatorLayout • Behavior を指定して View の動きを制御
  11. レイアウトエディタ • GUI でレイアウトを編集 • Android では XML で レイアウトを定義

    • GUI での変更更は XML に適⽤用される • https:// developer.android.com/ studio/write/layout-editor
  12. 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 が最後 のリリースになる
  13. What is Android Jetpack? • Android Jetpack はすぐれた Android アプリを作るための

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

    で開発するなら⼊入れると便便利利 • Multidex : 必要になれば必須 • Test : 必須
  15. 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'
  16. 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'
  17. 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'
  18. 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'
  19. Behavior • Download Manager : ダウンロード機能が必要なら • Media & Playback

    : ⾳音楽や動画再⽣生機能が必要なら • Permissions : ランタイムパーミッション対応は必須 • Notifications : Channel 対応は必須 • Sharing : 共有機能はユーザビリティ的にほぼ必須
  20. 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'
  21. Architecture • Data Binding : 使いたければ • Lifecycles : LiveData

    を使うなら • LiveData : 便便利利 • ViewModel : すごい便便利利 • Room : 使いたければ
  22. Navigation • New • 遷移関係を XML で宣 ⾔言的にかける • 実際の遷移時には結局

    コードが必要 • 便便利利度はまだよくわか らない
  23. 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'
  24. WorkManager • New • API Level 14 以降に対応 • 内部で

    JobScheduler や (あれば) FirebaseJobDispatcher や AlarmManager を利利⽤用 • Background Service がシステムによって終了了させられる ようになったので、WorkManager に切り替える
  25. APK • Android アプリの配布形 式 • [Build] - [Build Bundle(s)

    / APK(s)] - [Build APK(s)] • [Build] - [Generate Signed Bundle / APK] - [APK]
  26. Android App Bundle • 解像度やCPUなどデバイ スのスペックに必要なリ ソースだけインストール する仕組み • [Build]

    - [Build Bundle(s) / APK(s)] - [Build Bundle(s)] • [Build] - [Generate Signed Bundle / APK] - [Bundle]
  27. まとめ • 今後 targetSdkVersion は最新の stable に • Material Theme

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