Save 37% off PRO during our Black Friday Sale! »

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

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

D2bcabeeb1ddff142fb8988b412cb4d3?s=128

Yuki Anzai

June 02, 2018
Tweet

Transcript

  1. Google I/O 2018 に⾒見見る これからの Android アプリ開発⽅方法 あんざいゆき @yanzm

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

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

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

    • 最新の stable : Android Studio 3.1
  8. IDE : Android Studio Preview • https://developer.android.com/studio/preview/ • Canary Channel

    : ⼀一番最新の開発バージョン • Dev Channel : Canary の次 • Beta Channel : Dev の次 • Stable Channel : 安定版
  9. Channel Setting • [Android Studio] - [Preferences…] - [Appearance &

    Behavior] - [System Settings] - [Updates]
  10. Emulator • 今のエミュレータはめちゃ速い(昔は遅かった) • Play Store ⼊入りも作れる

  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++
  12. デザイン

  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/
  14. Material Theming • プロダクトのブランドをよりよく反映させるために、体 系的に Mateiral Design をカスタマイズする機能 • https://material.io/design/material-theming/#material-

    theming • Tools • Material Theme Editor • Gallery
  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/
  16. None
  17. None
  18. None
  19. Gallery • https://gallery.io/login • デザインした画⾯面のストック&共有 • Google Account でログイン •

    バージョン管理理 • コメント • Inspect, Material Components へのリンク • Material Theme Editor 連携
  20. None
  21. None
  22. None
  23. None
  24. None
  25. None
  26. None
  27. None
  28. Upload from Sketch to Gallery

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

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

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

    • GUI での変更更は XML に適⽤用される • https:// developer.android.com/ studio/write/layout-editor
  32. Support Library To AndroidX

  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 が最後 のリリースになる
  34. AndroidX • ⾃自分のアプリのソースコードだけでなく、利利⽤用している ライブラリ内も変更更が必要 • [Refactor] - [Refactor to AndroidX…]

    • Android Studio 3.2 Canary • compileSdkVersion 28 以上 • 28はまだないので “android-P”
  35. Android Jetpack

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

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

  39. Foundation • AppCompat : 必須 • Android KTX : Kotlin

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

  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'
  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'
  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'
  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'
  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'
  46. Palette • アプリの機能として必要なら • 画像から⾊色をピックするライブラリ implementation 'com.android.support:palette-v7:28.0.0-alpha1' implementation 'androidx.palette:palette:1.0.0-alpha1'

  47. Jetpack : Behavior

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

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

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

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

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

    JobScheduler や (あれば) FirebaseJobDispatcher や AlarmManager を利利⽤用 • Background Service がシステムによって終了了させられる ようになったので、WorkManager に切り替える
  55. WorkManager • ⼀一度切りの⾮非同期処理理、定期的なタスク、両⽅方サポート • 実⾏行行を保証 • 制約(ネットワークに接続した時、電源につながった時 など)をサポート • Work(処理理)の組み合わせ(並列列、直列列)をサポート

    • Google Play Services が使えないデバイスもOK
  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'
  57. リリース

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

    / APK(s)] - [Build APK(s)] • [Build] - [Generate Signed Bundle / APK] - [APK]
  59. APK analyzer • [Build] - [Analyze APK…] • APK のサイズ、リソース、

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

    - [Build Bundle(s) / APK(s)] - [Build Bundle(s)] • [Build] - [Generate Signed Bundle / APK] - [Bundle]
  61. None
  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/
  63. まとめ

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

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