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. Google I/O 2018 に⾒見見る
    これからの
    Android アプリ開発⽅方法
    あんざいゆき

    @yanzm

    View Slide

  2. • blog : Y.A.M の雑記帳
    • y-anz-m.blogspot.com
    • twitter : @yanzm (やんざむ)
    • uPhyca Inc. (株式会社ウフィカ)
    • Google Developer Expert for Android
    あんざいゆき

    View Slide

  3. View Slide

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

    • 新しい機能のバックポートが欲しい → Support Library

    • ユースケースに対し様々な実現⽅方法 → ベストプラクティス → Jetpack

    • いろんなアプリが電池を消費 → OS で制限 → Doze, App Standby

    • アプリのサイズがどんどんでかくなって⼤大変 → Android App Bundle

    • アプリがどんどん複雑になって⼤大変 → Android Architecture
    Components

    View Slide

  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

    View Slide

  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

    View Slide

  7. IDE : Android Studio
    • https://developer.android.com/studio/

    • IntelliJ IDEA ベース

    • 最新の stable : Android Studio 3.1

    View Slide

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

    • Canary Channel : ⼀一番最新の開発バージョン

    • Dev Channel : Canary の次

    • Beta Channel : Dev の次

    • Stable Channel : 安定版

    View Slide

  9. Channel Setting
    • [Android Studio] - [Preferences…] - [Appearance &
    Behavior] - [System Settings] - [Updates]

    View Slide

  10. Emulator
    • 今のエミュレータはめちゃ速い(昔は遅かった)

    • Play Store ⼊入りも作れる

    View Slide

  11. ⾔言語
    • Java

    • Kotlin

    • https://developer.android.com/kotlin/

    • https://codelabs.developers.google.com/codelabs/build-
    your-first-android-app-kotlin/

    • https://codelabs.developers.google.com/codelabs/taking-
    advantage-of-kotlin/

    • C++

    View Slide

  12. デザイン

    View Slide

  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/

    View Slide

  14. Material Theming
    • プロダクトのブランドをよりよく反映させるために、体
    系的に Mateiral Design をカスタマイズする機能

    • https://material.io/design/material-theming/#material-
    theming

    • Tools

    • Material Theme Editor

    • Gallery

    View Slide

  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/

    View Slide

  16. View Slide

  17. View Slide

  18. View Slide

  19. Gallery
    • https://gallery.io/login

    • デザインした画⾯面のストック&共有

    • Google Account でログイン

    • バージョン管理理

    • コメント

    • Inspect, Material Components へのリンク

    • Material Theme Editor 連携

    View Slide

  20. View Slide

  21. View Slide

  22. View Slide

  23. View Slide

  24. View Slide

  25. View Slide

  26. View Slide

  27. View Slide

  28. Upload from Sketch to Gallery

    View Slide

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

    • Gallery Project の各 image を
    デバイスで表示

    • コメント⼊入⼒力力
    https://www.youtube.com/watch?v=TIB3q68ZHYw

    View Slide

  30. レイアウト
    • ConstraintLayout

    • 制約(Constraint)を指定して View を配置

    • レイアウトエディタ対応

    • https://developer.android.com/training/constraint-layout/

    • CoordinatorLayout

    • Behavior を指定して View の動きを制御

    View Slide

  31. レイアウトエディタ
    • GUI でレイアウトを編集

    • Android では XML で
    レイアウトを定義

    • GUI での変更更は XML
    に適⽤用される

    • https://
    developer.android.com/
    studio/write/layout-editor

    View Slide

  32. Support Library
    To
    AndroidX

    View Slide

  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 が最後
    のリリースになる

    View Slide

  34. AndroidX
    • ⾃自分のアプリのソースコードだけでなく、利利⽤用している
    ライブラリ内も変更更が必要

    • [Refactor] - [Refactor to AndroidX…]

    • Android Studio 3.2 Canary

    • compileSdkVersion 28 以上

    • 28はまだないので “android-P”

    View Slide

  35. Android Jetpack

    View Slide

  36. What is Android Jetpack?
    • Android Jetpack はすぐれた Android アプリを作るための
    コンポーネント・ツール・ガイダンスのセット

    • https://android-developers.googleblog.com/2018/05/
    use-android-jetpack-to-accelerate-your.html

    • 使う使わないは⾃自由

    • 使いたいものだけ使えばよい

    View Slide

  37. View Slide

  38. Jetpack : Foundation

    View Slide

  39. Foundation
    • AppCompat : 必須

    • Android KTX : Kotlin で開発するなら⼊入れると便便利利

    • Multidex : 必要になれば必須

    • Test : 必須

    View Slide

  40. Jetpack : UI

    View Slide

  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'

    View Slide

  42. Emoji
    • アプリとして必要なら
    implementation 'com.android.support:support-emoji-appcompat:28.0.0-alpha1'
    implementation 'com.android.support:support-emoji-bundled:28.0.0-alpha1'
    implementation 'com.android.support:support-emoji:28.0.0-alpha1'
    implementation 'androidx.emoji:emoji-appcompat:1.0.0-alpha1'
    implementation 'androidx.emoji:emoji-bundled:1.0.0-alpha1'
    implementation 'androidx.emoji:emoji:1.0.0-alpha1'

    View Slide

  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'

    View Slide

  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'

    View Slide

  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'

    View Slide

  46. Palette
    • アプリの機能として必要なら

    • 画像から⾊色をピックするライブラリ
    implementation 'com.android.support:palette-v7:28.0.0-alpha1'
    implementation 'androidx.palette:palette:1.0.0-alpha1'

    View Slide

  47. Jetpack : Behavior

    View Slide

  48. Behavior
    • Download Manager : ダウンロード機能が必要なら

    • Media & Playback : ⾳音楽や動画再⽣生機能が必要なら

    • Permissions : ランタイムパーミッション対応は必須

    • Notifications : Channel 対応は必須

    • Sharing : 共有機能はユーザビリティ的にほぼ必須

    View Slide

  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'

    View Slide

  50. Jetpack : Architecture

    View Slide

  51. Architecture
    • Data Binding : 使いたければ

    • Lifecycles : LiveData を使うなら

    • LiveData : 便便利利

    • ViewModel : すごい便便利利

    • Room : 使いたければ

    View Slide

  52. Navigation
    • New

    • 遷移関係を XML で宣
    ⾔言的にかける

    • 実際の遷移時には結局
    コードが必要

    • 便便利利度はまだよくわか
    らない

    View Slide

  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'

    View Slide

  54. WorkManager
    • New

    • API Level 14 以降に対応

    • 内部で JobScheduler や (あれば)
    FirebaseJobDispatcher や AlarmManager を利利⽤用

    • Background Service がシステムによって終了了させられる
    ようになったので、WorkManager に切り替える

    View Slide

  55. WorkManager
    • ⼀一度切りの⾮非同期処理理、定期的なタスク、両⽅方サポート

    • 実⾏行行を保証

    • 制約(ネットワークに接続した時、電源につながった時
    など)をサポート

    • Work(処理理)の組み合わせ(並列列、直列列)をサポート

    • Google Play Services が使えないデバイスもOK

    View Slide

  56. WorkManager
    • https://developer.android.com/topic/libraries/architecture/
    workmanager

    • コードラボ

    • https://codelabs.developers.google.com/codelabs/
    android-workmanager/
    implementation 'android.arch.work:work-runtime:1.0.0-alpha02'

    View Slide

  57. リリース

    View Slide

  58. APK
    • Android アプリの配布形


    • [Build] - [Build
    Bundle(s) / APK(s)] -
    [Build APK(s)]

    • [Build] - [Generate
    Signed Bundle / APK] -
    [APK]

    View Slide

  59. APK analyzer
    • [Build] - [Analyze APK…]

    • APK のサイズ、リソース、
    Manifest などが⾒見見れる

    View Slide

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

    • [Build] - [Build Bundle(s) /
    APK(s)] - [Build
    Bundle(s)]

    • [Build] - [Generate
    Signed Bundle / APK] -
    [Bundle]

    View Slide

  61. View Slide

  62. Android App Bundle
    • https://developer.android.com/guide/app-bundle/

    • https://developer.android.com/platform/technology/app-
    bundle/

    • コードラボ

    • https://codelabs.developers.google.com/codelabs/
    your-first-dynamic-app/

    View Slide

  63. まとめ

    View Slide

  64. まとめ
    • 今後 targetSdkVersion は最新の stable に

    • Material Theme Editor、Gallery を使ってみよう

    • Kotlin で書いてみよう

    • Jetpack の機能を把握しておこう

    • アプリのサイズが⼤大きいなら Android App Bundle の利利⽤用
    を検討しよう

    View Slide