A | B | C | D | E | F | G | H | |
---|---|---|---|---|---|---|---|---|
1 | Session title (original) | Session title (English) | スピーカー / Speakers | Description | 受講対象者 / Intended Audience | Session format | Language | カテゴリ / Category |
2 | Our ongoing journey from REST to GraphQL on Android | Our ongoing journey from REST to GraphQL on Android | Julien Salvi | Here is the story of an ongoing migration... and what a migration! This journey moving from our REST API to the GraphQL one is a long run with much coordination across all tech teams. This return of experience will focus on how we are dealing with this transition on Android where Retrofit coexists with Apollo, how we synchronized with backend teams to keep our GraphQL schemas up-to-date or how we are dealing with our authentication stack with Apollo Kotlin, or the issues we faced and much more. Buckle up! Relax! The journey is just starting 🚜 | People interested in knowing more about GraphQL and/or want to move from REST to GraphQL on Android using the Apollo Library. | 40 minuites | English | 開発体制 (Development Process) |
3 | Jetpack Compose で Android/iOSアプリを作る | Create Android/iOS apps with Jetpack Compose | m.coder | KotlinConf 2023 において Compose for iOS のアルファ版が公開されました。 これによりAndroidアプリもiOSアプリも Jetpack Compose で作ることが可能になりました。 本セッションでは簡単なAPI通信を行うアプリ作成を通して、Jetpack Compose で Android/iOS アプリを作ってみることをゴールとします。 ※Compose for iOSは2023/04/25時点でアルファ版のため、セッション内容に変更が加わる可能性があります | - Compose for iOSに興味がある人 - Kotlin で Android/iOS アプリを作ってみたい人 | 40 minuites | 日本語 / Japanese | Jetpack Compose |
4 | Android Open-source repositories 101: Everything you always wanted to know | Android Open-source repositories 101: Everything you always wanted to know | Kikoso | Open-source repositories are a critical part of the Android development ecosystem. They allow developers to easily access and integrate third-party libraries and tools into their projects, saving time and effort. However, managing open-source repositories can be challenging, especially when it comes to issues such as automation, bots, and licensing. In this session, we will provide a comprehensive overview of open-source repositories for Android developers, covering everything from setting up a repository to maintaining and contributing to it. Come here to learn how to maintain and work with Android Open-Source repositories in 2023! | Android developers interested in releasing and managing open-source repositories. | 40 minuites | English | 開発体制 (Development Process) |
5 | Automate and generate. KSP feat KCP against the boilerplate in practice | Automate and generate. KSP feat KCP against the boilerplate in practice | Anna Zharkova | KSP (Kotlin Symbol Processing) is an API from Google and recommended approach to be used instead of KAPT. Using KSP we can write annotation processors to reduce boilerplate, solve cross-cutting concerns and generate code for different purposes. Another way to optimize the code is to use Kotlin compiler plugins. In my talk I would to like to show how to create own plugins and processors and use them in such cases as wrapping request to usecases or managing module configuration | Intermediate level, middle and senior developers Android or KMM | 40 minuites | English | Kotlin |
6 | 中規模アプリにおけるレイヤードアーキテクチャでの例外との向き合い方 | How to deal with exceptions on layered architecture of medium apps | Yukihiro Mori | 例外処理はアプリケーションが大規模化したり、協調するシステムが増えることで複雑化していきます。 アーキテクチャと同様にプロジェクト全体での適切な方針を建てておかないと、適切にユーザフィードバックを行えずにユーザ体験を損ねたり、開発者自身も可読性の低いコードの整備やユーザクレームの調査など開発者にとって本質的な価値創造を阻害する要因となりえます。 そこで本セッションでは中規模アプリにおけるレイヤードアーキテクチャでの例外処理について、実際に筆者が業務で携わっている中規模アプリで採用した方針を交えて共有・解説できればと思います。 以下が、セッションで予定している内容です。 ■ 例外処理についての歴史 言語仕様レベルでの変更 (Java言語からKotlin言語での検査例外から非検査例外への移行について) ■ 一般的な例外処理のアプローチ - 非検査例外による対処 - エラーリザルトによる対処 ■ 実際の開発現場で採用した例外対応方針 ドメインモデルとしての例外クラス (独自Exception) 共通インターフェースによるエラーコードの提供 - 静的エラーコード - 動的エラーコード sealed classによる独自Exceptionの階層的分類 UI層での関心事毎でのエラーハンドリング - 例外を例外に対しての振る舞いにハンドリング ■ エラーハンドリングの種類 ユーザが意図した行動に対してのフィードバック 非同期タイミングでのフィードバック ユーザの関心事がない事象に対してのエラーハンドリング ■ 例外に対してのユーザフィードバック 事象・原因・対処の提示 | 中規模アプリケーションでの例外処理に関心がある方 | 40 minuites | 日本語 / Japanese | アプリアーキテクチャ (App Architecture) |
7 | Kotlinハイパフォーマンスプログラミング | Kotlin High-performance programming | OHMAE Ryosuke | Androidアプリで大量のデータを高速に処理する必要に迫られることはあまりないかもしれません。しかし、それが必要となったとき「Kotlin(Java)だから遅い、C/C++で書くべきだ」といった意見を見聞きしたことはないでしょうか?ある意味ではその意見も正しいと言えるかもしれません。しかし、十分なチューニングを行っていないにもかかわらず、JVM言語は遅い、という漠然としたイメージから出た意見である場合も多いように思います。 Kotlinでも十分に高速な処理を書くことは可能です。可読性も犠牲にする必要はありません、可読性と高速性は両立できます。 しかし、高水準言語であるが故、実行時のコストが見えにくく、ハイパフォーマンスな実装をするにはチョットしたノウハウが必要です。 本セッションでは、Androidアプリにおいて、Kotlinを使用しつつ、高速処理を実現するにはどうすれば良いか、どういったことに気をつければ良いのか、何が処理を遅くするのかについて、実例を交えながら解説し、コードの可読性と高速化を両立させる方法についても解説します。 | Kotlinによるハイパフォーマンスプログラミングに興味のあるかた | 40 minuites | 日本語 / Japanese | Kotlin |
8 | A small leak can sink a great ship | A small leak can sink a great ship | Ayushi Gupta | Memory plays an important role in making an Android application famous. Lesser the memory requirement, the application will run faster on the Android ecosystem. Android ecosystem tries to keep as many applications in memory as possible to enable quicker & smoother switching between applications and tasks, keeping a device feel “snappy” to the end user. So, the lesser the memory requirement, the faster the app will run on a device. So to enhance the user experience and to strengthen the Android ecosystem, memory pressure will be directly proportional to app stability, thus bringing memory leaks into the picture. High memory leaks lead to sluggy apps or skipping frames during its execution or even termination of your application in the middle of critical work. And finally, you may end up with a crash report that doesn't appear to be memory related. Most developers do not focus on memory leaks till they are noticeable due to ANR / Out of memory errors, at which point they require a major rewrite. During development and testing, using tools such as LeakCanary can help you detect and resolve memory leaks. But now it's time to explore LeakCanary 2 & Integration with a dashboard like Firebase to analyse memory pitfalls for apps. Just a simplified way to detect memory leaks during development and testing automation. How to prioritise bugs by the collection of all memory leaks in a dashboard (Not all bugs are worth fixing. Only fix the ones that matter. So let's fix the leak in this great ship to sail high !! | It is intended that audience should collect all their memory leak problems. | 40 minuites | English | Android Framework |
9 | Modifier.Node を使いましょう | Let's use Modifier.Node | suji | Android Dev Summit 2022で、Compose UIのパフォーマンス向上に向けたModifier.Nodeの発表がありまして、発表時はまずFocus modifierのModifier.Nodeへの移行が始まったことが紹介されました。それ以降、Compose UIのさまざまなModifierのModifier.Nodeへの移行が行われています。 このセッションでは以下のトピックについて説明する予定です: ・Compose runtimeの補足とスマートコンポジション処理について説明。 ・なぜ元々のModifierの仕組みでは、Modifier.composed{}の場合にスマートリコンポジションが実行されなかったのか。そして、Modifier.Nodeの開発の動機と、このパフォーマンス問題がどのように解決されるのか。 ・Modifier.Node APIの紹介。 ・AOSPを参照しながら既にModifier.Nodeに移行が行われたCompose UIライブラリのさまざまなModifierの確認。 ・既存のカスタムModifierや新しいModifierを実装する場合のModifier.Nodeへの移行方法。 | ・Jetpack Composeを使用した開発を行っている人 ・新しいJetpack Compose APIの仕様について深く知りたい人 | 40 minuites | 日本語 / Japanese | Jetpack Compose |
10 | YouTubeへのライブ配信機能をリリースするまで | The road to release our broadcast feature for YouTube Live | yurihondo | 昨今、様々なプラットフォームに向けてライブ配信を行う機能が様々なモバイルアプリからの提供され万人がそれを利用しています。 このセッションではYouTubeを対象にAndroidアプリからのライブ配信を実現しリリースするまでの方法をお話させて頂きます。 具体的には、 ・YouTube Data APIを利用したYouTubeへのライブ配信機能の実装方法 ・YouTubeへのライブ配信機能を実際にリリースなどするにあたって必要となるGoogleの審査などについての対応方法 など2023年の現時点でAndroidアプリでライブ配信機能を実現するにあたって対応が必要な情報・フローをまるっと全てお話させていただきます。 キーワード - YouTube Data API - Google OAuth2.0 - RTMP(s) - Multi channel - Google Verification | - AndroidアプリからYouTubeへライブ配信方法の仕組みに興味がある方 - YouTube Data APIの利用方法を知りたい方 - Google OAuth2.0の利用方法を知りたい方 | 40 minuites | 日本語 / Japanese | その他 (Other) |
11 | Material 3 やめました | We've stopped using Material 3 | Yuki Anzai | このセッションでは、Full Jetpack Compose のアプリで Material 3 のデザインシステムを使うのをやめて独自のデザインシステムを構築した話をします。 Material 3 のデザインシステムでは色(colorScheme)、タイポグラフィ(typography)、形(shapes)が定義されています。 例えば色には primary や onPrimary があり、Material 3 のコンポーネントではこれらのデザインシステムの色や形が使われています。 Material 3 に定義されているprimary などの各色は Dynamic color に対応するために seed となる色から生成することを前提としているため、アプリのブランドカラーに合わなかったり適用できる色の定義がなかったりします。 B/43アプリではこれらの問題に対処するために独自のデザインシステムを Compose で構築しました。セッションではその方法について紹介します。 | Jetpack Compose に興味がある方 Material Design 3 のデザインシステムがアプリのブランド(色など)と合わないなと思っている方 | 40 minuites | 日本語 / Japanese | UI・UX・デザイン (UI・UX・Design) |
12 | Securing Android Applications - The not so secret guide explained | Securing Android Applications - The not so secret guide explained | Desnos Anthony, Bessie Jiang | By making your apps more secure, you help preserve user trust and device integrity. This talk presents a set of common security issues that Android app developers face: - Learn more about how to proactively secure your apps. - Understand how to react when one of these issues is discovered in your app. This talk is based on our new page about risks: https://developer.android.com/topic/security/risks | Basic knowledge of Android development. People that want to understand in a better how to have basic security development and how to check the security of their application. | 40 minuites | English | Security / Identity / Privacy |
13 | Gradle Convention Plugins | Gradle Convention Plugins | Jumpei Matsuda | Gradle Convention Plugins allow us to easily/effectively apply shared configurations across projects a.k.a modules especially for Android developers. Convention plugins have some advantages in build phases much more than shared build scripts. However, we have to implement plugins *correctly* to get the advantages because wrong implementations/configurations may bring negative impacts to Gradle's build features like configuration cache. This presentation will explain why Gradle Convention Plugins are good to know for Android developers, and show how to build Gradle plugins from scratch and some plugin examples that collaborate with Android Gradle Plugin. Keywords: Gradle plugin, convention plugin, build logic, precompiled script plugins | Developers who have interests in build speed, Gradle plugin development and flexible project configuration. | 40 minuites | English | 開発ツール&サービス (Development Tools and Services) |
14 | 様々なユースケースに利用できる "パスキー" の導入事例の紹介とUXの課題解説 | Passkey's showcases and UX issues for various usecases | ritou | 2022年にパスワードレスな世界を目指すための切り札となる認証方式として話題を集めたパスキーですが、2023年になってそれを認証に利用するサービスが増えてきました。 Yahoo! JAPAN IDはこれまで対応してきたパスワードを利用しない様々な認証方式にパスキーを加え、パスワードレスな世界を目指しています。 dアカウントは通信キャリアだからこそ実現できる回線認証と同様の認証強度としてパスキーをサポートし、安全性を保ちつつ利便性向上を狙っています。 GoogleはAndroidプラットフォームにおいてパスキーを管理する立場だけではなく、自らのアカウントへのログインにも利用可能です。 マネーフォワード IDはパスワードマネージャーを使うのと同様のUXとなるようにAutofillという仕組みを活用しています。 メルカリはログインよりも先にビットコイン対応サービスを利用するユーザーの保護を目的としてパスキーの対応を始めました。 また、1Passwordはこれまでのパスワード管理に加えてパスキーの管理機能を6月に開始するとの発表が出ており、クロスプラットフォームなパスキー活用も見えてきました。 様々なサービスが様々な目的でパスキーを導入していくなかで、これまでの「パスキーを採用すべきかどうか」という観点から、これからは「パスキーを採用しているサービスにおいて使いやすい、使いづらい部分はどこか」「使いづらい理由はサービスの実装、ブラウザや端末のサポート、仕様自体のどこにあるのか、ワークアラウンドは存在するのか」など、UXのより具体的な課題に向き合っていく段階にあると言えます。 昨年のDroidKaigiでは、コンシューマ領域におけるユーザー認証方式のこれまでの変遷と、Apple/Gppgle/Microsoftの声明から注目を集めた "使いやすくなったFIDO認証" である通称 "パスキー" までの流れを紹介しました。 今回は次の4項目に注目した内容とする予定です。 -パスキー導入に必要な機能と課題 -あのサービスはどう実装しているかという具体例 -Androidアプリにおけるパスキー導入 -ID連携との関係 この講演を聞くことでパスキー導入において必要な機能の具体的なイメージと課題を掴み、実際に設計、実装を進めていく後押しになれるような内容を提供する予定です。 | この講演の対象者は一般的なアプリケーション開発者の皆さんです。 Webアプリケーション、ネイティブアプリケーションの開発に関わっている中で、ユーザー認証をすでにある機能として扱ったり、実際にユーザーとして利用した経験は多くの開発者が経験していることでしょう。 新規登録から設定変更、そして退会まで、ユーザーの"人生"とも言える一連の流れはアカウントライフサイクルと呼ばれます。 パスキーの理解においても重要な概念でありますが、概要の紹介、そしてこの部分がパスキーで重要だという解説をする予定なので、パスキーやユーザー認証について深い知識は不要です。 パスキーの概要はすでにたくさんの解説が出回っているので、それを見て感覚を掴んでおいていただけるとより理解が深まると思います。 | 40 minuites | 日本語 / Japanese | Security / Identity / Privacy |
15 | Introduction to Bytecode Instrumentation with AGP 8 | Introduction to Bytecode Instrumentation with AGP 8 | Marcel Schnelle | With the introduction of AGP 8, a new API for bytecode manipulation was added to the world of Android build tools. Replacing the previous Transform API, which powered many tools used for everyday development, this new way aims at faster build speed and more flexibility for developers. Popular libraries like Realm have faced challenges to adapt to the new paradigm, but ultimately succeeded in pushing their product to the next stage of evolution. This talk is the spiritual successor to my session about the now-removed Transform API from DroidKaigi 2019. It will introduce the new methods and classes developers can utilize to instrument their code, presenting the required steps to get started with this powerful set of tools. | Attendees are expected to be familiar with the core concepts of Gradle. | 40 minuites | English | 開発ツール&サービス (Development Tools and Services) |
16 | iOSとAndroidで定期購入の意図しない解約を防ぐ | Prevent unintentional cancellation of subscriptions on Android and iOS | Ryo Yamazaki, Yuya Sato | サブスクリプション型のサービスにおいて、解約数をどのように改善するかは重要な施策テーマとなります。定期購入の解約には、自発的解約と非自発的解約の2種類があります。 このうち非自発的解約は、クレジットカードの期限切れなどを契機に発生します。本来、解約するつもりはなかったのに解約されるものであり、決済に失敗した状況を解消すれば再び定期購入を継続していただける可能性があります。 アプリ内課金では非自発的解約を防ぐためGrace PeriodとAccount Hold (iOS: Billing retry) という機能がサポートされています。本セッションではGrace PeriodとAccount Holdを利用した非自発的解約を防ぐための実装と施策を紹介します。 現在考えているセッションの内容は次のとおりです。 * アプリ内課金の定期購入について * 定期購入の解約と類型 * Grace Period / Account Holdの紹介 * 導入すると何が嬉しいか * iOS / Androidでの機能の差について * 期間の算定 * Grace Period / Account Holdの実装と検証方法 * Androidの実装 * iOSの実装 * ユーザーとのコミュニケーション * アプリ内とアプリ外 セッションではAndroidだけでなく、iOSの仕様や実装についてもご紹介いたします。両プラットフォームの説明により、より実践にそくした施策が展開できようノウハウを共有できれば幸いです。 特に分かりにくい購読サイクルの説明や、サーバー側のAPIの活用についても触れる予定です。 | * 定期購入のアプリ内課金を導入されている方 * 施策担当者の方 * Grace Period / Account Holdを既に活用されている方 * iOS / AndroidそれぞれでGrace Period / Account Holdを実装されたい方 | 40 minuites | 日本語 / Japanese | 開発体制 (Development Process) |
17 | Jetpack Compose の Side-effect を使いこなす | Master of Side-effect in Jetpack Compose | Kenji Abe | Jetpack Compose には LaunchedEffect, SideEffect, DisposableEffect, derivedStateOf, などの多くの副作用を扱う関数が用意されており、Jetpack Compose を使用しているとどれかは使用した経験があると思います。 これらの関数について基本的な使用方法から、実装詳細、ユースケースごとにどの関数を使えば良いか、などを解説していきます。 | Jetpack Composeを使った開発をしている方 | 40 minuites | 日本語 / Japanese | Jetpack Compose |
18 | Androidの『音』を制御する | Control the *sound* of Android | Nishimy | Androidの音量の設定は端末によって差異のある機能です。特にサイレントモードは端末によって違いが大きいです。ミュートを解除する際には特定の権限を許可して貰う必要がある場合もあります。機種ごとの端末の音量設定方法にどのような違いがあるのかを解説します。 また、Androidの音量制御する時はいくつかの属性(AudioAttributes)が用意されており、この値を適切に設定する必要があります。AudioAttributesの種類について紹介し、どういう状況でどのAudioAttributesを使うべきかについて説明します。その上で、音量を制御する時に気を付けるべきことについて解説します。 このように、Androidで音を制御するのは意外と複雑です。このセッションでアプリ側から上手く音をコントロールする方法についてお話しします。 - Androidの音量を変更する方法 - 音量周りの端末差異 - サイレントモード - 音量制御関連の権限 - AudioAttributesの使い分け - 音量を制御する時に気を付けるべきこと | 端末の音量制御をしたい方 端末差異に興味がある方 | 40 minuites | 日本語 / Japanese | ハードウェア (Hardware) |
19 | 作って学ぶadbプロトコル | adb protocol - learn by making | ntsk | adb (Android Debug Bridge) は、Androidデバイスとの通信に使用されるツールで、ほぼ全てのAndroidアプリ開発者がお世話になっているかと思います。 一方でadbがどのように通信しているか、プロトコルや送信されるメッセージの詳細について触れる機会は少ないかと思います。 本セッションでは、adbクライアントの再実装を通し、adbサーバーとの通信方法やadbプロトコルの主要なメッセージの役割や機能について掘り下げつつ、各種コマンドの実装について紹介します。 | adbの仕組みに興味がある方 | 40 minuites | 日本語 / Japanese | Androidプラットフォーム (Android Platform) |
20 | Master of NestedScroll | Master of NestedScroll | すいみー | アプリ開発において一つのスクリーン上に多くのコンテンツをユーザーに提供するリスト表示やスワイプによるタブの追加はかなり多く見られます。その中でもより多くのコンテンツを提供したい場合、スワイプPager内に横スクロールのコンテンツを入れ子にしたり、CoordinatorLayout内におけるRecyclerViewを配置したり、所謂ネストスクロールが起きるケースが多いでしょう。しかし、いざ実装してみると期待した挙動にならない場合があります。 Jetpack Composeではスクロール可能なコンポーネントにおいてはデフォルトでネストスクロールをサポートしています。そのため上記、前者の例だと子のスクロールをしたつもりでも親のスワイプが動作してしまうケースがあります。こうした場合NestedScrollConnectionを適切に実装することで解消することができます。しかし、ネストスクロール周りの実装は複雑でイメージしにくい側面があると思います。また、JetpackComposeとAndroidViewではネストスクロールが異なる仕様で実装されています。そのため、相互運用する場合ComposeからAndroidView側へ(その逆も然り)スクロールの差分を適切に伝播させるようにしないとユーザー体験を損ねる可能性があります。その点に関してNestedScrollConnectionやNestedScrollingParent3の内部実装を見ながら図式化をし、イメージをつけていきます。 そして、本セッションではJetpack Composeにおけるネストスクロールを主としていますが、AndroidView時代におけるNestedScrollViewやonInterceptTouchEventを用いた解決策なども振り返ります。その上でJetpack Composeと比較してどのような違いがあり、どの程度コードが簡素化されているのかについてもお話しします。 本セッションを通じて以下の状態を実現します。 ・プロダクト開発でネストスクロールを実装する前に事前に注意点が分かっている状態(問題解決が想定した工数になる) ・プロダクト開発においてネストスクロールで期待しない動作が起きた時に原因究明する思考フローが身についている ・端末によって子のネストスクロールがカクついてしまう問題が解決する 目次 ・実際のプロダクト開発で起こりうるネストスクロール問題について ・JetpackCompose時代における解決策 ・AndroidView時代のコードと比較 ・相互運用上の注意点 ・※ネストスクロール周りのパフォーマンス低下を改善する ※ AndroidView時代のコードと比較や相互運用上の分量が多いので最後のパフォーマンス改善に関しては時間があればお話しします。 | プロダクト開発でネストスクロール周りの問題に苦労したことがある人 ネストされたスクロールがあるコンポーネントをJetpack Composeに置き換えようとしている人 Androidアプリ開発においてネストスクロールが発生する時の注意点について知りたい方 | 40 minuites | 日本語 / Japanese | UI・UX・デザイン (UI・UX・Design) |
21 | これで安心! Compose 時代のDon’t keep activities対応 | No more worries! The guide for handling Don't keep activities in the Compose era | upon | Don't keep activitiesという言葉を聞いたことはありますか?これはAndroidの開発者オプションの名前ですが、これにより今見ている画面以外のActivityがAndroid OSにより破棄されデータが消える状況を再現することができます。入力フォームがたくさんあるなどユーザーが長時間滞在しうる画面などで端末のメモリ使用量が増えると、せっかくユーザーが入力した情報が消えてしまう可能性があるため、この開発者オプションをONにしても挙動が期待したものであることの保証が求められることがあります。このDon't keep activitiesオプションの対応にはさまざまなアプローチが取られてきましたが、Composeが普及しはじめている今、改めて新旧の手法を整理しベストプラクティスを再考していきます。このセッションでは、私自身が業務でフルcomposeのアプリを扱う中でこの課題に直面した経験やハマりどころを元に、最新のDon't keep activitiesの対応についてお話しします。 発表予定の内容 ・そもそもDon’t keep activitiesとは ・データが消えてしまう仕組み ・これまでのアプローチとCompose時代のDon’t keep activities対応 関連するコンテンツ ・Best practices for saving UI state on Android (https://www.youtube.com/watch?v=V-s4z7B_Gnc) | 近い将来Don't keep activitiesの対応をする必要がありそうな方 Don't keep activitiesの対応の最新事情を知りたい方 そもそもDon't keep activitiesという言葉を聞いたことすらない方 | 40 minuites | 日本語 / Japanese | Android Framework |
22 | 通知許諾率向上のアプローチ | The approach to improve the rate of the push notification acceptance | Miyabi Gouji | 通知はアプリの外でユーザーとコミュニケーションができる重要な機能です。しかし、ユーザーに通知を受け取ってもらうハードルは年々高くなっています。Android 13では通知のPermissionが追加され、ユーザーが必要とする通知を選択できるようになりました。これによって新規にアプリをインストールするユーザーの通知許諾率は下がっているアプリも多いと思います。さらに、一度許諾をOFFにした場合再度ONにするきっかけは少なく、許諾率の向上のためにさまざまな工夫が必要です。 本セッションでは実際に弊社のアプリで行った通知の許諾率に関する分析と改善策の実施に至るまでのプロセス、さらには結果や施策の改善サイクルについて共有します。 - 通知許諾とは - Android13と12以下の挙動 - 通知許諾の課題共有 - OFFにされる要因 - ONにしてくれるユーザーの数 - 通知をOFFにされないための取り組みの紹介 - チャンネル対応 - 実際に行った対応の概要 - ユーザーの分析 - 許諾をONにしてくれている人の行動分析 - 仮説構築 - 事業貢献度のすり合わせ - 施策の実施 - UI/UXの検討 - 詳細な実装 - 効果検証 - ABテストの設計 - 許諾の変化 許諾率を向上させるという内容だけではなく、開発者が施策を提案し実施するまでに至るプロセスや実際にどのように施策を回して改善していくのか、という点にもフォーカスして話します。エンジニア目線で課題を見つけ提案していくことでより良い体験を提供していきましょう。 | 通知の許諾率を向上させたいと考えている方 開発者が改善案を提案し実際に施策を実施するまでのプロセスに興味がある方 施策の効果検証に興味がある方 | 40 minuites | 日本語 / Japanese | 保守・運用・テスト (Maintenance, Operations, and Testing) |
23 | 突撃!隣のコードレビュー | Are you ready? Our code review explained | Okumura, Sato Taichi | 皆さんは自分が参加しているチーム以外でどのようなコードレビューが行われているか、興味を持ったことはありませんか? 弊社では複数のモバイルチームが存在しており、それぞれのチームで開発体制が構築され、利用技術にも違いがあります。 本セッションでは、Androidアプリ開発を行っている複数のチームで行われているコードレビューの特徴を様々な視点から紹介をします。 より品質のよいコードにするため、より快適にレビューするためのヒントやノウハウを共有できればと思います。 内容は以下を予定しています。 ・各チームのコードレビューの実施方法(レビューの流れやツールについて) ・チームとして工夫していること ・レビュワー/レビューイとして工夫していること ・Androidならではの注意点やTips ・うまくいっていること/今後改善したいこと | コードレビューの事例に興味がある方 よりよいコードレビューのためのヒントが欲しい方 | 40 minuites | 日本語 / Japanese | 開発体制 (Development Process) |
24 | Jetpack GlanceではじめるMaterial3のColor | Material3 Color: Getting started with Jetpack Glance | mochico | Material3の大きな特徴はホーム画面などユーザーのカスタマイズに応じてダイナミックに変化するカラーテーマです。 Jetpack GlanceはHome画面に表示するApp WidgetをJetpack Composeを使って実装できるライブラリです。 ホーム画面に置くWidgetと親和性の高いダイナミックカラーテーマを活用することでよりユーザーに最適化された体験を提供できます。 本セッションではGoogleI/O 2023と同時期に更新されたJetpack GlanceのThemeとMaterial3対応を通じてMaterial3の基礎と活用法について考えていきます。 Summary : ・AppWidgetとRemoteViewの基本 ・Jetpack Glanceを使ったComposeによるApp Widget作成 ・Material DesignとMaterial 3の基本 ・Glance betaで登場したMaterial 3 Theme対応 ・Dynamic Colorを有効活用する 発表までにライブラリに更新があった場合内容に多少の変更・追加があるかもしれません | ・Jetpack ComposeをつかってApp Widgetを構築したい人 ・Material3の要点を抑えたい人 ・Material3の特徴を活かしたWidgetアプリを提供したい人 | 40 minuites | 日本語 / Japanese | UI・UX・デザイン (UI・UX・Design) |
25 | Supercharging Android Testing: Scalable Environments for Large Teams on Diverse Devices & Features | Supercharging Android Testing: Scalable Environments for Large Teams on Diverse Devices & Features | Damian Burke | Unleash the power of Android testing in this talk! Discover strategies for setting up scalable test environments that cater to large teams, diverse devices, and a wide range of features. Revolutionize your testing process and maximize efficiency with reusable setups, deterministic outcomes, and the ability to test and verify A/B tests and more. Gain insights into streamlining your testing efforts, ensuring comprehensive coverage, and empowering your team to deliver high-quality Android applications. The talk will also cover best practices for selecting representative test devices, optimizing test coverage, and testing specific features and functionalities prevalent in modern Android applications. By implementing the insights shared in this talk, attendees will be equipped to enhance productivity, streamline testing workflows, and deliver high-quality Android applications to meet the demands of a diverse user base. | Attendees should be familiar with basic knowledge of automation testing, this talk will be focused on Android and Espresso. It's aimed to support growing teams, or engineers | 40 minuites | English | 保守・運用・テスト (Maintenance, Operations, and Testing) |
26 | ここ数年のAndroid Textの新(?)機能について / What's new (?) in Android Text | What's new (?) in Android Text | Seigo Nonaka | 我々Android Textチームは、常にAndroid OSに新しい機能を追加してきました。 このセッションではここ数年での、Android 9から最新のAndroid 13までの変更箇所や、新しいAPI の紹介とその使い方を、実例を交えてご紹介したいと思います。 以下が予定している内容です。 ・(Android 9) 英語と日本語のフォントを同時に変更する。 ・(Android 11) TextShaperを使ったなめらかなテキストアニメーション。 ・(Android 11) OS組み込みの絵文字フォント自動更新機能。 ・(Android 13) 新しい日本語の改行規則。 ・(Android 13) 高速化されたハイフネーション機能 などなど。 過去にさらっと紹介した内容も含まれますが、今回はいずれも単に使い方を説明するだけでなく、OS内部で何が行われているか、なぜそれらが今まで不可能で、近年可能になったのかなど、Android OSにより詳しく、知的好奇心を満たせるような内容にする予定です。 In the last several years, new features are available in Android text. In this session, I'm going to explain what has changed in Android in the framework in the last several years. And also I'm going to show useful new APIs and examples added from Android 9 to Android 13. Here are the covered topics. - Using a custom Latin font and Japanese font in the same TextView. (From Android 9) - High performance text animations with TextShaper APIs. (From Android 11) - Emoji updatabaility and what is behind. (From Android 11) - Better Japanese line break algorithm. (From Android 13) - Faster hyphenation and why it is faster. (From Android 13) and more? I will include not only showing the usage, but also explaining what is happening in the Android OS internals, why it was not possible in the past, etc. | ・Androidアプリを開発している方 ・Android OSの内部に興味のある方 - Android Application Developers - Developers who is interested in an Android OS internals. | 40 minuites | 日本語 / Japanese | Android Framework |
27 | Android boot verification to ensure integrity of OS and partitions. | Android boot verification to ensure integrity of OS and partitions. | Prashant Pol | Being an Android app developer generally Android boot process is remained untouched as we keep focusing on UI/logic/code-quality/themes etc. It's fun to know how its ensured that Android is booting on a legitimate device and what all procedures are carried out to ensure integrity of each partitions (including oem specific partitions as well). Android works on devices build by many manufacturers hence its very challenging to perform boot time verifications. In this talk, I wish to go through background of boot verification, boot flow, rollback protection, use of hashing and cryptographic keys to ensure integrity of each partition etc. | Any one who wish to know about booting. | 40 minuites | English | Android Framework |
28 | パフォーマンス管理ツールの活用: Firebase Performance MonitoringとMacrobenchmarkを駆使してJetpack Composeを導入するまで | Leveraging Performance Management Tools: make full use of Firebase Performance Monitoring and Macrobenchmark to introduce Jetpack Compose | taimu_shimizu | 概要: アプリ開発におけるパフォーマンス問題への取り組みと、Jetpack Composeの導入とその意義について語ります。パフォーマンスは、クラッシュやバグに比べて後回しにされがちな領域ですが、本セッションではそれを重要視する理由と、具体的な取り組みを紹介します。 内容詳細: - Firebase Performance Monitoringとは何か、その概要と活用方法について説明します。 - Macrobenchmarkというパフォーマンス系のツールの説明と、その使用方法について述べます。 - 実際に私たちがこれらのツールをどのように活用したかの事例を共有します。具体的には、一般的なリリース後のモニタリングと、Jetpack Composeの導入時にどのようにこれらのツールを使用したかについて語ります。 パフォーマンス管理の難しさとその対処法、Jetpack Composeの導入という新たな挑戦を経験した私たちの実例を通じて、参加者の皆様に有益な情報を提供できればと考えております。 | - Firebase Performance Monitoringの導入を考えている方 - Macrobenchmarkの導入を考えている方 | 40 minuites | 日本語 / Japanese | 開発ツール&サービス (Development Tools and Services) |
29 | Building a screenshot testing pipeline that scales | Building a screenshot testing pipeline that scales | Lukas Appelhans | Scaling screenshot tests has been a difficult topic on Android for a while. When rigorously visual regression testing design system components or large scale applications, we face issues of scale such as long CI/CD run times, increased costs or a reduction of productivity due to conflicting pull requests. This talk will go through some of the tradeoffs being made and proposes a screenshot testing pipeline that combines paparazzi to generate screenshots with reg-suit to create a diffing report in a GCS bucket. | Android engineers that want to confidently do large scale UI changes. Platform engineers that want to provide visual regression testing tooling to their co-workers. Android Engineers interested in issues of organisational scale. | 40 minuites | English | 保守・運用・テスト (Maintenance, Operations, and Testing) |
30 | 共有 | Share | 荒木佑一 | インテントによるアプリ間でのコンテンツ共有はあらゆるアプリで広く使われている機能です。共有インテントは Android の最初のバージョンから存在し、最新の Android 14 でも機能が追加されるなど、今でも引き続き重要な領域です。 このセッションでは共有する側 (送る側) と共有される側 (受け取る側) 双方について共有機能を網羅的におさらいし、ベスト プラクティスを紹介します。 主な話題として、インテントの使い方、様々なデータ型の扱い、権限の管理、共有シートのカスタマイズ、共有ショートカットおよび関連機能などを予定しています (共有だけで40分きつかったら他の話題も含めるかも)。 | コンテンツを共有するアプリまたは共有されるアプリを作っている人 | 40 minuites | 日本語 / Japanese | Android Framework |
31 | (Unofficial) Guide to App Architecture Guide Vol. 2 | (Unofficial) Guide to App Architecture Guide Vol. 2 | Saryong Kang | 弊社では2021年からAndroidアプリアーキテクチャガイドを公開し日々新しい内容を追加し続けています。しかしまだ説明されていない設計の重要な点もよく見られます。今回は去年の続編として公式ガイドからカーバーされていない部分について話たいと思います。 * 依存性注入 - Dagger Hiltを使うべき理由 - Dagger Hiltの弱点 - Dagger Hiltの対案は何があるのか * マルチモジュール - モジュールを分ける理由と最適のタイミングは? - 実際モジュールをどう分けたらいいのか - モジュール化の過程で遭遇する9つのアンチパターンとその解決策 | アプリの設計に興味を持っている方 | 40 minuites | 日本語 / Japanese | アプリアーキテクチャ (App Architecture) |
32 | Jetpack Benchmark and where to find them | Jetpack Benchmark and where to find them | Piyush Maheswari | Performance is a key consideration for any mobile app, and it's critical to ensure that your app is fast and responsive in order to provide a great user experience. But how do you measure performance, and how do you ensure that your app is meeting your performance goals? That's where the Jetpack benchmark library comes in. In this talk, I'll be discussing the Jetpack benchmark library and exploring how it can help you measure and optimize the performance of your Android app. I'll cover the basics of benchmarking, including how to define benchmarks, how to run them, and how to analyze the results. I'll also explore some of the advanced features of the Jetpack benchmark library, such as how to set up custom benchmarking environments and how to use the library with other performance analysis tools. But that's just the beginning - I'll also share some real-world examples of how the Jetpack benchmark library has helped developers optimize their apps for better performance. And, of course, I'll offer some tips and best practices for using the library effectively in your own apps. Whether you're a seasoned Android developer or just starting out, this talk is for you. By the end of it, you'll have a solid understanding of the Jetpack benchmark library and be equipped with the knowledge you need to optimize the performance of your own apps. Join me for an engaging and informative discussion on this critical aspect of mobile app development! | Basic understanding of Android and testing. | 40 minuites | English | Jetpack |
33 | Maintaining E2E Test Automation as We Transition from View to Compose | Maintaining E2E Test Automation as We Transition from View to Compose | shinmiy, kenken | In projects that have regular releases at short intervals, regression testing is also performed frequently. The larger the project, the more time it takes to conduct these tests. Thus, test automation is key in continuing to ship releases. However, there are numerous pitfalls in implementing tests, such as not being able to test some OS functions or functions dependent on third-party vendor SDKs, and test targets being difficult to locate in the Compose tree structure, even if the tests are possible. In this session, using Mercari's payment-related features as a case-study, we will cover - How to work with the QA team to automate regression testing - How to write tests as you transition from View to Compose - Using TestTags effectively and other insights gained while facing these pitfalls during development. | - Development teams that want to help with speed up QA regression testing - Developers who want to know about writing tests for Compose - Developers who are interested in E2E testing | 40 minuites | English | 保守・運用・テスト (Maintenance, Operations, and Testing) |
34 | Compose の Text Field を理解する | Understand Text Field of Compose | Albert Chang | Text Field は基本的なコンポーネントの一つですが、使いこなすのは簡単ではありません。このセッションでは Compose の Text Field API と現在開発中の BasicTextField2 API について解説します。 具体的には以下の内容を含める予定です: ・BasicTextField / TextField API の各パラメータの解説と使い方 ・BasicTextField を使ってカスタムデザインの Text Field を作る方法 ・BasicTextField を使って認証コード入力ボックスのような特殊な Text Field を作る方法 ・日本語文字を入力するとテキストがジャンプする問題の(部分的な)解決策 ・Text Field の state 管理のベストプラクティス ・なぜ新しい Text Field API を開発するのか ・開発中の BasicTextField2 API の紹介と展望 | ・Compose をすでに使っている人 ・Text Field に興味のある人 ・Text Field API の基本的/高度な使い方が知りたい人 | 40 minuites | 日本語 / Japanese | Jetpack Compose |
35 | MVIに基づくStateMachineアーキテクチャ:KMMとJetpack ComposeとSwiftUIを組み合わせる | MVI-based State Machines architecture with KMM and Jetpack | wasabimuffin, そば屋 | Kotlin Multiplatform(KMM)は、次の大きなクロスプラットフォームテクノロジーになる可能性があると、何年も前から興味を持っており、2020年ごろAlpha版がリリースされる前から案件に導入してきました。その直後にJetpack ComposeとSwiftUIが登場したため、これら3つの技術をうまく組み合わせるアーキテクチャの研究をし始めました。結果、Jetpack ComposeとSwiftUIは宣言的UIフレームワークであるため、MVIベースのアーキテクチャが非常に相性がいいことがわかりました。 本セッションでは、MVIとこれら3つの技術を実際の開発に活用した実績を共有したいと思っています。まずMVIの特徴を紹介し他のUIアーキテクチャ(MVVM, MVP)と比較してなぜこのアーキテクチャを選択したのを説明します。次は一番単純なMVIの実装を紹介し、より使いやすいようにStateMachineアーキテクチャを応用する方法を説明します。最後に、実際のプロジェクトの導入して得られた知見やチーム開発のメリットを説明します。 目次(予定): - KMMとJetpack ComposeとSwiftUIの紹介 - MVIアーキテクチャ - なぜMVIを使用するのか - MVIをどのように実装するか - Jetpack Compose / SwiftUI 上の使い方 - MVIアーキテクチャに基づくStateMachine - ステートの安全性 - ステートUMLダイアグラム - ステートマシンの実装 - 実際のプロジェクトの導入 - Jetpack Compose / SwiftUI 上の使い方 - チーム開発のメリット | - 以下興味を持っている方 - アーキテクチャ - KMM - Jetpack Compose/SwiftUI - KMMをプロジェクトに導入してみたい方 - Kotlinの基本知識は必要 | 40 minuites | 日本語 / Japanese | アプリアーキテクチャ (App Architecture) |
36 | GPIOの制御を通してAndroidがハードを制御する仕組みを学ぶ | Learn the mechanism of Android's hardware control through GPIO control | たかっしー | AndroidOSを搭載したマイコンを用いてマイコンに接続されている機器を操作するためには、GPIOの制御が必要になる。 しかしAndroidThingsの開発終了に伴い、簡単にAndroid上でGPIOの操作を行うことは難しくなっている上、ピュアなAndroidOSでGPIOの操作を行う方法について取り上げているネット上の情報はほとんどない。 本セッションではTinkerBoard2Sというマイコンを例に挙げ、Androidアプリ上からGPIOの操作を行う方法を紹介し、Androidアプリからハードウェアを操作する際の適切な権限について、以下の方法を取り上げながら、それぞれのメリット、デメリットを用いて解説を行う。 ・特権アプリと同じ権限を付与するために、Platform署名を行なって特権アプリと同一のSharedUserIdを設定する方法 ・最小権限の法則を達成するために、アプリケーションから権限の必要な箇所をServiceとして分離する方法 ・Platformアーキテクチャの観点から、アプリケーションレイヤーに権限を持たせない、より安全な実装方法 これらの解説を通して、Androidを搭載した機器がどのようにハードウェアを操作しているのか、開発規模に応じてどのような実装方法が適しているのかを説明する。 | ・マイコンにAndroidを搭載してGPIOの制御を行いたい方 ・Androidアプリがハードウェアをどの様に制御しているかを知りたい方 ・Platformアーキテクチャについて知りたい方 ・ハードウェアを操作する場合の適切な権限について知りたい方 ・AndroidOSを搭載したハードウェアの開発をしたい方 | 40 minuites | 日本語 / Japanese | ハードウェア (Hardware) |
37 | できる!アクセシビリティ向上 | Getting started with improving Accessibility | Yuri Ogura | みなさんcontentDescriptionは実装されていますか?UI作成時に目にするcontentDescriptionは「アクセシビリティ」に関わる機能です。UIの主流がAndroid ViewからComposeへと変化していく今、contentDescriptionの指定が必須なComposableもあり、改めて意識された方も多いのではないでしょうか。 開発当初からアクセシビリティに十分な考慮がされている状態は、間違いなくあるべき姿です。しかし実際には、「もうアプリをリリースして何年も経つけど、困っている声を聞かないし、他にビジネス上優先したい課題があるから次の機会にしよう、、」というような後日的な対応が困難な状況も多いのではないかと推察します。 本セッションでは、アクセシビリティを向上するための施策の立案から実装までの一連のプロセスを扱います。前半では、施策をプロダクトバックログの最上位に入れることを目指し、アクセシビリティに対する視野を広げていきます。 後半では、より具体的な対応をイメージするため、Android View / Composeそれぞれのサンプルコードとともにアクセシビリティ観点での良い例/悪い例をご紹介します。スムーズに開発を進めるための便利なツール類も説明します。 提供するサービスの中で、一部のユーザにとっては、絶対に行えない画面遷移があったら、、なんて思うとゾッとしませんか?アクセシビリティ=視覚障害者のためという理解になりがちですが、本来アクセシビリティの指す範囲はもっと広く、「すべてのユーザにとって同じような使い勝手で利用できること」が焦点となります。それゆえ、アクセシビリティの向上に向けてできる取り組みは多岐に渡ります。本セッションを通してアクセシビリティ向上の最初の一歩が踏み出せるようなきっかけをつくれれば幸いです。 | アクセシビリティ初心者。例えば以下のような方々。 - アクセシビリティ、聞いたことはあるけどよくわからない。 - 必要なのは理解しているけど、つい後回し。要点を効率的に知りたい。 | 40 minuites | 日本語 / Japanese | UI・UX・デザイン (UI・UX・Design) |
38 | Deep dive into size configuration changes | Deep dive into size configuration changes | Chiko | 「構成変更」や “configuration change” という単語になじみのない方もいらっしゃると思います。Android ではアプリの実行中に、デバイスの構成が変更されることがあります。例えば、画面の向きの変更や、言語 / 地域の変更、ダークモードとライトモードの切り替えとなどは、構成変更となります。 ウィンドウサイズの変更も構成変更の一種です。このセッションではサイズに関係する構成変更の興味深く、そして時には面倒な特徴についてお話しします。アプリのウィンドウサイズを正しく計算する方法に始まって、考慮しなければならないエッジケースや、サイズに関する構成変更を扱うためのさまざまなアプローチについても紹介します。また、構成変更はアクティビティをいつも再作成するとは限りません。どのような時に再作成がされ、どのような時に再作成されないのかについても紹介します。 本セッションは、アプリをタブレットや折りたたみ式デバイスのような端末に対応させる場合に必ず向き合う内容を扱っています。アプリをマルチウィンドウに対応させることを検討されている方にも有益な内容となっています。 | 全てのアプリ開発者を対象とした内容となりますが、大画面デバイスへの対応を検討されている方には有益な内容となります。 特定の技術に関する知識を前提としません。 サンプルコードは全て Kotlin で記述します。 | 40 minuites | 日本語 / Japanese | Androidプラットフォーム (Android Platform) |
39 | Androidアプリの良いユニットテストを考える | What makes good unit testing for Android apps? | Nozomi Takuma | ユニットテストはAndroidアプリを開発する多くの現場で採用されています。Android Developers(Android開発者向け公式ドキュメント)は自動テストに関するドキュメントが充実しており、テストを書きはじめる環境は整ってきています。 その一方で、いざテストを書いてみると一体どのようなテストが適しているのか悩む場面に直面します。また、テストを書いてみたものの、費用対効果が感じられないという課題にぶつかることもあります。 適切なユニットテストや費用対効果の高いユニットテストを良いユニットテストだとすると、テストライブラリやフレームワークを使いこなすこと以上に、良いユニットテストを実装するのは難しいことです。 本セッションでは、良いユニットテストについてと、良いユニットテストになるように改善する方法について、Android Developersのテストに関するドキュメント・書籍・自分自身がAndroidアプリのテストコードを実装・レビューしてきた経験をベースにまとめていきます。 具体的には、次のトピックについて紹介する予定です。 ・Androidアプリにおける自動テストの種類 ・良いユニットテストとは何か ・テストダブルのメリット・デメリット ・テストコードを読みやすく改善する ・良いユニットテストになるようにプロダクトコードを改善する | ・ユニットテストを書き始めた方 ・ユニットテストを書いているが、もっと良くしたいと思っている方 | 40 minuites | 日本語 / Japanese | 保守・運用・テスト (Maintenance, Operations, and Testing) |
40 | Jetpack Composeを活用した強力なUI表現の実装実例 | Rich UI implementation examples using Jetpack Compose | yokomii | Jetpack Composeの登場により、少ないコード量でアニメーションなどの強力なUI表現が実現しやすくなりました。 しかし、それらを活用する具体的なイメージができていないと、実際のプロダクトへの導入は中々難しいと思われます。 そこで本セッションではJetpack Composeで実現可能な強力なUI表現手法の概要と、それらを利用した実装実例をいくつか紹介し、普段開発しているプロダクトへの活用イメージができるようになることを目指します。 Androidエンジニアだけではなく、実際にUIの表現方法を考えるデザイナーの方々にも知見があるような内容を目指します。 以下のような内容を予定しています # リッチUIの表現手法 - テキスト・画像の装飾 - ブラシ - アニメーション - 高API機能(RenderEffect,AGSL) # 実例 - コーチマーク実装 - リストアニメーション - 任意のUIを目立たせる 他 | - Jetpack ComposeのリッチUIの表現手法を知りたい方 - 具体的なリッチUIの活用イメージを知りたい方 - UI表現方法を考えるモバイルアプリデザイナーの方 | 40 minuites | 日本語 / Japanese | Jetpack Compose |
41 | よく見るあのUIをJetpack Composeで実装する方法〇選 | N-examples of how to implement with Jetpack Compose those UIs you often see | wiroha(ゐろは) | 皆さんはこんなことはありませんか? A「この画面をJetpack Compose化したいです」 B「それどれぐらいかかるんですか?」 A「まずは調べないと……」 B「調べるのどれぐらいかかります?」 A「参考にできるものがすぐ見つかれば早いんですが……UIごとに実現方法を調べて工数を合算してみないと……」 B「じゃあ既に見積もりできてる他のタスクを優先しません?」 A「……」 それ、調べておきました! よくあるUIの具体的な実装方法と注意点を、時間の許す限り紹介します。 何選となるか当日のお楽しみです。たとえば次の紹介などを検討しています。 カルーセル/ローディング/ページ内リンク/もっと見る/検索UI/ボトムシート/クレジットカード番号入力/無限ページャー/ボトムタブ/ガイド吹き出し/一覧と詳細のズームアニメーション/初回起動ウォークスルー/アコーディオン 画面の画像や動画とあわせて実装方法を紹介することで「大量のドキュメントから目的に合った情報を探すのが大変」「参考になるかもしれないリポジトリはあっても、cloneしてbuildしてみないとイメージと合っているかわからない」といった困りごとを解決します。 | Jetpack Composeを何となく知っているが導入にハードルを感じる人、一部導入していてJetpack Compose化をもっと進めたい人 | 40 minuites | 日本語 / Japanese | Jetpack Compose |
42 | モニタリングでパフォーマンス改善入門 | Introduction to performance improvement by monitoring | ShimizuAsami | 「アプリの起動時間が遅い」「画面遷移タイミングの動きが悪い」いつの時代もエンジニアは悩まされるもの… Performance, Android Vitals、Firebase Performance Monitoring、JankStatsなどをつかいながら、パフォーマンスモニタリングをしつつ、ウィークポイントを探し改善を進める方法を、実際に発表者が行った事例を踏まえてお話する予定です。 | アプリのパフォーマンスモニタリングをやってみたい人。パフォーマンスチェックはどうやればいいのか困っている人。 | 40 minuites | 日本語 / Japanese | 保守・運用・テスト (Maintenance, Operations, and Testing) |
43 | Flutterにおけるアプリ内課金実装 -Android/iOS 完全なる統一- | How to implement In-app billing on Flutter – the road to unify Android/iOS logics | nacatl | この発表は、Androidで一度実装して市場に公開されているアプリ内課金機能を、Flutterに移植した際につまづいた点や意識した点、気づきについてご紹介していきます。 2018年に公開されて以来、Flutterはクロスプラットフォームのフレームワークとして立ち位置を確立しています。 私の参画していたプロダクトも、Android/iOSの両ネイティブアプリ開発体制から、クロスプラットフォームによる統一開発体制への変遷をFlutterによって実現しています。 様々な機能やUIが、Flutterにより統一されたコードで実現されています。 しかし、クロスプラットフォームにおいて気になるのはやはり、Android/iOS(Webも仲間に入れたいですね)それぞれの事情からくる分岐が必要になる箇所です。 一部UIにおいては各OSのユーザーへの影響も考慮し、デザイナーとの相談も踏まえadaptiveなUIを利用しての分岐実装も必要になるでしょう。 「アプリ内課金における各ストアとの連携実装の分岐」は、実装経験者であれば真っ先に思い浮かべる懸念のひとつと言えます。 Androidでのみ必要になる処理はどう行うのか、逆にiOSはどうなのか。特にサブスクリプションのプラン変更など、プラットフォーム側の差異はどう吸収していけばいいでしょうか? 幸いにも、両OSの処理をラップしたライブラリの開発も行われており、OSSとして公開されております。 この発表では、その中の一つのライブラリを利用してアプリ内課金を実装した経験から、「PlayStore特有の実装のFlutterへの変換」を主に、「クロスプラットフォームならではの気にすべきこと」などをご説明したいと思います。 内容としては以下のように予定しています。 - 利用ライブラリについて - 内部実装説明 - AndroidネイティブAPIとの対応 - 各種実装の流れ - 購入 - 復元 - サブスクのプラン変更 - 購入結果の受け取りについて | - アプリ内課金実装について知りたい方 - Adroid/iOSネイティブからFlutterへの移行を考えている方 - 新しくFlutterアプリを考えている方 - PlayStoreの課金の流れをどうクロスプラットフォームに落とし込むのか興味のある方 - クロスプラットフォームの技術選択について情報を集めている方 | 40 minuites | 日本語 / Japanese | クロスプラットフォーム (Cross-platform Development) |
44 | Overcoming the Challenges of Integrating an Epub Viewer into a Modern Android App | Overcoming the Challenges of Integrating an Epub Viewer into a Modern Android App | bing-zhu | Epub is an open standard, digital publication format that is used to distribute electronic books. It is a popular format for ebooks, and it is supported by a wide range of devices, including e-readers, tablets, and smartphones. It might be the best solution if you want to implement a Book Viewer in Android APP. In a Modern Android app, developers can use AndroidView in Compose to display an Epub viewer from an Epub SDK. However, there are a few challenges that developers face when trying to integrate an Epub viewer into an Android app. In this talk, I will explain how to implement a modern Android structure for importing an Epub viewer and my experience about how to overcome challenges as * Avoiding recomposition of AndroidView * Interact with composable above it (such as controller, table of contents..) * Handling data flow * Other issues | * Developers who want to develop Epub viewers * Developers who want to develop AndroidView in Compose * Developers who have developed AndroidView in Compose beforehand * Developers who want to learn how to handle both AndroidView and Compose | 40 minuites | English | Jetpack Compose |
45 | ビジネス向けアプリを開発するときに知っておくべきAndroid Enterpriseの世界 | The world of Android Enterprise – what you should know when develop enterprise apps | Yusaku Tanaka | ビジネス向けのアプリが、企業や組織の中でどのようなデバイス・環境にインストールされているかを想像したことはありますか? 企業や組織では、所属している従業員に対して業務用のデバイスを配布したり、従業員の私用デバイスをBYOD(Bring Your Own Device)として業務利用することを認めたりすることがあります。 このとき、デバイスをそのままの状態で運用することは、セキュリティやプライバシー、労働の健全性といった観点でさまざまなリスクがあります。例えば、企業が貸与しているデバイスに対して従業員がGoogle Playストアを介さずにアプリを自由にインストールできてよいでしょうか。従業員の私用デバイスのプライベートな領域で業務用のアプリが動作することは従業員のプライバシーを確保していると言えるでしょうか。 これらのリスクに対してデバイスを安全に運用する仕組みがMDM(Mobile Device Management)であり、これはAndroid Enterpriseによって提供されています。 つまり多くのビジネス向けのアプリは、このMDM環境下で動作する可能性があると言えます。 このセッションでは、Androidのビジネス利用を支えるAndroid Enterpriseの仕組みとビジネス向けアプリの開発者がAndroid Enterpriseに対して可能なアプローチについて紹介します。 具体的には、Android EnterpriseでMDMが動作する仕組みとそれによるビジネス向けアプリへの影響、ビジネス向けアプリがMDM環境下で提供できる特殊な機能についてAndroid Enterpriseの公開情報を元に紹介します。 このセッションを通じて、ビジネス向けアプリの開発者がエンドユーザーの利用環境についてのより深い理解を得られることを目指します。 キーワード:Android Enterprise、MDM、Work Profile、BYOD、BtoB、Managed Configurations | Androidアプリを開発した経験があればその他の特別な知識は必要ありません。特に次のような場合を想定しています。 ・toBのアプリを開発または運用している ・Android EnterpriseやMDMに興味がある ・ビジネス向けのセキュリティ・プライバシーに関心がある | 40 minuites | 日本語 / Japanese | その他 (Other) |
46 | Host-based card emulationで簡単NFC生活 | Make NFC app development easy by using Host-based card emulation | keiji_ariyama | NFC(Near Field Communication)は、2つのデバイスが非常に近い距離でデータを送受信できる無線通信技術です。主な用途としては、カードリーダーがNFCタグやカードから情報を読み取ることが挙げられます。 Androidではバージョン2.3(API Level 9)からNFCの読み取りに対応しています。また、バージョン4.4(API Level 19)からはHost-based card emulation(HCE)が導入されています。 HCEを使うと、Androidデバイスがカードを読み取るだけでなく、Androidデバイス自身がNFCカードとして振る舞うことができます。 Androidデバイスがカードになることで、他の端末やNFCリーダーと通信することで、さまざまなサービス、アプリが実現できます。 また、一般的にスマートカードの性能は限定的ですが、HCEを使うことで、Androidデバイスがディスプレイ、カメラ、高度な指紋認証器付きのスマートカードになります。HCEを活用することで、サービスやアプリの魅力を高めることができます。 本セッションでは、HCEを使ってAndroidデバイスをスマートカードとして機能させるための基本を解説します。また、スマートカードを支える様々な規格について解説します。 また最後に、実際にHCEでスマートカードを実装する上で、踏み抜いたいくつかの罠についても共有できればと思います。 | スマートカードに興味がある人たち。NFCを通じてスマートカードやデバイスと通信するアプリを開発している人たち。 QRコードを使って端末間で情報のやり取りをしてるけど、QRコードに情報を入れすぎるとスマホのカメラでQRコード読むの速度的につらい。NFCを使って通信を確立したりできんもんか」と思っている人たち。 | 40 minuites | 日本語 / Japanese | ハードウェア (Hardware) |
47 | Unleashing the Power of Android Studio | Unleashing the Power of Android Studio | mhidaka | 知っていると役に立つ、アプリ開発の問題を解決する、あなたの知らないAndroid Studioの真の力を解き放ちましょう! 現在のアプリ開発はJetpack Composeの登場により新しい変化を迎えつつあります。一方で、たくさんの技術を組み合わせて動くことから、 効率的な開発や変化への追従が難しいと感じる方も多いのではないでしょうか。 セッションではAndroid Studioの最新機能を使ったデバッグ手法や生産性向上テクニックを紹介します。 開発者個人の生産性向上やチーム開発を加速する機能や手法についても触れるため初学者から業務利用者まで幅広い開発者を対象とします。 - プログラミングの生産性を向上するAndroid Studioの最新機能紹介 - 不具合につまずかないアプリ開発のためのデバッグ手法 - パフォーマンスと品質を両立するツール活用 - チーム開発をスムーズにするプロジェクト、IDE運用術 セッションは発表時点での最新バージョンのAndroid Studioを利用します(セッション応募時はAndroid Studio Hedgehogですが、これより新しいバージョンを利用する場合があります) | - Android Studioの新機能を知りたい方 - アプリ開発の初学者の方 - チーム開発で生産性をあげたい方 アプリ開発の初学者から業務利用者までを対象として特別な前提知識は不要です。 | 40 minuites | 日本語 / Japanese | 開発ツール&サービス (Development Tools and Services) |
48 | Multi-Repository KMM: Streamlining Artifact Generation and Distribution | Multi-Repository KMM: Streamlining Artifact Generation and Distribution | Ritesh Gupta | The official KMM sample generates a monorepo, which combines all the platforms (iOS & Android) and shared code into a single repository. However, in the real world or when integrating KMM into existing apps, they are often located in separate private repositories, each with their own dedicated tooling and CI/CD pipeline. During the development of a production app with multiple repositories, our team faced numerous challenges when attempting to automate KMM artifact generation and publication with separate repositories. In this presentation, we will discuss the changes required to support KMM in a multi-repository environment, including the use of Maven and GitHub release. We will also address the specific challenges encountered during the iOS process and share our opinionated best practices for mitigating these constraints. This will include generating a podspec, downloading private artifacts, and linking to iOS. By the end of this presentation, you will have a better understanding of how to generate and distribute KMM artifacts across multiple repositories, as well as how to integrate them seamlessly into your apps. | - Android - KMM - iOS (little bit) | 40 minutes | English | クロスプラットフォーム(Cross-platform Development) |
49 | Android Graphics: The Path Forward | Android Graphics: The Path Forward | Romain Guy | Android Graphics APIs are extensive and powerful, but can be sometimes intimidating, or hard to use. This session will explore the origin of the Canvas and Paint APIs, what problems they pose to developers, and how they can be used to build interesting and beautiful effects. You will also learn about what the Jetpack team has been and is working on to make Graphics APIs easier to use, more powerful, and unlock new capabilities to help make your apps more beautiful and exciting than ever. | Beginners to advanced. Some knowledge of Canvas/Paint APIs helps but is not required. | 40 minutes | English | Jetpack |