A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Session title | Description | 受講対象者 / Intended Audience | Session format | Language | カテゴリ / Category | スピーカー / Speakers | |||||||||||||||||||
2 | Prepare your project for KMM | Kotlin Multiplatform is not yet stable. Despite this, many companies have taken the leap of faith and have started adopting it in their production projects. In this session, we will see an overview about KMM (Kotlin Multiplatform Mobile) and how to prepare your project to adopt it. A deep look at the modularization architecture and how it facilitates sharing the maximum layers between the different stacks. We will make the focus on Android and iOS, specially coming from native projects. We will explain how to migrate your project in order to integrate it with a KMM module. Lastly, we can not forget that we can use the shared modules on Desktop and Web Apps. Will you take the leap of faith? | Kotlin Basic MVVM architecture KMM adption starting from Android Project Modularisation | 40 minutes | English | Kotlin | Oussama Ben wafi | |||||||||||||||||||
3 | Android/Chromeで体験できる認証のための標準化仕様の現在と未来 | パスワード認証の限界が語られ、"パスワードレス" という用語が使われ始めてから数年が経ちました。 実際に、我々の周りにあるユーザー認証の仕組みはどう変わったでしょうか?パスワードは完全になくなりましたか? 残念ながら、パスワード認証はまだたくさんのサービスで使われています。 しかし、2段階認証はGoogleが本格的にコンシューマ向けに始めてから10年以上経ってようやく一般的になりつつあります。 パスワード認証の後にSMSやEメールで短い文字列を送信したり、Google Authenticatorが表示した文字列を利用しているサービスはたくさんあります。 FIDOはどうでしょう。指紋認証などでモバイルアプリやWebアプリにログインできるサービスも少しずつ出てきています。 また、GoogleやAppleのような巨大プラットフォーマーが提供するID連携機能を利用するアプリも少しずつ増えています。 このような様々な認証機能は、Web標準規格やブラウザのAPI実装によって実現されています。 これらの仕組みですが、今後はどう進化していくと思われますか? 直感的に想像できることといえば「手元のスマホを使ってログイン」することでしょう。 これはいわゆる "Decoupled Authentication" という考えであり、認証処理を行う端末とその結果を利用するサービスが動作する端末が分離することで様々なユースケースへの適用が考えられます。 本セッションでは * WebOTP * OATH(TOTP) * FIDO, WebAuthn, passkey * Identity Federation & FedCM といったキーワードについて、 * AndroidのChrome環境でどう動くのか * PCのWebアプリケーションとAndroid端末との組み合わせで何が実現できるのか といったあたりを、デモ動画等を交えて解説します。 * 個別の仕様はどういうもので、現在はどのように使われているのか * 将来はどうなる(ことを夢見ている)のか という、現在と未来の姿を想像できることを目的とします。本セッションにより、少しでも世の中のサービスの認証機能が安全安心、利便性に優れたものになるきっかけとなれば幸いです。 | 以下のような開発者が対象となるでしょう。 1. モバイルアプリからブラウザを呼び出して認証処理やID連携を実装している開発者 2. AndroidのChrome上で動作することを意識しているWebアプリケーション開発者 3. PC向けのWebアプリケーションとAndroid端末を組み合わせた認証機能に興味がある開発者 4. Web標準技術が今後どのような姿になり、使われていくかに興味を持っている開発者 | 40 minutes | 日本語 / Japanese | Security / Identity / Privacy | ritou | |||||||||||||||||||
4 | The world of Android wireless communications without Internet | Since smartphones in recent years are usually connected to the Internet in some way, people are usually not so aware that the device you hold in your hand is equipped with a wealth of communication methods that are not dependent on it. In fact, Android officially supports Bluetooth (Classic), Wi-Fi Direct, and Bluetooth Low Energy (BLE), and most devices available today support these APIs. This session will provide an overview of these features, a brief description of how to use them, and general guidelines on how to use each one differently. It is hard to keep track of all of these at once, so this session should be interesting for Android developers who have not used many communication methods other than the Internet. | This session is a 101 session on Bluetooth (both classic and BLE) and Wi-Fi Direct available for Android, so interested Android developers can watch without prior knowledge. On the other hand, viewers who are already familiar with these in their work may find them slightly lacking. | 40 minutes | English | Androidプラットフォーム (Android Platform) | @fushiroyama | |||||||||||||||||||
5 | FlutterをROS(ロボティクス)と一緒使ったらマジですごかった話 | 通常、RoboticsではROSとAndroidまたはQTを組み合わせてユーザーアプリケーションを開発しています。今回Flutter3が発表され、デスクトップ、組み込み領域で使用できるように機能が拡張されました。生産性が高いユーザーアプリケーションを作成するためにロボットにFlutterを適用してみました。 そのためには、ロボットとアプリ間通信するためのプロトコルライブラリの開発が必要です。パッケージ開発方法と物語、そして実務で使用している例示を通じて使用機を紹介したいと思います。 関連技術 - Flutter & Flutter Desktop (Linux) - ROS2 - Websocket - gRPC | - FlutterやFlutter desktopに興味がある人 - Androidとrosを使ってみた人 - ロボットが好きな人 | 40 minutes | 日本語 / Japanese | クロスプラットフォーム (Cross-platform Development) | DREAMWALKER | |||||||||||||||||||
6 | The art of hiding sensitive info in plain sight | An android application usually holds sensitive information, like names, tokens and even sometime bank data that we would NOT like to fall into the wrong hands. These days applications can be reverse engineered, and reveal a great chunk of their code. In this session, we will find out exactly which parts of our code can be hacked, and we will also look at ways of securing our data.... in plain sight! | No specific audience. Just general Android knowledge is needed and interest about security. | 40 minutes | English | Security / Identity / Privacy | George Kortsaridis | |||||||||||||||||||
7 | Getting started with Dagger and Hilt | Dagger is a powerful tool for setting up dependency injection for your app. With that comes a step learning curve, this talk will demystify setting up Dagger with a focus on using the Hilt library. You can also expect to learn about best practices and tips for reading error messages in Dagger. | Expected understanding of basic Android knowledge (what an activity, fragment and application are.) | 40 minutes | English | 開発ツール&サービス (Productivity and Tools, Service) | Zach Westlake | |||||||||||||||||||
8 | アプリ アーキテクチャ ガイドの解説 | 最近弊社ではAndroidアプリ開発者の皆さまにより役立つ知識を与えるため、アプリアーキテクチャの設計の実装に関するガイドを公開しています。今回のセッションではこのガイドをよく理解し、より効果的に応用するための知識を共有したいと思います。 目次: - Googleのアーキテクチャ ガイドが言及しないトピック (例: Clean Architecture) - UI層 - ViewModel実装のあるべき姿とアンチパターン - ドメイン層 - あなたのアプリに役に立つ設計戦略 - データー層 - 実装の時考慮して欲しい点 - 依存性注入 - Hiltを使うべき理由とその限界 - マルチモジュール - 実際にどうわけたらいいのか | Android フレームワークの基本について熟知している方 | 40 minutes | 日本語 / Japanese | アプリアーキテクチャ (Application Architecture) | Saryong Kang | |||||||||||||||||||
9 | Androidでもドラッグ&ドロップがしたい! | iOSでは比較的馴染みのあるドラッグ&ドロップ操作ですが、Androidではほとんど実装を見かけません。 しかし、RecyclerViewのItemTouchHelperを利用すればリストのドラッグ&ドロップ操作を実装可能です。 また、2022年のGoogle I/OでJetpack DragAndDrop ライブラリの1.0.0が登場し、アプリ内や異なるアプリ間でのドラッグ&ドロップ操作をサポートしました。 このセッションではAndroidアプリでのドラッグ&ドロップ操作の可能性を探ります。 - ItemTouchHelperを用いたリストのドラッグ&ドロップ操作 - Jetpack DragAndDropについて | - Androidでドラッグ&ドロップ操作を実装してみたい方 | 25 minutes | 日本語 / Japanese | Jetpack | m.coder | |||||||||||||||||||
10 | Offline first Flutter applications | Even though the world is becoming more "online" every day, there are still a lot of parts of the world that we all suffer connectivity problems. And, as we all know, as good developers, we should not let that affect the users' experiences in our applications. Thinking "offline" first is a concept that we all suffer to achieve. Luckily there are some tools provided to us to make our lives easier. One of them is DataStore from AWS Amplify. Amplify DataStore provides a programming model for leveraging shared and distributed data without writing additional code for offline and online scenarios, which makes working with distributed, cross-user data just as simple as working with local-only data. With this talk, I will share my experience with thinking "offline" first with the applications I worked on before. You will learn about, what Flutter offers for being "offline" first, how you can achieve a great experience for your users by architecting your app the correct way, and most importantly, you will learn what NOT to do. :) | Intermediate knowledge on programming and beginner knowledge on Flutter is important | 40 minutes | English | クロスプラットフォーム (Cross-platform Development) | Salih Guler | |||||||||||||||||||
11 | 実践 `edge-to-edge`: 端から端まで解説 | `edge-to-edge`とはその名の通り、システムの領域も含めた画面の "端から端" を全てアプリの領域として描画する機能です。 Googleはアプリへの没入感を高めるために、この`edge-to-edge`を推奨しています。 `edge-to-edge` を適用するには、アプリの描画が全画面になるようにフラグを設定し、システムバー(ステータスバーとナビゲーションバー)の色を設定するだけでも十分に思われます。 しかし、実際には考慮すべき点や落とし穴があるため一筋縄では適用できません。例えば、既存のアプリに適用する場合は、UIデザインの変更が必要になります。 他にも、Android デバイスによっては、システムバーに対してデバイス固有の変更が施されている場合があり、その対処も簡単ではありません。 本セッションでは、実際にコミュニケーションアプリLINE に`edge-to-edge`を適用した際に得られた知見を元に、以下の内容を紹介します。 ・Googleが提唱する`edge-to-edge`の適用ポリシーについて ・UIをデザインする上での`edge-to-edge`の適用基準について ・通常のアプリとJetpack Composeで構成されたアプリそれぞれに対しての適用方法 ・LINE Androidアプリに対して`edge-to-edge`を適用する際に発生した問題点・落とし穴やその解決方法について ぜひ皆さんもこのセッションから`edge-to-edge`の知見を得て、アプリへの適用を実践してみてください! | ・既存のAndroidアプリにedge-to-edgeに適用したい人 ・Android OSの新機能を既存のアプリに適用したい人 | 25 minutes | 日本語 / Japanese | Androidプラットフォーム (Android Platform) | Yuki Ando | |||||||||||||||||||
12 | Molecule: Using Compose for Presentation Logic | Jetpack Compose can be used for more than just emitting a user interface. Molecule is a library that allows `Flow` or `StateFlow` streams to be built using Compose. This talk will cover: - Comparing Compose to Rx and Flow APIs for presentation logic - The benefits Compose can have on readability - How Cash App uses Molecule to build presenters - How to adopt Molecule in existing apps - Testing strategies, gotchas, and other interesting quirks | Android developers who have built at least a few screens in Compose UI, and have a rough understanding of coroutines and Flow. | 25 minutes | English | Jetpack Compose | Chris Horner | |||||||||||||||||||
13 | Add-to-Appの戦い方 | AndroidとiOSに新機能を追加したいものの、WebViewでは少し用途にあわない、といった場面に出くわすことはないでしょうか。 KotlinやSwiftで個別に実装はできるが、しかし工数的に厳しい……とき、FlutterのAdd-to-Appが利用できるかもしれません。 本セッションでは、FlutterのAdd-to-Appを活用した機能開発と、そのメリット・デメリットを紹介します。 Add-to-AppはFlutterの機能を、KotlinやSwiftから呼び出し、既存のアプリケーションに組み込むことができる機能です。 Flutterへの段階的なリプレースのため、開発工数削減のためなど、さまざまな目的で利用できます。 Add-to-Appのはじめ方は、非常に簡単です。 しかし、Add-to-Appを採用した後に気にすべきことや、Add-to-App固有の問題などはあまり紹介されていません。 このセッションでは、Add-to-Appを利用したアプリケーション開発について、つまりAdd-to-Appの戦い方について紹介します。 * Add-to-Appとは * Add-to-Appでできること * Add-to-Appの仕組み * Add-to-Appのメリット * ロジックの共通化、工数の削減 * 段階的なリプレース * Add-to-Appのデメリット * アプリサイズ、ビルド時間の増加問題 * ビルドシステムに関わる問題 * スクリーンサイズ、回転問題 | * 複数プラットフォームに対応する工数に危機感を感じているエンジニア * 段階的なFlutterへのリプレース方法を探しているエンジニア * Add-to-Appを導入したものの、課題感を感じているエンジニア | 25 minutes | 日本語 / Japanese | クロスプラットフォーム (Cross-platform Development) | koji-1009 | |||||||||||||||||||
14 | How to Test Your Compose UI | While Compose is easy to adopt, not creating legacy code right at the start of such a journey requires some extra planning, awareness, and most importantly, testing. We'll have a look at how we can test pure Compose UIs as well as hybrid ones that have Views and composables too. In this talk, we'll learn what the semantics tree is, what is its relation to the composition, how we can manipulate it in composables using the Semantics modifier, how we can implement composables with testability in mind, and how we can test pure Compose and hybrid UIs. | Those Android developers, who are already somewhat familiar with Jetpack Compose, and want to write UI tests for the Compose-based UIs they are creating. | 40 minutes | English | Jetpack Compose | István Juhos | |||||||||||||||||||
15 | Anatomy of Dynamic color | Material 3で登場したDynamic colorは、ユーザーの壁紙をもとにパーソナライズされたカラーシステムをアプリに適用できる機能です。色という非常に主観的な要素をカスタマイズ可能にすることで、ユーザーの好みやアクセシビリティなどのニーズにアプリのUIを対応させることができます。 Android 12以上を対象とした機能ですが、今後の対象OSの使用率上昇に伴い、よりユーザーに広く使われる機能となっていくことが予想されます。 しかし、いざDynamic colorのアプリへの導入を考える際に、自動生成されるカラーシステムは信頼できるものなのか、プロダクト固有の意味ある色まで動的に変更されてしまうのかなど、さまざまな疑問が湧いてくるかと思います。 そこで本セッションでは、Dynamic colorはどのような仕組みの上に堅牢なカラーシステムを構築し、そしてアプリ固有の色とどのように向き合っているのかについてお話しします。その際に、Dynamic colorについて内部の仕組みから徹底解剖することで、聴講者の皆様がDynamic colorを深く理解し、導入についての議論をチームで円滑に進められるようになることを目指します。 アジェンダ - Dynamic colorの概要 - Dynamic colorにおける色空間 - 従来のHSL色空間の課題 - HCT色空間の採用 - Accessibility要件を満たすカラーパレットの動的な構築 - 調和の取れたCustom colorsの導入 | - Dynamic colorを理解したい方 - Dynamic colorの導入を検討している方 | 25 minutes | 日本語 / Japanese | UI・UX・デザイン (UI・UX・Design) | ロクネム | |||||||||||||||||||
16 | Jetpack Composeを用いて、Canvasを直接触るようなコンポーネントを作成する方法 | Jetpack Composeは、ライブラリにあるコンポーネントでアプリを組むのは従来のAndroid Viewに比べて簡単で開発時間の短縮にもつながる優れたUIツールキットです。 一方、Android View時代だったら、Viewを継承して、オーバーライドしたonDraw()に処理をガリガリ書いていたであろう完全なオリジナルコンポーネントを作成しようとした時、どうしたらよいのか悩まれる方もいるのではないでしょうか。 私は去年 Jetpack Composeを用いて、そのようなコンポーネントを持つアプリをリリースしました。 ユーザーから受け取った端末内画像を表示し、その上を指でなぞると軌跡が切り取られて透明表示のレイヤーが表示されるようなアプリです。 そのアプリで使用しているコードを例に、jetpack Composeを用いて完全なオリジナルコンポーネントを作成する際にヒントにできるような内容をお話しする予定です。 | ・ Jetpack Composeを用いて、Canvasを直接触るようなコンポーネントを作成する方法に興味がある方 ・ Jetpack Compose初心者の方 | 40 minutes | 日本語 / Japanese | Jetpack Compose | kkkkan | |||||||||||||||||||
17 | Jetpack Compose で Material Design 3 | Now in Android アプリなど最近公開されたサンプルアプリでは Material Design 3 の Compose ライブラリ (androidx.compose.material3) が利用されています。 現状ではまだ alpha ですが、主要なコンポーネントが一通り揃ってきており、Material Design 3 と合わせてキャッチアップするいいタイミングです。 このセッションではまず Material Design 3 について復習し、次に compose.material3 でのテーマの作り方を解説します。 Material Design 3 のテーマを自分のアプリ用にカスタマイズするには、Color, Shape, Typography などの設定がどのコンポーネントのどこで使われているかを把握する必要があります。 これらの利用箇所を整理した上で compose.material3 に用意されているコンポーネントを紹介します。 最後にアプリのブランドカラーを保持しつつ Dynamic Color に対応する方法を紹介します。 | Jetpack Compose を使っていて Material Design 3 への移行を考えている人 Material Design 3 について知りたい人 | 40 minutes | 日本語 / Japanese | UI・UX・デザイン (UI・UX・Design) | Yuki Anzai | |||||||||||||||||||
18 | Android/iOSアプリを協調開発するチーム 〜スクラム開発の実践とその先へ〜 | Android・iOSエンジニアが1つのアプリをそれぞれKotlinとSwiftで作る際、どうすれば効率良く開発を進めることができるでしょうか?異なるプラットフォーム開発の間でどのようにして知見を共有すれば良いのでしょうか?このセッションでは、AndroidエンジニアとiOSエンジニアが協調しながら開発をしている例の一つとして、日々進化している私達のチームを紹介します。 私達はGoogleが提唱するDesgin Docsと呼ばれるドキュメント手法を、マルチプラットフォーム用に拡張した手法を提案します。Desgin Docsは実際に実装を行う前に書くドキュメントの1つで、開発する機能の背景・設計・検討する実装方法を予めまとめ、レビュープロセスを経ることで属人性や実装の出戻りを排除します。私達はAndroid・iOSで共有のDesign Docsを用意することで、マルチプラットフォーム開発であってもAndroidチームとiOSチームの知見を共有する試みを行っています。 また、スクラム開発を実践するだけではなく我々に合わせて様々なチャレンジをしてきました。例えば、より使いやすいアプリをお客様に使ってもらうため、ドッグフーディングと呼ばれる、QAとは別に自分達で成果物を触って改善や問題を事前に発見する手法をスクラムイベントの1つとして日常的に実践しています。 プレゼンテーションでは、Android/iOSエンジニアが一つのチームとして楽しく協調しながら開発を進めていく経験や工夫について、模擬機能開発を例にお話します。 | Android/iOS向けアプリをチームで開発している人。 Android/iOSエンジニアが楽しく協力しあって開発したい人 | 25 minutes | 日本語 / Japanese | 開発体制 (Development Process) | Kuu, otao | |||||||||||||||||||
19 | 詳解Google Playの新しい定期購入 ~オファーの活用や実装例を添えて~ | Google Playの従来の定期購入では、何百ものSKUを作成したり、SKUを作成するたびにアプリを更新しないといけないなど、柔軟性に欠けたものとなっていました。 そこでGoogleは、Google Playの定期購入の販売方法を再構築したとGoogle I/O 2022で発表しました。 定期購入の機能や期間ごとにSKUを作成しなければならなかった仕組みを再構築し、定期購入に対して期間が紐づく基本プランを、基本プランに対してオファーを提供できるようにしたことで、定期購入のライフサイクル全体でオファーを作成する柔軟性を提供できるようになりました。 しかし、既に提供している定期購入では新しい定期購入の理想の形になっているわけではなく、従来の仕組みのまま新しい定期購入に自動移行されています。 新しい定期購入の仕組みを最大限活用するには、従来の定期購入と新しい定期購入の違いや、どのようなオファーを提供できるのかをチーム全体で理解した上でオファーを考える必要があります。 本セッションでは、Google Playの新しい定期購入の仕組みやオファーの活用方法、実際の実装についても詳しく解説し、新しい定期購入をより活用するための手助けをします。 発表予定の目次 - 従来の定期購入とその課題について - 再構築された新しい定期購入 - 自動移行された既存の定期購入 - 新しい定期購入の作り方 - 既存の定期購入における新しいオファーの活用方法 - Play Billing Library 4.xから5.xへの移行手順 - オファーの選択ロジックの決め方と実装方法 | Google Playで定期購入を提供している人 Google Playでこれから定期購入を提供したい人 Google Playの定期購入の仕組みや実装に興味がある人 Google Playの新しい定期購入でオファーを活用したい人 Play Billing Libraryの最新情報について知りたい人 | 40 minutes | 日本語 / Japanese | 開発ツール&サービス (Productivity and Tools, Service) | syarihu | |||||||||||||||||||
20 | Context Receiversに思いを馳せる | Kotlin 1.6.20より、Context Receiversがfirst previewとしてリリースされました。今まで非常に堅実に言語仕様を積み上げてきたKotlinですが、Context ReceiversによってKotlinでのコーディングに大きな変化が訪れる…かもしれません。もちろん、今まで通りの記述は可能ですし、自由度の高い言語仕様は濫用すべきではありません。Kotlinという言語を好んで選んでいる皆さんであれば重々承知の事でしょう。私もその1人です。 しかし、妄想は自由です。 Context Receiversの現在までの道のりを振り返りながら、Context ReceiversがKotlinのコードにどのような変化をもたらすか、どんな便利なExtensionが用意できそうか、Context Receiversが解決したいものは何なのか、…このセッションがそういった事を考えるきっかけとなれば幸いです。 | KotlinのExtensionsの仕様に興味がある KotlinのContext Receiversの仕様に興味がある Kotlindでのコーディングの引き出しを増やしたい | 25 minutes | 日本語 / Japanese | Kotlin | uzzu | |||||||||||||||||||
21 | Camera Xライブラリの魅力と最新機能を紐解く | Camera Xライブラリは、カメラアプリの開発を容易にすることを目的としたJetpackライブラリです。Android 5.0以降を搭載したデバイスをサポートしており、Camera 2ライブラリと比較して圧倒的に少ないコード量で一般的なカメラのユースケースや、デバイスのネイティブカメラアプリと同じ機能を実現することができます。 最新のstable版であるバージョン1.1.0は2022年6月末に公開されました。実に1年ぶりとなるマイナーバージョンのアップデートであり多くの新機能が加わっています。 本セッションでは、一見複雑多岐に見えるCamera Xライブラリを分かりやすく紹介しつつ、バージョン1.1.0の新機能を始めとした様々な魅力をお伝えすることで、カメラ機能を生かした新たなアイデアを生み出すきっかけとなることを目指します。 発表予定の目次 ・Camera Xライブラリの概要、基本的な実装の解説 ・バージョン1.1.0での新機能の解説・実演 ・バージョン1.1.0ではまだ実現できず課題を抱えていることの紹介 | ・カメラ機能をアプリに組み込みたいと考えている人 ・現在Camera 2ライブラリなどを使っている人 ・Camera Xライブラリを使うことでどのようなことができるのか興味を持っている人 | 25 minutes | 日本語 / Japanese | ハードウェア (Hardware) | Dai Miyamoto | |||||||||||||||||||
22 | Optimize your app for large screens | 日本市場でも、タブレットや折りたたみ式デバイスがリリースされてきています。これらのデバイスでは、アプリはスマホと比べて大きなスペースを利用することができます。また複数のアプリを同時に使うマルチタスク機能も、スマホと比べて多く利用されることもわかってきています。 このセッションでは、タブレットや折りたたみ式デバイスのような大画面デバイスをサポートするにあたって考慮しなければならないこと、そしてサポートするための技術的な選択肢について紹介します。具体的には Jetpack Window Manager や、SlidingPaneLayout、Activity embedding のような大画面デバイスをサポートするために有用な API、レスポンシブレイアウトを実現するための方法、大画面デバイスをサポートする際に利用できるテスト手法について紹介します。 | Android アプリ開発にある程度の経験をお持ちの方。Android アプリ開発の基本的な知識(例えば Activity のライフサイクルなど)を前提としたセッションです。アプリ開発の基本的な知識をお持ちでない方は、セッションを楽しんでいただけない可能性が高いように思います。 セッションで表示するサンプルコードを Kotlin で記述します。Kotlin の基本的な文法を知っている方であれば、よりセッションを楽しんでいただけると思います。 | 40 minutes | 日本語 / Japanese | アプリアーキテクチャ (Application Architecture) | Chiko | |||||||||||||||||||
23 | Gradle Managed Virtual Devicesで変化するエミュレータ活用術 | 皆さんはAndroidエミュレータを使っていますか? 普段の開発であたり前のように使われているエミュレータですが、Gradle Managed Virtual Devicesの導入によって、Androidエミュレータを取り巻く事情が大きく変化しようとしています。 Gradle Managed Virtual Devicesは、Android Gradle Plugin (AGP) 7.2より導入された機能です。 この機能を使うと、build.gradleにテストを走らせたいAndroidエミュレータのスペックを書くだけでAVD (Android Virtual Device)の作成・起動からテストまでをコマンド1つで実行できます。 また、(Canary版ではあるものの)Automated Test Device (ATD)と呼ばれる軽量なエミュレータも利用できるようになっています。 一見とても便利そうなGradle Managed Virtual Devicesですが、本機能にも得手不得手があります。 例えば、画面が表示されなかったり、テスト実行が終わると同時にエミュレータも終了したりするため、意図通り動かなかったときの解析が大変なことがあります。 本セッションでは、新しく導入されたGradle Managed Virtual Devices機能はどのようなものなのか、それによってエミュレータの使い方がどのように変化してくのか紹介します。 また、AGPの実装を調べて判明した内容を元に、Gradle Managed Virtual Devicesを活用する際に直面しがちなトラブルの解決方法も合わせて紹介します。 具体的には次のようなトピックなどについて紹介します。 これを機に、皆さんが持っているAndroidエミュレータの知識もアップデートしませんか? ・Gradle Managed Virtual Devicesでできること、できないこと ・Gradle Managed Virtual Devicesの活用例 ・Robolectricでは心許無いテストを動かす ・UIテストを動かす ・スクリーンショットテストを動かす ・CI環境上でGradle Managed Virtual Devicesを使うときの工夫 ・Gradle Managed Virtual Devicesの実行で問題が起きたときの調査方法Tips ※できるだけCanary版を含む最新のAGPの実装を調べた結果にもとづいて話す予定です。 | ・Gradle Managed Virtual Devices機能に興味はあるが、深く触っていない方 ・Gradle Managed Virtual Devices機能を試してみたものの、思った通りに動作せず諦めてしまった方 ・CI環境において、Androidエミュレータ上でテストを走らせる方法を知りたい方 | 40 minutes | 日本語 / Japanese | 保守・運用・テスト (Maintenance, Operations, and Testing) | sumio_tym | |||||||||||||||||||
24 | Introduction to Wear OS Application Development | みなさま、ウェアラブルデバイスはお使いですか? Google I/O 2022で、今秋にGoogle Pixel Watchが発売されることが公表されました。 Wear OSの開発をめぐる環境は、近年大幅にアップデートされています。 たとえばJetpack APIの登場や、Android Studio連携の強化、ドキュメントやコードラボの刷新などが行われました。 本セッションでは、Wear OSアプリのリリースを目標に、これを知っていればWear OSのアプリを実装できるという要点を紹介します。特に、Wear OSアプリの開発をこれから始められる初心者の方を想定し、Wear OSがどのようなもので、どんな機能が提供できるのかという点も詳しく解説します。 現在考えているセッションの内容は次のとおりです。 - Wear OSの開発について - Wear OSではどんなことができるのか - スマートフォンのアプリ開発との差異 - Wear OSアプリのUIとUX - APIのサポート状況の概観 - Jetpack API - Compose for Wear OS - Wear OSの開発の始め方 - セットアップ - デバッグ方法 - Wear OSアプリをつくる - Overlays - Tiles - Complications 発表をとおして、最新のWear OSアプリの開発情報について共有できれば幸いです。 | ・Wear OS向けのアプリに入門されたい方 ・以前、Wear OS向けのアプリを開発されていた方 ・最近のWear OS向けのアプリの開発情報をキャッチアップされたい方 | 40 minutes | 日本語 / Japanese | Androidプラットフォーム (Android Platform) | Ryo Yamazaki | |||||||||||||||||||
25 | Androidのモダンな技術選択にあわせて自動テストもアップデートしよう | ここ数年の間に、Jetpack ComposeやKotlin CoroutineおよびKotlin Flow等、Androidアプリ開発をする際に選択できる新しい技術が登場しました。現在では、多くのプロダクトがそれらの技術の導入や移行を進めています。 新しい技術を選択する際には当然キャッチアップが必要になりますが、あわせてその技術を使ったコードをどのようにテストするかを知ることも重要です。テストする手段を知ることで、新しい技術を使ったコードの動作確認も容易になりますし、その技術を更に理解することにも繋がります。 とはいえ、プロダクトコードへの導入を進めながら、テストの書き方までキャッチアップするのが大変なことも事実です。 本セッションでは、新しく採用されるケースが多い、次の技術のテスト方法を紹介します。また、より実践的な内容にするために、テスト方法をGuide to app architectureで推奨されるレイヤー毎(UI Layer・Data Layer)に整理して紹介していきます。 ・ Kotlin Coroutine ・ Kotlin Flow ・ Jetpack Compose ・ Dagger Hilt 扱うトピックが幅広いため、1つ1つのテスト方法について深堀りするよりも、それぞれの技術・レイヤーの最初のテストを書くために必要な知識を整理し、テストを書き始めるハードルを下げることを目指します。 | ・Kotlin CoroutineおよびKotlin Flow/Jetpack Compose/Dagger Hiltの導入をしたが、自動テストのキャッチアップができていない方 ・Kotlin CoroutineおよびKotlin Flow/Jetpack Compose/Dagger Hiltを導入予定で、自動テストの基本的な書き方に興味がある方 | 40 minutes | 日本語 / Japanese | 保守・運用・テスト (Maintenance, Operations, and Testing) | Nozomi Takuma | |||||||||||||||||||
26 | BLEを使ったアプリを継続的に開発するために | BLE、Bluetooth Low Energyとは近距離無線通信規格Bluetoothのうち低消費電力で利用できる通信モードで、IoTデバイスとスマートフォン間の通信などで広く利用されています。 AndroidというOSにおいては、端末依存の挙動やコールバック地獄などが存在するおちゃめなAPIとしても一部で名が通っています。 IoTデバイスを開発している企業にAndroidエンジニアとして入社した場合、BLE APIと付き合っていくことになります。現在提供されているコールバックベースのBLE APIを受け入れて真摯に向き合っていくのはおすすめできません。RxJava時代を経て今我々の手にはCoroutineという素晴らしい道具があります。このセッションではBLE APIを利用したデバイスとの通信の実装を解説した後に、私が経験したCoroutineを利用したメンテナンス性の高いコードへの書き換え事例やプラクティスを紹介します。 # こんな人に聴いて欲しい - BLE APIを利用するアプリを開発していて、コードのメンテナンスに疲れてしまった方 - これからBLE APIを利用するアプリを書こうとしている方 - メンテナンス性の高いBLE APIを利用するコードを書きたい方 # 話すこと - BLEに対応したデバイスとの通信を実装する方法 - 2022年、Coroutine/Flow時代のBLE APIプラクティス # 話さないこと - プロトコルの詳細 - BLE APIのおちゃめさ加減 # こんな人を待ってます - BleXを開発してくれるGoogler | BLE APIを利用するアプリを開発していて、コードのメンテナンスに疲れてしまった方 これからBLE APIを利用するアプリを書こうとしている方 メンテナンス性の高いBLE APIを利用するコードを書きたい方 | 25 minutes | 日本語 / Japanese | Android Framework | Moyuru | |||||||||||||||||||
27 | 今年リリースされたCTS-D (互換性テストスイート)をアプリ開発に活用しよう! | Androidアプリを開発していて、あるデバイスでは動作するのに、他のデバイスでは、予想通りに動作せず、苦労したという経験はありませんか? このセッションでは、デバイスの互換性をテストするCTS-Dについてご紹介します。CTS-Dは、グーグルが今年6月にリリースしたプログラムで、アプリ開発者の方に、互換テストの共同開発に参加していただき、互換性の問題を、Androidコミュニティーとして、一緒に解決していくことを目指して発足されました。 | Androidの開発者全般。初心者〜上級者。 CTS-D(互換性テストスイート)の基本から、テスト開発への参加方法までを網羅します。 | 25 minutes | 日本語 / Japanese | 保守・運用・テスト (Maintenance, Operations, and Testing) | Sachiyo Sugimoto, Saryong Kang | |||||||||||||||||||
28 | State of Jetpack Compose | Hear about Jetpack Compose from the Compose team. What's new in Compose 1.2, what's coming in 1.3 and tips you can use to adopt Compose in your app. | All levels of Android developer | 40 minutes | English | Jetpack Compose | Ben Trengrove | |||||||||||||||||||
29 | Lessons Learned Migrating the Maps SDK to Compose | This session goes over the story behind Maps Compose—the Jetpack Compose interoperability library for the Maps SDK for Android. Learn lessons in Compose API design and how to effectively migrate your library or app to Compose. At the end of this talk, developers will know how to: * use interoperability APIs to bridge View-based apps/libraries to Compose * follow best practices for composable elements' API design * use subcomposition to tap into Compose APIs for managing tree-like data structures | Intermediate developers. Have prior knowledge of Jetpack Compose. | 40 minutes | English | Jetpack Compose | Chris Arriola | |||||||||||||||||||
30 | エンジニア駆動でデザインツールの刷新ができた | 昨今では、アジャイル開発でのスタイルが主流となりつつある中で、デザイナーとエンジニアは密なコミュニケーションを取りながら要件決め・プロダクトの実現性や設計などを一緒に作っていく必要があると思います。 デザイナーとのキャッチボールがうまくいかないと開発スピードが十分に出ない事や要件の認識違いなど致命的な問題に遭遇することもあります。 そういった問題をツールの刷新で解消できたお話をできたらと思います。 | エンジニア・デザイナーとのコミュニケーションやインテクグレーションで困っている方 ツールなどの刷新をするきっかけに困っている方 | 25 minutes | 日本語 / Japanese | 開発ツール&サービス (Productivity and Tools, Service) | bami | |||||||||||||||||||
31 | Android アプリの内と外をつなぐ UI | UI はアプリの中だけのものではありません。ホーム画面からアプリを起動する際のスプラッシュ スクリーン、ステータス バーやナビゲーション バーとアプリ内 UI の干渉を防ぐ WindowInsets など、アプリの UI がシステムの UI と連携する場面は数多くあります。最新の Android 13 でもバック ジェスチャーに関する API が変更され、対応が必要になっています。このセッションでは、アプリの内と外をつなぐ UI に焦点を当て、最新のベスト プラクティスを解説します。 | View また Compose でアプリを開発している人 | 25 minutes | 日本語 / Japanese | UI・UX・デザイン (UI・UX・Design) | 荒木佑一 | |||||||||||||||||||
32 | Android Vitalsのデータを自動監視してビジネス指標を向上させよう | Android Vitalsを使用すると、アプリの安定性やパフォーマンスに関する指標を確認できます。 Vitalsの指標の低下は、ユーザ体験の低下に繋がるだけでなく、Playストアでの評価の低下や検索ランキングの低下にも繋がります。 https://developer.android.com/distribute/best-practices/develop/android-vitals?hl=ja GoogleI/O 2022ではVitalsの指標であるANRを50%減らすと、20%のリテンション率向上、30%トランザクション数が向上したプロダクトが紹介されていました。 https://www.youtube.com/watch?v=DYdHLqLVspY したがって、Vitalsの指標はUUやCVRなどのビジネス指標にも影響する可能性が高いため、指標の改善・維持はプロダクトにとって重要な役割となります。 しかしながら、Vitalsの指標を注意深く監視できていなかったり、監視の自動化が難しいため手動での監視となってしまっているのが実情ではないでしょうか? 2022年3月にPlay Developer Reporting APIが公開され、Vitalsの指標をAPI経由で取得することが可能になり、監視の自動化や分析をより簡単に行うことが可能になりました。 https://android-developers.googleblog.com/2022/03/play-developer-reporting-API.html 本セッションでは、監視の自動化方法のみならず、アラート発生時の弊社の運用方法ついても紹介する予定です。 <アジェンダ(予定)> ・Android Vitalsについて ・各指標について ・(Crashlyticsとの使い分けについて) ・Vitals指標を改善するメリットについて ・Play Developer Reporting APIについて ・監視の自動化方法について ・アラートが発生した際の運用方針について ・(よく見かけるクラッシュとその対処方法の紹介) ・導入の効果・知見 | ・Android Vitalsについて知りたい方 ・Vitals指標の重要性について知りたい方 ・Play Developer Reporting APIについて知りたい方 ・弊社でのVitals監視の自動化方法と運用について知りたい方 | 25 minutes | 日本語 / Japanese | 保守・運用・テスト (Maintenance, Operations, and Testing) | Yusuke Suzuki | |||||||||||||||||||
33 | Kotlinize your CI, from Gradle tuning to Kotlin Script | This talk will explain how I leveraged Kotlin in various ways to write as much automation code as possible with this language, and so being easy to maintain for any Kotlin user. This will introduce several features of Kotlin (like Kotlin script) or Gradle (like Composite Builds, the JavaExec task, Gradle Plugins, etc) | People interested to know more on the CI side of their project (Android or not), or already doing it but facing issues with maintainability due to the various languages used in 1 project (Bash/Python/Ruby/etc). | 40 minutes | English | 保守・運用・テスト (Maintenance, Operations, and Testing) | Pierrick Greze | |||||||||||||||||||
34 | Compose for Desktopで始めるAndroid開発効率化ツールの作成 | Compose for DesktopはJetbrainsが開発するデスクトップアプリ向け(macOS、Linux、Windows)のUIフレームワークです。Compose for DesktopはJetpack Composeの仕組みを土台にしており、Jetpack Composeと同じ仕組みでデスクトップアプリを作成できます。そのためJetpack Composeを習熟したエンジニアであればCompose for Desktopにて簡単にデスクトップアプリを作成できるようになっています。 というようにCompose for DesktopはAndroidエンジニアにとって学習コストが低く扱いやすいデスクトップアプリ向けのUIフレームワークですがAndroidアプリ開発における使い所がないなという認識の方も多いのかなと思っております。なので本セッションではCompose for DesktopとADBを組み合わせたツール開発の事例を取り上げ、Androidアプリ開発でどのように活用できるか解説をしたいと思います。また今後利用を考えている方のためにCompose for Desktopを利用した開発の良さや辛さなどもあわせて取り上げようと思います。 | Compose for Desktopを利用したツールの作り方を知りたい方 | 40 minutes | 日本語 / Japanese | 開発ツール&サービス (Productivity and Tools, Service) | Yusuke Katsuragawa | |||||||||||||||||||
35 | 実践 Glass EE2 向けアプリ開発 | Google Glass のエンタープライズ向け最新モデル「Glass EE2」の販売が開始されて約3年が経過しました。 グローバルではいくつかの採用事例がありますが、国内ではまだマイナーな Android デバイスです。 一方で、このようなスマートグラスに対するユーザーの期待値は高く、近年は様々なメーカーからデバイスが販売されています。 本セッションでは、スマートグラスに期待されているユーザー体験を解説した後、Glass EE2 向けの開発環境やデザインガイドライン、アプリ開発例を紹介します。 | ・ニッチな Android デバイスが好きな方 ・スマートグラスに興味がある方 | 25 minutes | 日本語 / Japanese | Androidプラットフォーム (Android Platform) | shanonim | |||||||||||||||||||
36 | 長期運用アプリのリファクタリングを考える | Android始まって以来の大きな転換期を迎えている今、リリースしてから年月が経過している長期運用アプリの中にはそろそろ構造的に無理が生じているものも増えてきているのではないでしょうか? Jetpack Composeが発表され、アプリアーキテクチャガイドでベストプラクティスが案内されていますが、試行錯誤を繰り返しながら運用しているアプリではなかなかついていくことに苦労することも多いです。運用中のアプリの開発を止めるわけにはいかずフルスクラッチという選択肢が取れないこともあるでしょう。 このセッションでは - ゴッドアクティビティが乱立しているアプリの分解方法 - 段階的なJetpack Compose化 - リファクタリングにおける効率的なAndroid Studioの使い方 など、アプリのアーキテクチャの方向性が明確化してきた中で長期運用しているアプリをリフレッシュする方法を考えます | 長期運用しているアプリを抱えているエンジニア | 25 minutes | 日本語 / Japanese | アプリアーキテクチャ (Application Architecture) | shinmiy | |||||||||||||||||||
37 | 社内でのモバイルアクセシビリティ推進 | 担当アプリのアクセシビリティが気になっていても、 会社と言う環境で作るアプリはいろいろな人が関わっているため、新機能と比べてあまり魅力的でないものを簡単に取り込めないですね。 それにGoogleのガイドラインやコードでの対応方法を知っていても、Androidエンジニアの自分だけで出来る事の限界があります。 本当はデザイナー、PMやQAなど、アプリ関係者のみんなを巻き込む必要がありますのに、 実際いざとなると、どこからどうすれば良いか分からないし。。 Webアクセシビリティのガイドラインを読んでもピンと来ないし。。 デザインとかiOSなど自分の担当領域以外のことは詳しくなくて質問に答えれないし。。 心が折れてしまいそうですね。 せっかくアクセシビリティ強化を考えている方がそんな壁にぶつからないように、本セッションでは、現在社内でアクセシビリティを推進している私の通ってきた道と、集めてきた情報を話します。 絶対に聞かれる「なぜアクセシビリティ対応をするか」の答え方、社内勉強会の内容、対応範囲の決め方や具体的な取り込み方など、必要な参考情報を共有します。 ご自身の担当アプリのアクセシビリティ改善がうまく行きますように! | アクセシビリティにちょっと興味があるけど、仕事にどう取り込めるか分からないAndroidエンジニアの方。 担当アプリのアクセシビリティを改善するために、推進方法の参考が欲しいAndroidエンジニアの方。 | 40 minutes | 日本語 / Japanese | UI・UX・デザイン (UI・UX・Design) | Tiphaine (ティフェン) | |||||||||||||||||||
38 | All your Compose @Previews to screenshot tests without instrumentation | Screenshot tests are great way to test your view layer and catch many regressions. Jetpack Compose already has a handy @Preview feature for the IDE - and you can automatically make then into screenshot tests. With the help of Paparazzi library, you can capture screenshots without device or emulator, which is cumbersome on CI. During this session I will share our screenshot testing experience from a large enterprise app including GitHub Actions CI integration. | The talk is accessible to everyone, but interest in Android testing is welcomed. | 25 minutes | English | 保守・運用・テスト (Maintenance, Operations, and Testing) | David Vávra | |||||||||||||||||||
39 | マンガアプリのメモリ改善とメモリ解析方法 | 1. Lineマンガで8年運用したAndroidアプリのレガシーの問題としてOOMのメモリクラッシュ問題を真剣に向き合って解決した事例を紹介します。2. AndroidのVMの発展過程の紹介とそのメモリ管理方法とGCの管理方法の変化を辿る。3.基本的なGC(Garbage collection)の考え方からAndroidのメモリ解析のための基礎知識を伝える。4. 具体的なメモリ解析の方法を事例で紹介する。5. メモリリークを防ぐため、メモリを改善するための注意点と実際の例を紹介する。6.Google I/O 2022のLarge Screen重視でさらに重要になったConfiguration changeのメモリ対策 | JVMメモリ管理方法、GC(Garbage collection)に関心がある方、 Androidメモリ、パフォーマンスを改善したい方、 マンガが好きな方。 | 40 minutes | 日本語 / Japanese | 保守・運用・テスト (Maintenance, Operations, and Testing) | sai.choko | |||||||||||||||||||
40 | AndroidManifest.xmlはその後どうなっているのか? | Android開発していると必ず編集するであろうAndroidManifest.xmlですが、このxmlファイルがその後どうなっているかご存知でしょうか? アプリに組み込まれて必要に応じて適宜参照されるのかなというイメージはあるかもしれませんが、実際に追ってみたことはありますか? このセッションでは、AndroidManifest.xmlがどうアプリに組み込まれ、設定した値がどのように使用されているのかを解説します。 | - Android開発をしている人 - AndroidManifest.xmlがどう使われているか知らない人 | 25 minutes | 日本語 / Japanese | Android Framework | takasy | |||||||||||||||||||
41 | Android(AOSP)でウェアラブルIoTデバイスを作ってみた | 私たちはウェアラブルIoTデバイスを開発するにあたり、OSとしてAndroid Open Source Project(AOSP)を採用しました。 本発表ではAOSPを採用するに至った経緯や、ウェアラブルIoTデバイスとして開発する上で苦労した点・工夫した点について紹介させていただきます。 具体的には以下のような内容について紹介します。 - デバイス内のアプリをマイクロサービス的に設計・実現 - Play Store/開発者サービスを使わずに運用するためのアレコレ - 画面がない!困ったことと対処 本デバイスは現時点で数千台が世に出ており、特に画面がないことについては現在もデバイスを運用しながら良い方法を模索し続けています。 デバイスを実サービスとして運用する上での試行錯誤についてもご紹介させていただきます。 | - 組み込み(embed)Android技術者 - 独自デバイス上でAndroid(AOSP)を動かすことに興味のある方 - IoTデバイスを使ったサービス開発・運用に興味がある方 | 25 minutes | 日本語 / Japanese | Android Framework | Yoshinori Mukai | |||||||||||||||||||
42 | 5chマイクを使ってビームフォーミングできるようにAudio Frameworkを魔改造する | ビームフォーミングとは複数のマイクを使って、特定方向の音声を強調しつつそれ以外の音声を抑制した音を取り出すことを実現する技術であり、モバイルPCやWebカメラ、ヘッドセットなどにも使われている技術です。 ビームフォーミング処理は、専用ハードウェアチップで実装されているケースが一般的ですが、ソフトウェアで実装することも可能です。 私たちは、Androidベースのデバイスでもビームフォーミングを扱えるようにするべく、5chマイク(5つのマイク)を扱えるようにしつつビームフォーミングライブラリを組み込むために、Android OS のAudio Framework と格闘したのでその記録を紹介します。 本発表では、ビームフォーミングの仕組みやAudio Frameworkの構成などにも触れつつ、実際にどのような作業によってビームフォーミングを実現したのかを説明します。 具体的には以下のような作業を行う必要があります。 - Audio Framework にビームフォーミングのライブラリを組み込む。 - 5chマイクからの入力を扱えるようにする - アプリからは1chのデータのみが入力されているように見えるようにする - 5chマイク以外からの入力(イヤホンマイクやBluetoohヘッドセット)との切り替えをいい感じに実装する 音声処理に興味がある方だけでなく、普段あまり触れることの少ないAndroid Frameworkを直接改造するという試みに関心のある方にも興味深い内容になると思います。 | - 組み込み(embed)Android技術者 - 独自デバイス上でAndroid(AOSP)を動かすことに興味のある方 - 特にマイク・音声処理周りに興味のある・仕事にしている方 | 25 minutes | 日本語 / Japanese | Android Framework | Akira Kimura | |||||||||||||||||||
43 | 実例から学ぶJetpack Composeのパフォーマンス改善 | Jetpack ComposeはAndroid Viewシステムの教訓を経て、多くのケースで優れたパフォーマンスを発揮します。一方で、いつの間にかパフォーマンスが低下している経験をした人も多いのではないでしょうか?特にアニメーションの表現や、スクロールやドラッグの操作によってUIを切り替える際によく問題が発生します。これらは、必要以上の広範囲で高速に更新処理が行われることに起因します。他にも、Lazyリストを使う際、RecyclerViewとJetpack Composeを組み合わせる際等にも注意すべき点があります。 より良いパフォーマンスを得るには、Jetpack ComposeのUI更新の仕組みを理解し、状況に応じて対処していく必要があります。このセッションでは実例をもとに、パフォーマンス低下の原因、計測方法、改善方法について解説を行います。 | ・Jetpack Composeを既に利用している人 ・Jetpack Composeにおいてパフォーマンスに困っている人 | 25 minutes | 日本語 / Japanese | Jetpack Compose | Mori Atsushi | |||||||||||||||||||
44 | 2022年の動画再生アプリの作り方 | 2021年10月にJetpack Media3が発表されました。 これまでは別々のライブラリとして提供されていたメディア関連のAPIが単一のライブラリに統合され、動画再生に関する様々なユースケースを容易に実現できるようになりました。 また、近年ではピクチャー・イン・ピクチャーへの対応や折りたたみ式端末への対応など、動画再生アプリに対しての機能要件が多様化してきています。 本セッションでは、2022年に動画再生アプリを作る際に考慮すべきことや具体的な実装方法について紹介します。 予定している内容 ・Jetpack Media3とExoPlayerについて ・MediaSessionServiceを用いたバックグラウンド再生 ・ピクチャー・イン・ピクチャーへの対応 ・折りたたみ式端末への対応 | ・Androidのメディア系APIに興味がある方 ・動画再生アプリの品質向上に興味がある方 | 25 minutes | 日本語 / Japanese | Jetpack | oidy | |||||||||||||||||||
45 | 通知チャンネルに対応する | 通知はアプリの外でユーザーとコミュニケーションができる重要な機能です。しかし、ユーザーに通知を受け取ってもらうハードルは年々高くなっています。 通知機能にはさまざまなアップデートが行われており、Android 8からOSで通知チャンネルを作成する機能が追加されました。細かく通知を管理する仕組みが提供されたことで、よりユーザーが通知の許諾のコントロールをアプリの内外でしやすくなりました。またAndroid 13では通知のPermissionが追加され、ユーザーが必要とする通知を選択できるようになりました。 本セッションでは実際に弊社のアプリで行ったチャンネル対応の事例を通して通知設定の課題・解決方法を共有します。具体的には次のような内容を想定しています。 - 通知チャンネルとは - なぜ通知チャンネルに対応するのか - 通知許諾とは - Android13と12以下の挙動 - チャンネル対応 - 既存のアプリ内画面との両立 - マイグレーションに当たっての課題 - アプリ内の通知画面 - 表現方法 - ユーザー毎の設定 - 実装上の課題 - 連打制御 - 効果検証 - 許諾の変化 魅力的なサービスの情報をお届けするため、よりユーザーが使いやすい通知の設定を実現していきましょう。 | 通知チャンネル対応を検討している方 通知許諾を高めたい方 | 25 minutes | 日本語 / Japanese | Android Framework | Miyabi Gouji | |||||||||||||||||||
46 | Android "を" ビルドしてAndroid Systemを覗いてみよう | Android開発者の皆さんは日々Android アプリ (apk / aab) をビルドしていますが、Android"を”ビルドしたことがありますか?Andriodをベースとする組み込みデバイス等の開発に従事している方は、日常的にビルドしているかもしれません。 Androidはオープンソースでコードの大部分が公開されており、Androidそのものをビルドし、システムイメージを作ることが可能になっています。また、カスタムのカーネルをビルドし、それを前述のシステムイメージに埋め込むことも可能です。 システムイメージ・カーネルをビルドすること自体は普段のサービスアプリ開発において、役に立つ機会は少ないです。しかし、ただ何となくみていたAndroidシステムの挙動の裏側を鮮明に理解することができ、今後のアプリ開発に役に立つ機会がきっと来るでしょう。 本セッションでは、サービスアプリ開発者であるスピーカーの視点から主にアプリ開発者に向けて、Androidのシステムイメージのビルド方法、カーネルのビルド方法を Android Developers に記載されている行間を補完しながら step by stepで進めていきます。 その後、コードの一部を修正しながらAndroidシステムの動きに迫っていきます。 <予定しているアジェンダ> - Android システムについての簡単な概要 - Android のビルド方法 - カーネルのビルド方法 - 実例1. Android システムを修正しながら確認する navigation bar の振る舞い - 実例2 :Android システムを修正しながら確認する Dialog の振る舞い | Androidのシステムそのものに興味がある人 Androidをビルドしてみたい人 Androidのビルドに挫折した過去がある人 | 25 minutes | 日本語 / Japanese | Androidプラットフォーム (Android Platform) | Kazuki Chigita | |||||||||||||||||||
47 | アプリエンジニアとQAチームがデバッグ機能の改善に取り組むぞ! | アプリのデバッグ機能を作る際に、エンジニアがデバッグのために作る場合と QAやPdMチームなどの要請によって、作る場合があると思います。 サービスの運用が長期化されて、デバッグ機能が乱立し、 何がどう動いているデバッグ機能なのかのドキュメントの整理もままならない状態から、 QAチームが今必要としているデバッグ機能をリサーチ、 QA工数削減した、GOユーザーアプリ改善チームの取り組みを紹介します。 予定しているセッション内容 - GOユーザーアプリチームの開発体制 - GOユーザーアプリに求められたデバッグ機能 - 乱立したデバッグ機能を整理して、QAチームを今必要なデバッグ機能について考える | - QAチームがあるサービスを開発するエンジニア - デバッグ機能を実装している、実装したいエンジニア | 25 minutes | 日本語 / Japanese | 開発体制 (Development Process) | Satoru Komai | |||||||||||||||||||
48 | 移りゆくデファクトスタンダードにチームとしてどう追従するか | モダンと呼ばれるような技術・設計は開発における生産性や諸リスクに有効であることは周知の事実です。 一方でそれら理想を導入するための障壁を感じてしまい、プロダクトコードが未だレガシー環境であることに悩まされている方も少なくないと思います。多くの場合は、モダンとレガシーとのギャップが大きいが故に導入に至るまでのロードマップ策定が行えない場合が多いと感じます。 MVVMをはじめとしてマルチモジュール化からJetpackCompose導入まで、導入を目指すには少なくない考慮が必要ですが適切なステップを踏むことによって、着実にそして確実にモダン環境への移行を進めていくことが可能です。 レガシーからモダンへと移り変わるための各種ガイドラインの策定とロードマップの作り方について、個人としてではなく「Androidチーム」として進められるよう、知見を実体験とともに解説したいと思います。 | Androidチームとして技術的負債の返却、レガシーからの脱却を考えている方 | 25 minutes | 日本語 / Japanese | 開発体制 (Development Process) | tk-masuda | |||||||||||||||||||
49 | はじめようビルドメトリクス | オレはいったいどれほどの時間をこのプログレスバーと共に過ごしてきたんだろう.... Android開発とビルドは切っても切り離せない関係です。 このセッションでは手元のマシンから収集できる情報を集めて、どれほどの時間を費やしているのか可視化する方法を指南します。 - 1回の分析 - 「ビルド」定義の確認 - gradle-profilerを使ってみよう - 1日の分析 - 簡単なAPIを作成してのビルド回数などの収集方法 このセッションでは「日常のビルドにかかる時間を知る」ことにフォーカスしているため、分析結果を使った高速化の方法などには触れません。 | - 新しいPCを買ってもらおうとしたら上司に「本当にそんなスペック必要なの?」と言われてしまった人 - チームのスループットをあげるためになんでもしたい人 - ただ己の時間が何にどれほど費やされているのか知りたい人 - 「gradle-profilerのことは知らないけどなんか面白そうだな」ぐらいの人 Androidアプリをビルドしたことがあれば前提知識は不要ですが、gradle-profilerの深い話や高速化のノウハウなどはありません。 | 25 minutes | 日本語 / Japanese | 開発体制 (Development Process) | こまたつ | |||||||||||||||||||
50 | CameraX × ML Kit でパスポートOCR機能を実装 | 海外旅行を予約する上でパスポートは必須の情報ですが、自身および同行者の名前や生年月日やパスポート番号などの情報を入力することは、ユーザーにとって少なからずの手間となります。 弊社が開発する海外旅行の予約アプリでは、その手間を軽減すべく、パスポートOCR機能を開発しています。 実装にはJetpack Composeにも組み込みやすいCameraXとML Kitの組み合わせを採用しています。 CameraXはカメラ機能を手軽に開発できるようにしたJetpackのライブラリで、ライフサイクルにバインドして動作します。 ML Kitは機械学習を利用した開発を手軽におこなえるようにしたSDKで、以前はクラウドで動作するAPIと共にFirebaseで提供されていましたが、オンデバイスで動作するライブラリはML Kitとして独立しています。 弊社アプリのパスポートOCR機能では、CameraXのプレビューと画像解析のユースケースと、ML KItのText Recognition(文字列検出)を利用しています。 それらライブラリを用いてパスポート情報を取得する実装の内容や、精度向上のためにおこなっている取り組み等を紹介します。 | - CameraXに興味がある方 - ML Kitに興味がある方 - UXの改善に取り組んでいる方 | 25 minutes | 日本語 / Japanese | Jetpack | Yuto Akaike | |||||||||||||||||||
51 | 2022年のBytecode Weaving ~Google、Transform API やめるってよ~ | いくつかのライブラリでは、Androidアプリケーションのビルド時にBytecodeを書き換えることにより魔法のような機能を提供しています。このBytecode書き換えをBytecode Weavingと言いますが、Bytecode Weavingを実現する際にこれまで使われてきたTransform APIが近い将来リリース予定のAndroid Gradle Plugin 8.0で削除されることが予告されました。 本セッションではBytecode Weavingで何が実現できるのか、またTransform APIの何が問題だったのかを解説します。その後、Transform APIに代わって導入されるInstrumentation APIがどのように問題を解決しているかを具体的な使い方ともに解説していきます。 Bytecode Weavingはライブラリ提供者にとってとても強力な手段です。何ができるかを知っていることでライブラリが実現できることが格段に増えるので、ぜひこのセッションで最新の使い方を学び便利なライブラリを公開していただけたらと思います。 | ある程度build.gradleはいじったことがあり、魔法のような機能を提供しているライブラリが裏でどのようなことをおこなっているかに興味がある方、またそのようなライブラリを作ってみたいと思っている方を対象としています。 | 40 minutes | 日本語 / Japanese | 開発ツール&サービス (Productivity and Tools, Service) | zaki50 | |||||||||||||||||||
52 | プロダクトで安全にDataStore移行する | JetpackライブラリのDataStoreは、アプリ内のデータストレージのライブラリです。SharedPreferencesと同様にkey-valueでデータを格納することが可能ですが、SharedPreferencesより優れた点があり、DataStoreへの移行が勧められています。 しかし実際に移行を考えると、なかなかモチベーションが湧いてこないかも知れません。 例えば、以下のようなことでモチベーションが低下しているかも知れません。 ・SharedPreferencesの使っているkeyが多すぎる ・移行しなくても不便がない また、マイグレーションガイドもあり、移行は容易そうですが、実際にプロダクトで移行を進めるためにはいくつか懸念があります。 ・SharedPreferencesでたくさんのkeyを用いているが、全てマイグレーションが可能なのか ・一部のkeyだけマイグレーションして、段階的に移行が可能なのか ・DataStore移行後にrevertした時にデータの不整合が起こらないか そこで、本セッションでは、DataStoreへの移行するモチベーション、移行方法、実際のプロダクトで移行した際に起こり得る懸念とその対応について紹介をします。 概要 ・DataStoreの概要 ・DataStoreに移行するモチベーション ・SharedPreferencesからのマイグレーションについて ・実際のプロダクトでの移行計画 ・段階的な移行 ・テスト・QC(QA) ・DataStore移行後に起こりうる懸念 ・その他(可能であれば) ・Preference DataStoreで保存したものをProto DataStoreでの保存に移行できるのか ・SharedPreferenceのkeyの管理について | SharedPreferencesを使用したことがある方。 DataStore移行を検討している方。 | 25 minutes | 日本語 / Japanese | Jetpack | Go Takahana | |||||||||||||||||||
53 | 2022年ヘルスケアアプリのつくり方 | 健康管理を目的とした様々なヘルスケアアプリが開発されています。 ヘルスケアアプリでは端末のセンサーやカメラ、ウェアラブル機器などを使用して心拍数、運動時間、睡眠時間、摂取カロリーなど様々な種類のデータが扱われています。 このような健康状態や運動に関するデータは様々なプラットフォームで管理されており、 サービス自身が保持していないデータについてもプラットフォームを介して参照することで、 健康管理の体験を提供できるようになっています。 その一方で、Androidでは様々なヘルスケア管理プラットフォームが存在し、使っているサービスによっては異なるプラットフォームに計測データが保存される場合もあります。 また今年のGoogle I/Oでは新しいプラットフォームであるHealth Connectが発表され、複数の管理プラットフォームとのデータ連携ができるエコシステムとして期待されています。 本セッションでは、2022年に新しくヘルスケア アプリを開発した際に得られた知見をもとに、 ヘルスケア プラットフォームHealth Connectとの連携アプローチについて話せればと思います。 話すこと ・Google FitとHealth Connectの機能比較 ・iOSのHealth Kitとのデータ互換性を考える ・現時点で連携すべきプラットフォームとして検討した点 | ヘルスケアに関わるアプリ開発に興味のある方 | 25 minutes | 日本語 / Japanese | Androidプラットフォーム (Android Platform) | Kohei Yamamoto | |||||||||||||||||||
54 | Jetpack Composeの状態管理とAPIコール - React Hooksに習う、Apollo + Jetpack Compose | Jetpack Composeは、思想的にReactに近いところがあります。Composable関数とReactの関数コンポーネント、hooksはその最たる例と言えるでしょう。 また、GraphQLクライアントのApolloは、GraphQLの通信のレスポンスをグラフ構造そのままにキャッシュとその更新を可能にしています。Apolloのキャッシュ機構は、単なるGraphQL APIのコールのみならず、状態管理ライブラリとしての役割も果たします。これにより、フロントエンド開発者はAPIコールやキャッシュについて複雑に考えることが減りました。 しかし、Apollo KotlinにはApollo JSで用意されているのcustom hooksがないなどの差異により、React + Apolloのような開発者体験がJetpack Compose + Apolloの組み合わせでは得られません。 このセッションでは、React Hooksを参考にApollo Kotlinをラップし、シンプルにAPIコールとキャッシュ、状態管理を行うアーキテクチャを実現する方法について発表します。 - Jetpack ComposeとReactの類似性について - GraphQLとApolloについて - Apollo JSとApollo Kotlinの差分について - Apollo KotlinをJetpack Composeに適した形でラップする - ApolloとJetpack Composeで実現する状態管理アーキテクチャについて | GraphQLに興味のある人 Apolloに興味のある人 Jetpack Composeにおける状態管理に興味のある人 | 40 minutes | 日本語 / Japanese | Jetpack Compose | mayamito | |||||||||||||||||||
55 | Deep dive into Jetpack Compose Text | 我々Android Textチームは新しいUI TookitであるJetpack Composeのテキスト描画APIを設計し、実装しています。テキストは多くの部分をプラットフォームのAPIに頼っており、どこまでがライブラリ内の実装で、どこからがプラットフォームAPIを利用しているのかがわかりにくくなっています。この発表では最新のテキストに関連したJetpack Composeの機能を、APIとその内部構造を中心に解説していきます。 Our team has been developing a new UI toolkit called Jetpack Compose. The Android Text team has been designing and implementing the Text rendering APIs in Jetpack Compose. Text components are still relying on lots of platform APIs, so it is quite hard to find a line between library implementation and platform APIs. In this session, I’m going to introduce the new feature in Jetpack Compose and what happens under the hood. | Jetpack Composeの内部構造に興味がある方 Androidがどうやって文字列を描画しているのか興味のある方 People interested in the internal details of Jetpack Compose. People interested in how Android draws text on the screen. | 25 minutes | 日本語 / Japanese | Jetpack Compose | Seigo Nonaka | |||||||||||||||||||
56 | Considerate App Update Delivery | リリースフローを自動化したことで安全なリリースだと思いこんではいませんか? 自動化によって属人化やヒューマンエラーが減った冪等性のあるフローなら、確かにそれが動いている間は安全と言えるでしょう。 しかし障害等で手動でのリリースが必要になったとき、その自動化されたフローから復元した手動リリースは安全ですか? 安全なリリースフローとはヒューマンミスの排除に限りません。例えば required feature や dangrous permission の追加はアップデート配布対象が減るだけでなく、自動アップデートをオフにしてしまいます。それが意図的であったとしても、リリース前に妥当性及び副作用を確認出来ることが望ましいでしょう。 多くのリリースフローは最小に近い手順を自動化しているだけで、上記のようなケース・検証の類が十分にカバーされていないように思います。それらの検証が欠けているとき、そのリリースフローは安全とは言い切れないかもしれません。あるいはリリースよりもずっと前から継続的に行う検証が必要かもしれません。 本発表ではAPK/AAB から静的に取得出来る情報、端末で取得出来る情報、そしてファイルからはどうしても取得出来ない情報を理解し、それぞれの情報を安全なリリースの実現やリリースフロー自体の改善に利用する試みを紹介します。 - APK/AAB から静的に取れる情報 - ランタイムで取れる情報 - FireOS などの例外 - アプリファイルには含まれない情報 - 情報の利用方法 - file metrics - ライブラリアップデート時の proguard/R8 rules のレビュー ※ いわゆるアプリの品質、QAについては言及しません。 | 安全なリリースに興味があるひと proguard/R8 rule の変更について、実際に動かすことだけが唯一の検証だと思っているひと 正直手動でリリースするときの方法を忘れてしまったひと | 25 minutes | 日本語 / Japanese | 保守・運用・テスト (Maintenance, Operations, and Testing) | Jumpei Matsuda | |||||||||||||||||||
57 | 人の声を可視化する | ひとの声を可視化するとき、波形型で表示するのが一般的です。 Android端末のマイク性能にばらつきがあることによって録音時の波形が端末によっては小さく、音声が入っている箇所が分かりづらかったり、一定数秒間に表示する波の数がずれることがあります。 人の声を可視化するオーディオビジュアライズについて、Androidで起こりやすい課題と対策を紹介し、またAudio処理に関わるアーキテクチャ、AudioRecordの取り回し方の注意点などについてもご紹介するつもりです。 | こんな人におすすめ ・これからAudio処理を学ぶAndroidエンジニア ・人の声を取り扱うプロダクトに参画するAndroidエンジニア 受講者が得られる知見 ・Audio機能の基礎おさらい ・Audio処理を実装する際の注意すべき点と最適化手法 ・Audio処理まわりで端末依存における条件分岐を実装したことがある方 | 40 minutes | 日本語 / Japanese | Androidプラットフォーム (Android Platform) | Miyuki Onuma | |||||||||||||||||||
58 | ついにアプリ毎の言語設定がOSレベルでサポートされたぞ! | アプリの多言語化対応を実施したことはありますでしょうか? OS の言語設定に従って切り替えるだけで良いのであれば、各言語毎のリソースを用意し、適切にフォルダ分けをするだけで対応が完了します。 しかしながら「アプリ内で言語切り替えできるようにしてよ」と要求されることがままあります。 これまでアプリ内言語切り替え機能を提供するには OS バージョン毎に異なる複数のワークアラウンドを用意する必要があり、大変な苦労を強いられてきました。 しかし Android13 および AppCompat 1.6.0 においてようやく OS レベルでアプリ毎の言語設定がサポートされることになりました。 本セッションでは、過去の OS における独自の言語切り替え機能を提供する辛さを解説し、その上で今回提供されたアプリ毎の言語設定が素晴らしいかを褒め称えつつ、多言語化を実施する際の注意点を解説します。 | アプリの多言語化を考えている方 独自の言語切り替え機能で消耗している方 | 25 minutes | 日本語 / Japanese | Android Framework | sobachanko | |||||||||||||||||||
59 | モバイルアプリのユーザープライバシー新時代 | 近年、アプリ開発においてもユーザープライバシーの重要性が増してきています。セッションではモバイルアプリでのユーザープライバシーへの配慮方法を紹介し、実装の指針を紹介します。 基礎的な知識から実装方法、ユーザーフレンドリーな仕様をカバー対象とし、将来導入されるPrivacy Sandboxといった新しいアプローチへの理解を推進することが目標です。 - パーミッションの制限、ロケーションの適切な取り扱い方法 - センシティブデータの管理・推奨手法 - デバイス識別子や行動分析などでのユーザートラッキングの注意点 - プライバシーに関するリスクを最小限するプラクティス たとえばパーミッションでは2022年1-3月にかけて「使用していないアプリの権限を削除」する挙動に変わっています。 これはユーザーのプライバシーを保護するための変更ですが、日頃からアップデートを追いかけていないと気づくのは難しいでしょう。 さらにプライバシーに対する理解度は組織、チーム、個人でさまざまなのが現状です。 プライバシーを尊重した機能、その導入の背景、ユーザーにとって嬉しい仕様を理解してチームで議論をリードできると強みになるはずです。この機会に知識を更新しましょう! | - プライバシーに関心がある方 - プライバシーは大事だと感じつつも、詳細をまだ調べきれていない方 - ユーザー満足度の高いアプリにしたい方 - Google Play Storeから不意にプライバシー違反で怒られたくない方 | 25 minutes | 日本語 / Japanese | Security / Identity / Privacy | mhidaka | |||||||||||||||||||
60 | コルーチンを使って処理の見通しをよくする - リアルタイム放送の品質を向上し、保つために | 私が現在開発している「リアルタイム音声放送」では、アプリとサーバー間の通信だけでなく、同時にアプリ同士のP2P通信も行っており、複数の通信状態を非同期に、かつ並行処理も行いながら管理しています。 開発が進むにあたって機能を追加/修正してコード量が増加していくと、こういった非同期処理や並行処理が複雑に絡み合うようになっていきます。こうしたコードは可読性やメンテナンス性が下がり、本来待機しなければいけない処理が待たれずに次の処理へ進んでしまったり、受け取れないはずの操作が状態管理の不備によって受け付けられてしまったりと、難解な不具合を混入させやすい状態になります。 今回はこういった課題を解決していく手法としてのコルーチンの活用方法について、プロジェクトの品質向上の視点からお話しします。 | ・コルーチン自体は知っているが、どういった場面で有効なのかより具体例を知りたい方 ・非同期処理や並行処理での状態管理に悩まされている方 | 25 minutes | 日本語 / Japanese | Kotlin | horitamon | |||||||||||||||||||
61 | Why Projects Succeed: Lessons Learned from the Android OS | The story of how Android came to be, and how it managed to survive and thrive in a crowded field of competitors, is an interesting story of people, teams, and vision. But it's also an educational tale of how products can succeed, which can help inform future ideas, startups, companies, acquisitions, and projects throughout tech and business overall. This session will draw from the recently published book, Androids: the Team That Built the Android Operating System, to see what we can all learn from the Android project, which started as two people building a camera OS and resulted in a platform running on more than 3 billion devices today. | No prerequisite knowledge of Android | 40 minutes | English | その他 (Other) | Chet Haase, Romain Guy | |||||||||||||||||||
62 | あらゆる変化を受け入れながら働きつづける 〜 介護・学業編 | 【DroidKaigi実行委員会より】 本セッションはDroidKaigi実行委員会による招待セッション(※)です。 Note: This is an invited talk from the DroidKaigi Committee. micchieさんは株式会社メルペイのエンジニアリングマネージャーです。一般社団法人Gophers Japanの一員として、プログラミング言語Goに関するカンファレンス「Go Conference」や女性とジェンダーマイノリティの人々があつまるGo言語のコミュニティ「Women Who Go Tokyo」の運営に携わっています。働きながらご家族の遠距離介護を行った経験があり、現在は社会人大学院生として大学院に通っています。 本セッションでは、介護や学業といったプライベートを仕事と両立されたご経験をご講演いただき、ワークライフバランスを考慮した多様な働き方や将来的なキャリアの描き方について考えます。 受講対象者: ・家族のケアや学び直しといったプライベートとの両立に悩んでいる方、視野に入れている方 ・プライベートについてさまざまな事情を抱えるメンバーと共に働いている方 ・マネージメント職を検討している方 ・中長期的な視点からキャリアパスを考えたい方 ※DroidKaigi実行委員会は多様性向上を通して日本のAndroidエンジニアコミュニティのより良い発展に貢献することを目標としています。DroidKaigi 2022では、働き方やユーザの観点から多様性を考える場を招待セッションのかたちで設けました。参加者の皆様ご自身やDroidKaigiコミュニティのあり方について考えるきっかけとなれば幸いです。 | ・家族のケアや学び直しといったプライベートとの両立に悩んでいる方、視野に入れている方 ・プライベートについてさまざまな事情を抱えるメンバーと共に働いている方 ・マネージメント職を検討している方 ・中長期的な視点からキャリアパスを考えたい方 | 40 minutes | 日本語 / Japanese | その他 (Other) | micchie | |||||||||||||||||||
63 | アクセシビリティは向上させる物 ~視覚障害当事者の立場で私が目指している理想的な社会~ | 【DroidKaigi実行委員会より】 本セッションはDroidKaigi実行委員会による招待セッション(※)です。 Note: This is an invited talk from the DroidKaigi Committee. maverickさんは株式会社SmartHRのアクセシビリティスペシャリストで、先天性の全盲の視覚障害者です。デジタルアクセシビリティをテーマとしたランチ会「Accessiブランチ」を主催し、Windows用スクリーンリーダーの日本語版開発コミュニティ「NVDA日本語チーム」の代表を務めるなど、アクセシビリティの向上に日々尽力しています。 本セッションでは、当事者の視点を交えながらアクセシビリティエンジニアのお仕事と働き方についてご講演いただき、視覚障害者の方々が置かれている状況やアクセシビリティ分野の課題、障害をふまえた働き方について考えます。 受講対象者: ・アクセシビリティ分野に興味がある方、アプリのアクセシビリティを向上させたい方 ・アクセシビリティを専門とするエンジニアとの連携を高めたい方 ・障害のある方から見た労働環境に興味がある方 ・より多くの人々にとって使いやすいシステムやデジタル環境を推進したい方 ※DroidKaigi実行委員会は多様性向上を通して日本のAndroidエンジニアコミュニティのより良い発展に貢献することを目標としています。DroidKaigi 2022では、働き方やユーザの観点から多様性を考える場を招待セッションのかたちで設けました。参加者の皆様ご自身やDroidKaigiコミュニティのあり方について考えるきっかけとなれば幸いです。 | ・アクセシビリティ分野に興味がある方、アプリのアクセシビリティを向上させたい方 ・アクセシビリティを専門とするエンジニアとの連携を高めたい方 ・障害のある方から見た労働環境に興味がある方 ・より多くの人々にとって使いやすいシステムやデジタル環境を推進したい方 | 40 minutes | 日本語 / Japanese | その他 (Other) | maverick | |||||||||||||||||||
64 | Camera Xライブラリの魅力と最新機能を紐解く | Camera Xライブラリは、カメラアプリの開発を容易にすることを目的としたJetpackライブラリです。Android 5.0以降を搭載したデバイスをサポートしており、Camera 2ライブラリと比較して圧倒的に少ないコード量で一般的なカメラのユースケースや、デバイスのネイティブカメラアプリと同じ機能を実現することができます。 最新のstable版であるバージョン1.1.0は2022年6月末に公開されました。実に1年ぶりとなるマイナーバージョンのアップデートであり多くの新機能が加わっています。 本セッションでは、一見複雑多岐に見えるCamera Xライブラリを分かりやすく紹介しつつ、バージョン1.1.0の新機能を始めとした様々な魅力をお伝えすることで、カメラ機能を生かした新たなアイデアを生み出すきっかけとなることを目指します。 発表予定の目次 ・Camera Xライブラリの概要、基本的な実装の解説 ・バージョン1.1.0での新機能の解説・実演 ・バージョン1.1.0ではまだ実現できず課題を抱えていることの紹介 | ・カメラ機能をアプリに組み込みたいと考えている人 ・現在Camera 2ライブラリなどを使っている人 ・Camera Xライブラリを使うことでどのようなことができるのか興味を持っている人 | 25 minutes | 日本語 / Japanese | ハードウェア (Hardware) | DaiMiyamoto | |||||||||||||||||||
65 | Optimize your app for large screens | 日本市場でも、タブレットや折りたたみ式デバイスがリリースされてきています。これらのデバイスでは、アプリはスマホと比べて大きなスペースを利用することができます。また複数のアプリを同時に使うマルチタスク機能も、スマホと比べて多く利用されることもわかってきています。 このセッションでは、タブレットや折りたたみ式デバイスのような大画面デバイスをサポートするにあたって考慮しなければならないこと、そしてサポートするための技術的な選択肢について紹介します。具体的には Jetpack Window Manager や、SlidingPaneLayout、Activity embedding のような大画面デバイスをサポートするために有用な API、レスポンシブレイアウトを実現するための方法、大画面デバイスをサポートする際に利用できるテスト手法について紹介します。 | Android アプリ開発にある程度の経験をお持ちの方。Android アプリ開発の基本的な知識(例えば Activity のライフサイクルなど)を前提としたセッションです。アプリ開発の基本的な知識をお持ちでない方は、セッションを楽しんでいただけない可能性が高いように思います。 セッションで表示するサンプルコードを Kotlin で記述します。Kotlin の基本的な文法を知っている方であれば、よりセッションを楽しんでいただけると思います。 | 40 minutes | 日本語 / Japanese | アプリアーキテクチャ (Application Architecture) | Chiko Shimizu | |||||||||||||||||||
66 | サービス成長のためのイベントトラッキング戦略 | 自社のサービスを成長させようとしたとき、姿の見えないユーザーがどんな利用をしてくれているのかを知るにはどうするとよいでしょうか? 解決手段の一つが、イベントトラッキングを行うことです。 本セッションでは、Androidアプリを利用するユーザーのイベントトラッキングの必要性と、取得ロジックの設計、そして運用としてどのように分析を行うか、イベントが誤って消されないようにするための予防措置を弊社がどのように実現しようとしているのかをお話します。 | - 業務でサービス成長のためにイベントトラッキングを行おうとしている方 - 現在イベントトラッキングを行っている方で、自社の収集方法に課題を感じていて、他社の事例を知りたい方 | 40 minutes | 日本語 / Japanese | 開発体制 (Development Process) | shige0501 | |||||||||||||||||||
67 | AndroidエンジニアのためのFigma入門 | Material Design 3では、デザイントークンの項目が大きく刷新され、 昨年のAndroid Developer Summitでは、Figma上のUIからJetpack Composeのコードを出力するワークフローの予定が明かされました。 これらのトレンドが示すのは、アプリデザインの領域が、絵を描き起こす作業から情報設計にシフトしていることです。デザインとエンジニアリングの境界が曖昧になったとき、アプリエンジニアがデザインツールを熟知することは、今後必要不可欠になるかもしれません。 本セッションでは、こうした時代に備えて、Figmaの基礎を広く浅くなぞりつつ、Figmaのデザインシステムに関連した機能やMaterial Design 3との関連を紹介していきたいと思います。Androidエンジニアが語る、Androidエンジニアから見たFigmaの要点、というのがポイントになります。 アジェンダとしては、以下を予定しています。 - 基礎 - 基本操作 - Team, Project, File - Layer, Frame, Group, Page - デザインシステム - Component, Style, Library - Variants - デザイナとエンジニアの協業、Tips - FigmaとMaterial Design 3 - Design to Code...? - Material 3 Design Kit - Material Theme Builder - Material Symbols | - 雰囲気でFigmaを使っている人 - 普段見ているFigma上のUIが、どういった機能を使って作られているのか知りたい人 - デザインの話が好きなエンジニア - 情報設計に関心があるデザイナー | 25 minutes | 日本語 / Japanese | UI・UX・デザイン (UI・UX・Design) | haru067 | |||||||||||||||||||
68 | Android プロジェクトで大規模リファクタリングを安全に遂行する | Android (Jetpack) の API はバージョンが上がるたびにめまぐるしく 更新され、いつの間にか API が非推奨になっていたり新しい API が作られたりします。 新規プロジェクトや小さなプロジェクトにおいて対応するのは容易ですが、そこそこ既存のコードの規模が大きい場合は大変です。手動で対応しようとすると時間がかかるだけでなくミスが起きやすくなります。そこで 迅速かつ安全に最新の API へのマイグレーションを行う手法について議論します。 本セッションでは以下の3つのレベルに分けて具体的な Android (Jetpack) の API のマイグレーション例を交えながら紹介します。 1. 一般的な置換によるマイグレーション 2. Android Studio の Structural replace による置換によるマイグレーション 3. Kotlin の構文解析器をつかった高度な置換によるマイグレーション (Koin→Hilt) | * 新しい API にマイグレーションしたいが、規模が大きく手が出ていない方 * 手動で API のマイグレーションを行ってきた方 | 25 minutes | 日本語 / Japanese | Jetpack | Naoto Ishida | |||||||||||||||||||
69 | Jetpack Compose の空白をマスターする | 空白はデザインの重要な要素の 1つ です。Jetpack Compose では空白を柔軟にコントロールできるようになりました。しかしながら、どの API で空白を実現するか悩んだり うまく空白をコントロールできないケースがあります。本セッションでは Jetpack Compose における 空白の実現方法とベストプラクティスについてできるかぎり網羅的に紹介します。 Spacer Modifier.padding Modifier.weight PaddingValues (contentPadding) Arrangement Font padding Insets Layout | Jetpack Compose において * Spacer のみで大雑把に空白を調整している人 * 色々な空白の実現方法を知りたい人 * UIの構造を踏まえて空白を設定したい人 | 25 minutes | 日本語 / Japanese | Jetpack Compose | Naoto Ishida | |||||||||||||||||||
70 | Android アプリのリリースフローをできる限り自動化する | Android アプリを運用する上で欠かせないリリース作業ですが、リリース後の運用を考えたりすると「リリースビルドして aab を生成しアップロードする」以外の手順が増加しがちではないかと思います。例えばリリースした日を管理するためにカレンダーに登録したり、git flow にあるようなブランチ運用をしたり。 そういった手順を手作業で行うとなると、いくらチェックリストを作って確認などをしていても、人間なのでミスをしてしまう可能性があります。 このセッションでは様々な API などを多用してリリースフローにおける手作業を「できる限り」減らすことを目指し、自動化の仕組みを実現する方法を紹介します。 <キーワード> - Google Play Developer API - GitHub API - Bitrise, GitHub Actions(ビルドする基盤) | リリースフローを自動化したい人 リリースフローを手作業でやっていて困っていないが事例を知りたい人 | 25 minutes | 日本語 / Japanese | 保守・運用・テスト (Maintenance, Operations, and Testing) | bird_tummy | |||||||||||||||||||
71 | UIカタログのすゝめ | ウェブやモバイルなどフロントエンド開発においてはUIを実装する部分は、エンジニアが特に注力するポイントになります。ウェブフロント開発においては、デザインシステムのUIコンポーネントの実装を確認できるようにStorybookというUIカタログツールを導入することがデファクトスタンダードとなってきています。 一方でAndroidアプリ開発においては Jetpack Compose の登場によって、ウェブフロントからの概念が輸入されているトレンドになっており、StorybookのようにUIカタログツールも徐々に台頭してきています。 当セッションでは UIカタログ を導入するメリットから簡単な導入方法について解説します。 | * UIカタログをこれから導入したい方 * デザイナーフレンドリーな開発をしたい方 | 25 minutes | 日本語 / Japanese | UI・UX・デザイン (UI・UX・Design) | kgmyshin | |||||||||||||||||||
72 | 定義へGO! Jetpack Compose の基本 API の実装から学ぶ | Jetpack Compose のコードを書いていると毎日のように使う Button、Column、Modifier 等がどのように実装されているかご存知ですか? 普段使う API よりも一段低いレベルのレイヤーの実装を覗いてみると、驚くほど多くの発見と学びがあります。一緒にコードリーディングをして学びませんか。 主に androidx.compose.foundation / ui / material のコードが対象です。 * Button * Column/Row * Box * Surface * Modifier | Jetpack Compose を一段低いレイヤーで理解したい人 Jetpack Compose で普段使う API の実装を知りたい人 | 40 minutes | 日本語 / Japanese | Jetpack Compose | Naoto Ishida | |||||||||||||||||||
73 | パフォーマンスを意識したJetpackCompose実践 | JetpackComposeではKotlin APIを採用することで従来のViewシステムよりも自由度が高くUI層を記述することができるようになりました。 しかし、これにより意識せずに構築するとパフォーマンスが上がらない実装になってしまうことがあります。 本セッションでは、筆者が実務で導入する際に実装した経験を元にパフォーマンスよく実装するための例を実戦形式でお伝えできればと思います。 アジェンダ(予定) ■ Jetpack Composeでのパフォーマンスを上げる方法について はじめに、JetpackComposeでパフォーマンスを上げるための一般的なアプローチの方法を解説します。 - 計算ロジックのViewModelへの分離 - 不変性を意識したデータ設計 - 動的な変更区分を意識したCompose関数の分離 - 不要なイベント発行やRecomposeを起こさないためのビューの状態監視 ■ 実践例 ユーザ操作可能なアニメーション付きのローテーションバナー ローテーションバナーを例に時間経過で更新されるアニメーションとユーザスワイプなどによるイベントハンドリングをJetpack Composeを 用いてパフォーマンスよく実装する方法を実践例を用いて解説します。 ■ 実践例 ボトムシートを用いた絞り込み・ソート有りのページングリスト 絞り込み・ソートやスクロールによる追加読み込みなど動的な操作が可能なページングリストをJetpack Composeを 用いてパフォーマンスよく実装する方法を実践例を用いて解説します。 ■ 実践例 複数の状態をマージしてのエラーダイアログやエラー画面 エラーダイアログやエラー画面では、複数のAPIレスポンスやシステムの状態を監視して結合して掲出する必要があります。 これらをJetpack Composeを用いてパフォーマンスよく実装する方法を実践例を用いて解説します。 | これからJetpackComposeを実務で導入することを検討している方 JetpackComposeを導入したが、いまいちパフォーマンスが上がらずに悩んでいる方 | 40 minutes | 日本語 / Japanese | Jetpack Compose | Yukihiro Mori | |||||||||||||||||||
74 | AndroidアプリにFlutterを載せる | あなたのアプリにもFlutterを導入してみませんか? 既存のモバイルサービスではAndroidやiOSそしてWebまで別の開発チームが必要になり、コミュニケーションコストやプラットフォームによって差分が発生することが多いと思います。 そして会社的にはAndroid、iOS、Webまで別々のチームを作って数人で維持することは難しいと思います。 上記の問題を解決できるクロスプラットフォームを提供するFlutterがありますが、一気に変更することは現実的ではないのでネイティブから頑張って開発している会社もあると思います。 そこで、既存アプリの一部をFlutterで変更することはどうでしょうか? 少しでも上の問題を解決できるし、少しづつFlutterを学習することもできると思います。 弊社では既存サービスにFlutterをのせることを検討していますが、検討しながら得た情報を皆さんと共有したいと思います。 概要 * 既存AndroidアプリにFlutter載せる方法 * 載せたFlutterとのデータやりとり * 既存サービスにFlutterを載せてみて導出した結論 * 各AndroidとFlutterチャンネルの性能 - EventChannel移動時間 - EventChannelの限界のデーター量 - MethodChannel移動時間 - MethodChannelの限界のデーター量 | Androud開発者 | 25 minutes | 日本語 / Japanese | クロスプラットフォーム (Cross-platform Development) | Tomi Hand | |||||||||||||||||||
75 | Gradle Managed Virtual Devicesで変化するエミュレータ活用術 | 皆さんはAndroidエミュレータを使っていますか? 普段の開発であたり前のように使われているエミュレータですが、Gradle Managed Virtual Devicesの導入によって、Androidエミュレータを取り巻く事情が大きく変化しようとしています。 Gradle Managed Virtual Devicesは、Android Gradle Plugin (AGP) 7.2より導入された機能です。 この機能を使うと、build.gradleにテストを走らせたいAndroidエミュレータのスペックを書くだけでAVD (Android Virtual Device)の作成・起動からテストまでをコマンド1つで実行できます。 また、(Canary版ではあるものの)Automated Test Device (ATD)と呼ばれる軽量なエミュレータも利用できるようになっています。 一見とても便利そうなGradle Managed Virtual Devicesですが、本機能にも得手不得手があります。 例えば、画面が表示されなかったり、テスト実行が終わると同時にエミュレータも終了したりするため、意図通り動かなかったときの解析が大変なことがあります。 本セッションでは、新しく導入されたGradle Managed Virtual Devices機能はどのようなものなのか、それによってエミュレータの使い方がどのように変化してくのか紹介します。 また、AGPの実装を調べて判明した内容を元に、Gradle Managed Virtual Devicesを活用する際に直面しがちなトラブルの解決方法も合わせて紹介します。 具体的には次のようなトピックなどについて紹介します。 これを機に、皆さんが持っているAndroidエミュレータの知識もアップデートしませんか? ・Gradle Managed Virtual Devicesでできること、できないこと ・Gradle Managed Virtual Devicesの活用例 ・Robolectricでは心許無いテストを動かす ・UIテストを動かす ・スクリーンショットテストを動かす ・CI環境上でGradle Managed Virtual Devicesを使うときの工夫 ・Gradle Managed Virtual Devicesの実行で問題が起きたときの調査方法Tips ※できるだけCanary版を含む最新のAGPの実装を調べた結果にもとづいて話す予定です。 | ・Gradle Managed Virtual Devices機能に興味はあるが、深く触っていない方 ・Gradle Managed Virtual Devices機能を試してみたものの、思った通りに動作せず諦めてしまった方 ・CI環境において、Androidエミュレータ上でテストを走らせる方法を知りたい方 | 40 minutes | 日本語 / Japanese | 保守・運用・テスト (Maintenance, Operations, and Testing) | 外山純生 (sumio_tym) | |||||||||||||||||||
76 | Introduction to Wear OS Application Development | みなさま、ウェアラブルデバイスはお使いですか? Google I/O 2022で、今秋にGoogle Pixel Watchが発売されることが公表されました。 Wear OSの開発をめぐる環境は、近年大幅にアップデートされています。 たとえばJetpack APIの登場や、Android Studio連携の強化、ドキュメントやコードラボの刷新などが行われました。 本セッションでは、Wear OSアプリのリリースを目標に、これを知っていればWear OSのアプリを実装できるという要点を紹介します。特に、Wear OSアプリの開発をこれから始められる初心者の方を想定し、Wear OSがどのようなもので、どんな機能が提供できるのかという点も詳しく解説します。 現在考えているセッションの内容は次のとおりです。 - Wear OSの開発について - Wear OSではどんなことができるのか - スマートフォンのアプリ開発との差異 - Wear OSアプリのUIとUX - APIのサポート状況の概観 - Jetpack API - Compose for Wear OS - Wear OSの開発の始め方 - セットアップ - デバッグ方法 - Wear OSアプリをつくる - Overlays - Tiles - Complications 発表をとおして、最新のWear OSアプリの開発情報について共有できれば幸いです。 | ・Wear OS向けのアプリに入門されたい方 ・以前、Wear OS向けのアプリを開発されていた方 ・最近のWear OS向けのアプリの開発情報をキャッチアップされたい方 | 40 minutes | 日本語 / Japanese | Androidプラットフォーム (Android Platform) | Ryo Yamazaki | |||||||||||||||||||
77 | ノーアーキテクチャなコードにアーキテクチャをもたらす技術 | 往々にして、ビジネスとしてのサービス開発初期からアーキテクチャを導入するのは悩ましいものです。数年後どれだけスケールしているのか?そもそも当たるのか?というのが定かではない状態でそこにコストを掛けるよりも、実際に動くものをユーザーに最速で提供することで高速なPDCAを回していきたいからです。いわゆる0→1のフェーズを突破して、1→10のフェーズに到達したサービスが抱える問題のひとつに開発初期のノーアーキテクチャなソースコードの運用が挙げられます。 ありがたいことに、アプリアーキテクチャガイドというものがGoogleから公開されています。Androidアプリエンジニア同士の共通認識として活用できる資料として活用されている方も多いでしょう。 本セッションでは、ActivityやFragmentなどにロジックがベタ書きされているノーアーキテクチャなソースコードにアーキテクチャを導入するためのテクニックやその過程、継続的に運用していくための取り組みをご紹介します。当時の失敗談も交えながら、今だったらこうしていたという改善案まで赤裸々にお話する予定です。 | - ノーアキテクチャなソースコードに苦戦している方 - Googleのアプリアーキテクチャガイドに興味がある方 - 「関心の分離」「レイヤードアーキテクチャ」「DI」でピン!とくる方 - 技術的負債でお困りの方 - 担当サービスが0→1から1→10にフェーズ移行される方 | 25 minutes | 日本語 / Japanese | アプリアーキテクチャ (Application Architecture) | kobaken | |||||||||||||||||||
78 | Androidのモダンな技術選択にあわせて自動テストもアップデートしよう | ここ数年の間に、Jetpack ComposeやKotlin CoroutineおよびKotlin Flow等、Androidアプリ開発をする際に選択できる新しい技術が登場しました。現在では、多くのプロダクトがそれらの技術の導入や移行を進めています。 新しい技術を選択する際には当然キャッチアップが必要になりますが、あわせてその技術を使ったコードをどのようにテストするかを知ることも重要です。テストする手段を知ることで、新しい技術を使ったコードの動作確認も容易になりますし、その技術を更に理解することにも繋がります。 とはいえ、プロダクトコードへの導入を進めながら、テストの書き方までキャッチアップするのが大変なことも事実です。 本セッションでは、新しく採用されるケースが多い、次の技術のテスト方法を紹介します。また、より実践的な内容にするために、テスト方法をGuide to app architectureで推奨されるレイヤー毎(UI Layer・Data Layer)に整理して紹介していきます。 ・ Kotlin Coroutine ・ Kotlin Flow ・ Jetpack Compose ・ Dagger Hilt 扱うトピックが幅広いため、1つ1つのテスト方法について深堀りするよりも、それぞれの技術・レイヤーの最初のテストを書くために必要な知識を整理し、テストを書き始めるハードルを下げることを目指します。 | ・Kotlin CoroutineおよびKotlin Flow/Jetpack Compose/Dagger Hiltの導入をしたが、自動テストのキャッチアップができていない方 ・Kotlin CoroutineおよびKotlin Flow/Jetpack Compose/Dagger Hiltを導入予定で、自動テストの基本的な書き方に興味がある方 | 40 minutes | 日本語 / Japanese | 保守・運用・テスト (Maintenance, Operations, and Testing) | Nozomi Takuma | |||||||||||||||||||
79 | なぜあなたのデザインは正しく実装されないのか | あなたが心血を注いで作り上げたデザインは、エンジニアの実装を通した結果、なんだか思ってたのと違う形でアウトプットされてしまいました。 なぜ、このような悲しいことが起きてしまうのでしょうか。 そこにはデザイナー、エンジニア、時にはマネージャー(オーナー)のそれぞれに何か原因があったり、時には全員が同じ問題を抱えている場合もあります。 本セッションでは、ありがちな「意図通りに実装されないデザイン」の例を上げながら、なぜそうなってしまうかという原因を分析しつつ、意図通りに実装されやすいデザインはどういうものかを学んでいきます。 なお、Kotlinによる非ゲーム系アプリを開発することを前提としたセッションとなります。 | 基本的にはデザイナーが受講対象者ですが、デザイナーにデザイン内容のやり取りで悩みを抱えているエンジニアやマネージャーの方も参考になるかもしれません。 | 25 minutes | 日本語 / Japanese | UI・UX・デザイン (UI・UX・Design) | yamacraft | |||||||||||||||||||
80 | 着信から応答まで | 通話に関する機能を提供するTelecom frameworkを使い、VoIP通話アプリでどのように着信から応答まで実装するか | アプリが終了している状態での着信処理に興味がある人 | 25 minutes | 日本語 / Japanese | Android Framework | retlat | |||||||||||||||||||
81 | BLEを使ったアプリを継続的に開発するために | BLE、Bluetooth Low Energyとは近距離無線通信規格Bluetoothのうち低消費電力で利用できる通信モードで、IoTデバイスとスマートフォン間の通信などで広く利用されています。 AndroidというOSにおいては、端末依存の挙動やコールバック地獄などが存在するおちゃめなAPIとしても一部で名が通っています。 IoTデバイスを開発している企業にAndroidエンジニアとして入社した場合、BLE APIと付き合っていくことになります。現在提供されているコールバックベースのBLE APIを受け入れて真摯に向き合っていくのはおすすめできません。RxJava時代を経て今我々の手にはCoroutineという素晴らしい道具があります。このセッションではBLE APIを利用したデバイスとの通信の実装を解説した後に、私が経験したCoroutineを利用したメンテナンス性の高いコードへの書き換え事例やプラクティスを紹介します。 # こんな人に聴いて欲しい - BLE APIを利用するアプリを開発していて、コードのメンテナンスに疲れてしまった方 - これからBLE APIを利用するアプリを書こうとしている方 - メンテナンス性の高いBLE APIを利用するコードを書きたい方 # 話すこと - BLEに対応したデバイスとの通信を実装する方法 - 2022年、Coroutine/Flow時代のBLE APIプラクティス # 話さないこと - プロトコルの詳細 - BLE APIのおちゃめさ加減 # こんな人を待ってます - BleXを開発してくれるGoogler | BLE APIを利用するアプリを開発していて、コードのメンテナンスに疲れてしまった方 これからBLE APIを利用するアプリを書こうとしている方 メンテナンス性の高いBLE APIを利用するコードを書きたい方 | 25 minutes | 日本語 / Japanese | Android Framework | Moyuru | |||||||||||||||||||
82 | 今更覚えるRecyclerView 第一話 | Jetpack Composeが隆盛を極める昨今、legacyとなってしまったViewに関するセッションです。 多量のアイテムを表示するのに使用するといえばJetpack ComposeのLazyColumnやLazyRowでしょうが、以前はRecyclerViewを使用していました。今となってはlegacyなRecyclerViewですが、UIの複雑さによってはLazyColumn/Lazy RowよりRecyclerViewの方が高いパフォーマンスを維持しやすく、まだ十分な利用価値があるでしょう。 RecyclerViewは様々なコンポーネントから構成されており、そのコンポーネントをカスタマイズすることでただアイテムを並べるだけでなく様々な表現やパフォーマンスの向上が可能になっています。代表的なもので以下のようなコンポーネントがあります。 - RecyclerView.ItemDecoration - RecyclerView.LayoutManager - RecyclerView.ItemAnimator - RecyclerView.Adapter - RecyclerView.RecycledViewPool - SnapHelper - ItemTouchHelper - DiffUtil 例えば、RecyclerView.ItemDecorationをカスタマイズすればアイテム間にフレキシブルにマージンを付けることができ、応用すればDroidKaigi 2019アプリのセッション一覧画面のようにアイテムの横に時間を表示することも可能です。 RecyclerView.LayoutManagerをカスタマイズすれば同じくDroidKaigi 2019アプリのタイムテーブル画面のような複雑なレイアウトを実現できます。 RecyclerView.RecycledViewPoolやDiffUtilを活用することでパフォーマンス向上を図ることも可能です。 このように、RecyclerViewは非常に拡張性の高いViewです。 いつか来るであろうデザイナーからの高い要求に「出来ます」と余裕の一言を返すために、本セッションで以下の2つを通してRecyclerViewの理解を深めましょう。 # RecyclerView.ItemDecorationでCanvas直描き装飾 前述したようにItemDecorationはアイテム間にマージンをつけるだけにとどまりません。RecyclerViewのCanvasにアクセスすることでRecyclerViewのアイテム間を縦横無尽に装飾する事が可能です。 # LinearLayoutManagerをミニマム再実装してRecyclerView.LayoutManagerの実装理解する RecyclerView随一の複雑かつ重要なコンポーネント、LayoutManagerの実装方法をLinearLayoutManagerのミニマム実装を通して理解しましょう。 * その他のコンポーネントに関してはFuture DroidKaigiで!! | - まだまだRecyclerViewを使っていきたい奇特な方 - 複雑なタイムテーブルが組まれてしまった年のDroidKaigiのアプリ開発者や某TVの開発者 | 40 minutes | 日本語 / Japanese | UI・UX・デザイン (UI・UX・Design) | Moyuru | |||||||||||||||||||
83 | アプリ改善〜レガシーとモダンの共存と移行〜 | Android アプリを開発しながら継続してリリースしていく上で所謂レガシーと呼ばれる技術とモダンと呼ばれる技術をどう使っていくかは大きな課題だと思います。 本セッションでは、レガシーからモダンまでが共存しつつ、移行しながら継続的にリリースするアプリの開発に携わっている経験から、どのように考えて進めているか、良かったこと悪かったこと等の知見を共有できたらと思います。 ※ここでのレガシーは絶対悪という文脈では使っていません。 セッションに出てくるであろう技術 レガシー - Java - AndroidAnnotations - EventBus 等 モダン - Kotlin - Jetpack Compose - Dagger Hilt - 各種 Jetpack ライブラリ 等 | - レガシーな Android アプリをどう変えていこうか悩んでいる方 - レガシー → モダン絶賛移行中の方 | 25 minutes | 日本語 / Japanese | 保守・運用・テスト (Maintenance, Operations, and Testing) | Pon | |||||||||||||||||||
84 | 今年リリースされたCTS-D (互換性テストスイート)をアプリ開発に活用しよう! | Androidアプリを開発していて、あるデバイスでは動作するのに、他のデバイスでは、予想通りに動作せず、苦労したという経験はありませんか? このセッションでは、デバイスの互換性をテストするCTS-Dについてご紹介します。CTS-Dは、グーグルが今年6月にリリースしたプログラムで、アプリ開発者の方に、互換テストの共同開発に参加していただき、互換性の問題を、Androidコミュニティーとして、一緒に解決していくことを目指して発足されました。 | Androidの開発者全般。初心者〜上級者。 CTS-D(互換性テストスイート)の基本から、テスト開発への参加方法までを網羅します。 | 25 minutes | 日本語 / Japanese | 保守・運用・テスト (Maintenance, Operations, and Testing) | ctsd, Saryong Kang | |||||||||||||||||||
85 | State of Jetpack Compose | Hear about Jetpack Compose from the Compose team. What's new in Compose 1.2, what's coming in 1.3 and tips you can use to adopt Compose in your app. | All levels of Android developer | 40 minutes | English | Jetpack Compose | Ben Trengrove | |||||||||||||||||||
86 | Lessons Learned Migrating the Maps SDK to Compose | This session goes over the story behind Maps Compose—the Jetpack Compose interoperability library for the Maps SDK for Android. Learn lessons in Compose API design and how to effectively migrate your library or app to Compose. At the end of this talk, developers will know how to: * use interoperability APIs to bridge View-based apps/libraries to Compose * follow best practices for composable elements' API design * use subcomposition to tap into Compose APIs for managing tree-like data structures | Intermediate developers. Have prior knowledge of Jetpack Compose. | 40 minutes | English | Jetpack Compose | Chris Arriola | |||||||||||||||||||
87 | KoinからDagger Hiltへの乗り換えで見えた安全な移行手段 | Dependency Injectionは依存関係の分離を行うことでリファクタリング・テストを容易にするなど、よりよいアプリアーキテクチャのためにAndroidアプリ開発でも広く導入されています。 これまではDIライブラリとしてDaggerやKoinが存在していました。しかしDaggerは概念が複雑でボイラープレートが多くなってしまったり、KoinではDIの設定のミスがビルド時ではなくランタイム時にでてしまうといった問題がありました。 そんな中登場したのがDagger Hiltです。 弊社アプリでは半年をかけてKoinからHiltへの移行作業を完了させました。 DIはアプリ全体に使われるものであり、移行作業の影響範囲はアプリ全体になります。とはいえいきなり移行することは難しいので、アプリの他の機能開発を続けながら安全にかつなるべくコストを抑えて移行する手段を選択しました。 移行作業を行う中で、制約に厳しいHiltでは直接表現できず修正が必要な箇所が出てきました。ここから、Hiltで禁じている「良くない設計」も見えてきました。 このトークでは、実際に移行を行った知見をもとに ・DIとは ・各DIライブラリの共通する・異なる機能 ・開発を続けながら大規模な移行を安全に行う方法 ・Hilt化で見えてきた良くない設計 ・ビルドやランタイムでのパフォーマンス比較 について話します。 | KoinからHiltへ移行したい方 DIライブラリの選定を行っている方 大規模な移行作業を安全に行うヒントが欲しい方 | 25 minutes | 日本語 / Japanese | アプリアーキテクチャ (Application Architecture) | verno3632 | |||||||||||||||||||
88 | ユーザーの行動ログ定義を Markdown で管理して Gradle Plugin からコードを生成する | ユーザーの行動ログはサービスを開発する上で分析や実態把握に用いられるものです。それらは日々のサービス開発によって多くの施策に対して定義され、実装され、積み重なっていきます。 ログの送信箇所が増えれば増えるほどに、またログを実装してから時間が経てば経つほどに、どの画面でなんのログが送られているか、そのログにはどういう情報が乗っているかなどを網羅するのが困難になります。 また、 iOS/Android で分かれてアプリを開発している場合は、どうしてもイベント名を間違って実装したり送信するタイミングを揃えられなかったりすると、分析をするときに多くの手間や手戻りが発生してしまいます。 それらの問題を解消するために、 Markdown でログの定義を共有し、そこから Gradle Plugin を使ってログのコード自動生成を行う仕組みを導入しました。 本セッションでは、導入に際して私たちが持っていた課題を共有し、それらの課題に対してどう向き合ったかを紹介した上で、 Gradle Plugin からコードを生成するときのメリット、kapt, ksp との違い、実装時のポイントなどの技術的な取り組みについて紹介します。 | 行動ログのドキュメンテーションや管理方法に困っている人 iOS/Android でプラットフォームをまたいでログの定義を管理するのに疲れた人 | 25 minutes | 日本語 / Japanese | 開発ツール&サービス (Productivity and Tools, Service) | litmon | |||||||||||||||||||
89 | エンジニア駆動でデザインツールの刷新ができた | 昨今では、アジャイル開発でのスタイルが主流となりつつある中で、デザイナーとエンジニアは密なコミュニケーションを取りながら要件決め・プロダクトの実現性や設計などを一緒に作っていく必要があると思います。 デザイナーとのキャッチボールがうまくいかないと開発スピードが十分に出ない事や要件の認識違いなど致命的な問題に遭遇することもあります。 そういった問題をツールの刷新で解消できたお話をできたらと思います。 | エンジニア・デザイナーとのコミュニケーションやインテクグレーションで困っている方 ツールなどの刷新をするきっかけに困っている方 | 25 minutes | 日本語 / Japanese | 開発ツール&サービス (Productivity and Tools, Service) | bami | |||||||||||||||||||
90 | PlayStoreでの新しいユーザー訴求 -LiveOpsの活用とその成果- | みなさんは自社アプリの魅力をユーザーにどのように伝えていますか?ストアに掲載する画像の趣向を凝らしたり、イベント時にはアプリアイコンを変えるといったことは定番の手法になったかと思います。 ところで、最近はPlayStoreにアプリのイベントや特典の告知が表示されるようになったことは、ご存じでしょうか。これはPlayStoreのLiveOpsという機能を使って提供されており、新たにユーザーの獲得や既存ユーザーのエンゲージメント向上に役立つ機能となっています。 本セッションでは、LiveOpsで何が出来るのか、実際にどのような効果が得られるのかといった点を中心に、ZOZOTOWNアプリでの実例を交えながら解説してみたいと思います。 想定する内容 ・LiveOpsで扱える内容 ・LiveOpsの設定方法 ・設定時の注意点 ・ZOZOTOWNアプリで設定したLiveOps ・ZOZOTOWNアプリで得られた成果 | ・アプリのダウンロード数を増やしたいと思っている方 ・アプリのアクティブユーザー数を増やしたいと思っている方 | 25 minutes | 日本語 / Japanese | その他 (Other) | androhi | |||||||||||||||||||
91 | Android アプリの内と外をつなぐ UI | UI はアプリの中だけのものではありません。ホーム画面からアプリを起動する際のスプラッシュ スクリーン、ステータス バーやナビゲーション バーとアプリ内 UI の干渉を防ぐ WindowInsets など、アプリの UI がシステムの UI と連携する場面は数多くあります。最新の Android 13 でもバック ジェスチャーに関する API が変更され、対応が必要になっています。このセッションでは、アプリの内と外をつなぐ UI に焦点を当て、最新のベスト プラクティスを解説します。 | View また Compose でアプリを開発している人 | 25 minutes | 日本語 / Japanese | UI・UX・デザイン (UI・UX・Design) | 荒木佑一 | |||||||||||||||||||
92 | Glance で始めるウィジェット開発 | Glance は Compose に似た API でホーム画面用のウィジェットや Wear OS のタイルを作ることができるライブラリです。Compose の利用が広がる中、ウィジェットも同じように記述できる Glance の導入を検討している方も多いようです。このセッションでは、Glance でウィジェットを作成する基本的な手順を紹介した上で Compose との違いやよく利用する API について解説します。 | ウィジェットの開発を検討している方 | 25 minutes | 日本語 / Japanese | UI・UX・デザイン (UI・UX・Design) | 荒木佑一 | |||||||||||||||||||
93 | 大規模アプリでのJetpack Composeの導入事例 | Jetpack Compose、流行ってきてますよね。 うちも入れてみたいけどな〜、どこから入れるといいのかな〜とお悩みのあなた! ZOZOTOWNでJetpack Composeを導入した際に得た知見を共有します。 以下のような観点をお話します。 - 導入するためにどのような準備を行ってきたのか - どこから導入をすればよいか - Compose、どういう粒度で分割したらよいか - アプリを作る上でどういった体制で行ったか - Composeを導入する際に何に苦労したか - 参考になったOSS - 得た知見からの改善案 | Jetpack Composeを新規で導入したいエンジニア 大規模アプリを開発しているエンジニア | 25 minutes | 日本語 / Japanese | Jetpack Compose | iwata_n | |||||||||||||||||||
94 | ラクに速く正確にUIが作れちゃう!Jetpack Composeを用いたデザインシステムによるアプリの開発事例 | ▼概要 宣言的UIフレームワークのJetpack Composeの登場により、以前に比べてUIコンポーネントが作りやすくなりました。 そこで弊社ではJetpack Composeの特徴を活かし、社内のデザインシステムをパッケージとして開発・運用することで、楽に速く正確にUIを実装することを可能にしました。 また、パッケージ内のコンポーネントを一覧で確認できるカタログアプリも合わせて開発することで、実装コストだけでなく、仕様検討時のコミュニケーションコストやデザインの手戻りも削減することができました。 本セッションでは、デザインシステム構築までの開発プロセスと実際に運用してみて得られた恩恵についてご紹介します! デザインシステムを構築し、みんなで楽に速く正確にUIが作れる世界線へ! ▼コンテンツ ・デザインシステムについて ・概要と構築の経緯 ・実装方法と運用事例 ・構築して得られた恩恵 ・カタログアプリについて ・概要と活用事例 ・開発して得られた恩恵 | Jetpack Composeによるデザインシステムの構築に興味がある人 | 25 minutes | 日本語 / Japanese | UI・UX・デザイン (UI・UX・Design) | yoshikei | |||||||||||||||||||
95 | アプリアーキテクチャを明文化しチームの開発効率をアップ | 現在の Android 開発において、Android Developサイトでも推奨されているように MVVM アーキテクチャを採用した実装スタイルが採用されることが多く、開発者の多くの方が Develop サイトから学習し開発を進めていると思います。しかしながら、弊社のモバイル開発チームは、2020年に組織化された新しいチームであるため、様々な解決するべき課題を抱えております。中でも、 ・技術力向上 ・開発スタイルの習得 ・学習・実装コストの削減 といった課題は、チームの中でも優先度が高いです。そこで、特に優先度が高かった技術的課題へのアプローチとして「アプリアーキテクチャの明文化」を行い、現在新規アプリ開発を進めております。 弊社の開発においても Android 開発で推奨される MVVM アーキテクチャを採用しています。アーキテクチャをよりチームで共通認識とし運用するには、 ・開発体制 ・技術トレンド ・会社文化 を考慮して具体化する必要があります。ある程度経験がある開発者であれば、〇〇アーキテクチャと聞くと大まかなイメージは掴むことはできると思います。しかしながら、アーキテクチャスタイルだけしか決めずに実際に開発を開始すると、詳細設計での認識齟齬が生じ、レビューの度にディスカッションが生じて開発の効率化に影響を与えてくることも少なくありません。他にもチームでアーキテクチャが明文化されていると、技術的課題へのアプローチだけでなく、新しいメンバーが加わった際の立ち上がりコストにもアプローチすることができます。 一方で、MVVMアーキテクチャは、RxJavaを中心としたアーキテクチャから近年ではJetpackを中心したアーキテクチャへと変遷しており、現在も進化しています。またオブジェクト指向やドメイン駆動設計の近年の盛り上がりの潮流も踏まえて、弊社ではこれまでのMVVMアーキテクチャを進化させたアーキテクチャを採用しています。本セッションでは、 ・アーキテクチャガイドラインとして具体的に明文化した内容 ・弊社で採用したオブジェクト指向型のアーキテクチャ を中心に、アーキテクチャを明文化して実際の開発に臨んだ話を紹介したいと思います。 | Android 開発者全般 | 25 minutes | 日本語 / Japanese | アプリアーキテクチャ (Application Architecture) | akkie76 | |||||||||||||||||||
96 | Android Vitalsのデータを自動監視してビジネス指標を向上させよう | Android Vitalsを使用すると、アプリの安定性やパフォーマンスに関する指標を確認できます。 Vitalsの指標の低下は、ユーザ体験の低下に繋がるだけでなく、Playストアでの評価の低下や検索ランキングの低下にも繋がります。 https://developer.android.com/distribute/best-practices/develop/android-vitals?hl=ja GoogleI/O 2022ではVitalsの指標であるANRを50%減らすと、20%のリテンション率向上、30%トランザクション数が向上したプロダクトが紹介されていました。 https://www.youtube.com/watch?v=DYdHLqLVspY したがって、Vitalsの指標はUUやCVRなどのビジネス指標にも影響する可能性が高いため、指標の改善・維持はプロダクトにとって重要な役割となります。 しかしながら、Vitalsの指標を注意深く監視できていなかったり、監視の自動化が難しいため手動での監視となってしまっているのが実情ではないでしょうか? 2022年3月にPlay Developer Reporting APIが公開され、Vitalsの指標をAPI経由で取得することが可能になり、監視の自動化や分析をより簡単に行うことが可能になりました。 https://android-developers.googleblog.com/2022/03/play-developer-reporting-API.html 本セッションでは、監視の自動化方法のみならず、アラート発生時の弊社の運用方法ついても紹介する予定です。 <アジェンダ(予定)> ・Android Vitalsについて ・各指標について ・(Crashlyticsとの使い分けについて) ・Vitals指標を改善するメリットについて ・Play Developer Reporting APIについて ・監視の自動化方法について ・アラートが発生した際の運用方針について ・(よく見かけるクラッシュとその対処方法の紹介) ・導入の効果・知見 | ・Android Vitalsについて知りたい方 ・Vitals指標の重要性について知りたい方 ・Play Developer Reporting APIについて知りたい方 ・弊社でのVitals監視の自動化方法と運用について知りたい方 | 25 minutes | 日本語 / Japanese | 保守・運用・テスト (Maintenance, Operations, and Testing) | Yusuke Suzuki | |||||||||||||||||||
97 | あなたのアプリにMaterial Designを取り入れる具体的プロセス | Material DesignはGoogleが提唱したデザインシステムであり、Androidプラットフォームとの整合性が取れるように、AndroidアプリはMaterial Designのガイドラインに従うことが推奨されています。 https://material.io/blog/why-we-recommend-material-design-components-android さらにGoogleI/O 2021では、Material Design 3の発表があり、Material Youによるパーソナライズ機能の強化されるなどアップデートが続いています。 Material Designのアップデートは続いている一方で、プロダクトへの導入はなかなか進んでいないのが実情なのではないでしょうか? その要因としては下記があげられると思います ・エンジニア・デザイナー双方のMaterial Designについての知識不足 ・プロダクトのどの部分に改善ポイントがあるか明らかではない ・実装時間の確保が難しい 弊社では上記要因を取り除くために、下記取り組みを行ってきました。 要因1について、デザイナーとエンジニアで「Material Design勉強会」と呼ばれる勉強会を行い、ガイドラインを輪講形式で学ぶ取り組みを行っています。 要因2については、デザイナーとエンジニアで改善ポイントの提案会を行い、プロダクトのどの箇所にMaterial Designを取り入れることができそうかを議論しています。 要因3については、「Material Design 実装会」と呼ばれる会を行い、提案会で出た案をペアプロ形式で実装する取り組みをしています。 本セッションでは、上記取り組みの詳細とその効果・知見について紹介する予定です。 <アジェンダ(予定)> ・Material Designとは? ・Material Design勉強会について ・改善ポイントの提案会について ・Material Design実装会について ・効果・知見 ・リリース内容の紹介 | ・Material Designをプロダクトに取り入れたいが、進め方がわからないデザイナー・エンジニア | 25 minutes | 日本語 / Japanese | UI・UX・デザイン (UI・UX・Design) | Yusuke Suzuki | |||||||||||||||||||
98 | Flutter製AndroidアプリのUIを向上させるための注意ポイント | FlutterはGoogleによって開発されたマルチプラットフォームアプリケーションを作成するためのフレームワークです。 Flutterを用いてアプリを開発することで効率よく複数プラットフォームのアプリケーションを開発することができます。 一方で、各プラットフォームには特有のUIがあります。 そのUIに沿って開発することでアプリのUXが向上します。 Androidアプリも例外ではありません。 本セッションではFlutterを用いて作成したAndroidアプリをプラットフォームに沿ったUIにするために注意すべきポイントを共有します。 | Flutterを用いてアプリ開発をしている方 Flutterの導入を検討している方 | 25 minutes | 日本語 / Japanese | クロスプラットフォーム (Cross-platform Development) | yoppie | |||||||||||||||||||
99 | Kotlin Script Introduction | Various ways to use Kotlin scripts, locally as a Python/Ruby alternative or in the CI, to automate tasks such as a release process. It will explains pros and cons of using Kotlin Script compared to other scripting languages. | Kotlin intermediate with an interest in scripting and/or CI automation | 25 minutes | English | 保守・運用・テスト (Maintenance, Operations, and Testing) | Pierrick Greze | |||||||||||||||||||
100 | Kotlinize your CI, from Gradle plugins to Kotlin Script | This talk will explain how I leveraged Kotlin in various ways to write as much automation code as possible with this language, and so being easy to maintain for any Kotlin user. This will introduce several features of Kotlin (like Kotlin script) or Gradle (like Composite Builds, the JavaExec task, Gradle Plugins, etc) | People interested to know more on the CI side of their project (Android or not), or already doing it but facing issues with maintainability due to the various languages used in 1 project (Bash/Python/Ruby/etc). | 40 minutes | English | 保守・運用・テスト (Maintenance, Operations, and Testing) | Pierrick Greze |