DroidKaigi 2020 Submitted sessions
 Share
The version of the browser you are using is no longer supported. Please upgrade to a supported browser.Dismiss

View only
 
 
ABCDEFGHIJKLMNOPQRSTUVWXY
1
Session titleDescription受講対象者 / Intended AudienceSession formatLanguageカテゴリ / Categoryスピーカー / Speakers
2
ScalaでAndroid開発を行っていたアプリをKotlin移行することを決め、最終的にScalaとKotlinが共存して動いているアプリになった物話2016年にAndroidアプリのフルネイティブ版をリリースしました。
バックエンドをScalaで開発している背景もあり、開発当初から、AndroidアプリをScalaで開発していました。

しかし、諸々の事情より(詳細はセッションにて)2018年にKotlin移行を行うことをチームとして決断。アプリのKotlinリプレイスプロジェクトを進めました。
その後もまたプロジェクトとしてのいろいろな事情により(詳細はセッションにて)、最終的に、現在ではScalaとKotlinの両方が共存しているアプリとなりました。

本セッションでは、そんなScalaからのKotlin移行プロジェクトにおいて、直面した苦労や課題、それに対する解決アプローチを語ります。
弊社もScalaで開発している、Kotlin移行プロジェクトを進めているような方々に対して参考になるようなお話ができればと思います。
・ScalaでAndroid開発をしている方
・Kotlin移行したい方
40minutes日本語保守・運用・テスト (Maintenance Operations and Testing)kichiemon
3
Android x Firebaseでプロダクトをグロースする方法昨今ではマネージャーやプランナー、アナリスト職種の方々以外のエンジニア職種の方々もプロダクトを成長させるにはどうしたら良いか、どのようなアプローチをしたら良いかなど考えるケースが増えてきていると思います。
そんな中エンジニアからのプロダクトグロースアプローチの1つとしてAndroidアプリ × Firebaseサービスの組み合わせがあると思います。
本セッションでは、そのFirebaseサービスを組み合わせてどのようにプロダクト・サービスをグロースしていくのかを実運用も交えて紹介したいと思います。

以下のような事を話す予定です。
- AnalyticsのAudiencesの作成・運用方法
- AnalyticsのAudiencesとA/B Testingを使用したA/Bテストの実施
- Remote ConfigとCloud Messagingの使用
- Predictionsを使用した効果的なアプローチ
- In-App Messagingを使用した効果的なアプローチ
- 上記のサービスを実プロダクトに導入した結果の成功事例・失敗事例
等々
・エンジニアからのアプローチでサービスを成長させたいと思っている方。
・Androidアプリ × Firebaseサービスに興味のある方。
40minutes日本語開発ツール (Productivity and Tools)Wataru Mukainakano
4
Display Cutoutて何?ノッチじゃないの?Display CutoutとはPixel 3 XLの画面上部にあるような切れ欠き(iPhoneのノッチに近い)のことです。Androidアプリ開発者40minutes日本語UI・UX・デザイン(UI・UX・Design)Munehiro Ochi
5
Building Cross-platform Libraries with Kotlin MultiplatformDo you work on an Android app that has an iOS counterpart? Do both apps contain similar code for interacting with internal services, executing business logic or other common tasks?

With Kotlin Multiplatform development, we can leverage Kotlin's code sharing abilities to write code once that will run on both Android and iOS, while allowing the apps to provide their own rich, platform-native UIs.

In this session learn how to get started encapsulating shared logic into modular, reusable libraries for Android and iOS using Kotlin Multiplatform.
Android developers with at least an introductory level knowledge of Kotlin.40minutesEnglishKotlinRamona Harrison
6
MotionLayoutでつくるアニメーションの実装MotionLayoutを使ってアニメーションをどうやって実装するかよく分からないと思っている方の解決の一助になればと思います。MotionLayoutを使ったアニメーション(CordinatorLayoutをMotionLayoutで置き換えなどいくつか紹介したいと思います)をサンプルコードを見ながら紹介します。MotionLayoutでアニメーションを実装できるように解説します。- アニメーションに興味がある方
- アニメーションのサンプルを見てみたい方
- ConstraintLayoutをある程度理解して、MotionLayoutを使ってアニメーションをアプリに組み込みたい方
- アニメーションの実装に興味があるデザイナーの方
40minutes日本語UI・UX・デザイン(UI・UX・Design)yiwaisako
7
テキストを魅せるために知って役立つTextViewのことほとんどのアプリではテキストを表示する必要があります。
要求されたデザインに対して、Androidアプリエンジニアはどういう実装をする必要があるでしょうか。
このセッションではAndroidで単純に文字を表示するところから、その中で何をするとデザイナーの意図した通りにテキストを表示できるのか、ユーザーがより便利になるか、といったことを基本からひとつひとつ丁寧に解説していきます。

内容
- TextViewの基本的な使い方
* Androidにおける文字のサイズ
* 行数・折り返し・省略
* HTMLと装飾
* テキスト内の自動リンク
* 文字列の選択とそこからのアクション
- テキストについての基本知識
* Unicode
* 文字数
* フォント
* ベースライン
* Ascender/Descender
* lineHeight
- TextViewとmargin/paddingの関係
* TextViewのサイズはどうやって決まるのか
* textSizeやlineHeightは具体的にどう影響するのか
* Androidのバージョンによる違い
- その他
* Downloadable Fonts
* EmojiCompat
* PrecomputedText
* Material Text View
Android上でTextViewを配置するところから始めるのでどなたでもOK
テキストの奥深い世界に一歩足を踏み入れてみたい方
40minutes日本語UI・UX・デザイン(UI・UX・Design)六々 (@496_)
8
Let me show you all the secrets of Android Studio!Come to my talk to learn unknown tips on reducing your build time, profiling and debugging to help you chase bugs more effectively to be a master of THE Android developers everyday toolAll Android developers (no level required), who will definitely be more productive40minutesEnglish開発ツール (Productivity and Tools)Yacine Rezgui
9
リモートビルドのすゝめビルド時間、何してますか?
Android開発者にとって必ずと言っていいほど当たる壁、ビルド時間
Gradleの最適化やjvmのサイズ調節等で最適化を計ってもなかなかビルドが終わらずに無駄な時間を過ごしていませんか?
微量の修正でも長いビルド時間を待つ非効率的な開発から爆速ビルドで快適な開発生活を手に入れましょう!

本セッションではそんなビルド時間を最適化するための手段の一つとして、Mainframerというツールを利用した "リモートビルド" に焦点を当て、実際に動いているプロジェクトでの速度改善の実績やチーム単位でリモートマシンのインスタンスを共用する際の設定、Mainframerの導入まで紹介します!

アジェンダ(予定)
・リモートビルドとは
・メリットとデメリット
・実働プロジェクトでの利用実績の紹介
・改善点
・ハマりポイント
・懸念点
・複数メンバーで運用する際の設定
・リモートインスタンスを共用する際の工夫
・リモートインスタンスのスケジューリング
・おすすめの設定・ツールの紹介
・リモートビルドの導入を検討している人
・ビルド時間が長すぎて業務効率が落ちている人
・そもそもビルド走らせるとほぼ他のことができないくらいPCが重くなる人
・15インチMacBookProの大きさと重さに耐えられない人
・ビルド時間が長すぎてTwitterのタイムライン一通り巡回できちゃう人
40minutes日本語開発ツール (Productivity and Tools)sakatayu
10
Building Internal Libraries to speed up development.When working on a large application, there are inevitable slow downs that happen when trying to ensure you ship a quality product. There are cases where redundant efforts are also made. Making sure that what you’re developing against is as close to what you’ll ship helps every stage of the shipping process whether it’s development, QA, or Product signoff. In this talk we'll discuss how we've developed some internal libraries to help us realize this goal at The New York Times.All levels.40minutesEnglish開発ツール (Productivity and Tools)@wdziemia, David Morant
11
宣言的UIで実現する世界Reactで一躍世に放たれたパラダイムとして宣言的UIが挙げられます。またJetpack Composeの登場により、ネイティブアプリ開発でもその恩恵を得られる未来が見えてきました。来るその日のために、宣言的UIについて理解を深め、そのメリットを最大限に発揮できるように一緒に予習していきましょう。

本セッションは、最近耳にすることが多くなってきた「宣言的UI」とはなんなのか、Jetpack ComposeによってAndroidアプリ開発はどう変わっていくのか、現状のネイティブアプリ開発で宣言的UIの恩恵を受けるためのEpoxyという選択肢、などについて話していきます。
Jetpack Composeで宣言的UIに興味を持ったAndroidアプリ開発経験のある人
宣言的UIって何?な人
命令的にUIの状態を管理するのに疲れた人
細かいことが嫌いで簡潔に目的を達成したい人
40minutes日本語UI・UX・デザイン(UI・UX・Design)kobaken
12
学生2人でスタートアップのAndroidアプリを設計・開発・保守・運用している話昨今エンジニア市場において希少な存在であるAndroidエンジニアですが,そんな中でも最近は学生のAndroidエンジニアが増えているように感じます。
一方で,そんな学生Androidエンジニアが実務レベルのコードを書けるようになるには、他のWebなどのプラットフォームと比べて敷居が高く感じることも事実です。
本セッションでは,我々学生2人で実際にタイミーという大規模なAndroidアプリを新規に設計・開発・保守運用をしている経験をもとに,学生という本業のエンジニアではないポジションでの運用方針や学習の方法を共有したいと思います。 また,経験が少ない中でどのようにAndroidプログラミングを学んだのか,その手法と考え方についても共有します。

アジェンダとしては以下のようなものを予定しております。
- 自己紹介
- タイミーについて
- Androidエンジニアになるまで
- なぜAndroidなのか
- 学習方法
- 実際の開発体制
- タイミーアプリの構成
- アーキテクチャ
- 使用している技術
- 成功したこと,失敗したこと
- 今後の発展について
初心者,学生,新規開発に興味のある方40minutes日本語開発体制 (Development processes)clock_void
13
Get started with Android AutoYour Android code can run on more than just mobile devices! Android Auto allows you to create apps for vehicles running Android Auto. Learn the basics of how to get started with Android Auto and the Android media API to create a media app for cars!

We will go over:
-Android Auto basics
-Android media API
-Best practices in designing an app for cars
-How to test your app

This will end with a live demo of the media player in action!
Beginner/Intermediate
Anyone interested in creating apps for cars
40minutesEnglishAndroidプラットフォーム (Android Platforms)Meghan Mehta
14
Prioritizing Platform DevelopmentAs an application scales and more engineers come on board, the prospect of all the new things you will be able to build for your users is incredible. But sometimes the idyllic vision of more engineers = more features doesn’t pan out. Fast and effective development is as much an issue of what tools you have in place for your developers as it is how many developers you have. In other words, focusing on creating an amazing experience for your developers will better enable you to create an amazing experience for your users.

At the New York Times we call this “Platform” level work, and this year we built a team that focuses on developer effectiveness and foundational support for our mobile teams with the mission of making NYT the best place to build apps.

Why should you invest in a platform team?
What kind of work should a platform team prioritize?

This talk will attempt to answer these questions while exploring some lessons learned, challenges overcome, and even some lingering, unanswered questions about building a platform app development team.
Everybody - Engineers of all experience levels / Product Managers40minutesEnglish開発体制 (Development processes)Alex Brashear
15
KotlinのDelegated Propertiesを活用してAndroidアプリ開発をもっと便利にするKotlinには委譲プロパティ(Delegetaed proprties)という仕組みがあります。
標準ライブラリのlazyや、AndroidXのActivityやFragmentに実装されているviewModelなどで普段からあまり意識せずに利用している方も多いと思います。
本セッションでは、標準ライブラリやAndroidXなどの著名ライブラリに含まれている委譲プロパティ、および拙作のライブラリであるKotprefなどの事例を交えながら、委譲プロパティの仕組み、Kotlinでの実現方法、活用事例や自作する際の方法などをお話します。

本セッションに含まれる内容
- KotlinのDelegated propertiesとは
- Delegated propertiesの仕組み
- 標準ライブラリで提供されるDelegated properties
- 各種ライブラリでの事例
- Kotprefを題材に実際の実装方法について知る
KotlinのDelegated propertiesがどのように実現されているのか知りたい方
Delegated propertiesをあまり活用できていないが今後活用していきたいと考えている方
自作のDelegated propertiesを作りたい方
40minutes日本語Kotlinchibatching
16
Notificationの歴史をおさらいして、これからの通知を考察するAndroid 10よりバックエンドからのActivity起動が制限されたことにより、通知としてカスタマイズしたダイアログを出すのが難しくなりました。そこで、Notificationのバージョンアップの歴史をおさらいし、NotificationCompatでの通知表現のパターンを網羅した上で、これからの通知を考察します。Androidアプリ開発者
アプリのグロース担当者
40minutes日本語Android FrameworkとJetpack (Android Framework and Jetpack)Munehiro Ochi
17
新世代New Retailアプリの作り方「ニューリテール」は、アリババグループが提唱している中核戦略のひとつです。 モバイルインターネットとデータテノロジーを用いることで、小売業のデジタルトランスフォーメーションを実現し、オンラインとオフラインを融合させた新しい消費体験を提供しています。
その戦略に沿ってFACYアプリにリニュアルかけています。そのアプリに対して戦略、コンセプトやUIを通して解説し、そのエッセンスを共有します。
中国でニューリテール戦略と総称される小売業の進化が進んでいます。テンセントもアリババのニューリテールに対抗し、スマートリテール戦略(智慧超市)を推進しているがスマートリテール(智慧超市)2.0へと大きな進化をしたそうです。

内容としては以下のような物を想定しています。
・New retailとは?
・OMOとは?
・なぜ日本のNew retailが遅れているか?
・具体的なUI/UXとその実装例
・海外のNew retailのUI/UXと日本のNew retailのUI/UXの差異
・具体的にGEO機能はどう適応する
・他のサービスと何か差別化できた
・円滑に実装するため、エンジニアとのコミュニケーションについて
・UIデザインに興味ある方
・Material designに興味ある方
・New retailに興味ある方
・OMOに興味ある方
・GEO機能に興味ある方
40minutesMixedUI・UX・デザイン(UI・UX・Design)Miffyfiona
18
Getting Started with GraphQL on AndroidGraphQL is a modern way of building a querying APIs that provides a single endpoint where clients have the power ask for exactly the data they need.

In this session, learn the basics of how GraphQL works by seeing how a simple GraphQL server is spun up. Then, take a look at how to get data from GraphQL on Android by querying that endpoint using the Apollo client for Android. We'll also cover some useful tooling that any app developer leveraging GraphQL can use.

We'll compare some of the key differences between GraphQL and REST APIs and talk about some of the lessons learned as we moved our content to GraphQL at The New York Times.
Android developers. No previous GraphQL experience required.40minutesEnglishその他 (Other)Ramona Harrison
19
Jetpack Compose: Let's give a try!Jetpack Compose is a new UI runtime for Android, which is declarative, unbundled and Kotlin only. I'll present you how declarative UIs work and how to give a try with Jetpack Compose!Android developers with Kotlin knowledge. They don't have to be experts in UI development.40minutesEnglishAndroid FrameworkとJetpack (Android Framework and Jetpack)Yacine Rezgui
20
Taming State with RxReduxKState management has become a popular topic of discussion among the app development community for a while, and although there are many ways to achieve it, we'd like to talk about an approach for Android, particularly through the usage of RxReduxK (https://github.com/mercari/RxReduxK).
RxReduxK is a RxJava-based battle-tested Kotlin library, which was built with certain design choices in mind, with the aim to make modeling behaviors simple and easy to understand.
People interested in state management, redux, MVI and app architecture in general.40minutesEnglishアプリアーキテクチャ (Designing App Architecture)beylerian
21
Mastering AnalyticsAndroidを取り巻く分析について、イベントログを入れ込むだけではなく、PdM等の分析する側からも含めたお話をします。
・イベント解析, ページビュー分析
・ABテスト
・監視
・サーバーなど別環境等との連携
・KPI設計

各項目について、ログサービス・モニタリング方法含め、社内のサービスを含む複数環境での比較を通してお話をさせていただきます。
また、0からのイベント追加や、KPI項目の設計などUX・ビジネス観点のお話もさせていただきます。

取り扱う予定のサービス:
・Firebase
・Repro
・Treasuredata
・AdobeAnalytics
・BigQuery
・Redash
・Metabase
なぜ計測するのか迷いながらログイベントを入れているエンジニア
KPI分析など社内でPdMが機能してない組織のエンジニア
40minutes日本語保守・運用・テスト (Maintenance Operations and Testing)Hosshan
22
New Relicを活用したパフォーマンス計測と改善のコツみなさん、アプリのパフォーマンスは計測できていますか?

「普段は計測ツールを入れたりせず、必要な時に速度を手で測ってボトルネックを調べている」という方も多いのではないでしょうか。

Android Profilerを使うと、アプリの内部処理を詳細に調査できるので、パフォーマンスを刹那的に計測するには大変便利です。ただし、Android Profilerだと開発者しか調査できず、データの蓄積ができず、ボトルネックの要因分析やきっかけ調査に時間がかかったりします。

その点、アプリにパフォーマンス計測ツールを入れておくと、日常的にパフォーマンスがどうなっているのかを視覚的に確認でき、管理画面をカスタマイズすることで開発者以外もパフォーマンスに注意を払うことが可能となります。また、バージョンごとにパフォーマンスの変遷を保持して計測データが溜まっていくので、どのバージョンから速度が低下したかを短時間で把握することが可能です。

本セッションでは、数あるパフォーマンス計測ツールのうち、弊社が利用しているNew Relic Mobileを取り上げて、いかにしてパフォーマンスを計測して把握しているのか、ボトルネックを見つけ出すための利用法などをご紹介します。

加えて、New Relic Mobileは管理画面のカスタマイズがかなり柔軟にできますので、おすすめカスタマイズ方法についてもお話しします。

さらに、Firebase Performanceとの比較も行い、いったいどのサービスを使うべきなのか、という参考情報をご提供したいと考えています。

応答速度が0.1秒遅くなると、売上が1%減少するというような調査結果もあったりしますので、パフォーマンスを重要視し、改善していきたい方の参考になればと思います。
・パフォーマンスを計測・改善したい方
・どこから手をつけていいか悩んでいる方
・ビジネスサイドと一体となってアプリ改善の話をしたい方
・New Relic Mobileなどの計測ツールの利用を検討している方
40minutes日本語保守・運用・テスト (Maintenance Operations and Testing)kichiemon
23
詳解 WindowInsets昨今の Android では, ノッチ付きのデバイスによって Navigation Bar の幅が増えたり, Gesture Navigation によって Status Bar がほとんどなくなったことにより, より画面全体を活用したUI(Edge-to-Edge)が求められるようになりました. これは, 没入感を与えるという点でメリットがある一方で, それに対応するには WindowInsets への理解が欠かせません. 本セッションでは, WindowInsets の基本的な使い方と, 画面全体を活用したUI(Edge-to-Edge)の実践を重点的に解説したあと, さらに先へ行くための, Gesture Navigation の基礎や, 対応方法をかんたんに紹介します.WindowInsets や Gesture Navigation について知りたい方
アプリUIの上下が黒いままのアプリを作っている方
40minutes日本語UI・UX・デザイン(UI・UX・Design)Yuta Takahashi
24
Augmented Reality: Getting Started with ARCore and SceneformAttend this *real life* session to start augmenting reality! This session will teach you how to get started creating your own AR app using ARCore and Sceneform. We'll live code a fun AR stickers app and learn about the concepts involved on the way. Learn how to:

- Setup ARCore and Sceneform in an Android app and start an AR session to display the camera feed and gather data about the environment around a device.
- Control nodes within a scene graph in order to place 3D objects that are anchored to points in the real world.
- Use the Sceneform plugin to import and manage 3D models in an Android Studio project.
- Handle interactions like clicks and drags to move objects around the AR scene.

ARCore is a library that combines motion tracking, environmental understanding, and light estimation data to enable building augmented reality experiences more easily on Android.

Sceneform is a library that provides tooling to render 3D models using just Java or Kotlin within an Android Studio project, with no need to learn OpenGL. It includes a high-level scene graph API, a physically based renderer called Filament, and a plugin for importing and editing 3D models.

Both ARCore and Sceneform were released by Google in 2018.
Audience should be familiar with Android development; no previous knowledge of 3D graphics or AR required.40minutesEnglishAndroid FrameworkとJetpack (Android Framework and Jetpack)Ramona Harrison
25
Androidでの現実的なAtomic Designその運用方法皆さんは画面を作る時にどういった単位で構成を分け、どういった情報を何のモジュールとやり取りしてるでしょうか?
MVVMでModelとViewを双方向バインドするでしょうか。FluxでStoreを監視するでしょうか?MVCでメッセージングを行うでしょうか?
いずれにしても、Viewとデータを受け渡しするとき、このデータ型でいいのか?と悩むことがあるかと思います。

UI/UX/IAの領域でAtomic Designというコンポーネントの設計思想があります。
このセッションでは、このAtomic Designと、Clean Architectureに代表されるレイヤードアーキテクチャの考えを理解することで、
依存の少ないクリーンなコンポーネント設計を行うことに挑戦します。

## 予定している内容
* Atomic Designについて
* Clean ArchitectureにおけるView周りの話
* Entityに代表されるデータモデルがどこでも出てくる問題
* AndroidでのAtmic Designの現実的な運用方法

## このセッションで得られる知見
* UIコンポーネントの設計の仕方
* 捨てやすいモジュールの作り方
* チームで開発を行う初学者
* 継続的に機能追加を行う保守開発者
40minutes日本語アプリアーキテクチャ (Designing App Architecture)yashims85
26
総ざらいMaterialComponentsマテリアルデザインを実現するためにAndroidにはmaterial-componentsというLibraryが用意されており、利用することでマテリアルデザインに準じたUIをより簡単に実装することができます。

さてみなさん、material-componentsは20数種のComponentを提供していますが、どんなものがあるか認識してるでしょうか?
Componentのガイドラインに目を通したことは?
事前に用意されたスタイルにどんなものがあるか知っていますか?
BottomNavigationBarが簡単に実装できることは?Floatingボタンが伸び縮みできるようになったことは?9月にDatePickerが追加されたことは??カタログアップをビルドしてみたことは??...

material-componentsには思ったよりも多くの機能があります。存在を知っていてもどんな機能が提供されているかを知らなければ使い所も分かりませんよね。

本発表では、マテリアルデザインの基本を抑えつつ、material-componentsに用意されている機能、コンポーネントの概要・使い所・気をつけるべきことをガイドラインと照らし合わせながら湯水のごとく浴びていきます。

本発表を聞くことでmaterial-componentsを使いこなし、素敵なマテリアルデザインをより簡単に実装することが出来るようになることでしょう。

#### 予定している内容
- material-componentsの導入
- Theming
ColorTheming
 ShapeTheming
 Typography Theming
- Components
実装方法
 GoodUseCase/BadUseCase
- ダークテーマ
* material-componentsで何ができるか知りたい方
* なるべく楽にマテリアルデザインに対応したい方
* マテリアルデザインに興味のある方
40minutes日本語UI・UX・デザイン(UI・UX・Design)Saiki Iijima
27
レガシーコードへの対処法みんなの力で生み出され、多くの世に価値を生み出したコード。
年月が経ち、たくさんの機能追加・仕様変更が行われ、今では多くの技術的負債を抱え、修正を行うにも多くの調査時間を必要とし、それでも尚修正するのが困難で、テスト工数も多くかかってしまう状態に。
これらは誰が悪いという話でもなく、精一杯価値を届けてきた結果だとは思いつつも、さすがに厳しい状態になってしまった。

そんな「レガシー」なコードを綺麗にしていくには、どのような方法で立ち向かうべきか。

長く保守・運用をするほど以下のような状態になることも多いと思います。
・FatActivity / FatFragment
・至る所で参照するために、メンバ変数や引数でたらい回しにされるContext
・パッケージ間の依存関係が複雑で相互参照になっている
・テストコードがないのでリファクタリングがしづらい
・様々な Manager / Helper という名前のついた何でも屋さん
・深い継承関係を持ったクラス達
・まだまだ残るJavaのコード達
・全体のコード量が多く、各クラスのコード量も多いため見通しが悪い
・非推奨になった or なりそうなライブラリ達

これらに対しどのようにアプローチしながら改善をしていくか、実践知も交えつつ紹介していきたいと思います。
みなさんとは課題や状況が違うとは思うので、これをやれば間違いないということはありませんが、課題解決に向けての何かしらのヒントになれば幸いです。
・レガシーコードに悩まされている方
・設計に興味のある方
・リファクタリングをしたいと思っている方
・レガシーコードの辛みに興味のある方
40minutes日本語アプリアーキテクチャ (Designing App Architecture)sada
28
APKファイルはいかにして作られるのかAndroidアプリをビルドするとき、ソースファイル、リソースファイル、ライブラリがコンパイルされてDEXファイルが作られ、APKファイルが作られます。
これは公式ドキュメントにも記載がある内容です。
しかし実際に自分が指定している設定がどのように影響し、R8が何をどのようにコンパイルしてAPKファイルが作られるのかイメージはできているでしょうか。

このセッションではAPK作成の流れを追いながら、そのとき内部では何が行われているのか、図を用いたり適宜コードを参照することで理解を深めていければと思います。
点と点になっている知識を繋げ、ビルド周りの理解を深める一歩になれば幸いです。

発表内容の予定
・.apk作成の流れの概要
・.classが作られるまで
・.dexが作られるまで(R8まわり)
・.apkが作られるまで
・+a: .apkをインストールしたあと(バイトコード実行環境)
APKファイル生成の流れを知らない方
公式ドキュメントの「ビルドを設定する」(https://developer.android.com/studio/build)がよくわからない方
R8が実際に何をしているのか知らない方
40minutes日本語Androidプラットフォーム (Android Platforms)takasy
29
既存プロジェクトへのダークテーマ導入Android10から黒基調のダークテーマをシステムレベルで設定できるようになりました。
目への刺激を低減したり、暗いところでも視認しやすい画面になるだけでなく、端末によっては省電力を期待できることから注目が集まっています。
黒基調のテーマという意味ではAndroidに限らず様々なプラットフォームでの採用が進んでいるため、ダークテーマに対応することは今後GUIアプリケーション開発におけるスタンダードになっていくことが考えられます。

本セッションでは、既存プロジェクトにダークテーマを導入する際に考えるべきことや、実際に導入を進める中でのハマりどころなどを紹介したいと思います。
ダークテーマ導入に興味がある人、ダークテーマ導入をどのように進めるべきか悩んでいる人40minutes日本語UI・UX・デザイン(UI・UX・Design)Takuya Kodama
30
Tizen OS搭載のスマートウォッチとAndroidアプリを連携させてみようスマートウォッチのOSとして思い浮かべるのはAppleの「watchOS」、または、Googleの「wearOS」が大半でしょう。
しかしスマートウォッチ市場上位のSamusungが採用しているLinux Foundationの「TizenOS」も忘れてはなりません。

本セッションではTizenOS搭載のスマートウォッチについてAndroidアプリとの連携について説明します。

目次案(検討中)
* Tizenとは?
* Tizenアプリの開発環境
* Tizenアプリでできること
* TizenのWatch向け機能
* Androidアプリとの連携について
* Tizenアプリの開発でCI/CDを実現する
・Watchアプリを作りたい人
・wearOSやwatchOSだけでなく他のスマートウォッチに対応させたい人
・Tizenに興味のある人
40minutes日本語その他 (Other)なかしょ
31
アプリの継続開発で見据えるべき過去と未来のコードAndroidアプリやiOSアプリはアプリストアからユーザーの端末にインストールして使われます。
こうした配信の仕組み上、過去のコードによる生成物が常に世界のどこかに残ってしまいます。
そのためアプリ開発では通常よりもタイムスケールの大きなリリースやコードの寿命にも注意を払う必要があります。
このセッションではビルドしたアプリがユーザーに届くまでの話や、APIの破壊的変更やローカルデータベースのスキーマ変更など、アプリ開発につきまとう寿命や、未来にためにそうした寿命とどう向き合うかについてまとめます。
また、こうした状況に出くわしたときアプリエンジニアはチーム内でどう対応するべきか、チームに何を知っておいてもらわないといけないのか、といったことにもフォーカスします。
Androidアプリに限らずiOSアプリとの比較についても紹介します。

内容
- リリースとは、寿命とは
- AndroidアプリやiOSアプリがユーザーに届くまで
- Google Play StoreとAppStoreでの段階的リリースという概念の違い
- APIのサポート
- マイグレーションのサポート
- OS/端末のサポート
- 開発言語のアップデートや変更
- ユーザーへのアップデート訴求 (In-app Updates APIなど)
- ひとつのアプリを継続開発している方・継続開発していく予定の方
- 継続開発中のアプリの開発をディレクションしている方
- AndroidアプリとiOSアプリでのアプリリリースの違いが知りたい方
40minutes日本語開発体制 (Development processes)六々 (@496_)
32
そのフルスクラッチリニューアルは本当に必要ですか? ~レガシーとの優しい決別~Androidアプリケーション開発の世界は日々進歩しています。
ここ数年でもAndroid Architecture Component, Navigation, Kotlinなど開発しやすさを向上させる様々な機能が追加されてきました。
リリースされてから何年も経っていたりスタート時の都合等によってレガシーコードが存在している場合、これらの機能を後から追加していくのはなかなか難しいものです。
このセッションではフルリプレイスなしで安全に古いコードを新しく置き換える手法を、マンガアプリ「GANMA!」での事例を元に提案します。

「神Activityに全ての処理がまとまっている」「アーキテクチャが混在している」「なぜ動いているのかわからない機能が存在する」等、レガシーなアプリには様々な問題が残されがちです。こういったアプリを改善するには、いっそ別プロジェクトとして作り直してしまうというのも一手です。ただし、新機能の開発を止めて何か月もリニューアルだけに注力するという判断は容易にできるものではありません。そもそもコードから機能の全貌が読み取れないアプリの改修コストを見積もること自体が困難です。
とはいえ安易に一部分のみに新しい改修を入れてしまうと、置き換えが中途半端になってしまったりどこまで書き換えたか分かり辛くなったりと、さらなる混沌を呼び入れてしまう危険性があります。
アプリの開発速度や品質の低下を抑えながらコードの改善を実施するにはどうすればいいか。
実際に大規模アプリ開発で起きた失敗と成功の体験を元に手法を紹介します。
- アーキテクチャを刷新したい人
- 古いアプリのリファクタリングでどこから手を付けたらいいか迷っている人
- 既に中途半端に手を入れてしまってプロジェクト内がカオスになってしまった人
- DroidKaigiで紹介される最新技術を「でもウチには関係ないよね」とどこか他人事のように思っている人
40minutes日本語保守・運用・テスト (Maintenance Operations and Testing)Naoya Yunoue, kichiemon
33
Androidアプリをいつまでも楽しく開発し続けるための取り組みクックパッドでは2011年にAndroidアプリをリリースし、現在まで開発・リリースを続けています。
Android OSや開発ツールが進化していく中で、Androidアプリの開発体制や手法にも様々な変化がありました。

本セッションではクックパッドアプリのこれまでの歩みとともに、Androidアプリを快適に開発し続けるためにやってきた様々な取り組みについて紹介していきたいと思います。

話す内容(予定)

* モバイル基盤チームについて
* CIやテスト環境の整備
* リリース自動化のための取り組み
* 開発しやすさを維持するための仕組みづくり
* 今後改善していきたいところ
Androidアプリの開発〜リリースまで一通りやっていて、ワークフローの改善似興味がある方
Androidアプリの開発を楽しくしたい方
歴史あるAndroidアプリのメンテナンスを楽しみたい方
40minutes日本語開発体制 (Development processes)こやまカニ大好き
34
横画面フルスクリーンのアプリをリリースする話横画面固定でフルスクリーンのアプリを開発したことはありますか?一般的にアプリを使っているときは縦画面で、しかも片手で操作することが多いと思います。横画面フルスクリーンのアプリには下にナビゲーションバーはありません。右にあります。バックキーはほぼ使われません。親指ではフリック出来ないので、UIを考える必要があります。しかもOS versionによって差異があったり、、など様々な地雷がありますが、中々その知見は共有されることはありません。
本セッションではニッチではありますが、そのような横画面フルスクリーンアプリの様々な障害とそれを乗り越えるための実装方法などの知見を共有し、役に立てれば幸いです。
・これから横画面のアプリを作成する方
・横画面対応をやったことがないのでどのような地雷があるか知りたい方
40minutes日本語その他 (Other)ujikawa
35
既存プロジェクトへCI/CDをどう導入するか?Androidアプリ開発では機能の開発とリリースを素早く行う事が求められます。もちろん不具合も最小限に留めなければなりません。開発速度と品質を両立する上で自動化されたテストとCI(継続的インテグレーション)およびCD(継続的デリバリー)は開発者の助けとなります。

CI/CDの設定は、開発の初期に行うのがもっとも効果的です。しかし、実際には既存のAndroidプロジェクトに途中からCI/CDを導入する場面が多いと思います。

本セッションでは、CI/CDの設定がされていない既存のAndroidプロジェクトにどのようにCI/CDを導入し、そのプラクティスをどう開発チームへ浸透させていくかについてご紹介します。

アジェンダとしては仮ですが下記を予定しています。

- CI/CDの概要
- CI/CDを導入する利点
- 段階的なCI/CDの導入
- 既存の開発・リリースフローの変更
- テスト戦略を考慮したWorkflowの設計
- 開発チームでのCI/CDの実践
- CI/CDとはなにか知りたい方
- AndroidプロジェクトにCI/CDの導入を検討されている方
- 自動化されたテストをどう実行していくか戦略を知りたい方
- 開発からリリースまでのプロセスにどうCI/CDによる自動化を取り入れるかに興味がある方
- CircleCIやBitrise、GitHub ActionsでWorkflowをどう構築するかでお悩みの方
40minutes日本語保守・運用・テスト (Maintenance Operations and Testing)Horie1024
36
Widget and Integration Testing in FlutterAutomated Testing is essential to making your apps production-ready and to prevent introducing bugs when you change something. Flutter is an interesting case for testing because it is cross-platform. You should be writing also just one test for all your platforms making it easier to maintain.

Flutter offers three types of tests, unit, Widget, and integration tests. We will focus on widget and integration testing. Widget testing is new for Flutter, coming from Android and iOS. Integration testing is also something you want to make sure your app does not have issues running on iOS or Android.

When you do tests, you mock your dependencies and the network responses and requests. We will discuss how to mock your dependencies and network requests to have a stable test suite. Also, sometimes you also use plugins for Flutter that are using platform-specific code. Examples for these are Firebase Authentication and Firebase Database. We'll discuss how to mock these plugins so you can write widget and integration tests.

Of course, when doing automated tests, you also think about CI/CD. We will also discuss which services you can use to run your tests and how to set up your tests for CI/CD.
Flutter Beginners or those interested in starting Flutter, and want to know how to automate testing.40minutesEnglishクロスプラットフォーム (Cross-platform Development)JB Lorenzo
37
Androidアプリ開発に使えるCIサービス総比較 2020年版Androidアプリの効率的な開発・保守に欠かせないCIサービスですが、様々なCIサービスが提供されている現在、どのサービスが自分に適しているのか判断に悩むことも多いのではないでしょうか。本セッションでは、Androidアプリ開発で広く使われているCIサービスをとりあげて、比較しながら、それぞれのサービスの利点・欠点を紹介します。

- サービスの特徴
- ビルドステップ・ビルドスクリプトの定義方法
- ビルドキャッシュの有無や利用方法
- ビルドにかかる時間
- 提供されているプランの価格や制約

比較にあたっては、GitHubとの連携を前提として、CIで以下のような処理を実行する場合にどうなるか、を主に考えます。

- GitHubでPull Requestが作られたら、テストやLintを実行する
- masterブランチが更新されたら、SNAPSHOT版をビルドして、アプリ配布サービスにアップロードする
- タグが作成されたら、リリース版をビルドして、Google Playにアップロードする

情勢をふまえて適宜変更しますが、以下のようなCIサービスを取り上げる予定です。

- Azure DevOps
- Bitrise
- Circle CI
- GitHub Actions
- GitLab CI
- Google Cloud Build
- Travis CI

なお、JenkinsやConcourse CIなどの、セルフホストのCIツールは取り上げません。
- CIサービスを導入したいが、どれを使ったらよいか迷っている方
- 利用するCIサービスの変更を検討したい方・している方
40minutes日本語保守・運用・テスト (Maintenance Operations and Testing)kafumi
38
マイクロインタラクション入門 〜Lottie,RecyclerViewのSnapHelper,SharedElementTransitionを使った小技でアプリをちょっとリッチにする〜ボタンをタップした時のRipple EffectといったところからLottieを使ったリッチなアニメーション。SharedElementTransitionを用いた画面間の遷移など、操作に対して様々なフィードバックを与える技術はありますが、どういう表現が出来るのか知っていないと、いざデザイナーから頼まれた時に調査から対応することになってしまい、結局実装しない、なんてこともあるのではないでしょうか。
本セッションでは、マテリアルデザインガイドラインを起源としたユーザー体験を高めるマイクロインタラクションについての初歩から考えると共に、実際の技術についてこれまで実装してきた事例と共に紹介します。昨今、マイクロインタラクションの需要が高まっていると考えます。明日から使える、アプリをちょっとリッチにする粋な小技満載でお話しします。
・LottieやSnapHelperなどリッチな表現を実装したいが、なかなか実務で使う機会がない方
・実際のアプリでどのように上記の技術が用いられているか、導入しているか気になる方
40minutes日本語UI・UX・デザイン(UI・UX・Design)ujikawa
39
始めよう!MotionLayoutアプリのユーザ体験を向上させる上でユーザに対して意味のあるアニメーションやトランジションはとても大切です。ですが、Androidではたくさんのアニメーション処理が提供されているため、適切な処理をみつけるのも一苦労です。アニメーションやトランジションを導入したいけど、実装に時間がかかり導入を諦めてしまった経験はありませんか?

それらの課題を解決する機能がMotionLayoutです。ConstraintLayout2.0のサブクラスにMotionLayoutが提供され、開始と終了の状態をXMLリソースに定義でき、またレイアウトとアニメーションを分割できるため、シンプルな構造で実装できます。

本セッションでは、MotionLayoutの基本的な知識から、MotionSceneを利用することでレイアウトとアニメーションを分割する方法、Transitionで開始と終了の状態を定義する方法、アニメーションの途中で透明度を変更するといったキーフレーム設定、CustomAttributeを用いてViewの切り替えなどを説明します。MotionLayoutを用いてアニメーションやトランジッションを作ってみたいと思っていただけると幸いです。
UI、UX、アニメーションに興味のあるAndroid開発者40minutes日本語UI・UX・デザイン(UI・UX・Design)tommykw
40
Firebase MLKit: Machine Learning Made EasyThe session will walk the audience through the Firebase MLKit, it's prebuilt APIs which provide ML functionalities for
Android and iOS apps.
As this session aims at introducing the audience through the Firebase MLKit, it's different APIs like Text Recognition, Face Detection, Barcode Scanning, Image Labeling, Landmark Recognition, etc, it would be good if the users know the basics of App Development, basic knowledge of Python and Tensorflow (for custom models) would be an icing on the top.40minutesEnglish開発ツール (Productivity and Tools)Lavanya Gaur
41
マルチモジュールでのNavigationArchitectureComponentを利用した画面遷移Navigation Architecture Componentが登場したことで、複雑だった画面遷移をシンプルに実装することが可能になり、視覚的にもわかりやすく管理することが可能となりました。
本セッションでは、そのNavigationを実際にプロジェクトに導入した経験から得られた、以下の内容を紹介します。
- Navigationの基本的な実装方法
- SafeArgsを利用したデータ渡し
- 遷移時のAnimation
- マルチモジュールでの実装方法
- DeepLinkへの対応方法
- 開発時に発生したエラーと解決法
- マルチモジュールプロジェクトでNavigationの導入を考えている方
- Navigationを利用したDeepLinkへの対応を考えている方
40minutes日本語Android FrameworkとJetpack (Android Framework and Jetpack)r_wadada
42
Soliに対応しようProject SoliはGoogle I/O 2015で発表されたモーションセンスのプロジェクトです。
Soliを使えばジェスチャーでデバイスを端末を操作することができます。

2019年、Soliを搭載したPixel4が登場し、ユーザーがSoliを使うことができるようになりました。
しかしながら日本では、2020年春までSoliを使用することができません。

本セッションでは

* Soliでは何ができるのか
* Soliに対応したアプリは作成できるのか
* Soliを考慮する場合どんなことに気をつければいいのか

などについて、実際に日本国外でSoliを動かしながら調査したこと感じたことを発表します。
Soliに興味のある人
モーションセンスに興味のある人
新しい技術が好きな人
40minutes日本語その他 (Other)napplecomputer
43
[2020限定版] 理解しやすいFlutterデザイン。一年間Flutterでデザインしている私のデザインTipsを公有します。
Flutterなら、デザイン難しくないです。基本Nativie開発をやっていた方はFlutterを使ってレイアウト構成することを見るとほぼ驚きます。

この発表にはFlutterのデザイン基本から高級まで、TrickやTipsを紹介します。Widgetの種類と現場でよく使うWidgetを公有します。ほとんど難しく感じているアニメーションをもっとしやすく使う方も含めています。

※'限定版ボーナス
1. Material Design攻略編。
2. Cupertinoデザイン攻略編。
3. 2020年のデザイントレンド攻略。
1.デザインに興味ある方。
2. Flutterでデザインやってみたい初心者。
3. Material Designに興味ある方。
4. 自分でデザインしたレイアウトを作ってみたい方。

40minutes日本語UI・UX・デザイン(UI・UX・Design)DREAMWALKER
44
アドテクノロジーと標準化テクノロジーの標準化団体というとWebにおけるW3CやWHATWGを思い浮かべる方は多いかと思いますが、アドテクノロジーに関してもIAB Tech Labという非営利の標準化団体が存在します。

このセッションではそのIAB Tech Labと、IAB Tech Labが策定する規格、特にモバイルに関わる規格を幾つか紹介できればと考えています。

e.g.
* Open Measurement
* app-ads.txt
* VAST
* VMAP
* MRAID

(あくまでも予定です)
* デジタル広告事業に関わる方
* 市場に存在する広告SDKや動画関連サービスが採用しているかもしれない規格を知りたい方
40minutes日本語その他 (Other)shikato
45
詳細Retrofit2RetrofitというAPIクライントはいまやデファクトスタンダードといっても過言ではないと思います。
基本的にはンターフェイスを定義するだけでAPIリクエストの実装ができてしまうとても便利なものです。実際のアプリケーションにおいては、インターフェイスを定義し、すでに用意されているConverterやAdapterを使えば、実際は実用に耐えうる実装ができてしまいます。

しかし、Retrofitの仕組みをご存知ですか?
仕組みを知れば、独自のConverterやAdapterを作ることができます。

このセッションでは、Retrofitの内部実装を見ていきつつ、実装がこうだから使い方はこうするみたいな感じで進めて行く予定です。

## 予定内容
- Retrofitをとりあえず使ってみる
- 内部実装を見ながら、自前のConverterを作ってみる
- レイヤードアーキテクチャにおけるエラーハンドリングの実装例
- Retrofit2を使っている方
- Retrofit2の仕組みを知りたい方
- ConverterやCallAdapterを雰囲気で使ってる方
40minutes日本語その他 (Other)Yasutaka Kawamoto
46
Kotlin MPP で見る Android/iOS コード共通化の夢多くのモバイルアプリは Android と iOS に対応する必要があると思います。
そんなときにモバイルエンジニアならこう思うはず。
「同じアプリを作っているんだから、共通化できるコードがあるんじゃないの?」と。

モバイルエンジニアの夢である「Android/iOSでのコード共通化」を実現するにあたり、近年注目されている技術が Kotlin Multiplatform Project (Kotlin MPP) です。
Kotlin MPP では Kotlin で書かれたコードを Android(JVM), iOS, JavaScript、などで読み込めるようになります。
これまでのクロスプラットフォーム開発技術 (Xamarin, React Native, Flutterなど) とは異なり、Kotlin MPP はコードの一部だけを共通化できます。
つまり、Kotlin MPP を用いれば、プラットフォームの特性を活かしたまま、プラットフォーム非依存なコードのみを再利用することが可能です。

そこで弊社は、Android/iOS でのコード共通化の落とし所として、Kotlin MPP を用いたビジネスロジックの共通化を目指しています。
本セッションでは、Kotlin MPP でビジネスロジックの共通化を実現するにあたり、弊社が悩んだポイントについてお話します。
- 共通化するビジネスロジックは具体的に何?
- プロジェクト全体の構成はどうすればいいの?
- Kotlin MPP で Rx 導入するにはどうしたらいいの?
- Kotlin MPP で作成したライブラリを Swiftから呼び出したときのメモリ管理はどうなっているの?
- クロスプラットフォーム開発 (特に Android/iOS) を検討している/取り組んでいる人
- Kotlin MPP に興味がある/導入を検討している人
- Kotlin MPP で何ができるか知りたい人
- Kotlin MPP でも Rx を使いたい
40minutes日本語クロスプラットフォーム (Cross-platform Development)mk_mkee
47
自動車とのBluetoothシリアル通信で理解する実践Kotlin Coroutines FlowKotlin Coroutinesを使ったデータストリームの実装方法としてKotlinからもFlowという機能が提供され始め、2019年8月に安定版を迎えました。Kotlin Coroutinesのみで非同期処理を伴うデータストリームを実装することが可能になり、Androidアプリにおけるリアクティブプログラミングの選択肢として、有用性が増してきています。

本セッションでは、そんなKotlin Coroutines Flowが気になっているけれど、まだガッツリと使い始められていない方向けに、Kotlin Coroutines Flowの基礎から実践的な使い方までを紹介します。

- Flowの概要
- 非同期処理のCoroutines & Flowでの実装方法
- Flowが適している場面・適していない場面
- FlowをAndroid Architecture Components (ViewModel, LiveData) と併用する方法
- Flowでの例外処理・リトライ処理の実装方法

説明にあたっては、Flowに適した処理が多く発生するため、自動車の情報をBluetoothシリアル通信でリアルタイムに取得・表示するアプリを題材に使います。ただし、Bluetoothシリアル通信の前提知識は不要です。また、紹介する手法は、Bluetoothシリアル通信だけでなく、他の様々な非同期処理 (Web APIの呼び出し、データベースI/Oなど) に活用できます。
Kotlin Flowに興味があり、使ってみたいと思っている方
※Bluetoothシリアル通信の知識は必要ありません
40minutes日本語Kotlinkafumi
48
Androdアプリのアウトカムを最大化するためのプロジェクトマネジメントなにかしらのサービスのクライアントアプリとしてiOSとAndroidのプラットフォームで提供していることがほとんどだと思います。
一方で国内向けのサービスの場合ユーザーの使っている端末の割合がiOSの方が多いことも多く、Androidの機能開発がiOSですでにリリース済みのものをあとから開発することも多いと思います。

本セッションでは上記なような状況でもAndroidアプリのアウトカム(リリースしただけではなく、そのリリースによって何を得たか)を最大化するためのプロジェクトマネジメントについてお話します。
実際にスピーカーが上記のような状況でAndroidの新規アプリ開発を3ヶ月でリリースまで持っていったときのプロジェクトマネジメントについてお話します。
1人で戦うAndroidエンジニア/ネイティブアプリのチームのプロジェクトマネジメントをやっている人40minutes日本語開発体制 (Development processes)futabooo
49
Motion tips for your app AnimationやTransitionを含めたモーションは、UIの表現を豊かにかつ使いやすくするのに有効です。日々様々なアプリが登場している昨今、いわゆる"使い心地の良さ"も重要視されてきています。
 とはいえ、AndroidのMaterial Designのモーションの中には実装が困難なものも多かったり、AnimationのAPIも様々なものが存在したりと、なかなか手が伸ばせていないエンジニアも多いのではないかと思います。
 本セッションでは、まず第一歩として始められるモーションの実装例を、使用方法とともに複数紹介するつもりです。聞き終わった後、これなら自分のプロジェクトに導入できるというものが1つ以上紹介することを目指します。

■予定アジェンダ
・Animation APIの基礎
 ・各種APIの基本的な使い方/実装例
・Transitionの基礎
 ・基本的な使い方/実装例
 ・SharedElementの使い方/実装例
・その他実装例
 ・Material FoundationのMotionの項をベースにいくつか
  ・連続性を持った遷移の使い方/実装例等

■話さないこと
・Material Design自体の概念の詳解
・MotionLayout(場合によっては含みますがメインではないです)
・アニメーションの選択肢を増やしたい人
・Transitionをあまり意識していない人
・プロジェクトのUXを高めたい人
40minutes日本語UI・UX・デザイン(UI・UX・Design)rmakiyama
50
オリジナルマップViewの作り方アプリ内に地図を表示するとき、ほとんどの場合にMaps SDK for Androidが使われていると思います。
ユーザが慣れ親しんだジェスチャーで直感的に操作でき、マーカーアイコンやマップ画像のカスタマイズもできます。

しかしGPS以外の位置情報ソースを活用したり特定の場所に近づいた際のインタラクションのような "とりあえずマップを表示する" 以外の拡張した表現を加えることを考えると、独自CustomViewの実装も有力な選択肢となります。

そこで今回は展示に関連したアプリにて独自の会場内マップViewを実装した話をします。
このViewについて簡単に説明すると、

1. 会場マップ画像と展示ポイントのマーカーアイコンを重ねて表示する
1. GPSの代わりに位置推定結果をもとに現在地を表示する
1. スワイプやズームのジェスチャーでマーカーアイコンの移動とマップ画像を回転、拡大縮小する(ただしマーカーアイコンは回転、拡大縮小しない!)

という振る舞いをするViewです。

このようなViewを実現するためのアプローチとして、まず代表的なマップアプリであるGoogle Mapが実現している機能について分析し、そこから取捨選択した機能毎にどのように実装していくかを段階的に説明できればと思います。

アジェンダ
- Google Mapが実現している機能について
- 現在地を表示するためのインドアロケーション
- 現在地とマーカーアイコン、マップ画像を重ねて表示する
- MotionEventからジェスチャーをハンドリングする
- マップの表示状態(移動、ズーム、回転)をMatrixで管理する
- スワイプでViewの表示位置を反映させる
- ズームと回転をViewに反映させる
- 気持ちよく感じさせるためのアニメーションを追加する
- CustomView実装の知見がほしい人
- 独自マップUIをつくることになった人
40minutes日本語UI・UX・デザイン(UI・UX・Design)Kohei Yamamoto
51
脱Rxのアプローチ2020近年、Androidアプリ開発においてReactive Extension(Rx)は欠かせない存在となっています。

実際のアプリ開発にはRxのJVM実装であるRxJavaとAndroid向け拡張のRxAndroidがよく使われています。
Rxを導入することでAndroidの非同期処理はAsyncTaskから解放されて、更に状態や結果をストリームとして扱えるようになりました。他にもOperatorやSubject, Schedulerなどの魅力的な機能が備わっています。RxJavaの更新も続いており、バージョン3系の開発が進んでいます。

インターフェースや内部にRxJavaを使っているOSSライブラリも現れ、Rxを前提とした設計でAndroidアプリを開発することもできました。
ですがアプリの開発が継続するにつれて、コアとなる部分や主要ライブラリに使っているRxのバージョン更新が難しくなることもありました。

その一方で、Androidのライフサイクルを考慮されたストリームであるArchitecture ComponentsのLiveDataや、Kotlinの言語仕様として非同期処理を扱えるCoroutinesやFlowが登場しました。

いままでRxで担保していた範囲をよりAndroid向けに使いやすい方法、もしくは言語レベルでメンテナンスされる方法で開発を進めることができるようになってきました。

Rxを導入せずに新規アプリを開発した経験をもとに、今までだとRxを使っていた箇所からの差分の説明とAndroid Architecture Componentsをあわせて導入することの利点、LiveDataとCoroutinesだと手が届きにくい点、ワンショットの非同期処理とリアルタイム通信を組み合わせた際の実装で迷った点、Layered Architectureに導入する際に各層のインターフェースをどうするか迷った点、Rxから置き換えた際の長所と短所について話せればと思います。

アジェンダ
- Rxについておさらい
- Kotlin Coroutines, Flowでできること
- Android Architecture Componentsの導入とLiveDataでできること
- RxJavaをCoroutines, Flow, LiveDataに置き換えるアプローチについて
- ワンショットで済む非同期処理の実装パターン
- ストリームを購読する非同期処理の実装パターン
- ワンショットと非同期処理を組み合わせた実装パターン
- Layerd Architectureに導入していく
- RxJava, RxAndroidを使ったことのある人
- Android Architecture Componentsの導入をすすめている人
- Kotlin Coroutines, Flowに興味のある人
40minutes日本語アプリアーキテクチャ (Designing App Architecture)Kohei Yamamoto
52
Flutterアプリを1年間運用した感想Flutterアプリをリリースして1年といくらかが経過しました
その間に得た知見について共有していきたいと思います
※受託です

目次(予定)
【Flutterとは?】
・Flutterについて軽くおさらい

【アプリについて】
・Android, iOS合算の累計DL数は数万ほど
・APIを叩いて結果を表示する、よくあるシンプルなアプリ
・全部で30〜40画面ほど
・Android, iPhone対応、iPadは未対応

【Flutterでよかったこと】
・Dartのおかげでリリース後のアプリクラッシュが0件
・Android, iOSの差異を指摘されることがほとんど無い
・改修が素早く行える
・便利なライブラリ

【Flutterでつらいこと】
・Flutter本体のバージョンアップ対応
・sjis対応
・日本語が中国語になる時がある(あった)
・一部の画面でのみ横画面を許可することが難しい
・APIとコード共有する場合、Flutterは全てのDartライブラリを
 含んでいない
・FlutterのGithubで
 1. 英語のissueを読み漁る
 2. issueを挙げる
 3. コントリビュートする
のいずれかは必須。私の場合は1と2を経験。

Flutterアプリに興味のある方
Flutterアプリの採用を迷っている方
よそのFlutterアプリ運用状況に興味のある方
40minutes日本語クロスプラットフォーム (Cross-platform Development)shsato
53
Flutterのアニメーションをマスターするアニメーションはモバイルアプリのクオリティを左右する重要なファクターになっています。一方で開発者にとってアニメーションは実装しにくくパフォーマンス問題を引き起こしやすい厄介なものです。
Flutterにも多くのアニメーションを扱うWidgetがデフォルトで用意されていますが、カスタマイズにはTweenやCurveなど一見するととっつきづらい概念も必要になっています。しかし、Flutterのアニメーションをしっかり理解すれば、ハイパフォーマンスで宣言的なアニメーションを自由自在に実装することができるようになります。
多くのサンプルや画像を交えながらお話しするので、初心者の方も歓迎です。

話すこと
- Flutterのアニメーションの基本的な概念
- デフォルトで用意されているAnimatedWidgetやTransitionWidgetを紹介
- パフォーマンスを考慮したWidgetの実装
- 既存のアニメーションをカスタマイズする
- 自作のWidgetで複雑なアニメーションを実装する。
Flutterアプリ開発者
Flutterに興味がある人
40minutes日本語クロスプラットフォーム (Cross-platform Development)itome
54
Epoxy vs RecyclerView: Battle for adapter-based viewsEpoxy aims to simplify the process of working with multiple view type RecyclerViews by abstracting the boilerplate of view holders, diffing items, binding data and more.
But is Epoxy the best way to implement adapter based views?

Epoxy can be used to implement lists of custom views. What about simple but large data sets? Recently, I had to display a large local data set that didn’t work so well with Epoxy but worked perfectly with RecyclerView.
Through this talk, I would like to share my experience of how I -
- compared the efficiency of EpoxyController, EpoxyAdapter and RecyclerView
- decided between Epoxy and RecyclerView implementation

In this talk, we will-

1. Discuss Epoxy
- as an alternative to RecyclerView
- point out improvements and drawbacks

2. Understand how RecyclerView terms relate in an Epoxy implementation
- glossary terms like adapter, position and binding
- recycling terms like recycle, scrap and dirty

3. Work through a real-world example on how to
- decide if Epoxy or a RecyclerView better fits your use case
- debug common problems you may have

4. Pick the winner in this battle for adapter-based views!
Any Android developers with an understanding of RecyclerView40minutesEnglishUI・UX・デザイン(UI・UX・Design)Kinnera Priya Putti
55
ひたすら人が増えていく開発チームに起こったこと、その改善「人が足りない」。開発チームからは常にその言葉が囁かれています。

では、開発チームに人が増え続けたら一体どうなるでしょうか。

本セッションではAndroid開発チームのメンバーがすごい勢いで増え10名を超えた時、開発チームに起こった良かったことと悪かったこと、それに伴う予想外の変化と、どのように改善していったかについてお話したいと思います。
- 大規模なチーム開発での知見に興味がある方40minutes日本語開発体制 (Development processes)安齋祐紀
56
動かすAndroid には様々なアニメーション API があります。アプリにアニメーションを実装するとき、どの API を使えばいいか迷った経験はありませんか。適切な API を使い分ける判断基準が分からず何事も一つのやり方で済ませてしまってはいませんか。

Android には ObjectAnimator などの基本的な API から、それらの API に基づいて実装される Transition や ItemAnimator などの高度な API まで、数多くのアニメーション API が用意されています。中にはもはや忘れてしまって構わない API もあれば、場合によって使い分けていく API もあります。このセッションの前半で、まずそれらを整理します。

さらに、アニメーションに関係する View の性質を解説します。アプリごとに洗練されたアニメーションを作り込むためにはカスタムの実装が必要になることもあります。スムーズなアニメーションを作り込むためには基本を押さえておくことが大切です。

最後に、マテリアル デザインの Motion の章 (material.io/design/motion) にあるようなアニメーションの具体的なパターンを題材として、どの API をどのように使うべきか考えていきましょう。

- 様々なアニメーション API
- もはや忘れて構わないアニメーション API
- 2020 年に押さえておくべきアニメーション API
- アニメーションを実装する上で押さえておきたい View の性質
- レイアウトについて
- View の位置について
- マテリアル デザインの動き
- Dissolve と Fade through
- リスト
- Stagger
- Oscillation
- ナビゲーション
- 共通要素
- コンテナーのアニメーション
Android でアニメーションを作りたい人40minutes日本語UI・UX・デザイン(UI・UX・Design)荒木佑一
57
Flux + StateMachineにリアーキテクチャして複雑な状態を管理するなるべくなら関わりたくない「状態」。それが外部から次々と更新される時、どう設計すればシンプルかつリーダブルな構成になるのか。

本セクションでは、弊社サービス「MOV」のAndroid開発チームが目指した「FluxをベースとしたAcitonとStateMachineで複雑な状態を管理するアーキテクチャ」への挑戦とその結果をお話しするとともに、そこで導入したAndroid Architecture ComponentsやRx と Coroutineの組み合わせなど知見ついて触れさせてさせていただければと思います。
Androidアプリで複雑な状態に悩まされている方
Android Architecture Components でのつらみを共有したい方
40minutes日本語アプリアーキテクチャ (Designing App Architecture)安齋祐紀
58
Android Engineer Roadmap ~実務経験ゼロのAndroidエンジニアを採用した・された話~このセッションでは2人のエンジニアによるAndroidエンジニアの採用に関する話を予定しています。

# された話 ( by Kusumi(25) )
「実務未経験でAndroidエンジニアに転職とかマジ?今の会社でいいじゃん。」
そう言われ続けた僕が、何故Androidエンジニアにこだわったのか。
どのようにして未経験のハンディキャップを推して採用されるに至ったのか。

『採用された話』では、これからエンジニアへの転職を目指す全ての人に勇気を与えるお話をしたいと思います。


# した話 (by Nabe (29) )
弊社はこれまでずっと開発業務経験が3年以上あることを採用基準としていました。採用は困難でした。技術的に採用基準を満たしているだけではなく、カルチャーフィットという輪郭のぼやけた概念に悩まされていたからです。

そんな時、「ジュニアを採用しない連中はシニアに値しない」という記事を読んだ私は今までの考えが変わり、組織と自分のためにジュニアエンジニアを採用候補にしたのです。

『採用した話』では、ジュニアエンジニアを採用候補に含めるに至った経緯と、採用後の教育体制の作り方についてお話しします。
これからAndroidエンジニアとして転職しようとしている人。
ジュニアエンジニアの採用を考えている人。
40minutes日本語その他 (Other)RyoWATANABE
59
ConstraintLayout実践入門みなさん、ConstraintLayoutは使っていますか?

ConstraintLayoutは複雑なレイアウトをネストを深くせずに組むことができる上、パフォーマンスの向上にもつながるため幅広く使われるようになって来たのではないかと思います。

そのConstraintLayoutですが、2016年の登場からすでに3年が経ちバージョンも2.0になるにあたりさまざまな便利な機能が実装されてきました。追加された機能によって、従来のレイアウトでは実現が難しかったレイアウトを簡単に実装できるようにしてくれています。

本セッションでは、ConstraintLayoutの基本的な概念から使い方を解説します。

ConstraintLayoutを最適に使用することで柔軟でより複雑なレイアウトを簡単に実現できるようになりましょう。

内容としては以下のようなものを想定しています。

基礎編
- ConstraintLayoutとは
- ConstraintLayoutを活用する
- 他のレイアウトからの移行
応用編
- ConstraintHelperを活用する
- MotionLayoutについて
- Android初学者
- ConstraintLayoutに興味はあるがまだ使っていない人
- XMLでレイアウトを作ってみようと思っている人
-古いレイアウトを置き換えている人
40minutes日本語UI・UX・デザイン(UI・UX・Design)nakker1218
60
詳解adbコマンドリファレンスAndroid開発の標準コマンドと言えばAndroid Debug Bridgeコマンド。
adb install/uninstall や adb push/pull といったコマンドは様々なところで紹介されているので多くの方が知っているでしょう。
しかし、adbコマンドはそれこそ無数に存在し、使いこなせばアプリケーションのデバッグに大きく貢献してくれます。

このセッションでは、基本となるadbコマンドはそこそこに、もっとアプリケーションのデバッグに有効なadbコマンドテクニックを紹介します。
Androidアプリケーション開発初心者〜中級者
普段あまりadbコマンドを使わず、デバッグの幅を広げたい方
40minutes日本語Androidプラットフォーム (Android Platforms)tetsukay
61
Material Design が通用する世界・通用しない世界Material Designの考え方はこれまで、一貫性のあるユーザー体験を提供するアプリや、サービスの登場に貢献してきたデザインシステムだといえます。
このデザインシステムは非常に有効な手段であるものの、一方で何も考えずに採用してしまうと逆にユーザー体験を損なう場合もあります。

このセッションでは、ユーザー体験の設計やUI開発時に、Material Designを使うべき場合・使うべきで無い場合を、弊社で展開しているタクシー配車アプリの乗務員向けシステムの開発事例を通して解説し、そのエッセンスを共有します。

【アジェンダ】
- Material Design が登場した背景(イントロダクション)
- 各Components毎での Good / Bad ケースの紹介
- Androidアプリ開発で活かせるエッセンスとは
- まとめ

【話さないこと】
- 技術的な話はしません(概念や考え方を中心に話します)
- AndroidのUX及びUI設計について学びたい方
- Material Design の基礎を既に学んでいる方
- Material Design の活用方法を学びたい方
- Material Design について疑問を抱いている方
40minutes日本語UI・UX・デザイン(UI・UX・Design)Takao Mukai
62
ユーザーに優しいTextField入門TextFieldはユーザーが様々な場面でアプリに情報を入力するための重要な機能です。

サービスのコア機能になっている場合やアカウント作成画面などでユーザー獲得につながる、アプリ開発において切っても切り離せない機能と言えます。

しかし、TextFieldでの悪い体験ではユーザーの離脱に繋がるため、ユーザーにストレスを与えないための様々な工夫とが必要です。

本セッションでは、金融系アプリで金額入力用のTextFieldを実装した際に得た知見をもとに、入力時にユーザーを不快にさせない・ミスを減らすことを主軸に、よりよいTextFiledの実現の仕方について解説します。

内容としては以下のようなものを想定しています。

- TextFieldのUI/UX

- TextFieldのバリデーション

- 入力制御(電話番号・金額入力等)
- UI/UX向上に興味のある方
- UXをより良くしたい方
40minutes日本語UI・UX・デザイン(UI・UX・Design)nakker1218
63
RxJava vs Kotlin コルーチン 〜 あるいはRx開発者から見たKotlinコルーチン入門 〜RxJava/RxKotlin と Kotlin Coroutines。
どちらも複雑な非同期処理を助けるライブラリとして、今やAndroid開発に手放せない重要な道具です。

両者は実は似て非なるものなのですが、よく似た機能を持つため

「どちらを使うべきか?」
「複雑なRxを捨ててシンプルなコルーチンに切り替えたい」

という話題になることがよくあります。
とはいえ、本当に置き換えられるのか?コルーチンだけで大丈夫なのか?
といった疑問が当然あるかと思います。

そこで、本セッションでは Rx にどっぷりはまった開発者目線で
Kotlin コルーチンと RxJava を真剣に比較し、

- Kotlinコルーチンの基本、Rxとの違い。
- Rxでやっていたことをコルーチンでどうやって実現するか?
- コルーチンだけでどこまでできるか?
- Rx プロジェクトのコルーチンへの置き換え方。
- コルーチンが向いてること、Rxが向いてること。
- コルーチンとRxの共存の模索。どう使い分けるか?

といった内容についてお話致します。

- Kotlin コルーチンと仲良くなりたい方
- RxJava/RxKotlin の開発経験はあるけど、Kotlin コルーチンに慣れてない方
- Rx なプロジェクトをコルーチンに置き換えたい方

40minutes日本語Kotlininomata ( @ino2222 )
64
GitHub Package Registryを使って、自作のAndroidライブラリを公開する自作したAndroidライブラリを公開する場合、Maven Central Repositoryなどの公開されたMavenリポジトリや、社内などで構築された独自のMavenリポジトリにライブラリを登録するとpom.xmlやbuild.gradleから参照しやすくなり便利です。しかし、公開されたMavenリポジトリの場合は登録には多くの手順や認証が必要となりますし、独自に構築されたMavenリポジトリはその管理が大変となります。気軽にライブラリを登録するというのは、現状難しくなっています。
そんな中、GitHub Package RegistryというサービスがGitHubからリリースされました。このサービスを使えば、GitHubのアカウントさえあれば、GitHub上に独自のMavenリポジトリを構築してライブラリを公開することが可能です。
本セッションでは、外部や特定の限られたグループのみに向けたAndroid向けのライブラリを公開したい方に向けて、GitHub Package RegistryとGradleを使った自作のAndroidライブラリを簡単に公開する手法を紹介・実践していきます。


Topics
・GitHub Package Registryの使い方
 ・GitHub側で必要な設定
・Gradleの設定
 ・ライブラリ公開のための設定とタスク
 ・ライブラリを使う側の設定
・GitHub Actionsを使ったワークフロー
 ・ブランチ管理
 ・自動ライブラリ公開
GitHubを使ったことのあるAndroidエンジニア / 自作のライブラリを作ったことのあるAndroidエンジニア40minutes日本語開発ツール (Productivity and Tools)ヤタヒロキ
65
Kotlin Coroutines Flowテスト入門Kotlin CoroutinesのFlowは、通常のメソッドが同期的に1つの値を返すのに対して、非同期に複数の値を返すことができる仕組みの1つです。RxJava2におけるObservableやFlowableに似た動きが可能となります。今後Androidの開発において非同期処理を扱う仕組みとして主流の1つになっていくことでしょう。非常に便利な仕組みですが、他の非同期処理と同様にユニットテストを書くには、同期処理とは違った書き方が必要となります。
本セッションでは、Kotlin CoroutinesのFlowを触っていく人に向けて、どのようにユニットテスト上でテストしていくかを解説していきます。また、RxJava2など他の非同期処理のユニットテストと比較して、どのような違いがあるかを見ていきます。

Topics
・Kotlin Coroutines Flowとは
 ・Flowを使った非同期処理
 ・BroadcastChannel
・テストフレームワーク
 ・JUnit
 ・Spek
・テストを書く
 ・runBlockingを使う場合
 ・asyncを使う場合
Kotlinを使ったことのあるAndroidエンジニア / ユニットテストを書いたことのあるAndroidエンジニア
40minutes日本語Kotlinヤタヒロキ
66
Streamから学んでいくBLoC状態が複雑になりがちで大規模化しやすいGUIアプリケーションの開発において、状態管理はほぼ必須といって良い仕組みです。もちろん、Flutterにおいても同様です。
そんな状態管理の手法の1つにBLoC(Business Logic on Component)という手法があります。
BLoCはDartのStreamとSinkというクラスを利用した設計となっており、Dartのaync/await構文を活用しやすい形になっています。そのため、BLoCはFlutterで使える状態管理手法の中でも簡単かつ強力な手法となっています。
本セッションでは、Flutterを触り始めたDart初心者に向けて、Dartのaync/await構文やStreamとSinkの使い方に触れつつBLoCがどのような手法であるかを解説していきます。また、公開されているBLoCライブラリの実装を見ながら、その実装手法を詳しく見ていきます。

Topics
・Dartのaync/await構文
 ・Dartにおける非同期処理
 ・FutureとStream
・BLoCパターンについて
 ・BLoCのルール
・flutter_blocライブラリに触れる
 ・ライブラリを使った実装
 ・ライブラリの内部実装
Flutterを触ってみた or Flutterで状態遷移を導入したい初学者40minutes日本語クロスプラットフォーム (Cross-platform Development)ヤタヒロキ
67
令和に始めるcode generationAndroidアプリ開発でメタプログラミングを行う際に切っても切れない縁があるコード生成。アプリ開発をしていて一度は目にしたことがあるのではないでしょうか。
本セッションでは、これは夢の技術でも謎の技術でもなく、気軽に作って自プロジェクトに導入できるという紹介をしていきます。
実際に自身が携わっているプロジェクトで作ったannotationProcessor(kapt)を紹介しつつ、コード生成の手軽さ、難しさやハマリポイント、また最近よく目にするincremental annotation processingについて紹介します。
それらを通じて、コード生成をより身近に感じてもらうことが目的です。

- Androidアプリ開発でコード生成をする
- annotationProcessor(kapt)
- Kotlin Compiler Plugin
- 両者の良いところ, 欠点について
- moduleから始めるannotationProcessor(kapt)の作り方
- 自身が開発したannotationProcessorを使ってコード生成した経験を踏まえて、annotationProcessorの仕組みや作り方、流れを紹介
- 難しかったところ、ハマリポイントの紹介
- Jetifierとの競合によるハマり
- incremental annotation processing対応について
- aggregating, isolating
- (以下余力があれば)
- 上のライブラリを Kotlin Compiler Plugin で置き換えてみる
- Android Gradle Transform APIの紹介
annotationProcessorをまだ作ったことがない人、テンプレコードを手で量産するのに飽きた人、開発効率の向上に興味のある人40minutes日本語開発ツール (Productivity and Tools)litmon
68
Flutter x Firebaseでコーヒー注文アプリを開発し、Blocアーキテクチャでリファクタした話。社内環境改善のためにコーヒー注文アプリを開発しようと思い立ち、クライアントのフレームワークとしてFlutter、バックエンドとしてFirebaseを採用し、一人で黙々と開発して社内にリリースした経験について、以下を軸にお話します。
・簡単にコーヒー注文アプリについてざっくり概要
・Flutterをどのように利用しているか
・Firebaseをどのように利用しているか
・Flutter x Firebaseで開発するモチベーション
・Flutter x Firebaseで開発した上で辛かったこと
・リリース後にBlocアーキテクチャでリファクタリングした話。
前提知識は必要ありません。
Flutterを採用したいと思っている方、Firebaseを採用したいと思っている方
40minutes日本語クロスプラットフォーム (Cross-platform Development)maru
69
タクシーメーターと私皆さんはレガシーなシステムとkotlinで会話するようなアプリを作ったことはありますか?
僕はあります。
皆さんはレガシーなシステムを意識してその他のシステムとの連携を仲介するアプリを作ったことはありますか?
僕はあります。
皆さんは、上記を作り上げるまで1年以上に渡って各コンポーネントとの調整などに携わったことはありますか?
僕はあります。

本セッションでは、
タクシーメーターと双方向にkotlinを使って対話した時のお話
をその対応から学んだノウハウなど交えつつご紹介させていただきます。

キーワード
- BCD
- ASCII
- Shift JIS
- JIS
- 文字コード
- バイトオーダー
- ビット演算
- Bluetooth
- シリアル通信
- 双方向通信
- シリアル通信によるレガシーなシステムとの連携に興味がある方
- 長期にわたる機能開発に興味のある方
- タクシーメーターに興味ある方
40minutes日本語その他 (Other)URI
70
Epoxy詳解 ~宣言的UIで複雑なレイアウトに立ち向かう~日々複雑化していくアプリの要件やレイアウトを実現する上で
RecyclerViewを用いたリストUIの実装に
- ボイラープレートコードの量が多くなってしまう
- レイアウトの全体を把握しづらい
などといった悩みを抱えている方も少なくないのではないでしょうか。

そのようなRecyclerViewにおける問題を
Airbnb社が開発・公開するOSSである Epoxy が解決してくれます。

Epoxyでは開発者が定義したViewとデータ構造から
EpoxyModelクラスというRecyclerViewに接続するためのクラスを
自動生成することで記述すべきコードの量を減らすことに成功しています。

そして開発者は自動生成されたEpoxyModelクラスを
リストの並びに合わせて宣言的に記述していくことで
複雑なレイアウトも見通しよく実装していくことが可能になります。

本セッションでは、そのようなEpoxyの実践的な使い方を理解することで
複雑なレイアウトへのEpoxyの導入ができるようになることを目的とします。
さらに、Epoxyの思想や仕組みについて理解することでJetpack Composeなどでも提供される宣言的UIの性質についての理解を深めることを目指します。

発表トピックとしては以下を予定しています。

- Epoxyの内部的な仕組み
- Epoxyの多様なAPIの使い分け
- 宣言的UIとEpoxyの関係
- 単純なレイアウトから構成されるリストUIの実装
- 複雑なレイアウトから構成されるリストUIの実装
- ページング処理を必要とするリストUIの実装
- リスト形式ではないUIをパフォーマンスよく実装する
- Epoxyを利用している、もしくは導入を検討している方
- Epoxyの導入予定はないけど、宣言的UIに興味がある方
40minutes日本語UI・UX・デザイン(UI・UX・Design)Yuji Koyano
71
RecyclerView to Epoxy to Jetpack compose従来、androidで再帰的なレイアウトを表現するにはRecyclerViewを用いてViewHolderやAdapterなどを状態に応じてそれぞれする必要がありました。
Epoxyの登場により、レイアウトファイルとそれを定義するControllerとModelを書くことで、簡単に複雑な再帰表現を行うことができるようになりました。
そしてJetpack composeにより、これまでの開発がどのように変わっていくのかを考えてみます。
再帰レイアウトにこれから取り組む人
再帰レイアウトをよく作る人
Jetpack composeに興味がある人
40minutes日本語Android FrameworkとJetpack (Android Framework and Jetpack)MatsuNao
72
瀕死のシステムが強くなって復活する話弊社が展開しているタクシー配車サービスにおける乗務員様向けのシステムは今、大きな転換期を迎えています。
約半年に渡って進めてきた、大規模リファクタと開発対象デバイス刷新のプロジェクトがいよいよ陽の目を見るためです。
そんな新システム開発の裏で最低限のメンテしかされず、死にゆく運命にいる現行のシステムがあります。
とあることがきっかけで、今まで想定されていなかった多種多様なユースケースへの対応が必要となり、
現行のシステムにも新たに生まれ変わるチャンスが巡ってきました。

ただし、現在の実装の成熟具合から、現行のシステムを拡張する形での対応は難しく
また大規模に改築するにしても、
平行開発している新システムとのコード的な共存(マルチモジュール)を意識して対応しなければならない状況です。

本セッションでは、上記対応を行った中で学んだ
・多種多様なタクシー乗務のユースケースへ対応するための状態変化に強いアプリアーキテクチャ
・対象端末が違う別のシステムと共存するためのノウハウ
についてお話させて頂きます。

キーワード
- Flux
- MVVM
- マルチモジュール
- ステートマシン
- システムアーキテクチャ
・様々なユースケースよって複雑に状態変化するような、アプリアーキテクチャに興味のある方
・複数端末(Phone、タブレット)への対応に興味がある方
40minutes日本語アプリアーキテクチャ (Designing App Architecture)URI
73
今すぐ業務に活かせるNavigation実装方法従来のFragment間の画面遷移処理は、チームメンバーによって実装方法に差が生まれてしまうことがありました。
今日のAndroidアプリ開発では、Jetpackより提供されたNavigationによって、画面遷移処理が確立され、チームで一貫した記述ができるようになりました。

しかしながら、DeepLinkを使った画面遷移やMultimodule環境での利用など、少し特殊な実装を試みると、公式ドキュメントの情報だけでは対応できないケースがまま存在します。

本セッションでは、私が業務中にNavigationを利用した画面遷移を実装する上で直面した問題と、その解決方法をNavigationの魅力と共にお伝えしていきます。
Fragmentの画面遷移をもっと簡単に実装したい方。
Navigationを使ってDeepLink対応したいけれど、一歩踏み出せない方。
40minutes日本語Android FrameworkとJetpack (Android Framework and Jetpack)Katsumi Kusumi
74
gRPCとSpring Boot(Kotlin)でつくるBFF~Androidエンジニアにとってのメリットって何??~BFF(Backend For Frontend)とはフロントエンドのためのバックエンドのことで、RESTfulな複数のAPIを1つのコンポーネント表示に使う場合などに効果を発揮する技術です。もしBFFをクライアント側が実装するとなるとAndroidエンジニアとしては手間がかかる印象かもしれないですが、複数APIをAndroid側で叩く処理をBFFに委譲して一本のAPIにまとめることでRESTの原則を保持できるだけでなく、iOSとAndroidで共通のロジックを書くことができ、そのロジックに修正が必要な場合にもBFF側を修正すればアプリのアップロードをせず対応できるなど、Androidエンジニアとして嬉しいメリットもあります。本セッションでは、BFFについてAndroidエンジニアとしてどんなメリットがあるのか?という点を中心に、gRPCとSpringBoot(kotlin)を使ったBFFの実例を易しく解説します。BFFって何?Androidエンジニアにとってどう便利なの?という初心者向け40minutes日本語その他 (Other)nichiyoshi
75
物流を支えるAndroidアプリの作り方ネット通販が一般的になり便利な買い物が実現する一方で、運ばれる荷物の量は日々増え続けており、物流の現場を圧迫しています。
こうした現場をITのちからで改善する試みのひとつとして、物流現場向けにスマホアプリを提供するケースが増えてきました。
荷物をトラッキングしたり、配送ルートを表示したり、センサーの情報を取得したり、アプリにできることはたくさんあります。

本セッションでは、これらの機能をAndroidアプリでどのように実現するか、実装とUI/UX両方の観点でご紹介します。

【このセッションで話すこと】
・物流とはなにか
・現場の抱える課題
・一般ユーザと業務ユーザの違い
・物流現場で便利なAndroidならでは機能
・具体的なUI/UXとその実装例
・BtoB向けアプリの実装に関わる方
・物流に興味のある方
40minutes日本語UI・UX・デザイン(UI・UX・Design)shanonim
76
アプリエンジニアがはじめるグロースハックグロースハックとは、プロダクトから得られたユーザの行動ログなどのデータを分析し、プロダクトの成長を加速させていく事を指します。また、網羅的にアプリ内のログを取ることは各機能が正常に動作しているかを知ることができるため、アプリの品質を高めることにも繋がります。近年ではFirebaseでもA/B Testingのように、マーケティングの知識が少ないアプリエンジニアでも手軽にプロダクトのグロースを行える機能が増えてきました。

しかしながら、依然アプリ内のロギングなどはマーケターによる仮説ドリブンである事も多く、実際にデータが欲しくなってからようやくデータを取り始める、といった後手後手の対応になってしまう事がまだ多いのも事実です。この問題に対し、誰よりもアプリの実装に詳しいアプリエンジニアが、グロースハックに関する知識をつけることでアプリ単体を超えた、プロダクト全体の成長速度に大きく貢献できるようになる事、さらにその中で得られたノウハウが今後の勉強会で積極的にシェアされるようになる事が本セッションの目的です。

セッションは以下の内容を予定しています
- グロースハックとは
- アプリエンジニアがグロースハックをする価値
- なぜログを取るのか
- 意思決定の促進
- 品質管理
- Androidプロジェクトでイベントログを取る
- どのようなログを取るのか
- どうやってログをとるのか
- コードレベルでのログの取り方(FIrebaseを例に)
- スパゲティコードにならないためのロギング設計(CleanArchitectureを例に)
- 分析する
- 分析サービスの紹介・比較
- ファネル分析
- コホート分析
- A/Bテスト
- 機械学習を用いた分析
- 実際のプロダクトにおける分析事例
- プロダクト全体の成長速度(意思決定速度)を早めたい方
- アプリの品質を高めたい方
- グロースハックにおいて、アプリエンジニアだからこそ生むことができる価値が気になる方
( Android開発の知識量は問いません)
40minutes日本語保守・運用・テスト (Maintenance Operations and Testing)たかし
77
Dive into (Differed)DeepLinkDifferedDeepLinkはWebからモバイルアプリにユーザーを誘導したい時にとても効果的な手段の一つになります。
本セッションでは実際の業務で経験した知見を元にAndroidで (Differed)DeepLinkを利用する上で押さえておきたい要素をご紹介します。

目次:
- DeepLinkとは
- DeepLinkの発展
- DeferredDeepLinkを提供するサービス
- Firebase Dynamic Links
- etc..
- Firebase Dynamic Linksの仕様と制約
- 計測できる情報と出来ない情報
- Android AppLinksとの関係性
- その他のAndroidアプリへの誘導
- Firebase App Index
- etc..

補足: DeferredDeepLink
Webで開いてるページの情報をアプリに渡せる機能を持つDeepLinkです。例えばDeferredDeepLinkを使うとブラウザで開いていた商品ページをアプリインストール後に表示させる事ができます。
- マーケティングの観点でDiffered DeepLinkの知見が気になる方
- 技術的な観点でDiffered DeepLinkがAndroid上でどのように実現されているのか興味がある方
40minutes日本語その他 (Other)kazy(Kazuki Yoshida)
78
実例から理解するRxJava/RxKotlin2019年現在、RxJava/RxKotlinはAndroid上での非同期処理を取り扱うためのライブラリとしてすっかり市民権を得ましたが、
用意された機能が豊富なこともあり、いまいちやりたいことを実現するのにどう書けばいいかがよく分からない。その結果、単に非同期処理をsubscribeするためだけに使っている、
という方も意外といらっしゃるのではないでしょうか。Rxの取り扱うストリーム処理は抽象的な処理であることも、その理解を妨げがちになっているのではないかと思います。

そこで本発表では、Android開発でありがちな処理を取り扱う際のRxの使い方を通して、Rxの実践的な使い方について理解を深めるお手伝いを出来ればと思います。

基本編ではRxで用意されている様々な機能を使うと代表的にはどんなことが出来るかということを紹介し、応用編ではアプリ開発でよくある機能を実現するにはRxの機能をどのように組み合わせればいいかを解説します。

昨今はKotlin CoroutinesがAndroidの非同期処理を取り扱う手段として浸透しつつありますが、Kotlin CoroutinesでCold Streamsを取り扱うための
Kotlin Coroutines FlowもRxのインターフェースにそっくりなので、Rxを理解しておくことはKotlin Couroutinesで非同期処理を取り扱うための助けにもなるはずです。

なお、本発表のサンプルコードは全てKotlinで記述しています。


## 発表内容(予定)

### 初めに

+ 各クラスをおさらいする
- Flowable
- Single
- Completable
- 相互に変換できることを図で理解する
+ 今日取り扱わないもの、Maybe
+ RxのStreamの作り方
- Retrofit
- LiveData
- Room

### 基本編

#### Single

+ Web APIの呼び出し結果を別のオブジェクトに変換する - map
+ 複数のWeb APIを順番に呼ぶ - flatMap
+ 複数のWeb APIの呼び出し結果を待ち合わせて、何らかの処理を行う - zip
+ 実際に呼び出すまで初期化を遅延させる - defer
+ ローディングインジケータを処理が終わったら非表示にする - onFinally
+ 一つのAPIの呼び出し結果を使って順番に他のAPIを呼び出す - flatMap内でのflatMap
+ Rxに非対応なライブラリからRxのStreamを作る - Single.fromCallable & subscribeOn
+ メインスレッドで結果を受け取る - observeOn

#### Completable

+ 終わったことさえ分かればいい場合にCompletableを使う
+ flatMap -> andThen

#### ProcessorとFlowable

+ Processorとは
+ どんな時に使うか
+ BehaviorProcessorとPublishProcessor
+ 空でない結果だけ受け取る - filter
+ 入力内容が変化した時だけAPI通信する - distinctUntilChanged
+ どちらかの結果が変わるたびに通知する - combineLatest

#### Transformer

+ Transformerとは
+ Flowable/Single/Completableを引数にしたくなったらTransformerの利用を検討する

### 応用編

+ 通信エラーの場合は自動的にリトライする(回数制限付き)
+ HTTPエラーをアプリロジックのエラーに変換して扱う
+ 検索ボックスに入力中の文字列を利用して検索候補表示を行う
+ RxJava/RxKotlinのアプリへの導入を検討している方
+ RxJava/RxKotlinが難しいと感じている方
+ Kotlin Coroutines Flowの理解の足掛かりにしたい方
40minutes日本語その他 (Other)kr9ly(からくり)
79
改めて画像の読み込みについて考えるAndroid 開発において、ほとんどのアプリで画像を読み込む方法を考える必要があると思います。近年では Picasso、Glide などが安定し、使うプロダクトが多いかと思いますが、Kotlin に最適化された Coil という新興勢力が登場し、その上、海外の有名なエンジニアが移行しとツイートしたのもキッカケとして、最近はブログなどで見かけるようになりました。

ここでは、こういうライブラリが使う前の問題点は何だったか、これを使うことでどういうことが解決できるかを説明していきます。

- ライブラリが登場する前はどうしていたか
- .jpeg, .png, webp 拡張子の説明
- Glide, Picasso, Coil の紹介
- Blur などの Transformations (単純加工)の説明
Android 初心者〜中級者40minutes日本語その他 (Other)Wasabeef
80
Kotlin/MPPでAndroid, iOSをMPF開発した話2018年にKotlin 1.3でFeatureとしてMPPが入り、また同年末にはFlutterがリリースされ、Android界隈で見ただけでもMPF(Multi-Platform)の実現方法が多様化しています。
そんな2018年下旬、私達のプロダクトはKotlin/MPPでの開発を採用し、現在オンプロダクトで稼働させることができました。

人的リソースは有限であり人材不足が叫ばれる昨今、省コストで素早く価値をデリバリーできるMPFは、プロダクト立ち上げ時に気になる領域です。
反して、MPFは概ね継続的な開発に問題を抱えることが多く、事業が継続した場合のメンテナビリティが課題になりがちで採用に二の足を踏む方も多いのではないでしょうか?

今回私達は長期運用を目的とした既存アプリのリプレースという観点で開発手法の選定を行いましたが、Kotlin/MPPはその目的に十分足るものでした。
では、Kotlin/MPPは他のMPFとはどのような違った特徴を持っているのでしょうか?

## 予定している内容
以上の経験を元に、この発表では以下のことについて話したいと思います。
* Kotlin/MPP採用に至った経緯
* Kotlin/MPPを採用することによるメリット・デメリット
* デメリットに立ち向かうアプリケーション設計
* AtomicDesign、Flux、(Clean Architectureベースの)オニオンアーキテクチャ
* MPPで使えるライブラリ使えないライブラリ
* CoroutineとRxの共生
* 開発中に発生した問題とその対処

## この発表で得られる予定の知見
* Kotlin/MPPが向いてること、向いてないこと
* 実際にKotlin/MPPを使ってみた経験談
* Fluxによる大規模、ロングライフ向け設計

* Multi-Platformの候補としてKotlin/MPPを考えている方
* Kotlin/MPPを使用した設計でお悩みの方
* 情報収集で、Kotlin/MPPに興味がある方
40minutes日本語クロスプラットフォーム (Cross-platform Development)yashims85
81
1から学ぶAndroidアプリデバッグ - アプリの動作を追いかけようアプリ開発には欠かせないデバッグ。バグ報告を受けて原因調査に使うこともあれば、アプリがどのような動作をするのか、どのような状態になっているのかをコードを見ながら追いかけるのに使うこともあります。
ログやブレークポイントを使った基本的なデバッグを使う機会はあれど、デバッガーを駆使した手法について少し知ることができるだけで、アプリの挙動、状態といったアプリの「なぜ?」を突き止めることぐっと近づくことができるはずです。
本セッションでは、初心者の方も対象として、実例を交えてAndroid Studioを使ったデバッグ手法を中心に、+1としてTimber、Stetho、Hyperion等のデバッグライブラリを使ったデバッグについても解説する予定です。

<アジェンダ>
- Android Studioのデバッガー
- Logcat
- ブレークポイント
- Android Profiler
- etc...
- +1:デバッグライブラリを用いたデバッグ
- Timber
- Stetho
- Hyperion
- Android開発初心者の方
- 途中からプロジェクトにジョインしてコードを見ることになった方
- デバッグ中、バグの原因を追いかけることに悩んでいる方
40minutes日本語開発ツール (Productivity and Tools)Yoshihiro Wada
82
ネットワーク通信の未来とEnvoy MobileについてAndroid開発で低レイヤーのHttpClientといえばOkHttpがデファクトスタンダードになっていますが、 全く新しいアプローチでこの領域を置き換えるを可能性を秘めているのがEnvoy Mobileです。
本セッションではEnvoy Mobileの可能性と魅力についてご紹介します。

- なぜEnvoy Mobileに注目しているのか
- マイクロサービスの課題とEnvoy Proxyの登場
- モバイルアプリとマイクロサービスが抱える課題の共通点
- Envoy Mobileプロジェクトの発足
- Envoy Mobileの強みについて
- 2020年現在の課題点
- これからの未来の話

- 中級者以上向け
- 新しい技術が好きな方
- 分散トレーシングやObservability(可観測性)という単語が気になっている方
- モバイルアプリで高度なネットワーク処理を考えている方
40minutes日本語その他 (Other)kazy(Kazuki Yoshida)
83
CleanArchitecture x デザインパターンで挑むスムーズな開発【概要】
「ほぼ同じ仕様で!」
こんな会話で始まる開発に身に覚えがある方も多いのではないでしょうか。
DMを送るチャットとグループチャットなどのように、見た目は同じに見えても全く異なる概念を内包する開発に置いて責務を正しく分離しながらの設計の議論は非常に難しくなると思います。

ユーザーとしては同じに見えたほうがわかりやすくとも、データとして同じものとして扱うわけにはいかない!ダメ。絶対!
そんな状況を、ほぼ同じものを2つ作る冗長案でもなく仕様をがんじがらめにする縛り案でもなくデザインパターンで柔軟かつ無駄なく解決していったという話をします。

【背景】
ユーザーにとって理解しやすいプロダクトを作ろうとすると、次のような要求が出てくることが多々あると思います。
- 細かい概念差分があり同じデータとして扱うことができない。
- でもユーザーからすればなんら変わらないデータに見える。
- 仕様的には "ほぼ" 一緒。

その時に上がりやすい解決方法は「完全に別物として作ってしまう。」or 「同じものとして作って仕様をがんじがらめにする。」になってくると思います。
この選択のために企画と開発者が来る日も来る日も将来起こりうる仕様変更について議論する日々が続く。
散々議論して作ったにも関わらず来てしまった仕様変更によりメンテナンス性が落ちる。
そんな状況を打開するヒントとなればと思います。
- 「ほぼ同じ仕様で!」こんな要求に困っている方
- 将来像の議論が長引いてしまう開発に疲れてしまった方
- iOSとAndroidで共同で設計開発している方
40minutes日本語アプリアーキテクチャ (Designing App Architecture)ken
84
Coroutine's Flow を理解する非同期処理を RxJava から Coroutines に置き換えて始めた方も増えてきたかと思います。
ただ、データストリームの処理において RxJava は機能が豊富ですが、Coroutines への移行を期にそれらを LiveData の Transformations(MediatorLiveData) に置き換える方法も見られました。ただ、Transformations(MediatorLiveData)で複雑になる前に、8月に最初の安定版リリースを迎えた Flow で置き換えていくことも検討できるように説明したいと思っています。

- Coroutines とは?(要約のみ)
- Flow とは?
- RxJava と Flow で出来る事と出来ない事
- LiveData と Flow を合わせた実装パターン
- Android 中級者以上
- ViewModel + LiveData を理解している方
- Coroutines を理解したいと思ってる方
40minutes日本語KotlinWasabeef
85
実践マルチモジュール近年のAndroidアプリ開発では1つのアプリを複数のモジュールに分割しながら開発することが増えてきています。モジュールの分割はビルド時間の高速化やアーキテクチャ構造の強制化といった様々なメリットがあります。一方で、マルチモジュール構造が一般的になる以前から存在するアプリはモノリシックな構造で実装されていることが多く、機能開発と並行してマルチモジュール構造に移行していくのは容易ではありません。

本セッションでは、マルチモジュールの概要やメリット・デメリットからスタートして、レイヤー単位での分割や機能単位での分割といったモジュール分割の方法論や、機能同士の依存管理や機能横断の画面遷移といったマルチモジュール環境におけるいくつかのTips、そして、発表者が実務で扱ったモノリシック構造からマルチモジュール構造への移行方法を紹介します。

- マルチモジュールについて
 - マルチモジュールの概要
 - モジュール分割の方法論
  - レイヤー単位での分割
  - 機能単位での分割
  - 共通コードの扱い方
 - マルチモジュール環境におけるTips
  - ライブラリのバージョン管理
  - 機能同士の依存管理
  - 機能横断の画面遷移
  - Daggerとの連携方法

- 大規模アプリでの導入方法
 - 全体の構造理解とモジュール構造の決定
 - 共通コードを配置するためのCoreモジュールの作成
 - 機能開発と並行してモジュール分割を進めるための方法論
 - 機能単位でモジュール分割を進める際の障害と回避策
- マルチモジュール構造に興味はあるが導入に踏み切れていない人
- モノリシックなアプリをどのように分割していけばいいのか悩んでいる人
40minutes日本語アプリアーキテクチャ (Designing App Architecture)yuyakaido
86
StorybookでUI開発を効率化しようAndroidアプリ開発には色々な作業が必要になりますが、その中でもUI開発はかなりのウェイトを占めています。大規模なアプリになればなるほど1つのUIパーツにも色々なパターンが存在し、それらが全て正しく動くことを確かめながら開発を進めるのは大変な作業です。大変がゆえに特定のパターンでのみ表示が崩れたり、アプリがクラッシュしてしまったりといった問題が発生してしまいます。本セッションでは、Webフロントの開発でよく採用されるStorybookという手法を利用して、プロダクト本体からUIパーツを切り離すことでビルドの待ち時間を限りなく少なくし、UIパーツの状態を網羅的に確認できるようにする手法を紹介します。

- Stroybookの概要
- UI開発におけるよくある問題
 - ビルドの待ち時間がUI開発のネックになる
 - UIパーツの状態を網羅的に確認する手段がない
- Storybookの実装方法
 - Storybookの実装で必要になるモジュール分割の補足
 - UIパーツ単体でビルド可能にするためのCoreモジュール作成
 - UIパーツの状態を網羅的に確認するためのStorybookアプリの作成
 - Storybookアプリを利用してUI開発を効率化
- UI開発におけるビルドの待ち時間をなくしたいと思っている人
- UIパーツの状態を網羅的に確認する手段がなくて困っている人
40minutes日本語開発ツール (Productivity and Tools)yuyakaido
87
Understanding Jetpack Compose: 使い方と考え方複雑化していくアプリ要件に対応していく中で、開発現場ではリアクティブ・プログラミングモデルの採用は一般的になっています。
Androidの世界においてもRxJava、LiveData、DataBindingなどの力を借りることで、こうしたリアクティブなアプローチへのハードルは下がってきています。
一方でAndroidのUIフレームワーク自体は古いままで、命令的であり、また複雑なものとなっています。

こうしたなか、Google I/O 2019で登場したJetpack Composeは全く新しいUI Toolkitとして注目を集めました。
Kotlin DSLを採用し、ReactのようにUIを宣言的に表現できる点や、Webで採用されるReduxやFluxなど、リアクティブでかつ副作用が少なくスケールしやすいアーキテクチャとの親和性の高さが期待されています。

そこでこのセッションでは、Jetpackを始めるにあたって
・核心となる原則と、それが現在のUIフレームワークと異なる点
・Jetpack Composeの使い方と、内部で実際に行われていること
・再利用可能なコンポーネントを開発するためのパターン
・既存のUIフレームワークと並行して利用する方法
・アニメーションする方法と仕組み
・テストへの影響

について、実際のコードを見ながらお話します

Jetpack Composeを使い始めるにあたって、新しい考え方へのシフトチェンジが求められるかもしれません。
でも大丈夫、まだプレアルファの段階ですから、準備をするには十分な時間があります。
今から始めてみませんか。
・Androidエンジニア
・Webフロントエンドの面倒も見ている方
・人とちょっと違ったことがしてみたい方
・新しい領域に飛び込みがちな方
40minutes日本語Android FrameworkとJetpack (Android Framework and Jetpack)Hiroyuki Mori
88
gRPCを用いたAndroidアプリ開発の知見ネットワーク上のサーバから情報を取得する手法として、REST APIが広く使わてきましたが近年ではその問題点を解決するための手法としてGraphQLやgRPCが注目を集めています。

本セッションでは、gRPCを利用したタクシー配車アプリMOVの乗務員用アプリにおける機能の開発を事例としてAndroidでgRPCを利用する上での注意点、RxJavaやKotlinとの連携方法、開発中や実サービス運用における利点と課題など得られた知見についてお話します。

本セッションに含まれる内容
- gRPC概要
- AndroidでのgRPC利用Tips
- Kotlin CoroutinesやRxJavaを利用した非同期、ストリーム処理の方法
- 開発中およびサービスイン後の運用についてのTips
gRPCを利用したアプリ、サービスの開発に興味のある方40minutes日本語その他 (Other)chibatching
89
既存巨大プロジェクトでのマルチモジュール化本セッションでは、ホットペッパービューティーアプリのマルチモジュール化をどのように計画し、どのように進めていっているのかを体験談を元に紹介したいと思います。

昨今のAndroid開発現場では、マルチモジュールなアーキテクチャを採用するプロジェクトが増えてきていると感じます。
とはいえマルチモジュールと一口に言っても、モジュールの分割の仕方に絶対的な正解があるわけではなく、アプリケーションの性質や現場での実情などによって取り得る選択肢が変わってくるものなのではないかと思います。
それゆえ難易度も高く、特に既存プロジェクトでのマルチモジュール化に対して二の足を踏んでしまうような状況もあるのではないでしょうか。

ホットペッパービューティーアプリは2年前にKotlinでリプレイスを行い、現在は高速にエンハンス開発を行うことができています。
今後もさらにアプリを進化させていくために、ますます巨大化していくプロジェクトを秩序だった状態に保っておく必要があります。
巨大プロジェクトを中長期的に成長させ続けていくために挑戦している取り組みです。
既存アプリケーションのマルチモジュール化を検討している方40minutes日本語アプリアーキテクチャ (Designing App Architecture)Takuya Kodama
90
今からはじめるDaggerAndroidSupportDependency Injection(DI)は、依存オブジェクトを注入するデザインパターンの一つです。
Android公式のアプリアーキテクチャガイドにも記載されてある通り、DIを実現するにあたりDaggerというライブラリが推奨されています。

Dagger2.10からAndroid Support ModuleとAndroid Compilerが追加され、DaggerAndroidSupportに移行している方や移行を検討されている方も多くいらっしゃるのではないでしょうか。

今回のセッションでは、プロダクトにおいて旧Daggerを利用した状態からDaggerAndroidSupportを適用させた経験を元に、Dependency InjectionとDaggerAndroidSupportの概要から移行する際のハマりどころとその対処法について解説します。

セッションでは下記の内容を予定しております。

# 紹介する内容
- Dependency Injectionとは
- Daggerとは
- DaggerAndroidSupportとは
- DaggerAndroidSupportのメリットとデメリット
- DaggerAndroidSupport適用前のDagger利用手順
- 既存アプリで移行する際のハマりどころとその対処法
- まとめ
- DIについて理解を深めたい方
- 既にDaggerを利用しているが、現行アプリにDaggerAndroidSupportを適用したい方
- DaggerAndroidSupportを適用する際のハマりどころとその対処法を知りたい方
40minutes日本語アプリアーキテクチャ (Designing App Architecture)zukkey
91
ユースケースで学ぶNavigation実装パターンNavigationとは、Android Jetpack コンポーネントのライブラリの一つで、アプリ内の複雑であった画面遷移を簡単にしてくれるライブラリです。

Google I/O 2018でAndroid Jetpackが発表されてからNavigationを導入している、もしくは導入を検討している方も多いのではないでしょうか。

Navigationの概念や導入手順、利用方法について書かれた記事は多くありますが、プロダクトに導入した際に「こういうときにどうしたらいいのか」まとめて解説しているものは見受けられないかと思います。

今回のセッションでは、Navigationをプロダクトに導入した経験を元に、直面するであろう課題に対してのユースケースで学ぶNavigationの実装パターンを紹介いたします。

セッションは、下記の内容を予定しています。

#紹介する内容
- Navigationの概念
- Navigationを導入するメリットとデメリット
- Navigation利用前の準備と開発環境の紹介
- パターン集
- Activity間の遷移
- データを渡したい時
- 遷移のAnimation
- 戻る挙動
- UIテストの書き方
- 遷移結果の受け取り方(onActivityResult)
- Deeplink周り(プッシュ通知周り)
- SharedElementTransition
- まとめ
- Navigationについて、概要は理解しているがプロダクトへの実装パターンを知りたい方
- プロダクトにNavigationを導入を検討している方
- Navigationのテストについて知りたい方
- 通知周りにNavigationを適用する手法を知りたい方
- プロダクトに反映させた後、どうであったかを知りたい方
40minutes日本語Android FrameworkとJetpack (Android Framework and Jetpack)zukkey
92
Deep Understanding of InheritedWidget[issues]
Flutter is based on Widget, so in order to implement Flutter efficiently we need to understand Widget deeply. More and more developers are getting to start Flutter, but there are still less mentions about Widget. Understanding InheritedWidget is the best way to understand the inside Flutter. Inside Flutter means below.
・What is the Widget
・Widget performance(data structure and how it works)

[topics]
・Basics of Widget
 ・differences between StatelessWidget and StatefulWidget
 ・Element and RenderObject
・Widget Perfomance
 ・Widget data structure
 ・efficient references between upper and lower Widgets.
・InheritedWidget
 ・Simple solutions(hierarchy, dart feature)
 ・InheritedWidget and data reference
 ・How Provider works and how to use it
Intermediates who have implemented Flutter apps and at least know how to use Widget.40minutesEnglishクロスプラットフォーム (Cross-platform Development)neonankiti
93
ちょっとだけ古いAndroidアプリを新しい環境に追従するAndroidアプリを取り巻く開発環境はこの3年ほどで激変しました。2017年にはKotlinが公式にサポートされ、
2018年にはJetpackが発表され、2019年にはKotlinが推奨言語となりました。

新しい環境への追従には大きなコストがかかります。
この3年ほどで開発されたAndroidアプリの中にはこれらの一部または全部に追従できてないアプリがまだ多くあるでしょう。

このセッションでは、それらの「ちょっとだけ古いAndroidアプリ」を新しい言語や開発環境に対応してきた知見を皆様に共有したいと思います。

- Javaで書かれたAndroidアプリのKotlin化
- ViewModel、Data Binding、LiveDataを活用したMVVM化
- シングルモジュールからマルチモジュールへの移行
- ActivityだらけのアプリからJetpack Navigationを活用したSingle Activityへの移行
- RxJavaをKotlin Coroutineに置き換える
- 既存アプリのメンテナンスの仕事をしているが新しい技術やパラダイムを導入したいと思っている方40minutes日本語開発ツール (Productivity and Tools)takuji31
94
Boost your productivity with Android Studio templates and profiling toolsAndroid Studio has been offering many tools that help you boost your productivity including debugger, profiler, templates or the benchmark Jetpack library etc. But not everyone is familiar with all of those tools.
I this talk, I will cover the two main topics, templates and profiling.

Templates:
In Android Studio, FreeMarker, a Java template engine, has been used as a template engine to render your initial project, module or a single component. I'll talk about what's the efficient usage of it and uncovered topics that haven't been explained.

Profiling:
Topics will include how I improved the app and library performance by using the Android Studio profiler and the Benchmark Jetpack library from the basic introduction of those to tips and tricks.
Beginner to intermediate Android developers40minutesEnglish開発ツール (Productivity and Tools)thagikura
95
既存モノリシックアプリケーションの Google Play Instant 対応既存アプリケーションに対して、Google Play Instant への対応をしようと考えた際に、どこから手を付けてよいかわからない方もいらっしゃるのでしょうか。

本セッションでは、マルチモジュール化、プロダクト設計をはじめとする Google Play Instant 対応の道のりを、5 年もののモノリシック Android アプリケーションを通して1 つの事例として紹介します。

【お話することの予定】
* Google Play Instant とは
* なぜ Google Play Instant 対応しようとしたか
* Google Play Instant として何を提供するかの画面設計事例
* マルチモジュール構成への移行
* 動作確認・テスト方法
* ハマった点 などなど
・Google Play Instant への対応をしようと思っている方40minutes日本語アプリアーキテクチャ (Designing App Architecture)mataku
96
マルチモジュールと技術選定本セッションでは、マルチモジュールを前提にアプリを開発する場合に、Android特有の技術やアーキテクチャとの相性を考え、それぞれのメリット、デメリットについて解説します。新しくアプリを作る場合はもちろん、既存アプリをマルチモジュール化する場合や、マルチモジュール化したあとのリファクタリングなどにも活用できる内容を目指します。

▼以下のような内容を予定
・マルチモジュールとは
・マルチモジュールの事例
・Androidにおけるモジュールの種類
・アーキテクチャと相性
・DIフレームワークと相性
・ビューバインディングと相性
・画面遷移はどうなる
・ProGuardはどうなる
・テストはどうなる
・その他TIPS等
・マルチモジュールでの開発に興味がある
・マルチモジュールでの開発をしたことがある
・マルチモジュールについての知識をより深めたい
・これからマルチモジュールで開発したい
・主流のアーキテクチャについてある程度の知識がある
40minutes日本語アプリアーキテクチャ (Designing App Architecture)m4kvn
97
GraphQL with Android; Giving REST a rest!The session is about how the developers can integrate GraphQL with android to make appropriate optimization in querying and consuming APIs, thereby increasing the efficiency and speed of the system.We are consuming REST APIs from day one of our development but as data queries are getting more complex with data growing larger, it is turning to be expensive with respect to time and computations. To overcome this problem, the session is intended to make the audience familiar with GraphQL and encourage them to use it, hence REST in peace and the rise of GraphQL. The audience will be walked through the basics of GraphQL, how to get set up with GraphQL on Android and how it works. Then a comparison of how they would typically go about making a REST request with making an API request with GraphQL would be there. Finally, throwing some light on how GraphQL optimizes in querying and consuming APIs, thereby increasing the efficiency and speed of the system would be an icing on the top of it.

So it would be good if the audience is familiar with the android framework, the REST architecture, and how APIs are consumed using it.
40minutesEnglishAndroidプラットフォーム (Android Platforms)Lavanya Gaur
98
KotlinではじめるGradle Plugin発表内容
- プラグインの開発環境について
- デモプロジェクトの作成
- KotlinでHelloworldの実装
- 動作確認とデバック方法の説明
- リソースファイルの読み込みや成果物の出力方法について
- その他よく使うGradleAPIの紹介
- Pluginの公開方法について
- (時間があったら Android Gradle Pluginの実装の話を入れます)

話せないこと
- build.gradle.kts についてのTips

GradlePluginの作り方は情報が断片的であったり、ニッチな情報の多くがGroovyで説明されていたり、とっつきにくい印象を持たれやすいと思います。本セッションでは2020年らしくGradle Pluginの体系的な情報をKotlinを使ってご紹介します。
- 初心者から中級者まで

Gradleを知っていてbuild.gradleを多少なりとも編集されたことがあれば把握できると思います。
40minutes日本語Kotlinkazy(Kazuki Yoshida)
99
魅せるAndroidのアニメーションについてAndroidアプリケーションを作成する上で、ユーザーのアクションに応じてUIが変更された時に遷移のアニメーションなど
ユーザーにアクションに関するフィードバックを提供しUIを指南するためにアニメーションの実装は重要な役割を担っています。
しかし、Androidのアニメーションとひと言で言っても数多くのフレームワークがあり、実装が難しく感じることもあると思います。

このセッションでは、Android Developersのドキュメントに明記されている「Animations and Transitions」の内容を振り返りながら
実際のアニメーションの動きやコードの書き方、プロジェクトで適用しているアニメーションの実装方法等についてサンプルコードと実際にリリースされているアプリのコードを交えつつ解説します。
またアニメーションをプロジェクトとして実装する際にiOS/Android間での実装の認識合わせや、アニメーションを考えてもらっているデザイナーとのコミュニケーションについても紹介します。

アジェンダ:(予定)
・Androidのアニメーションについて
・「Animations and Transitions」の内容を振り返る
・実装方法について
・実業務でアニメーションを実装する上での留意点
・iOS/Android間でアニメーションの認識を合わせる
・デザイナーとのコミュニケーションについて
・まとめ
・Androidのアニメーション実装について実装経験がある方
・これからアニメーション実装を頑張ろうと思っている方
・Androidアプリの実装経験がある方
40minutes日本語UI・UX・デザイン(UI・UX・Design)thrasher
100
Practical WorkManager[issues]
Background tasks are one of the hardest implementations for Android Developers.
so Why is it so difficult in Android?

1. Many background related classes (AlarmManager, JobScheduler, WorkManager, ForegroundService)

2. Background process limitations(OS dependencies)

Especially for non-UI related tasks such as scheduling tasks and async tasks, the complexity is more. so I'll talk about background tasks under practical conditions.

[Topics]
・Basics of background tasks
 ・AlarmManager, JobScheduler, WorkManager, ForegroundService
・Visualize Inside WorkManager
 ・How WorkManager Constraints are stored in database.
 ・Migration of WorkManager related classes
・How to keep processes alive and executing tasks in efficient ways.
 ・Resident Services with ForegroundService and WorkManager
・DI with WorkManager
 ・How to implement Koin or Dagger2 with WorkManager
・Beginners who are not good at background tasks
・Beginners and Intermediates who have never used WorkManager in PRODUCTION
40minutesEnglishAndroid FrameworkとJetpack (Android Framework and Jetpack)neonankiti
Loading...