ABCDEFGHIJKLMNOPQRSTUVWXYZ
1
Session titleDescription受講対象者 / Intended AudienceSession formatLanguageカテゴリ / Categoryスピーカー / Speakers
2
Android アプリケーションアーキテクチャの求め方近年の Android アプリ開発では何らかのアーキテクチャパターンを採用することが主流になっていると思います。どのパターンを採用するのが最適かといった話題は下火になっていましたが、Jetpack Compose の登場でどんなアーキテクチャパターンが良いのかという声も上がっています。

そこで Android アプリ開発におけるアーキテクチャの求め方を追求することで、最適なアーキテクチャの導出を試みます。





アーキテクチャが気になる方25minutes日本語アプリアーキテクチャ (Designing App Architecture)@wada811
3
2021年 Androidアプリ開発はじめるぞ💪Android開発の現状は日々変化し続けています。
OS、デザイン、開発ツール、言語、ライブラリ、テスト、設計など日々小さくても様々な変更があり、色んな情報が飛び交います。
「Androidアプリ開発やってみたけど何から始めたらいいのかわからない」という経験をした方もいるかと思います。

本セッションでは、Androidアプリ開発を始めてみたい!という方をメインターゲットに、Android開発を始めるなら何からはじめたらいいのか、継続的に学ぶために何をしたらいいのかなどを話します。
昔はAndroidアプリ開発やってたけど...今どうやって開発するのがいいのかわからない!という方向けにも、Androidアプリ開発に再入門するきっかけになればと思います。
※話す内容が幅広いジャンルを扱う可能性があるため、具体的な実装やコードは少なめになる予定です

具体的には以下のような項目についてお話する予定です。
・ 2021年 どのようにAndroidアプリ開発の基礎を学ぶか
・ 挫折しないAndroidアプリ開発の学び方
・ 新しい情報をどのようにキャッチアップしていくか
・ 開発に役に立つ情報はどこで手に入れるか
・ Android開発の今とこれから
Androidアプリ開発をまだやったことない or はじめたばかりの人
Androidアプリ開発の今を知りたい人
25minutes日本語その他 (Other)Shinobu Okano
4
熱を帯びるWear OS今後最もアツくなる予定のWear OSにおいて全く推奨されないアプリ開発の道を探求しましょう。

在宅勤務の広がりと共に外出の機会が減り、Wear OS端末を身に付ける時間も減りました(個人的に)。何なら充電しっ放しで装着しない日すらあります。もうバッテリー持ちの良さを自慢する時代は終わりました。モノ余りの時代にはむしろ消費に貢献することを考えるべきです。

ウェアラブル端末ということで、Android デベロッパー ガイドにはバッテリーを節約する最適化の手法が紹介されています。全くもって余計なお世話です。しかし、その逆をなぞればバッテリーをモリモリ消費して端末はアツアツになるはずです。如何にしてアツアツを目指せるのかを一緒に考えましょう。

話そうな内容:消費電力、描画、アニメーション、アンビエントモード、センサー、ネットワークアクセス
- Wear OSに興味がある方
- Android EngineerだけどメインのWearableは結局Apple WatchとかFitbitとか使っちゃってWear OSに1ミリも興味が無い方
25minutes日本語Androidプラットフォーム (Android Platform)Yudetaro
5
規模が大きくなり始めたチームでどうAndroidアプリを開発していくかプロダクトを成長させるためにはチームとして組織的に開発を行いより多くの施策や機能の実装と検証を重ね改善していく必要があります。
 チームはメンバーの増加や個々人のスキルアップにより成長していきますが、その中で多くの課題に直面します。私の所属するチームでも数年で数名から10名規模にまでチームメンバーが増え、その過程で次のような課題に直面してきました。

- 仕様の策定・調整の方法
- タスクの分割とアサイン
- 開発の進め方の認識統一
- コードレビューの体制と品質管理
- スキルアップのサポート
- 社内他チームとの情報共有
- 採用活動

本セッションでは、大規模チームでの話はしませんが、数名から10名規模のチームへと成長する中で直面した課題とその解決のために試行錯誤した内容についてご紹介するつもりです。
・チームの規模が大きくなり始めて他社の事例が知りたい方
・中規模なチームでどのように開発しているか知りたい方
25minutes日本語開発体制 (Development Process)Horie1024
6
AndroidのKotlin Coroutinesの登場からrepeatOnLifecycleまでを流れるように説明したいみなさんは、AndroidのUIの関連の状態管理や非同期処理について、CoroutiensのrepeatOnLifecycleまでそのメリット、デメリットまで含めて追えていますか?

以下のQiitaではAndroidのライフサイクルの基礎からKotlin Coroutinesでのsuspend functionによる処理までは紹介しました。
https://qiita.com/takahirom/items/3f012d46e15a1666fa33

しかし、現在はKotlin Coroutines Flow、StateFlow、今はさらにlaunchWhenStarted、repeatOnLifecycleが登場して、少し混乱しているのではないでしょうか?

ここまでの流れをまとめて紹介していきたいです。
ViewModel、LiveDataぐらいはわかるが、StateFlow辺りから少し混乱している方25minutes日本語Jetpacktakahirom
7
スタートアップにおける技術選定と開発運用会社、事業で新しいソフトウェアが必要となった際、皆さんはどのように技術選定をしていますか?

また、選んだ技術を駆使し、利用者に価値を生み続けるためにどのような開発体制、運用を行っていますか?

本セッションでは上記の課題に悩む方々に以下の内容を話します。

・なぜFlutterを選んだのか?
・事業拡大へのROIとは?
・技術の制約を考える(ネイティブアプリ、Web,
クロスプラットフォームアプリ)
・技術選定と採用コスト
・継続的デリバリーのためのチーム体制/運用

本セッションでは、外食産業におけるデスクレスSaaSを具体例として、Flutterを選択した判断基準について話します。
技術選定や運用に悩む全ての人が対象です。25minutes日本語開発体制 (Development Process)neonankiti
8
Androidエンジニアが1人という不安と向き合う Androidエンジニア不足が叫ばれる昨今、1つのAndroidアプリに対して1人のエンジニアという状況が増えてきているように感じています。このような状況下では、スキル面・キャアリア面での不安を持つ方も多いのではないでしょうか。私もそうでした。私のAndroidエンジニアキャリアもほとんどがAndroidエンジニアが1人での開発を経験しています。
 本セッションでは、私の経験を踏まえ、どのようにAndroidエンジニアとしての技術を学び、どのように不安と向き合っているのかを紹介します。

■以下のような内容に触れる予定です
・Androidエンジニアとしての技術の学び方
 ・キャッチアップの方法
 ・優れたソースコードを読む
・不安と向き合うために
 ・スコープを広げてソフトウェア開発を学ぶ
 ・サービスへの理解を深めソフトウェア開発に還元する
 ・サービスの未来を見据えた設計/開発
 ・エンジニアリングでサービスを前にすすめる
・おひとりAndroidエンジニアの方
・ロールモデルが身近にいない方
・エンジニアとしてサービスに貢献したい方
25minutes日本語開発体制 (Development Process)rmakiyama
9
Inside Jetpack ComposeJetpack Composeってまるで魔法みたいですよね?

例えば、返り値がなくてもレイアウトされたり、勝手に差分更新がうまく動いたりしますよね?

Jetpack ComposeはUIを開発するAndroidのツールキットですが、その内部の仕組みは、Jetpack Compose for Webなどでも利用されています。
そのJetpack Composeの仕組みがどのように動いているのか、かんたんなサンプルコードを紹介し、状態を説明しながら、Composeへの理解を深めます。

- Jetpack Composeを使ってシンプルに木構造を処理するコードの紹介
- 上記がどのように動作するのか?Applier、ComposeNodeの紹介
- 上記のコードをCompiler Pluginはどのようにコードを変更するのか?差分更新の仕組みの紹介
- 木構造が変化する時、どのようなアルゴリズムで実際動くのか?
Jetpack Composeの基本的なことは何となく分かるけど、もっと中身を知りたい方向け25minutes日本語Jetpacktakahirom
10
5年運用されているアプリ会社に1人目のAndroidエンジニアとして飛び込んでみた結果私が今所属してる株式会社mikanのAndroidアプリはリリースされてから5年目に突入しました。今までフルスタックで頑張っていた代表がなんとかの気持ちで運用していたのを私が昨年度初めて1人目の専任Androidエンジニアとして入社してから、約8ヶ月が経ちました。この期間でのデザインを刷新するリデザインPJのABテストを始め、現在進行形のDB刷新PJ(localのRealmからFirestoreへの移行)などを通じて、モダンなAndroidアプリ移行計画を着々と進めている最中です。

初めはButterknifeがメインで使われ、Javaが約8割を占めている状態、設計はほぼない、AAC, DIなども使われておらず等々の状態からスタートし、Kotlin化約7割, ViewBindingの導入, Butterknife撲滅運動(進行形), MVVMの導入, Dagger Hilt導入, AAC導入, Groupie導入, Compose導入, Coroutines flow導入...etc.をやってきました。

5年間運用されているものの、なんとかやっているという状態に1人目で入社してから考えていたこと、どういう風に進めてきたか、つらみ等々のリアルをざっくばらんに語って、誰かの助けになれば良いかなと思ってます。

+で現在進行系のDB刷新PJでは、今流行のJetpack Composeを使って一部の対象画面をComposeに刷新していく動きをしています。現時点では語れる部分はないですが、当日までに刷新されてくる画面が出てくるので、その辺りも進捗次第ですが語れるといいなと思います。
これからスタートアップを始め、1人目のAndroidエンジニアとして入社してやっていきたい方、既に1人で頑張って運用してる方、長いこと運用していて使用技術などをモダンにしていきたいけど、どうやって進めようと考えてる方25minutes日本語その他 (Other)Gumio
11
APIの設計・開発をチームでどう進めるかコンシューマー向けのアプリやサービスを作るには多くの場合、データの取得・更新のためにAPIサーバーを立てることになると思います。
そして開発を続けていくうちにアプリの機能は増え、画面も増え、それに従ってAPIも増えていきます。
さらに数が増えるだけではなく、デザインの変更などに伴って既存のAPIに改修を入れることもあります。
このセッションではこうした完成することのないサービス開発でのAPI設計で私が気をつけていることや開発する際の具体的なフローなど、ここ5年アプリ開発を続けてきた上での知見をまとめ、共有します。

内容
- APIの仕様策定で気をつけていること
- WebとアプリでのAPIの変更への温度感の違い
- バックエンドチームとアプリチームをつなぐSwaggerのこと
- 古いAPIを廃止するために必要ないろいろなこと
- まだGraphQLを選択していない理由
- API設計や開発について他のチームの話を聞いてみたい方
- アプリのAPIの継続開発についての話を聞きたい方
25minutes日本語開発体制 (Development Process)六々 (@496_)
12
ZOZOTOWN Androidアプリチームにおける新技術導入のための取り組み新技術の導入は開発速度向上を目指す上で重要です。
開発効率の向上はもちろんのこと、情報発信につなげることで採用につなげたり、メンバーのモチベーション向上にもつながります。
多くのチームがこの取り組みを強化することでAndroid業界全体の活性化につながるのはではないかと考えたのでZOZOTOWN Androidアプリチームが新技術導入のために行っていることを紹介したいと思います。

アジェンダ(予定)
・Google Codelabsの活用
・課題解決への活用を意識
・情報発信につなげるための体制
・技術的チャレンジに課題を感じている
・他チームの開発体制に興味がある
25minutes日本語開発体制 (Development Process)yymsdk
13
COCOA、接触確認APIバージョンアップへの道開発の体制や開発プロセスについてのセッションです。

接触確認アプリ「COCOA」は、このプロポーザルを書いている7月末時点でLegacy V1モードのみの対応になっています。

接触確認APIの新しいバージョン「ExposureWindow mode」にCOCOAを対応するにあたっての課題。課題を解決するために講じた様々な策と、成功と(場合によっては)失敗について発表する予定です。
Androidアプリ開発について基本的な知識があること。iOS, マルチプラットホームフレームワークについて経験があれば良いが、必須ではない。

その他、公共系のアプリ・システム開発に興味がある人。
25minutes日本語開発体制 (Development Process)keiji_ariyama
14
detektのルールぜんぶ読む静的解析[せいてきかいせき]
意味: コードを実行せずに解析すること

プログラマーウホーイ曰く
「未経験の言語を最も効率よく学ぶ方法は、静的解析ツールを導入することである」

---

みなさんは静的解析ツールを導入していますか?
導入している人は、どのような目的で使っていますか?

「コードを自動できれいにするため」
△間違いではありませんが、毎回自動で修正されると、いつまで経っても正しい文法を覚えません。
(不要なスペースの削除など、自動で行ったほうが効率いいこともあります)

「その言語の文法を覚えるため」
◎静的解析ツールに怒られることで、その言語の正しい文法が強制的に身につきます。

未経験の言語を扱う際にまず行うことは、静的解析ツールの導入、および使い方とルールを覚えることだと私は考えています。
もっというと、導入しなくてもルールを読み込むだけでその言語の勉強になります。

本トークではKotlinの静的解析ツールである「detekt」のルールを25分間ですべて紹介します。

まだ静的解析ツールを導入していない人も、この機会に導入してルールを読み込み、プログラミング言語を効率よくキャッチアップしましょう!
・Kotlinでdetektを導入していない
・Kotlinの文法をキャッチアップしきれていない
25minutes日本語Kotlinuhooi
15
How Flutter works under the hoodFlutter is an open-source UI software development kit created by Google and since the day that it is announced, it brought a lot of excitement to the mobile app development world. By using Flutter Developers can deploy their apps to Android, iOS, Desktop, and Web.

Besides being multi-platform, Flutter also is known for its great performance. But what makes Flutter different special is still a mystery to most of the people.

In this talk, we are going to learn about how Flutter renders graphics, how it builds its widget trees and dig deep into widgets, elements, and render objects.
Everyone25minutesEnglishクロスプラットフォーム (Cross-platform Development)Salih Guler
16
スコープ関数の使いどころを知ろうalso, apply, let, run, with。
これらの関数をまとめて「スコープ関数(Scope-Function)」といいます。

スコープ関数がないSwiftをメインで書いている私にとって、Kotlinのスコープ関数は読みづらいと感じることが多いです。
しかし言語仕様として存在するということは、正しく使えば便利なはずです。

本セッションではKotlinの公式ドキュメントを参考に、スコープ関数の使いどころを紹介します。

用法用量を守り、みんなで正しくスコープ関数を使いましょう!
・Kotlinのスコープ関数の仕様を一通り理解している

・スコープ関数の使いどころがイマイチわからない
・スコープ関数をカッコよく使いこなしたい
25minutes日本語Kotlinuhooi
17
テストコードの正しい書き方についてテストコードの作成が難しい理由は、1) 何をテストすればいいのかが分かりずらい、2) 一度テストコードを書いてもある程度時間が経過するとテストが壊れてしまいメンテの工数がかかる場合が多い為だと思います。
単体テストという用語が存在する前からテストコードを作成し続けているGoogleのエンジニア達はその問題をどういう方法で解決しているかをAndroid開発の文脈で、下記のように公有したいと思います。

- なぜテストを書かなければならないのか
- Googleのテスト原則
- Unchaning Test: テストコード作成の最も重要な大原則
- Mock vs real code: 依存関係のテストの手法
- Testing best practice: 9つのテストコードの原則
- これからAndroidプロジェクトでテストコードを書きたい開発者
- テストコード作成・メンテの過程での辛い思い出を持っている方
- Android開発にテストなんて要らないと信じている方
25minutes日本語保守・運用・テスト (Maintenance, Operations and Testing)Saryong Kang
18
Effective App Architecture and State Management in FlutterFrom the day that Flutter is announced, a lot of companies decided to use it in their production environments. Most of these companies have used it for projects from scratch and as we all know, deciding on an architecture for a brand new application is quite hard. Luckily, Flutter has a lot of great alternative approaches that can be used according to the suitable use-case.

In this talk, we are going to go over the Flutter's State Management options, how we can use them and last but not least we will learn how we can put all of this information to create the best architecture for our application.
Audience should have a basic understanding about Flutter25minutesEnglishクロスプラットフォーム (Cross-platform Development)Salih Guler
19
What's new in Android Studio ~Arctic Fox & Bumblebee~みなさん、Android Studioを使いこなしていますか?

このセッションでは2021年7月28日現在、Betaチャンネルで配布されているAndroid Studio Arctic Fox(2020.3.1)とCanaryとDevチャンネルのAndroid Studio Bumblebee(2021.1.1)の機能や改善点について学べます。
Stableリリースが迫った新しいAndroid Studioを確認し、これまでとの差分を把握して使いこなせるようになると共に、Android Gradle Plugin(AGP)やGradleを更新する際の要点を押さえます。既存の知識をアップデートするだけでなく、開発効率化の新機能を紹介していきます。さぁ最新の開発環境に備えましょう!

- 新しいバージョンルールとデザインツール、レイアウト検証機能
- 内蔵エミュレーターとマルチデバイスサポート
- インスペクターによる高効率デバッグ、コルーチンデバッガ
- 環境移行に伴うAGPバージョニング変更点(AGP 7.0/Gradle 7.x)と新機能の活用(コンパイル速度向上に寄与するものなど)

Android Studioはアプリ開発を支える土台であるため、更新タイミングには気を使う開発者も多いはずです。
しかしプロダクトのリリースを加速するためには生産性向上が不可欠ですし、より安定した開発環境が求められます。

セッションでは移行スケジュールの立案や、知らなかった機能を利用するきっかけが得られます。最新版を正しく理解し、生産性向上に取り組める内容を目指します。
* Android開発の初学者
* Android Studioの新機能をサッと知りたい人
* 雰囲気でAndroid Studioを更新してしまっている人
* チームで安定した開発を行いたい人
25minutes日本語開発ツール (Productivity and Tools)mhidaka
20
Compose for Web を使って Kotlin で DroidKaigi のサイトを構築した話DroidKaigi 2021 では Compose for Web を使って Kotlin で Web サイト(droidkaigi.jp)が作られています。Compose for Web は 2021年5月に Technology Preview が公開され、まだ正式版のリリースはされていません。しかし、Jetpack Compose と同じ書き方で Kotlin で Web アプリを書く事ができる、Android や Desktop といったマルチプラットフォームに対応できる、といった大きな可能性を秘めている技術だと考えています。

このセッションでは、Compose for Web の概要と、Compose for Web を使って DroidKaigi のサイトを作る上で得られた知見をお話します。以下の内容を含む予定です。

- Compose for Web とは?
- Compose for Web は一般的な Web アプリ開発と比べて何が違うのか?
- Jetpack Compose と Compose for Web の違い・注意すべき事
- Android のエンジニアが Compose for Web を使う際に知っておかなければならない事
- Compose for Web を使って Android アプリと Web アプリを同時に開発できるのか?
- 実際に DroidKaigi のサイトを構築した事で分かった知見や注意するべき事
- Web アプリ開発に興味のある Android エンジニア
- Web アプリの開発に携わっているエンジニア
- Jetpack Compose に将来性を感じている方
- DroidKaigi のサイト運営に興味のある方
25minutes日本語その他 (Other)Motoi Washida
21
アプリの継続開発で見据えるべき過去と未来のコードAndroidアプリやiOSアプリはアプリストアからユーザーの端末にインストールして使われます。
こうした配信の仕組み上、過去のコードによる生成物が常に世界のどこかに残ってしまいます。
そのためアプリ開発ではWeb開発よりもタイムスケールの大きなリリースやコードの寿命に注意を払う必要があります。
このセッションではビルドしたアプリがユーザーに届くまでの話や、APIの破壊的変更やローカルデータベースのスキーマ変更など、アプリ開発につきまとう寿命や、未来のためにそうした寿命とどう向き合うかについてまとめます。
また、こうした状況に出くわしたときアプリエンジニアはチーム内でどう対応するべきか、チームに何を知っておいてもらわないといけないのか、といったことにもフォーカスします。
内容はAndroidアプリに限らずiOSアプリとの比較についても紹介します。

内容
- リリースとは、寿命とは
- AndroidアプリやiOSアプリがユーザーに届くまで
- Google Play StoreとApp Storeでの段階的リリースという概念の違い
- APIのサポート
- マイグレーションのサポート
- OS/端末のサポート
- 開発言語のアップデートや変更
- アプリの内外を繋ぐAndroidManifest
- ユーザーへのアップデート訴求 (In-app Updates APIなど)
- アプリを継続開発している方・継続開発していく予定の方
- 継続開発中のアプリの開発をディレクションしている方・する予定の方
- AndroidアプリとiOSアプリでのアプリリリースの違いが知りたい方
25minutes日本語保守・運用・テスト (Maintenance, Operations and Testing)六々 (@496_)
22
Title : Let's Preview! Jetpack ComposeJetpack ComposeによるUIをAndroid Studioに組み込まれたPreview機能を使ってスムーズにクオリティ高く構築するプラクティスを紹介します。

Summary :
・Jetpack Composeを使ったUI構築の特徴
・Compose Previewの基本的な使い方
・Previewでデプロイなしに他端末対応をスムーズにする
・複雑なデータ・画面に対応したプレビューのプラクティス
・Previewを使いこなして堅牢なUIを構築する - テストとUI構築
・おまけ - Android Viewのプレビューとの対比
・Jetpack ComposeのUI構築をより効率的におこないたい人
・画面構築の時点で実際のデータに対応した堅牢なUIを作りたい人
・さまざまな端末、言語やDarkmodeなどの端末設定への対応をスムーズにしたい人
・Android ViewのXMLレイアウトプレビューがなくなって戸惑っている人
25minutes日本語Androidプラットフォーム (Android Platform)mochico
23
Kotlinで始めるドメイン駆動Android開発私の所属するチームではDDDでのAndroid開発を行なっています。
ドメインとはプログラムを適用する対象となる“領域”を表す言葉です。これをビジネスドメイン、ビジネスロジックと呼ぶこともあります。
この現実世界の「ある領域」をソフトウェアの世界にうつしとるための方法がドメイン駆動設計です。
ただ、初学者にとっては新しい概念や用語が多いため、皆さんの馴染み深いKotlinを使った実装例を踏まえて設計方法の説明します。

ドメイン駆動設計自体はドメインが隔離されている状態を保つ設計を行う方法であり、これにアーキテクチャの指定はありません。
MVC, MVP, MVVM, Flux、MVIなど、様々なUIアーキテクチャーがありますが、どれを利用する場合にもDDDの考え方を適用することができます。
中々取っ付きにくいと考えている人はこのタイミングで、DDDな考え方をインストールしてしまいましょう!
- ドメイン駆動設計概要
- ドメイン駆動設計構成要素
- 設計の進め方
- 実装方法
- アーキテクチャ別パターン
DDDについて知っているが、設計・実装に不安がある人、
アーキテクチャをこれから取り入れようと思っている人、
アーキテクチャに慣れてない人
25minutes日本語アプリアーキテクチャ (Designing App Architecture)Eitaro Yamatsuta
24
StorybookでUIコンポーネント開発を効率化しようAndroidアプリ開発には色々な作業が必要になりますが、その中でもUIコンポーネント開発は一定のウェイトを占めています。大規模なアプリになればなるほど1つのUIコンポーネントに様々なパターンが存在し、何度もビルドを繰り返してそれらが正しく動くことを確かめながら開発を進めるのは大変な作業です。その大変さゆえに、特定のパターンで表示が崩れたり、アプリがクラッシュしてしまったりといった問題が発生してしまいます。

Jetpack ComposeはAndroid Studio上で簡単にプレビューすることができますが、ViewはJetpack Composeのような柔軟なプレビュー機能は提供されていません。また、運用中のアプリなどの場合、すぐに全てをJetpack Composeに置き換えるのが難しいケースもあり、しばらくはViewとも付き合い続けていく必要があります。

そこで、本セッションでは、従来のViewを用いてUIコンポーネント開発を行うケースにて、Webフロントエンド開発の文脈で利用されているStorybookから着想を得て、ビルド待ちの時間を削減し、UIコンポーネントを網羅的に確認できるようにする手法を紹介します。

- Stroybookの概要
- 本セッションで取り上げる問題
- ビルド待ちの時間がUIコンポーネント開発のネックになる
- UIコンポーネントを網羅的に確認するのが難しい
- Storybookの実装方法
- Storybookの導入に際して必要になるモジュール分割の補足
- UIコンポーネント開発でビルド待ちの時間を短縮するためのモジュール分割手法
- Storybookを用いてUIコンポーネントを網羅的に確認する手法
- UIコンポーネント開発を効率化したいと考えている人25minutes日本語開発ツール (Productivity and Tools)yuyakaido
25
KMMなアプリ開発をiOSエンジニアと共に歩むためにAndroidとiOSのソースコードを共通化できるKMM (Kotlin Multiplatform Mobile)

Androidエンジニアとしてはチャレンジしてみたい領域ですが、iOSエンジニアの協力も不可欠です。
そこで、このセッションではKMMの入門〜iOSエンジニアとKMM開発を共に歩むために知っておくべきことを取り上げていきます。

- KMMとは・KMMな開発を始めるには
- Android開発と実はチョット違うKotlin Native!
- iOSエンジニアの心理的ハードルを下げるために取るべき選択
- すぐに使えるKotlin ⇄ Swift 用語集
KMMに興味のあるAndroidエンジニア
KMMに興味のあるiOSエンジニア
25minutes日本語クロスプラットフォーム (Cross-platform Development)watanave
26
Core Splashscreen を使ってみようSplash Screen APIがAndroid 12より使用されるようになり、既にスプラッシュ画面を実装している場合、12と12未満のOSとでスプラッシュの修正が必要になったりした方もいらっしゃるのではないでしょうか。私はそうでした。
このセッションでは先日発表されたCore Splashscreenを使用した対応方法の紹介をしたいと思います。時間がありましたらCore Splashscreenを用いない方法や、その対応中につまづいた点を紹介できればと思います。
Core Splashscreenを使ってみたい方
Android 12のSplashscreen API対応で悩んだ方
25minutes日本語Androidプラットフォーム (Android Platform)takathemax
27
KMMを利用して始めるモバイルアプリ開発これまで様々なクロスプラットフォーム開発フレームワークが登場してきました。
そんな中でUIはそれぞれのAndroid, iOSの標準的な手法を利用し、ビジネスロジックをKotlinで記述することで共通化する手段として登場したKMM(Kotlin Multiplatform Mobile)ですが、実際に利用していく中でどういったメリットデメリットが存在するのか、活用していく上でのTips等について新規アプリ(まだリリース前)を開発した経験からお話ししようと思います。
- KMMに興味のある人
- クロスプラットフォーム開発に興味のある人
25minutes日本語クロスプラットフォーム (Cross-platform Development)r_wada
28
★2.2のアプリがIn-App Review APIを導入して★4.2になるまであなたのアプリのストア評価はいくつですか?評価が低いまま放置していませんか?

ストア評価が低いことで、新しくアプリをインストールしようと思ったユーザーは「悪い評価が多いからダウンロードするのはやめよう」となってしまいますし、協業を検討していただいている企業の方にも「このサービスは大丈夫なのか?」と不信感を持たれてしまいます。

満足して使ってくれているユーザーはもっといるはずなのに、どうにも悪いレビューばかり増えて評価が下がっていきます。

弊社のアプリもリリース以来ずっと評価が低く★2.2になってしまいました。評価が低いのは悪い体験したユーザーが多くレビューを書いているからだと仮設を立て、どうしたら良い評価のレビューが増えるのかを考え、In-App Review APIを導入し、リリースから一ヶ月半で★4.2に上げることができました。

本セッションでは、ストア評価改善の中で得た知見をお話します。

お話しする内容(予定)
・なぜストア評価を上げたほうがいいのか
・ストア評価を上げるにはどうしたらいいか
・どのタイミングでレビュー訴求すると効果的か
・In-App Review APIの使い方、注意点
・ストア評価を社内に共有しサービス改善に繋げる
 ・Redashでストア評価を可視化する
 ・Slackにレビューコメントを通知し議論を巻き起こす
ストア評価が低いのをどうにかしたい人25minutes日本語その他 (Other)teshi04
29
Android アプリの質を保っていくために行っているチームでの取り組み弊社の Android チームの体制にはいくつか課題がありました。

- Android チーム以外のメンバーがリリース前の機能に対して、フィードバックできる機会が専用のチャンネルでアナウンスされたタイミングからリリースされるタイミングまでの間しかないため、満足にデバッグできない
- Android を普段使いしているメンバーがデバッグ版を触る機会があまりなく、Android ユーザー視点でのプロダクトへの指摘がやりにくい

こういった課題もあり、リリース後にバグや仕様に沿っていない実装になっていることに気づくことが多々ありました。
本セッションでは前述した課題を解消するために行っている取り組みについてご紹介します。同じ悩みを抱えているチームの参考になれば幸いです。

# アジェンダ(予定)
- チームの課題について
- 課題を解消するための取り組み
- sandbox アプリの誕生
- ぽちぽち会の実施
- リリース前レポートの活用
- 他にやりたいこと
モバイルアプリをチーム開発して運用している方25minutes日本語開発体制 (Development Process)bird_tummy
30
複数のAndroidアプリを同時にリリースしながらサービスグロースさせる方法私たちANDPADは2016年からサービスリリースをしてから約5年間サービス開発をしてきました。
私たちの会社では、ANDPADという1サービスに対して4つのアプリをリリースしてサービスをグロースさせてきました。
近年のAndroidアプリ開発ではMulti Module化をすることで、Androidアプリ内のソースコードの依存関係を疎結合化していると
思いますが、弊社ではMulti App化をベースに依存関係を疎結合にしながら開発するスタイルをとってきました。
Multi App化することによる成功/失敗の歴史と、今後どのようなアーキテクチャに変えていくかの未来の話を交えながら紹介していきたいと思います。
・今後拡大していくサービスのAndroid開発を1人で行っている方
・ソースコードを疎結合な単位で分割して複数人開発を円滑にする方法に興味がある方
・Multi App化されたサービスの改善、効率化に興味がある方
25minutes日本語保守・運用・テスト (Maintenance, Operations and Testing)daisuke
31
大規模チャットアプリをfirestore移行したときに必要なAndroid Tips私たちANDPADは2016年からサービスリリースをしてから約5年間サービス開発をしてきました。
サービスがマーケットフィットするかどうか不明確な状況下では初期リリースでは限られた制約の中で開発してきて、
グロースの段階でスケール仕組みに移行していくことはよく発生するのではないでしょうか?
私たちが開発しているチャットサービスもそのような状態になり、rails + RDS主体のサービスからfirestore主体のサービスへとアーキテクチャを移行しています。firestoreはandroidに特化したmobileのSDKも提供されており、アーキテクチャの移行に関してはAndroidの機能もフルに使いながら移行をおこなっています。
既存のアーキテクチャを生かしながら、firestoreを用いたAndroidのアプリへとどのように移行していくのか失敗談も含めて紹介していこうと思います。
・新規サービス開発に興味がある方
・firestoreを用いたアプリ開発にたずさわる方
・firestore Android SDKに興味がある方
・アーキテクチャ変更を計画している方
25minutes日本語その他 (Other)daisuke
32
Kotlin Coroutinesの例外処理について学ぶ2021年現在、Kotlin CoroutinesはAndroidアプリ開発の非同期処理におけるデファクトスタンダードとしての地位を築きつつあります。
Kotlin Coroutinesは詳細をあまり意識せずシンプルな記述で非同期処理を扱える反面、例外処理についてはKotlin Coroutinesに対するより深い理解が必要となります。
単純にtry-catchやrunCatchingを書くだけではCoroutineから投げられる例外を拾いきれず、思わぬクラッシュに遭遇した方も少なくないのではないでしょうか。

本セッションは、そのような方々に向けて、Kotlin Coroutinesの例外処理に対する理解を深めていただくことを目的としています。
まず始めに、例外処理の理解に必要となるKotlin Coroutinesの基礎的な部分(Job、CoroutineContextなど)について簡単に説明します。
その後、具体的な実装ケースを題材として、例外の伝播を中心に例外処理の考え方について説明します。
具体的な実装ケースについてはクイズ形式で出題し、聴講者のみなさまにも一緒に考えていただけるような形を予定しています。

※冒頭のKotlin Coroutinesの基礎的な部分については、他のセッションの採択状況によっては一部を割愛させていただく可能性もあります。
・Kotlin Coroutinesをこれから使う予定の方
・Kotlin Coroutinesを雰囲気で使っている方
・Kotlin Coroutinesの例外処理について悩んでいる方
25minutes日本語Kotlinkenken
33
2016年リリースのアプリと振り返るAndroidの進化私たちANDPADは2016年3月からサービスリリースをしてから約5年間サービス開発をしてきました。5年ほど経つとモバイルアプリに求められるアーキテクチャもMVPからClean Architectureまで、ドラスティックに様変わりしたのではないでしょうか。
AndroidのUIツールに関しても、ButterKnife全盛の時代からJetpack Composeの時代へと移り変わっていきました。この時代の移り変わりは、時を経ると負債と呼ばれる開発者を苦しめる素を産み出していきました。5年間の開発の歴史をAndroidとともに振り返りながら、過去の経験を振り返りながら今後のAndorid開発で注意するポイントなどを紹介していこうと思います。
・新規でサービスを立ち上げる方
・Androidの開発の歴史に興味がある方
・Android開発の過去を振り返りより良い開発体験作りに興味がある方
25minutes日本語Android Frameworkdaisuke
34
秩序のない状態のアプリの開発に入ってからやったことスタートアップに入社して1年半ちょっとで行ったコードにもルールにも秩序のないアプリの開発状況から少しづく秩序を手に入れようと行ったことを発表します。
スタートアップではよくあることだと思いますが、開発優先で(弊社の場合技術の未熟な開発者が)開発されたことで負債がかなり溜まっている状態でした。
そのあと、今までどうやってルールを作り、開発体験の向上のためにどういう施策を行ったか/行おうとしているかを共有します。
同じく、スタートアップなどで開発に関する状況がカオスな企業で状況を良くしたいがなにをすべきかわからない人25minutes日本語保守・運用・テスト (Maintenance, Operations and Testing)You Kukita
35
新しいAndroid for Cars App LibraryでAndroid Autoに対応しようAndroid Autoは、Android端末のコンテンツやアプリを自動車内の車載器ディスプレイで表示・操作するための仕組みです。これまでのAndroid Auto SDKでは、音楽メディアの再生やメッセージのやりとりなど、限られた機能でしかAndroid Autoを利用できませんでしたが、2020年10月に新たに公開されたAndroid for Car App Libraryにより、地図を利用した、以下のような機能もAndroid Autoを使って実装できるようになりました。

• 電気自動車の充電スポットや、駐車場など、自動車に関係する地点の検索
• 目的地への経路のナビゲーション

本セッションでは、この新しいSDKを使って、Android Autoを利用する方法を紹介します。地点の検索機能を実装することを想定して、具体的なコードを交えながら実装方法を説明します。セッションをご覧いただければ、きっと、すぐにAndroid Auto機能の開発を始められるようになるはずです。

• Android for Car App Libraryの設計やコンセプト
• Libraryがどのような仕組みで、アプリが指定した画面内容を車載器ディスプレイに表示しているのか
• Libraryの組み込み方、セットアップ
• Android Auto画面の実装方法
• SDKの機能の制約
• Android Autoの機能をシミュレーターや実機でテストする方法
• Android Autoを使ったアプリ開発に興味がある方
• 開発しているアプリに、地点を検索したり表示したりする機能がある方
25minutes日本語Androidプラットフォーム (Android Platform)kafumi
36
マイクロアプリを活用した爆速開発術現在 Android アプリ開発では開発効率かのため、マルチモジュールでの開発が一般的になっています。

マルチモジュール構造のプロジェクトではコード変更時のビルド時間への影響を最小限に抑えることができるため、モノリシックなプロジェクトと比べて差分ビルド時間が短くなります。
しかし適切にモジュール分割されたアプリでも、一部のモジュールに変更を入れた場合、アプリ全体をビルドすると時間がかかってしまう場合もあります。

このトークではマルチモジュールの仕組みに沿って、機能ごとに必要最低限の依存を持つアプリとしてビルド可能なマイクロアプリを構成し、開発時の動作確認時間を最小化する取り組みを紹介します。

・マルチモジュール構造の利点
・クックパッドアプリのモジュール構成
・マイクロアプリの仕組み
・DI(Dagger Hilt) の構造
・マルチモジュールの構成に興味のある方
・マルチモジュール構成のアプリ素早い動作確認を実現したい方
25minutes日本語開発ツール (Productivity and Tools)ksfee
37
仕組みから改めて理解するKotlin Coroutines非同期プログラミングの手法として2018年10月にKotlin 1.3で正式リリースされたKotlin Coroutinesは、Lifecycle, LiveData, Room, ViewModel, WorkManagerなど様々なAndoird KTXライブラリでもサポートされ、Androidアプリ開発で広く使われるようになりました。皆さんも、いろいろな程度でKotlin Coroutinesを使ったコードを見たり、利用したりしていると思いますが、では、Kotlin Coroutinesの機能を実現する上で、KotlinコンパイラやKotlin Standard Libraryがどのような役割を果たしているか、ご存知でしょうか。また、お決まりのように依存関係に追加しているkotlinx.coroutinesライブラリが何のために存在しているのか、このライブラリがないと何ができなくなるのか、気になったことはないでしょうか。

本セッションでは、Kotlin Coroutinesがどのような仕組みで成り立っているのかを紹介し、上記の疑問にお答えします。まず、KotlinコンパイラやKotlin Standard Libraryによって実現されているKotlin Coroutinesのコンセプトや実装を説明し、kotlinx.coroutinesがない状態で何ができるのかを理解します。その後、kotlinx.coroutinesライブラリが、Kotlin Coroutinesを実用的に使うためにどのような機能やサポートを提供しているのか、それらがどのように設計・実装されているかを紹介します。

※ 実装の詳細に触れる場合は、JVM向けの実装を想定して説明します
※ 基礎的な仕組みを理解することがまず重要だと思うので、時間の都合により、KotlinコンパイラやKotlin Standard Libraryの説明を優先して、後半のkotlinx.coroutinesの説明を簡略化する可能性があります
• Kotlin Coroutinesの仕組みに興味がある方
• Kotlin Coroutinesを利用していて、理解を深めたいと思っている方
※ Kotlin Coroutinesを利用したことがなくても理解できるように説明します
25minutes日本語Kotlinkafumi
38
巨大なプロダクトにおける技術負債と戦った成功と失敗の軌跡技術負債、それは古いプロダクトであればあるほど、巨大なプロダクトであればあるほど頭を悩ませる問題だ。このセッションではかれこれ数年以上運用されているアプリに対し、私がチームの技術責任者として行った技術負債返済の成功と失敗について話そうと思う。

具体的には、
・一人で突っ走って完璧を追い求めても誰も付いて来れなかった話
・少人数で広く浅く進めていったら無限に終わらなかった話
・当たり前になってた無駄なことを自動化したら一石二鳥になった話
・メンバー全員でアーキテクチャを決めてルールを整備したらうまく回り始めた話
・技術負債と戦う上で大切なこと

などを話そうと思う。
・これから技術負債の返済を考えている人
・チームの技術責任者として技術負債とどう戦っていくかを考えている人
25minutes日本語開発体制 (Development Process)Keisuke Kiuchi
39
KMMを実践投入する## KMMを実践投入するには

Kotlin Multiplatform Mobile (KMM) は、共通のKotlinのコードベースで書かれたビジネスロジックをiOSとAndroidへ提供するクロスプラットフォーム技術です。
KMMの特徴としては、UIを共通化せずビジネスロジックのみを共通化することに主眼が置かれていることが大きな特徴です。
共通化されたコードは、各プラットフォーム上でネイティブに動作するため少ないオーバーヘッドで動作します。
KMMを導入することで、共通のビジネスロジックとプラットフォームにネイティブなUI/UXの両立が期待できます。

我々のプロダクトでは、2020年から既存プロダクトへKMMを投入し徐々にリプレースを進めています。
このセッションでは、プロダクトへ実戦投入するまでの道のり、KMMを設計する上で考慮すべき点、得られた知見や実際に感じたPros/Consなどについて話す予定です。
このセッションがKMM導入への礎になれば幸いです。

Keywords:
- KMM
- クロスプラットフォーム
- 設計
- KMMに興味がある方
- クロスプラットフォーム技術に興味がある方
- iOS/Androidでのコード共通化に課題感がある方
25minutes日本語クロスプラットフォーム (Cross-platform Development)Masatoshi Kubode
40
タクシーアプリ「GO」における Android 12 対応の詳細DroidKaigi 開催時にはリリースされている予定の Android 12 ですが、皆さんは対応が終わっていますでしょうか?

Android 12 対応と言っても具体的には「端末のOSが 12 になった時点で対応が終わっていないといけないもの」と「アプリの targetSdkVersion を 31 に上げるタイミングで対応が必要なもの」の 2 種類があります。

提供中の「GO」でも様々な点でアプリへの影響がありました。
一例を挙げると、車内にあるタブレットと接続することでアプリでの支払いを完了できる機能を提供しており、接続の手段として「二次元バーコードを読み取る」もしくは「音声トリガーを読み取る」必要があるのですが、これらはいずれも Android 12 から強化されるセキュリティ/プライバシー対策の一部であるマイクやカメラへのアクセスが必要でした。

上記のような課題に対して「GO」ではどのように Android 12 対応を進めていったかの具体的な方法を紹介します。


トピック(予定)
# 全般
- Android 12 に対応するために確認すべきこと
- 必要か必要じゃないかをどのように判断したか

# 端末のOSが 12 になった時点で対応が終わっていないといけないもの
- Splash Screen
- カメラ/マイクのアクセス切り替え

# アプリの targetSdkVersion を 31 に上げるタイミングで対応が必要なもの
- おおよその位置情報
- Foreground Service or WorkManager
Android 12 でも正常にアプリを動かしたい方25minutes日本語Androidプラットフォーム (Android Platform)sobachanko
41
Android のデファクトスタンダードにインスパイアされて作られたライブラリで作る Flutter アプリOkHttp や Retrofit など、Android でデファクトスタンダードになっているようなライブラリは多数存在しますが、それらにインスパイアされて作られた Dart のライブラリも多数存在します。
本セッションではそのライブラリ群を使って小規模のアプリを作っていき、Flutter でのアプリの作り方を紹介します。
Android エンジニアが Flutter でアプリを作るきっかけになると嬉しいです。

# アジェンダ(予定)
- HTTP クライアントについて: dio + Retrofit
- ローカルでのデータ保存について: floor, SharedPreferences
- テストについて: mockito
Flutter を触りはじめた人
一通り動く Flutter アプリの作り方が知りたい人
25minutes日本語クロスプラットフォーム (Cross-platform Development)bird_tummy
42
Wear OS 3.0向けアプリ開発を始めようWear OS 3.0時代のスマートウォッチアプリ開発を始めましょう。

このセッションでは、Google I/O 2021で発表された、約3年ぶりのメジャーアップデートとなるWear OS 3.0をターゲットに、最新の開発環境のセットアップやデバッグ手法、新しいJetpack Tilesライブラリを使ったカスタムタイルの実装や、Ongoing Activityを使用したタスクの切り替えといったWear OS 3.0の新しい概念を簡潔に紹介します。

この25分間のセッションを見た方が、Wear OS 3.0向けアプリの開発を難なく始められるようになるのがゴールです。

(Wear OS 3.0は2021年7月時点においてまだDeveloper Previewのため、状況次第では内容が一部変更になる可能性があります)
Wear OS向けアプリ開発にちょっと興味があるけどまだ手を伸ばせてない方25minutes日本語Androidプラットフォーム (Android Platform)tnj
43
Bubblesを使ったチャットアプリを作ろうBubblesはAndroid 11で追加された機能です。
Bubblesを使えば、よりインタラクティブなチャット機能をユーザーに提供できます。

Bubbluesを使うためにはショートカット、通知、通知の会話やユーザーから許可を取るためのチュートリアルの表示など様々な要素が登場します。
本セッションではそもそもBubblesとは何なのか、そしてBubblesを使ったチャットアプリを作るには何を行えばいいかについて解説します。
とにかく新しい機能が好きな人
他のアプリが使っていないAndroidの機能を使って自分のアプリを目立たせたい人
通常の通知では満足できない通知マニア
25minutes日本語その他 (Other)napplecomputer
44
これから始める Kotlin Coroutines の導入 2021Kotlin Coroutines が正式リリースされて 3 年が過ぎ、もはや私たちの Android アプリ開発には欠かせないものとなりました。
また、今年リリースされる Jetpack Compose でも積極的に Kotlin Coroutines が導入されています。
コルーチンは RxJava のようなストリームやコールバック方式と比べて非同期的な処理を直感的に記述でき、これまで RxJava を使っていたようなユースケースをある程度置き換えられるようになっています。

私はこの 3 年で Kotlin Coroutines を複数のアプリに導入し既存のパラダイムの置き換えを進めてきました。
また、RxJava を使わず Kotlin Coroutines のみを使って新規アプリの開発も行ってきました。
Kotlin Coroutines の導入を行ったことで Android アプリ開発が楽になりましたが、最初の頃は大変に感じたこともありました。
恐らく Kotlin Coroutines が難しく感じて導入をためらっている方もいるでしょう。

このセッションでは、既存の Android アプリに Kotlin Coroutines を導入したことによって Android アプリ開発がどう変わったか、
Kotlin Coroutines の導入を行ったことで困ったことをどう解決したかなどを紹介します。
皆様の Kotlin Coroutines の導入の参考になれば幸いです。


- Kotlin Coroutines を導入することで変わること
- 既存のパラダイムから Kotlin Coroutines に移行する
- 既存のパラダイムと Kotlin Coroutines を組み合わせる
- Kotlin Coroutines と View 層との組み合わせ
- Kotlin Coroutines を ViewModel で活用する
- Kotlin Coroutines とテスト
- Kotlin Coroutines を使う上での TIPS
- 既存のアプリで RxJava を利用していて Kotlin Coroutines の導入を検討している人
- Kotlin Coroutines を導入してみたがうまく活用できていなくて困っている人
- Kotlin Coroutines を使ったテストに困っている人
25minutes日本語Kotlintakuji31
45
クロスデバイス環境でのユーザ体験を良くする処方箋Androidエコシステムはスマートフォンやタブレットだけのものではありません。スマートウォッチなどのWearOS、TVデバイスなどのAndroidTV、自動車向けのAndroidAutoやAutomotiveOSなど、さまざまなデバイス上で利用されています。

近年、急速な普及が感じられるデバイスとして、AndroidTVが挙げられます。GooglePlayで配信されている豊富なアプリケーションを、大画面で利用することができます。

スマートフォンやタブレット向けのアプリケーションとは別に、AndroidTV向けにUIや機能を最適化したアプリケーションを同時に配信しているデベロッパーも多く存在します。しかし、スマートフォン向けアプリとTV向けアプリの間でシームレスに連携させることは開発者にとってハードルの高いものでした。

本セッションでは、2020年秋に発表されたCastConnectライブラリを活用して、スマートフォン向けアプリとTV向けアプリのクロスデバイス環境におけるマルチメディアコンテンツの視聴体験を良くする方法について解説します。
- AndroidTVアプリケーションの開発に関わっている/興味がある方
- クロスデバイス環境でのユーザ体験の向上に興味がある方
25minutes日本語Androidプラットフォーム (Android Platform)satsukies
46
Kiosk アプリにおけるログとの付き合い方Kiosk アプリにおけるログは、一般のアプリと少し違ったタイプのログが必要になってくることがあります。
例えば、障害発生時の特定端末にてどのタイミングでなんの操作が発生しどんなエラーが出たかや、特定端末が今なんの画面を開いているか、ディスク容量やメモリ容量、バッテリー残量などの情報と様々です。
また、通常のアプリと同様クラッシュ時のログも必要になってきます。

クラッシュ時のログは Firebase Crashlytics で良いとしても、その他のログやリアルタイムに知りたいログは他の手段を用いて収集する必要があります。
さらに、一口にログといっても様々なログがあり、それぞれのログの性質に合わせたログ収集手段を取る必要があることがあります。

本セッションでは、実例を元に Kiosk アプリにおいてどういったログが必要でどういった手段で取得するようにしてきたかを話します。
- Kiosk アプリ開発者
- Kiosk アプリで端末の状態把握のためのログで困っている方
- クラッシュログを Crashlytics だけで収集して困っているが、どうしていいかわからない方
25minutes日本語保守・運用・テスト (Maintenance, Operations and Testing)nshiba
47
より正確なスクリーンショットテストを求めて皆さんはスクリーンショットを撮るテスト(以降「スクリーンショットテスト」と表記します)を書いていますか?
皆さんがスクリーンショットテストで撮影した画像は、本当に画面に表示された通りですか?

スクリーンショットテストは、テスト結果を人間が目視する必要があるものの、次のような理由で取り組みやすいという利点があります。

・対象画面さえ起動できれば、あとはスクリーンショットを撮るだけ!
・対象画面の起動方法に影響しなければ、画面のレイアウトが変わってもテストは修正不要!

そんな一見お手軽なスクリーンショットテストですが、いざ書き始めてみるとスクリーンショットテストならではの課題が出てきます。
特に「実際に画面に表示されている内容」と「撮影したスクリーンショット画像」が微妙に違うという事象はテスト結果の信憑性にかかわるため、極力避けたいものです。

本セッションでは、画面に表示された通りに、正確に、スクリーンショットを撮るためのノウハウやテクニックを紹介します。

・実は危険なFragmentScenario
・沢山あるスクリーンショットライブラリ、正確に撮れるのはどれ?
・スクロールが必要な画面を正確に撮るベストな方法は?

また、思い通りのスクリーンショットが撮れないときのデバッグテクニックについても説明します。

スクリーンショットテストが気になる方、思い通りのスクリーンショットが撮れなくて苦労している方、本セッションでスッキリ解決しましょう!

※25分という制約から、Instrumented Test (UIテスト)の書き方、そこで使われるAPI (JUnit、ActivityScenarioやEspressoなど)の説明はできないと思います。
その点知らなくても付いていけるように工夫しますが、実践するには本セッションとは別の手段での学習も必要になる点ご了承ください。
・スクリーンショットテストが気になっている方
・思い通りのスクリーンショットが撮れなくて苦労している方
25minutes日本語保守・運用・テスト (Maintenance, Operations and Testing)sumio_tym
48
AndroidとiOS文言差分を解決するためにローカライゼーションプラットフォームを導入するアプリで表示する文言を�Android、iOS、デザインで��同一にする事は、アプリやチームの規模が大きくなるにつれて、
管理コスト・コミュニケーションコストを肥大化させていきます。
そのため、GOのユーザアプリ開発チームでは将来のローカライズも見据えて、ローカライゼーションプラットフォームによる文言管理の導入のメリット/デメリットを紹介します。
比較的大きい規模でサービスを開発している方
ローカライゼーションプラットフォームを検討中の方
25minutes日本語保守・運用・テスト (Maintenance, Operations and Testing)Satoru Komai
49
24時間365日動き続けるIoTアプリの見守り方アプリがリリースされると運用フェーズに入ります。
運用フェーズでは長期間アプリが動き続けるため、開発中には見つからなかった不具合が出ることがあります。

例えばこのような不具合です。

・特定のAndroidの機種、バージョンだけで発生する
・アプリと接続して動くIoTデバイスのFWバージョンに依存する
・特定のタイミングや状況下で発生する
・アプリが使っているライブラリの動作の影響を受ける
・接続先のIoTデバイスやNW等の外的要因の影響を受ける

など、開発中には発見しづらい点が特徴です。
さらに、こういった不具合は単体テストやQAをくぐり抜けているので修正の難易度も高くなります。

そこで重要になるのがアプリのモニタリングです。
アプリは24時間動き続けますが、エンジニアは24時間アプリを監視し続けることはできません。
KPIを設定してアプリが正しく動いているかをグラフによって可視化し、異常があれば素早く検知する仕組みがあると安心です。

このセッションでは、24時間動き続けるIoTアプリ、IoTデバイスの経験を元に実践しているアプリの見守り方について説明します。

お話しする内容(予定)
・モニタリング環境を整える(Firebase Crashlytics、Redash、Kibanaなど)
・リモートログとして送信すべきデータ(ローカルログとリモートログの違い)
・何をモニタリングすべきか(KPI、非機能要件)
・データを可視化してダッシュボードを作る
・定期的なモニタリングミーティングの開催
・アプリの不調を素早く検知する仕組み
- アプリがちゃんと動いているか気になっている方
- IoTデバイスと連携して動くアプリを見守りたい方
25minutes日本語保守・運用・テスト (Maintenance, Operations and Testing)Kenta Harada
50
Firebase In-App Messaging 虎の巻複雑な実装が不要で簡単にアプリ内メッセージングを可能にする、Firebase In-App Messaging(以下FIAM)。アプリではライブラリをimportするだけ。あとはFirebaseのコンソールからデータを登録するだけで、アプリの起動時等のタイミングでメッセージを表示することができます。

簡単に導入はできるのですが、そのままではデフォルトデザインのメッセージが使われるため、アプリのカラーとは合わない状態となることが多くなります。実際にFIAMを使ったことがあるという方はそう感じたことでしょう。

しかしご安心ください。FIAMにはメッセージデータを受け取ったあと、デフォルトのダイアログを出す代わりに違うダイアログを表示することが可能です。それどころかダイアログとは全く違うアプローチをすることすらも可能なのです。本セッションでは、FIAMの概要および導入からカスタマイズ方法まで、実践的な例を交えつつ解説します。

<アジェンダ(予定)>

- FIAMの概要・導入方法
- メッセージデータをアプリで受け取る方法
- デザインをカスタマイズしてみる
- メッセージング以外の活用方法
- Firebase In-App Messaging を導入している・しようとしている方
- アプリ内メッセージを使ってみたい方
25minutes日本語UI・UX・デザイン (UI・UX・Design)consomme
51
in-app updatesをバージョンごとに制御して効果を最大化しようin-app updatesを導入するときの気になることの1つに「全てのアップデートで同じ様に訴求を出すべきかどうか」というのがあると思います。
ZOZOTOWNアプリにおいては各バージョンの修正内容に合わせて訴求の強弱を制御するという結論になり、それをGoogle Play Developer APIを利用して設定できる優先度(inAppUpdatePriority)によって実現しました。

本セッションではin-app updatesで解決したかったZOZOTOWNアプリの課題を軸にinAppUpdatePriorityの有用性と検証時のはまりどころを紹介したいと思います

話すこと
・ZOZOTOWNアプリにおけるin-app updatesで解決したかった課題の紹介
・リリースごとに優先度を設定できるinAppUpdatePriorityフィールドについての解説
・課題解決のためのinAppUpdatePriorityフィールドの重要性を解説
・inAppUpdatePriority設定時の検証時におけるはまりどころ紹介

話さないこと
・in-app updatesの基本的な実装方法
・in-app updatesの導入を検討している方
・in-app updatesのバージョンごとの制御に悩まれている方
・in-app updatesの優先度について知ってはいるけど使ったことがない方
25minutes日本語Android Frameworkyymsdk
52
多分怖くない, Androidとハードウェア先日ナビゲーション機能がサードパーティ公開されたAndroid Autoをはじめとした車載機との連携やBluetooth/BLEを通じたIoTとの連携, HDMI接続したTVへのメディアプロジェクションなど, Androidはハードウェアと連携する事でアプリケーション単体から得られる以上に幅広いユーザー体験を提供することが出来ます.
しかしながら, その一方でその世界へ参加することのハードルの高さを感じられている方も少なくない印象があります.

本セッションでは, これまでに経験してきた「ハードウェアと連携する」アプリケーション開発で得られた知見について, 主に車載機との連携, Bluetooth/BLEを通じたハードウェアとの連携を題材にして共有します.

内容(予定)
- アーキテクチャ/モジュール構成についての考察
- つらいところとそれの乗り越え方
- 非機能要件な注意点
など
- ハードウェアと連携するクライアントアプリの設計に興味がある方.
- マルチモジュールプロジェクトの導入事例について興味のある方.
- ハードウェア怖い, でも触ってみたいといった方
25minutes日本語ハードウェア (Hardware)nyafunta9858
53
Android12にすることで発生する問題と解決策についてAndroid12のOSアップデート、targetSDKバージョンアップによって発生する開発で対応しなければいけない事項を説明しつつ、実際に現場で行った対応を具体的に説明していきます。

・Android12にアップデートした際に発生した問題点と解決方法
・targetSDKを31にした際の問題点と解決方法
・その他、気になる項目について
Android12関連の情報をキャッチアップしたい人25minutes日本語Androidプラットフォーム (Android Platform)ken furuya
54
SplashScreenの適応と対策についてAndroid12からSplashScreenが適応されます。OSアップデートの場合にどういった対応が必要なのか、targetSDKを31にした際に利用できるSplashScreenAPIを使ってのカスタマイズ方法などを説明します。

・Android12へのアップデートによるSplashScreenの影響について
・targetSDKを31にした際に利用できるSplashScreenAPIについて
・現場で行った対応方法について
Android12のSplashScreen関連の情報を知りたい人25minutes日本語Androidプラットフォーム (Android Platform)ken furuya
55
ノーコードアプリプラットフォームのアーキテクチャ変遷Androidアーキテクチャは現在まで色々と議論がされた結果、様々なアーキテクチャが登場し、また便利なライブラリの登場によってもアーキテクチャの組み方が変化してきました。
今回は現職で長期運用しているノーコードアプリプラットフォームのソースコードをベースにこれまでどういったアーキテクチャを適応し、変化をしてきたのか、現在のアーキテクチャがどのようになっているかなどを解説します。

・アーキテクチャ変遷
・直近の現場での課題
・最終的なアーキテクチャと適応方法について
アーキテクチャをこれから取り入れようと思っている人、まだアーキテクチャに慣れてない人向け25minutes日本語アプリアーキテクチャ (Designing App Architecture)ken furuya
56
Google Play Console アカウント所有者の移行についてAndroidアプリをPlayストアにリリースする際、我々はGoogle Play Consoleを利用します。ときに、このGoogle Play Consoleの「アカウント所有者」を移行するという作業が必要となる場合があります。

現在のGoogle Play Consoleの仕様上、アカウント所有者のメールアドレスは変更できません。仮にアカウント所有者のメールアドレスを別のものに変更したいとなった場合には、新規のDeveloperアカウントを作成し、アプリやその他の情報を新しいアカウントに移行するといった手順が必要となります。「アカウント所有者」の移行に関する情報は、普段から能動的に吸収しずらいものであるにも関わらず、その必要性は突然に訪れるものであると考えています。

本セッションでは、Google Play Console アカウント所有者の移行について、実際の経験をもとに、気をつけるべき点やTipsなどについて紹介いたします。

セッション内容(予定)
・「Google Play Console アカウント所有者の移行」とはなにか
・アカウント移行する際の手順
・アカウント移行する際に気をつけること
・その他

セッションのゴール
・セッション受講者が、アカウント所有者の移行を行う必要がでてきた際、落ち着いて対応できる状態
アカウント所有者を管理する立場にあるAndroidエンジニア
アカウント所有者の移行が必要となった場合に対応をする立場にあるAndroidエンジニア
25minutes日本語その他 (Other)shoheikawano
57
Androidアプリをいつまでも楽しく開発し続けるための取り組み 2021Android アプリ開発、楽しんでいますか?
Android Jetpack が発表されてからというもの、ライブラリの更新や変化が非常に追いやすくなり、 Android アプリ開発手法が高速で進歩している様子がとてもわかりやすくなりました。
期待の Jetpack Compose もついに今年 stable になる見込みで、今がまさに Android アプリ開発を最も楽しめるタイミングだと言えます(毎年言ってます)。

もちろん、最新のライブラリや機能と向き合うだけが Android アプリ開発ではありません。
古い端末やOSのサポート、必要なのかわからない肥大化したコードのメンテナンス、期限付きで迫ってくる新しい targetSdkVersion への対応……。
歴史ある巨大なアプリでは、常にその全体を最新の状態に保つことはできません。
それでもうまく工夫することで新しい開発手法を取り入れ、普段のアプリ開発を楽しく効率的にしていくことはできます。

この発表ではクックパッドアプリに最新の開発手法や最新の機能を取り入れ、楽しくアプリを開発し続けるために行っている様々な取り組みについて紹介していきます。
Androidアプリ開発が楽しい人
Androidアプリ開発が楽しくない人
Androidアプリ開発が楽しくなくなってきた人
25minutes日本語開発体制 (Development Process)こやまカニ大好き
58
2020年代の WebView 実装Jetpack Compose 時代になってもおそらく無くならない、古くて最新の View の話をします。

歴史あるアプリには大抵、 WebView でしかアクセスできない画面や機能があると思います。
WebView で開くページにセッション情報を引き継ぐための認証の仕組みや、カスタム JavaScript を動かすための仕組みもあるかもしれません。
WebView の履歴を Fragment 内で `goBack()` するための特殊な実装や、ドキュメントには存在しない謎の `openFileChooser()` メソッドを見かけた開発者もいるかもしれません。

本セッションでは8年の歴史を持つクックパッドアプリの秘伝の WebView 実装を最新化した経験を元に、現在の WebView 実装のベストプラクティスと古い WebView の改善方法について説明します。
WebView が好きな人
WebView が嫌いな人
アプリ内の WebView 実装に困っている人
25minutes日本語Android Frameworkこやまカニ大好き
59
アプリとWebで展開するプロダクトのイベント設計と可視化ピクシブでは複数のプロダクトについてWebとアプリが存在しており、社内のデータ基盤を用いて数値の分析を行っています。
一つのプロダクトについて、Webとアプリとでイベントを同じ様に扱うことができればまとめて数値分析を行うことが出来ます。

しかしWebとアプリとで体験が大きく異なることがあり、またGoogle Analytics・Firebase Analyticsそれぞれのデフォルトのイベントのとり方だとうまく取り扱えない場合があります。

この発表ではWeb・アプリでイベントを統一的に扱うための、
- BigQueryなどデータ基盤での可視化
- ユーザーの操作ベースのイベントに絞ったイベント設計
- screenイベントではない独自のviewイベント
- Firebase ABTestingを使わないABテスト
についてお話します。
- BigQueryやLookerといった数値分析基盤に興味ある方
- Web・アプリでのイベント設計について知りたい方
25minutes日本語その他 (Other)verno3632
60
Androidアプリ開発でGitHub Actionsを徹底活用してみるGitHub Actionsが登場したことで非常に簡単にCIを導入できるようになりました。本セッションではci, cdはもちろん、テストやlint、ライブラリの定期アップデート、GitHub Wikiの更新など、色々やってみます。

- ビルド
- lint
- テスト
- アプリの配信
- ライブラリの定期アップデート
- プロジェクト構成をwikiに反映するなどのドキュメント自動更新
ciでなんでも自動化したいと思ってる人25minutes日本語保守・運用・テスト (Maintenance, Operations and Testing)tarumzu
61
State of the art of Android widgetsWidgets are miniature application views that can be embedded in other applications.
It have been part of the Android core framework for a long time, but its API hadn't been changed since Android 12.

Google have been investing on Widgets as Android 12 brings a major update to the existing APIs and the new library to build Widgets based on Jetpack Compose is going to be released in 2021.

In this talk, I'll cover the topics including:
- What are Android Widgets, what is the difference with normal apps
- What part of APIs were changed in Android 12
- What is going to be changed with the Jetpack Compose library for Widgets (this topic may be changed based on the progress of the library)
Beginner to intermediate Android developers who are interested in:
- What is Android Widgets
- Recommended practices for Widgets
- What is changed in Android 12
- What is going to be changed with the Compose library for Widgets
25minutesEnglishAndroidプラットフォーム (Android Platform)thagikura
62
In-App Messagingを利用したアプリ内通知アプリを利用しているユーザーのアクションに対してアプリ内通知を表示できる In-App MessagingがFirebaseから提供されています。

In-App Messagingではある特定のユーザーがある動作を行なったときにアプリ内通知を表示するようにしたり通知される内容の文言やコンテンツを変更したりすることができます。

用意されているアプリ内通知の種類には
カード
モーダル
画像のみ
トップバナー
の4種類があります。

その中でもカードタイプをカスタマイズしてお知らせとして実際のプロダクトに導入してみた際の話を主に行います。

主な内容(予定)
In-App Messagingとは
導入方法
Audienceと組み合わせる
カスタマイズ方法
ハマったポイント
アプリ内通知を導入しようとしている方
In-App Messagingに興味がある方
Firebaseを活用しようとしている方
25minutes日本語保守・運用・テスト (Maintenance, Operations and Testing)mitohato14
63
25分で作るAndroid LintAndroid Lintは、アプリやテストを実行しなくても問題のあるコードを検出してくれる静的コード解析ツールです。
標準で組み込まれ、デフォルトのルールだけでもとても強力なAndroid Lintは、日々私達の開発をサポートしてくれます。

一方で、標準のルールにはない独自のチェックを追加したい場面があります。例えば、プロジェクト固有のミスしやすい実装・アンチパターンとなる実装を自動で検出したいときです。
その場合カスタムのルールを実装する必要がありますが、Lintの実装は普段のアプリ開発とは異なる知識が必要になり、とっつきにくい印象があります。
「レビューでよく指摘されるようなミスをLintでチェックできたらいいのに」と思いながらも、実装のハードルが高くて諦めた経験はないでしょうか。

本セッションでは、Android Lintのカスタムルール実装のハードルを下げるために、ライブコーディング形式で実装手順を紹介します。
ライブコーディングの中では、次の内容に触れる予定です。
• Android Lintの特徴
• カスタムルールの実装手順
• カスタムルールのデバッグ及びテスト
- Android Lintで独自のチェックをできるようにしたいと考えている方
- Android Lintのカスタムルール作成に興味のある方
25minutes日本語保守・運用・テスト (Maintenance, Operations and Testing)Nozomi Takuma
64
Jetpack ComposeとGoogle Maps SDKを使った地図画面実装Jetpack Composeもついに正式版リリースが目前となり、サンプル実装や基本機能のライブラリ、開発ドキュメントが充実してきました。
私が業務で携わっているクックパッドマートアプリでもJetpack Composeの導入を視野に入れていますが、既存のViewは様々な機能やUIで構成されておりJetpack Composeによる再現には不安があります。特にGoogle Maps SDKを使った地図画面の実装には懸念がありました。
そこで本番導入に先立ってGoogle Maps SDKをJetpack Compose上で使用する方法を調査し、実際にクックパッドマートアプリの地図画面の再実装をしてみました。
本セッションではその際の経験を基に、Google Maps SDKにフォーカスしたJetpack Composeの本番利用に関するより実用的な知見を共有します。
- Jetpack Composeに興味がある人
- Jetpack Composeに触れたことがある人
- 本番環境へのJetpack Compose導入に意欲がある人
25minutes日本語JetpackYutoKoguchi (10llip0p)
65
動かすAndroid には様々なアニメーション API があります。アプリにアニメーションを実装するとき、どの API を使えばいいか迷った経験はありませんか。適切な API を使い分ける判断基準が分からず何事も一つのやり方で済ませてしまってはいませんか。

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

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

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

- 様々なアニメーション API
- もはや忘れて構わないアニメーション API
- 2021 年に押さえておくべきアニメーション API
- アニメーションを実装する上で押さえておきたい View の性質
- レイアウトについて
- View の位置について
- マテリアル デザインの動き
- Dissolve と Fade through
- リスト
- Stagger
- Oscillation
- ナビゲーション
- 共通要素
- コンテナーのアニメーション

このセッションでは Compose、MotionLayout の話はしません。
基本的な Android の UI の作り方がわかる人25minutes日本語UI・UX・デザイン (UI・UX・Design)荒木佑一
66
できる!Android Framework Code ReadingAndroidの面白さはオープンソースでコードが公開されているので、Androidがどのように動いているのか?などをコードを読めば知れるところです。
Androidの内部構造を知ることで、アプリ開発に役立つこともたくさんあります。

しかし、コードが公開されているとはいえ、膨大な量のソースコードでAndroidは作られています。
調べたい機能がどのように動いているのかを調べる際に、いきなり膨大な量のコードを読んでも挫折してしまうことがよくあります。

本セッションでは、そもそも「Android Frameworkってなに?」というところから、実際にFrameworkのコードをどのように読んでいくかなどをお話します。
具体的な内部構造の話よりも、「どのようにAndroid Frameworkのコードを読んで内部構造を調べるのか」をメインとして扱います。

具体的には以下のような項目についてお話する予定です。
・ Android Frameworkってなに?
・ なぜAndroid Frameworkのコードを読むのか
・ Android Framework Code Readingをする上で便利なサイト・ツールなどの紹介
・ 読みたい目的のコードを探し出す技術
・ Android Frameworkのコードを読む時に使える技術
・ Android Frameworkでアプリ開発者が手軽に読めそうな部分の紹介
・ コードを読んだ結果をうまくまとめる技術
- Android Frameworkのコードを読んでみたい方
- Android Frameworkのコードって「どこを読んだらいいの?」、「Frameworkのソースコードの読み方・調べ方がわからない!」みたいな方
- Android Frameworkのコードを読んでもっとAndroidに詳しくなりたい方
25minutes日本語Android FrameworkShinobu Okano
67
Ways to Contribute to Your Tech Community / テックコミュニティへの貢献とは何なのかDroidKaigiはエンジニアが主役のAndroidカンファレンスです。
Android技術情報の共有とコミュニケーションを目的に2015年から継続的に活動しています。

本セッションではDroidKaigiオーガナイザーの立場からテックコミュニティへの貢献について実践事例を紹介します。
コントリビューションとは具体的に何を指すのか?コミュニティという視点から分解し、エコシステムの構造を解説します。
セッションを聞いた後には、発表すること、勉強会に参加すること、ご自身の職場以外での活動についても、
よりポジティブに感じてもらえることを期待しています。

話したい事柄:
みなさんご存知のとおり、DroidKaigiはボランティアによって支えられています。DroidKaigi 2020の中止から、ことさら継続性の確保が課題であると感じています。
6年にわたって活動してきた背景にはボランティアメンバーの「Androidコミュニティの一員として活動し、業界の発展に貢献したい」という思いがあります。

- Androidエンジニアひとりひとりに対して、DroidKaigiが何を貢献したいと考えているのか
- 公式アプリの技術的チャレンジとコントリビューションの工夫
- 持続可能なコミュニティ活動の理想と現実
- 新しいエンジニア/初学者を受け入れる場でありたいという思いと多様性確保への挑戦

Androidという特定の技術分野の話題であるため特殊性が強く、汎用的な内容となるかは現時点ではわかりませんが、
よりオープンに議論できるようセッション応募しています。将来について一緒に考える意義のあるものとしたいです。
- ご自身のキャリア形成とボランティア活動に興味があるひと
- Android/Kotlin/Flutter/RN/Go/Swiftなどなど好きな技術分野があるひと
- Android以外のエンジニアであってもカンファレンスや勉強会運営に興味があるひと
25minutes日本語その他 (Other)mhidaka
68
Android開発をうまく進めるFigmaの使い方Android開発におけるデザインツールとしてFigmaを使っている人は多いのではないでしょうか。Figmaは同時編集やコメントでのやりとりもできてとても便利なツールですが、実務においては次のような課題の声が上がることがあります。

- FIXしたデザインがどれかわからない
- いつの間にか変更されていて気がつかなかった
- アイコンや画像をプロジェクトに配置するのが面倒
- コンポーネントのネーミングが開発と合わない

Figmaを使ってチームで開発する上でのこういった細かな課題を解決し、開発をうまく進めるためのTipsを紹介します。
- Figmaを使っていないが興味がある方
- Figmaを使っているがちょっとうまくいっていないと感じている方
25minutes日本語開発ツール (Productivity and Tools)konifar
69
Jetpack Compose で始める 2021 年の Android アプリ開発Jetpack Compose の 1.0 がついにリリースされ、プロダクションへの導入が現実的になってきました。
Jetpack Compose は Kotlin で書ける宣言的 UI フレームワークです。

私の所属するチームでは Jetpack Compose を alpha 初期から導入して 10 ヶ月ほど Android アプリ開発を行ってきました。
Jetpack Compose は多くのことが Android の View システムと比べて簡単になりましたが、一方で少し難しくなったところもありました。
1.0 が出て間もないこともあり、ノウハウが少なく導入に不安のある方も多いのではないでしょうか。

このセッションでは私の所属するチームでとあるアプリを開発する際に Jetpack Compose を導入した経緯と、導入したことによって得たメリット、困ったことをどう解決していったかといったことを紹介します。
また、既存のアプリに Jetpack Compose を導入していった手法も紹介できればと思います。
皆様の Jetpack Compose 導入の参考になれば幸いです。
- Jetpack Compose を使ったアプリ開発に興味がある人
- Jetpack Compose を使った開発における状態管理の考え方について知りたい人
- Jetpack Compose と ViewModel を使った開発手法が知りたい人
- Jetpack Compose で簡単にできること、できないことが知りたい人
- Android View システムから Jetpack Compose へどうやって移行していけば良いのか知りたい人
25minutes日本語アプリアーキテクチャ (Designing App Architecture)takuji31
70
Compose を動かすJetpack Compose には様々なアニメーション API があります。これまでの View UI でのアニメーションの進化を踏まえた上で、現代的なアプリの UI に求められる動的な体験を実現できるように、強力かつ拡張性の高い API になっています。このセッションでは、実際のアプリでよく見られるようなユースケースに沿って、Compose のアニメーション API の機能を使い尽くす方法を紹介します。Compose に入門している人25minutes日本語Jetpack荒木佑一
71
詳解 Google Glass 向け Android アプリ開発Google Glass と呼ばれるメガネ型ARデバイスが近年 "Glass Enterprise Edition 2 (以下、Glass EE2)" として産業分野向けにリリースされ注目を集めています。
Glass EE2 が従来のメガネ型ARデバイスと大きく違う点は、OSに Android を採用しているということです。そのため、Glass EE2 向けのアプリはスマートフォン向けの Android アプリと同じように開発することができます。

メガネ型ARデバイスが提供するアプリは、スマートフォン向けアプリとは全く違ったユーザー体験を提供できると期待されています。
本セッションでは、Glass EE2 の概要、アプリの開発方法、具体的にどのようなユースケースがあるのかという話を「メガネ型ARデバイスが持つ可能性」というテーマを交えながら解説します。

■このセッションで話すこと
- Google Glass の歴史
- Glass EE2 の概要
- メガネ型ARデバイス向けアプリのデザインガイドライン詳解
- メガネ型ARデバイスのユースケース
- アプリの開発方法、注意すべきこと
- サンプルアプリの解説
- Google Glass に興味がある方
- メガネ型ARデバイス向けのアプリに特化したデザインガイドラインに興味がある方
- 特殊な Android デバイスに興味がある方
25minutes日本語Androidプラットフォーム (Android Platform)shanonim
72
本当は怖い?Coroutineと並列処理:「僕たち」「私たち」「「入れ替わってる〜〜!?」」KotlinのCoroutineがリリースされてからだいぶ経ちました。
今ではもう普通にプロダクトで使われていると思います。
Coroutineは処理の中断、再開が容易に行えるためバックグラウンドでの処理とメインスレッドでの処理の切り替えをコールバック無しでシームレスに切り替えられ、とても便利です。
そのためAndroidではAPI呼び出しやDBの読み書き等、さまざまな場面で利用されています。
またFlowのリリースによってRxやLiveDataとも乗り換えたり使い分けたりすることが増えてくると思います。

そんなCoroutineですが、少し使い方を間違えるととても分かりづらいバグを仕込んでしまうことになります。
それが処理順の入れ替わりです。
Aというデータを書き込んだ後にBというデータを書き込んだはずなのに、なぜかB→Aの順番で処理された結果、Aというデータが残る。
このようなバグは見つけるのも非常に難しいですが、解析も困難で、綿密なログ解析によってなんとかかんとか修正する、みたいな感じになります。

本発表ではCoroutineの処理順に注目して、実際にあった事例なども踏まえながらCoroutineの使い方の注意点を紹介していきたいと思います。

発表予定の目次
・Coroutineの基礎
・Coroutineの中でさらにLaunchする
 「ここは処理結果を待ちたくないのでLaunchするぞ。ヨシッ!」
・Coroutineのスレッド切り替え
 「シングルスレッドなら大丈夫……そんなふうに考えていた時期が俺にもありました」
 「そこには元気に走り回るJobの姿が!もう二度と安易なwithContextはしないよ」
・CoroutineとRxの組み合わせ
 「え?Rxのsubscribeでsuspend関数を呼ぶ!?できらぁ!」
 「Rxのbackpressureを無視したらどうなる?」
KotlinでCoroutineを使っている人、これから使おうとしている人
複雑な背景から、どのようにして並列処理の順番が入れ替わってしまったのか興味のある人
25minutes日本語Kotlinsoranakk
73
This session submission has been withdrawn.
74
Jetpack Composeを使ったアプリケーションでUIアーキテクチャーが果たすべき役割とは何か?今までAndroidのアプリ開発では、MVC, MVP, MVVM, Fluxなど、様々なUIアーキテクチャーを使ってUIプログラミングを行うことが推奨されてきました。

そういった歴史がある中でリリースされた新しいライブラリであるJetpack Composeは宣言的で、より直感的にUIプログラミングを行うことが出来る強力なライブラリですが、今までのAndroidのUIツールキットとは大きく異なる特徴を持っています。

では、Jetpack ComposeではどのようなUIアーキテクチャーを導入するのが適切なのか?ということは、今までUIアーキテクチャーを使うことで既存のAndroid UIツールキット上でアプリケーション開発を行ってきた人には非常に興味があるトピックだと思います。

本発表では、AndroidのUIプログラミングにおいて何故UIアーキテクチャーというものが存在し、UIアーキテクチャーはどういった問題を解決したかったのか?というところにさかのぼります。その上で、Jetpack Composeがその中で解決することが出来るようになった課題をいくつか取り上げ、何故課題を解決することが出来たのか?ということを解説します。そして、Jetpack ComposeというUIツールキット単体では解決できない、解決するためにはUIアーキテクチャーを導入することが望ましい課題をいくつか紹介します。

具体的にどのUIアーキテクチャーを導入するべき、といった話には今回は立ち入りませんが、この発表でJetpack ComposeでUIプログラミングを行う上でそもそもUIアーキテクチャーを導入するべきなのか、導入するとしたらどういった観点でUIアーキテクチャーを評価すればいいのか、などについての知見を深めていきましょう。

## 発表アジェンダ(予定)

+ 何故UIアーキテクチャーが存在するのか、UIアーキテクチャーはどういった課題を解決したかったのか?
+ Jetpack Composeが解決した既存のAndroidのUIツールキットの課題とは何か?
+ では、UIアーキテクチャーはもはや要らない存在なのか?
+ Jetpack Composeを使ったアプリケーションでUIアーキテクチャーが果たすべき役割とは何か?
+ Jetpack ComposeでどういったUIアーキテクチャーを導入するべきか悩んでいる方
+ UIアーキテクチャーの話に興味がある方
25minutes日本語アプリアーキテクチャ (Designing App Architecture)kr9ly(からくり)
75
今から始めるCoroutines FlowこれからFlowを導入する時にどのような時にどんな書き方をすればいいのか、実例を元にお話します。
・Retrofitとの連携
・Roomとの連携
・オペレータの紹介
Flowの導入を検討している方25minutes日本語Kotlinそば屋
76
持続的なサービス提供のための計測と分析ユーザーに対してより高品質なサービスを届けるために、様々な機能改善の施策が進められます。
しかし、せっかく機能を実装しても検証しなければどれくらい効果があったのか、また次にどこを改善すればいいのかを判断できません。
また機能追加だけを続けると消せないコードが大量に生まれるとともに、修正コストやQAコストが肥大化します。
より効果的なサービス提供をするためには継続的な施策効果の分析は必要不可欠です。

本セッションでは施策の効果検証の流れを業務での実例を踏まえて紹介します。
具体的には次のような内容を想定しています。

- なぜ効果検証を行うか
- 分析計画はどのタイミングで立てるか
- 効果検証の仕組みをつくる
- 分析計画を立てる
- 何を検証していくか
- どんなデータにフォーカスするか
- 各種指標
- 次のステップ
- 意思決定の閾値
- どこからデータを集めるか
- Firebase
- 自社計測基盤
- どう検証していくか
- ABテスト
- ダッシュボードと分析ツールの例
- Redash
- Kibana
- チームでのモニタリング

セッションでは、施策の効果検証のサイクルをどのように運用しているかを紹介していきます。
何にフォーカスしどのような手段で情報を集め、施策を評価し次の行動へつなげるかというプロセスに焦点を当てていきます。
またチームでは、属人化を防ぐために継続的なダッシュボードのモニタリングを行っています。
日頃からデータを見る習慣をつけるための運用などについても触れる予定です。
機能開発は社内の様々な経緯や背景を抱えているケースが多々あります。
データに基づいた機能の追加・削除を行うことで、自信をもって施策の評価を行うことができます。
本セッションを通して、より持続的なサービスを提供するような効果検証のサイクルの流れや考え方を共有できれば幸いです。
- 効果検証のサイクルに関心のある方
- サービスの施策検討者
- アプリの機能開発に携わる方
- データドリブンな開発をされたい方
25minutes日本語開発体制 (Development Process)Miyabi Gouji, Ryo Yamazaki
77
Flutterほぼ未経験のチームがネイティブアプリを半年でFlutterにリプレースした話Kotlin/Swiftで実装された化粧品ECアプリをFlutterにリプレースした際の知見を失敗談を交えて話します。
チームメンバーはほぼFlutter未経験、スピーカーはAndroidエンジニアです。

- リプレースした背景と課題
- コストを下げるために試したこと
- テスト自動化(うまくいかなかったGoldenTest、これからのAppium)
- 状態管理F/Wを3つ試して結局GetXに落ち着いた経緯
- CI/CD Codemagic
- など
- Flutter習得方法
- 置き換えた結果どうだったか(結局どれくらいDartでかけたか?、Flutter開発のいい点・わるい点)

Flutterやったことはないが興味がある方。
ネイティブアプリをFlutterに置き換えたいと考えているエンジニア。
25minutes日本語クロスプラットフォーム (Cross-platform Development)Yumi Miyata, lychee
78
kotlinx.serialization 101Released in late 2020, kotlinx.serialization is a pure-Kotlin library for multiplatform and multiformat serialization with goals of type safety and compile-time safety.

For simple cases, the startup is easy. For complex cases, kotlinx.serialization provides powerful customization and handling of polymorphism.

In this talk, we will go through the initial steps of setting up kotlinx.serialization and simple serialization examples. Then we will explore some examples of advanced customization and polymorphic serialization to demonstrate kotlinx.serialization's capabilities and workflow.
Intermediate to Advanced Kotlin/Android developers with some experience in data serialization.25minutesEnglishKotlinqueencodemonkey
79
Glideをもっと深くまでカスタマイズしてもっと便利にAndroid における画像読み込みライブラリの筆頭ともいえる Glide ですが、みなさんはどこまでカスタマイズしていますか?
コミュニケーションアプリ「LINE」でも幅広い範囲で Glide を使用しており、さらに以下のようなカスタマイズを施しています。

- キャッシュされた画像の永続化:Glide に内蔵された LRU 方式のファイルキャッシュとは別に、永続的なデータ領域を用意して2回目以降のネットワークアクセスを行わないようにする
- 読み込める画像フォーマットを増やす:APNG (Animated Portable Network Graphics) 形式など、デフォルトではサポートされていない形式の Drawable を読み込めるようにする
- 画像のダウンロード状態の可視化:サイズの大きい画像を読み込もうとした時に、ユーザーに進捗を表示できるようにする
- HTTP リクエストのカスタマイズ:認証に必要なリクエストヘッダの挿入など、画像リクエスト時の特殊なロジックを Glide 内部に隠蔽できるようにする

Glide による画像の読み込みの過程はフェーズごとにコンポーネントとして分離されているため、コンポーネントの差し替えだけで上記のようなカスタマイズを実現できます。
例えば、認証が必要な HTTP リクエストを発行するためには `ModelLoader` と呼ばれるコンポーネントをカスタマイズします。
`ModelLoader` をカスタマイズすることで、SharedPreferences などに保存された認証用のトークンなどを読み出し、URL とリクエストヘッダのペアを作成することができます。
このようにすることで、認証のためのロジックを Glide による画像読み込みの過程に含めることができ、ビューやビューモデル、プレゼンターといったレイヤーから隠蔽することができます。
このセッションでは、Glide における内部の処理フェーズの解説とコンポーネントのカスタマイズの手法、実際に私たちが行った Glide へのカスタマイズの実例を紹介します。
- Glide をもっとスマートに使いたい方
- Glide を使った時に「ついでにこの処理もやってくれたらなぁ」と思ったことがある方

25minutes日本語その他 (Other)Tamaki Hidetsugu / Ralph
80
AndroidエンジニアがフルFlutterでアプリ開発をしたのでそのアーキテクチャを検討してみた社内で新アプリ開発のPJにおいてAndroid/iOSの両プラットフォームをサポート目指してアプリ開発を行いました。
元々Androidアプリエンジニアだった人間が、Flutterアプリ開発を行う場合に考えうるアーキテクチャ(Flux、MVVM)や、APIとの通信、自動テストの整備、リリースフローの策定、CI/CD、iOSとのデザイン差異など、またFlutter未経験者が多かったチームでのチームビルディングの仕方など、開発生産性と品質の両面からどのようにアプローチしていったかをお話できればと思います。
Flutterアプリ開発を検討している方
Flutterアプリの生産性、品質について気になる方
アプリチームのチームビルディングについて気になる方
25minutes日本語クロスプラットフォーム (Cross-platform Development)kazuumi hori
81
リリース済みのAndroidアプリを徐々にFlutter化していった話プロジェクトのメンバー最適化、Androidアプリをメンテナンスできるエンジニア不足に対応するためにすでにリリース済みのAndroidアプリを徐々にFlutterアプリ化していくというプロジェクトにおける注意した点、成功事例、失敗だった点、懸念点などを共有させていただければと思います。Flutterアプリに興味がある方
AndroidアプリをリリースしていてFlutter化しようか迷っている方
Androidエンジニアがなかなか採用できずに別の手を考えている方
25minutes日本語クロスプラットフォーム (Cross-platform Development)kazuumi hori
82
FlutterからAndroid,iOSの機能を扱う仕組み(PlatformChannel・PlatformViews)を実例と共に学ぶFlutterでのアプリ開発が注目を浴びていますね。次々とプロダクションにFlutterを投入するプロダクトも増えてきて盛り上がってきました。

そんなFlutterでアプリを開発していると、Bluetoothなどのハードウェア機能やカメラ,WebViewを扱う際など、Flutterからネイティブの機能を呼び出したい場面に遭遇することがあります。
このセッションでは、ネイティブのコードをFlutterから扱う際に用いるPlatformChannel, ネイティブのViewをFlutterView上に描画できるPlatformViewsの使い方を、実際に広く使われているパッケージ(geolocator, google_maps_flutterなど)の実装を読み解きながら解説していきます。
実際に広く使われているパッケージのコードから知見を得た上で、私なりのベストプラクティスなども紹介できればと考えています。

・PlatformChannel, PlatformViewsの概要とシンプルな実装の解説
・PlatformChannelを用いた広く使われているパッケージ(geolocatorなど)を読み解きながら、実践的な使い方を学ぶ
・PlatformViewsを用いた広く使われているパッケージ(google_maps_flutterなど)を読み解きながら、実践的な使い方を学ぶ
Flutterに興味がある人から中級者くらいまで。PlatformChannel(MethodChannel..etc), PlatformViewsの実装の実例を学びたい人25minutes日本語クロスプラットフォーム (Cross-platform Development)soprog_
83
Dive into Animate Spans with text and performanceDo you know how to display animation and decorate text in Text View and Edit Text? We will deep dive into animation spans related development. This session will cover following topics:
- What's Spans?
- How to control animation with drawable
- Problems with Hardware and Software rendering and solutions
- Potential performance issue, limitations and how to solve it.
Developers who want to know how to decorate text. 25minutesEnglishUI・UX・デザイン (UI・UX・Design)Wakeel
84
アプリとSDKを同じリポジトリで開発!SDKならではの難しさと開発Tips昨今のAndroidアプリ開発ではGradleマルチモジュールを利用することが主流になっています。多くの方がマルチモジュール構成のアプリ開発を経験されているのではないでしょうか。

私が携わっているプロダクトもマルチモジュール構成ではあるのですが、1リポジトリ内でアプリとSDKを開発するという少し珍しい構成をしています。本セッションでは、1リポジトリでのGradleマルチモジュールでアプリとSDKを開発しているプロジェクトの構成や運用を紹介し、マルチモジュールならではの開発の難しさや技術的な知見をお伝えします。

特に最近対応した“3年ぶりのSDKメジャーアップデート“の経験をもとに、直面した課題や解決方法を提示しつつ、Gradleのビルド周りの情報を中心に一般的な構成のアプリ・SDK開発でも活用できるようなノウハウを共有したいと考えています。

次のようなアジェンダを予定しています。

- アプリとSDKを同時開発するモジュール構成と、その開発・運用フローの紹介
- マルチモジュールなSDKをどうビルドして公開するのか?
- 難読化との闘い
- 公開したくないモジュールをいかに隠すか?
- GradleのMaven Publish PluginとPOM.xmlについて
- 推移的依存関係に注意する
- SDK開発特有の開発Tips(SDKのサードパーティーライブラリ依存を減らす話、など)
マルチモジュールでSDKを開発をしている方
25minutes日本語開発ツール (Productivity and Tools)uwaseki
85
Androidエンジニアのためのスクラム開発ケーススタディAndroidエンジニアとスクラムマスターを兼任し、Androidエンジニア特有のスクラム下での立ち回りの作法や、直面しがちな壁を考える事が増えてきました。

そこで、スクラム開発においてAndroidエンジニアがよく遭遇する課題や障害を実際にあった具体例とともに紹介、Q/A形式で似通ったケースへの問題解決のヒントを提示します。

# スプリント
- スプリント内でAndroid特有の歴史に応じて出来た地層のような負債を新規開発と並行してどう解消していく?
- スプリント中のフィードバックとどう付き合う?
- 短いスプリント内でテストをどこまで書く?

# コミュニケーション
- チーム内外のAndroidエンジニア間でのコミュニケーション/技術談義はどんな感じで行う?
- Android特有の緊急を要するアップデートをプロダクトオーナーにどう伝えるべき?

# 機能横断
- 他職種(iOS/Server)とどこまで機能横断できる?
- 具体的に何を機能横断する&してもらうと良い?

# 見積もり
- 「Android12対応して欲しい」どう見積もる?
- 「ButterKnifeをそろそろreplaceして欲しい」どう分解する?
- 「RxJavaを3まで一気にアップデートして欲しい」どうやってスプリントに組み込む?

# チーム
- 今回もiOS先行。Androidは後追いになってしまい、チーム内で分断が生まれそうだがどうする?
- Android単独で進めていけるROIのいい施策は?
- チームでモブワークしやすいユーザーストーリーはどんなもの?

# 新規アプリ
- 新規Androidアプリの設計はどうやって固めていく?
- 初期開発を迅速に進める上で優先度の高いライブラリ、反対にそこまで拘らなくてもいいライブラリは?

etc...
スクラム開発下での立ち回り、障害に悩むAndroidエンジニア/その他アプリエンジニアな方、スクラム開発に関心がある方25minutes日本語開発体制 (Development Process)@Tsutou
86
Jetpack ComposeとKotlin Multiplatformを用いたクロスプラットフォーム開発Jetpack Composeは、もはやAndroidアプリ開発のためだけのものではありません。Compose for Desktop、Compose for Webの登場により、デスクトップアプリやWebアプリなどもJetpack Composeを用いることでAndroidと共通化して実装することができるようになりました。

このセッションでは、Android, Desktop, WebをターゲットにしたKotlin Multiplatformのプロジェクトで実際にJetpack Composeを用いてクロスプラットフォーム開発する方法について紹介します。

- Compose for Desktop, Webについて
- Jetpack ComposeでDesktopとWebを開発するメリットについて
- プロジェクトのセットアップ
- UI層のコード共有
- プラットフォーム固有のViewをComposable関数にラップする方法
- Decomposeを用いてプラットフォームに依存しない画面遷移を実装する
Androidアプリ開発でJetpack Composeを使ったことがある人
Kotlin Multiplatformに興味のある人
Kotlinを用いたクロスプラットフォーム開発に興味のある人
Compose for Desktopに興味のある人
Compose for Webに興味のある人
25minutes日本語クロスプラットフォーム (Cross-platform Development)mayamito
87
Android Emoji 2021絵文字はいまやスマートフォンでコミュニケーションを取る上で欠かせない文字となり、世界中で言語を問わず広く使われています。しかし、他の文字と違い、絵文字は新しい文字が毎年追加され、しかも世界中の人々がすぐにそれが使えるようになることを期待します。
このセッションでは、Androidがこの絵文字の問題にどのように取り組んでいるのか、またアプリケーション開発者がこの絵文字の問題にどうやって対処することができるのかを解説したいと思います。

Emoji is now the most commonly used script around the world and also the most crucial characters for communicating with smartphones. However, different from other scripts, lots of new emojis are registered every year and end users expect they will be usable on their phone soon. In this session, we will explain how the Android Text team is tackling this problem and what the application developers can do for this problem.
初心者向け。絵文字に興味がある方。

For beginners. Any developers that are interested in emoji.
25minutes日本語JetpackSeigo Nonaka
88
Introduction to Jetpack Compose Text文字を表示したり、文字入力を受け付けたりするのは、アプリケーションを動かす上で欠かせない基礎的なUIコンポーネントです。このセッションでは、Jetpack ComposeのText Composable API、およびTextField Composable APIの使い方や、陥ってしまいがちなトラブルについて、Text Composableの舞台裏を交えて解説したいと思います。

Displaying and editing text is a crucial fundamental UI component on the applications. In this session, we will explain how to use the Jetpack Compose Text API and TextField API as well as common mistakes including what is happening under the hood.
初心者向け。Jetpack Composeに興味がある人

For Beginners. Android developers that are interested in Jetpack Compose
25minutes日本語JetpackSeigo Nonaka
89
ReactNativeとKotlinで叶える夢のリアルタイム音声配信近年モバイルアプリを開発する際にクロスプラットフォームSDKによる開発方式を採用するプロダクトが増えてきています。その中の一つであるReactNativeはJavaScriptとReactをベースとしたクロスプラットフォーム開発ツールです。
ReactNativeを使えばプラットフォーム間のViewの共通化やReactのエコシステムの恩恵を受けれるとともに、本格的なリアルタイム音声配信サービスアプリを構築することが可能です。また、ReactNativeで音声の録音や配信、WebRTCなどの機能を実装するには、ネイティブモジュールと呼ばれるネイティブ側の機能を実装する必要がありますが、AndroidにおいてはKotlinやCoroutinesなどのモダンな技術を利用することで開発の生産性を高めることができます。
このセッションでは、「stand.fm」という音声配信アプリの実例をもとにReactNativeでのKotlinの導入方法やリアルタイム音声配信の実現方法などを紹介します。

アジェンダとしては仮ですが下記を予定しています。
・ReactNativeでのネイティブモジュールの開発方法
・ReactNativeでKotlin、Kotlin Coroutineを導入する
・ReactNativeで音声の録音を実現する
・ReactNativeでRTMPを用いた音声配信を実現する
・ReactNativeでWebRTC音声の配信を実現する
・ReactNativeやFlutterなどのクロスプラットフォーム開発に興味がある方
・ReactNativeのネイティブモジュールの開発に興味がある方
・リアルタイム音声配信サービスを開発したいと考えている方
・WebRTCを用いたサービスを開発したいと考えている方
25minutes日本語クロスプラットフォーム (Cross-platform Development)Yu Mitsuhori
90
職能/職種横断でチームの生産性を高める皆さんのチームでは、優先度が高いストーリー順に実装に取りかかれているでしょうか?弊社Timersではかつて、「ネイティブエンジニアが優先度の高いストーリーに取り組もうと思ったものの、サーバ側の先行タスクが終わらないと実装に入れない状況で、仕方なく優先度の低いストーリーを掴む」ということが発生しました。「これではチームとしてのスピードが落ちてしまう」という危機感から、約1年前、職能/職種横断の取り組みが始まりました。具体的には
・社内合宿でAndroid、iOS、サーバサイド、フロントエンドの簡易カリキュラムを作り、普段と異なる領域に触れる
・普段の開発の中でペアプロをする
・Slackにモブワーク告知チャンネルがあり、自由に告知、参加ができる
などを実施してきました。この横断的な取り組みはエンジニア間のみならず、デザイナーやPM陣と行うこともあります。

本セッションでは、弊社の職能/職種横断活動について以下のアジェンダに沿って紹介していこうと思います。
・きっかけ
・具体的な取り組み例
・得られた効果
・これからの展望
社内のチームを職能/職種横断的にしたい人
職能/職種横断のメリットについて知りたい人
チーム開発について興味がある人
25minutes日本語開発体制 (Development Process)akatsuki174
91
実践 モバイルアプリのトランクベース開発DevOpsの分野で最近注目を浴びている、トランクベース開発について紹介します。

従来のGitを使った開発では、新機能ごとにブランチを切って開発を進め、リリース前にコードをマージし、テスト、バグの修正等を行うことが一般的でした。
複数の新機能がある場合、その数だけブランチが増え、管理や各々のブランチを最新の状態に保つには想像以上のコストがかかってきます。
広範囲に渡ってコンフリクトが発生し、修正に時間がかかった経験は、どなたもあるのではないでしょうか。

新たに提唱されているトランクベース開発では、トランクと呼ばれるメインのブランチに多くの変更を取り入れていきます。変更は常に小さく保たれるので、コンフリクトの修正に時間を取られることは、ほとんどありません。

トランクベース開発を採用するためには、いくつかの工夫が必要です。
未完成のものがユーザに見えてはいけませんし、リリース物はユーザにとって完全に動作する必要があります。
一度リリースしたものがアップデートされない限り使い続けられたり、審査の時間が存在する、モバイルアプリならではの注意点もあります。

このセッションでは、トランクベース開発の目的や内容を、実際に採用して気づいたメリットや注意点とともに紹介します。

- トランクベース開発の目的
- トランクベース開発の方法
- トランクベース開発を円滑に回すために
- Feature Flagsの導入方法
- 実際の導入例と効果について
複雑・広範囲なコンフリクト解消に困っている人
アプリ開発のスピードを上げたい人
トランクベース開発を試したい人
25minutes日本語開発体制 (Development Process)Mori Atsushi
92
もっとKotlin Coroutines - Lifecycle/ViewModelと組み合わせて効果的に使う -非同期処理を強力に支援してくれるKotlin CoroutinesはAndroidアプリ開発において、もはや欠かせないものとなりました。
一度のみ値を返されるsuspend functionだけでなく、複数の値を非同期出力できるFlowやChannelといったツールも充実し、表現力が向上しました。
多くのライブラリがCoroutinesをサポートし、その使いやすさと重要性は年々増しています。

一方で、Coroutinesを安全かつ効果的に利用するためには、いくつか注意する点があります。
特にAndroidのLifecycleやViewModelは、それぞれの生存期間が異なるというAndroid特有の難しさがあり、Coroutinesと組み合わせたときに不必要にデバイスリソースを消費したり、予期せぬ動きをしたりすることがあります。
このセッションでは、上記のようなCoroutinesと組み合わせる際に気をつけるべきケースや、その対策方法について紹介します。

- Activity/FragmentでCoroutines Flowを安全に利用する(launchWhenXXとrepeatOnLifecycleの違い)
- onStartからonStopの間だけ動作させる
- FragmentのlifecycleScopeについて
- ViewModelからViewにイベントを送る
既にKotlin Coroutinesを使ってアプリケーション開発している人
もっと効果的にKotlin Coroutinesを使いたいと思っている人
25minutes日本語KotlinMori Atsushi
93
Jetpack Composeで画面遷移を実現する方法このセッションでは、Jetpack Composeにおける画面遷移の基本的な実装方法について紹介します。

Jetpack Composeの登場は新たなAndroidの時代の幕開けとも言えるでしょう。
同時に、様々なUI要素について改めて見直す機会でもあります。

画面遷移もその1つです。
あまり特別視されることのない画面遷移ですが、その構成要素は多く、複雑です。
Jetpack Composeでは、公式にNavigationライブラリ(navigation-compose)が用意されており、比較的容易に画面遷移を実現することが出来ます。

一方で、Navigationライブラリで用意されている機能が十分でないと感じたり、逆に用意されている多くの機能を必要としていない場合、画面遷移を自作することを検討しても良いでしょう。
Navigationライブラリを使う場合であっても、画面遷移の基本的な仕組みについて理解することは重要だと考えています。

- 基本の画面遷移
- スクロール位置を保持する
- バックスタックを実現する
- 画面回転に対応する
- 遷移時のアニメーションを実装する
- LifecycleやViewModelに対応するには?
Jetpack Composeにこれから取り組む人
Jetpack Composeの様々な機能について知りたい人
Jetpack Composeで画面遷移について知りたい人/困っている人
25minutes日本語アプリアーキテクチャ (Designing App Architecture)Mori Atsushi
94
「マイナス」から始めるAndroidアプリのCI/CDここに、とあるAndroidアプリ開発のプロジェクトがあります。
このプロジェクトは、実装からリリースのサイクルをとにかく早く進めることを優先してきたプロジェクトで、そのためリリースから数年たった頃には、

・テストコードは書いてあるものの一度も動いていない、というか誰も動かし方を知らない
・テスターが自らテスト環境を整えることができず、開発者が不在の場合はテストを進められない
・リリース作業は当然手動。作業手順を知っているのはひとりだけ

といった有様になるまで負債が積みあがってしまいました。
今回はそのようなプロジェクトを、「CI/CD」による自動化で解決しようとするまでのあれこれについてお話しします。

目次(予定)
- プロジェクトが秘伝のタレと化すまで
- CI/CDとは何か?
- 何ができるのか?何ができないのか?
- ツールの選定
- CI/CDのワークフローの作成
- 静的解析・ユニットテストの自動化
- 検証用・リリース用ビルド・デプロイの効率化
- リリース作業の属人化の解消
- 実プロジェクトへ適用する段階で抱えた課題とその対策
- 社内チャットへの通知ができない
- 社内検証環境へのテスト配信ができない
- 現在の運用の流れ
全体的に初心者向けの内容を想定しています。
-CI/CDとはなにか知りたい方
-Android開発プロジェクトにCI/CDの導入を検討されている方
-開発からテスト・リリースまでにCI/CDによる自動化をどう組み込むべきかを知りたい方
25minutes日本語保守・運用・テスト (Maintenance, Operations and Testing)rs_tukki
95
Activityをつくろうこれからの Android アプリ開発は Jetpack Compose を用いたものにデファクトは移っていくでしょう。一方で、 従来から Android開発のベースとなっていた Activity には現在でもよりよいものへと改善するべく、新規に機能が追加されています。Fragment や Compose を乗せるための土台としての役割でのみしか使っていない私達も、その実装の詳細を知ることで挙動の解像度が大きく変わります。私達が意識しない裏側で一体何が起きているのでしょうか?

本セッションでは、実際に Activity を模倣した挙動をする MyActivity を作成することでその実装の詳細に踏み込みます。特に2020年に追加された ActivityResultContract の管理や savedInstanceState の管理など、状態の保持・復元を行う androidx.activity.ComponentActivity および、Fragmentに関連する補助関数を提供する androidx.fragment.app.FragmentActivity について深堀ります。
- Activityの実装を知りたい人
- Activityを使用中の挙動について興味がある人
25minutes日本語Android FrameworkKazuki Chigita
96
Architecting a Kotlin Multiplatform AppKotlin Multiplatform Projects are quickly becoming a popular new way to reuse code between multiple platforms by focusing on sharing the logical code and still writing platform specific needs natively. In the talk , I will focus on :
Basic concepts behind the Kotlin Multi Platform architecture
Different modules including platform and common
Expect & actual mechanism
Getting started with a Kotlin MP project
How to make asynchronous API calls with coroutines & Ktor
Will go into details with a demonstration of a sample app that I wrote to experiment with Kotlin Multiplatform. I hope in the end, you will walk away with more clarity , confidence and excitement to play with this useful code sharing platform.
Mobile App Developers25minutesEnglishクロスプラットフォーム (Cross-platform Development)Divya Jain
97
Clean Architecture with Jetpack ComposeJetpack compose brings about the declarative way of building UI, which means you describe what it should look like and the toolkit will build it for you. But for building efficient & user-friendly mobile apps, it’s still absolutely necessary to incorporate the separation of concerns principle. A clean architected app not only allows for developer sanity but also ensures the app is scalable & easily testable.

This talk dives into how some of the common architecture patterns in Android like MVI, MVP, or MVVM can be transferred into the compose paradigm. At the end of it, you’ll walk away on how to best abstract logic from the compose UI to build clean testable apps, with a demo app.
Developers with Basic Android Knowledge atleast.25minutesEnglishJetpackDivya Jain
98
DroidKaigiカンファレンスアプリの歴史からみるアプリアーキテクチャのこれまでとこれから2016年から2021年にかけて、DroidKaigiではカンファレンスアプリが作成されてきました。各年、カンファレンスのセッション情報を閲覧できるAndroid(iOS)アプリとして、時の Android エンジニアがその時代の最先端の技術を駆使して設計・実装を進めたものです。そこにはたくさんの知見やベストプラクティスが散りばめられています。また、時代を先取りした技術選定にも例年注目が集まっています。

2016年のアプリはJavaで記述され、rx1系をメインとするデータフローの制御、Android Support Librariesを用いたUI構築を行っていました。最新の2021年のアプリでは、Kotlinで記述され、Kotlin coroutines を多く活用、マルチモジュール構成、Kotlin Multiplatformを活用した iOS アプリとのロジック共通化、JetpackComposeによるUI記述と、大きくトレンドは変化しています。
また、アプリアーキテクチャも回を重ねるごとにMVC、MVVM、Flux、MVI等と変化しています。

例年、カンファレンスセッション情報閲覧アプリとして作成されてきたため、提供される機能に大きな差はありません。そのため当時主流のアーキテクチャや設計ルール等はどのような時流で構築され、現在ではどのような技術に代替されたのかを知る事ができる良き題材と言えます。

アーキテクチャ変遷の歴史を知ることは、実務においても大きく役立ちます。特に息の長いアプリの開発を行っているときには、1. 古くから触られてきたクラスであり、手つかずである 2. deprecatedなメソッドを多用しているが適切な改修方法が不明瞭である といった歴史的背景という言葉で片付けられがちな課題に当たることも経験上多いです。
当時どのような背景のもと技術選定・アーキテクチャ選定が行われたのか、そしてその後の歴史を知ることで、違和感や課題に向き合い、現代風の適切なリファクタリングを行う道標を得ることができます。

本セッションでは、簡単に各年の実装を比較した後に、セッション情報取得・表示という機能に絞ってその実装方法の差分について紹介します。また、これからの Jetpack Compose や KMM 中心の未来のデファクトアプリ開発へ対応するためのヒントをカンファレンスアプリの実装から探っていきます。

予定アジェンダ
- DroidKaigiカンファレンスアプリ概要
- 各年の技術スタック・アーキテクチャの概要比較
- 技術の変遷について1 : rx -> coroutines / flow
- 技術の変遷について2 : xml layout -> Jetpack Compose
- 技術の変遷について3 : 状態保持
- 技術の変遷について4 : MVC -> MVVM -> MVI
- アプリアーキテクチャのこれから : 宣言的UIとマルチプラットフォームへの対応
- TBD
- 手つかずの古いコードをリファクタリングする道標を知りたい人
- アプリアーキテクチャの変遷を実例ベースで知りたい人
- これからの時代のモバイルアプリ開発のアプリアーキテクチャに興味がある人
25minutes日本語アプリアーキテクチャ (Designing App Architecture)Kazuki Chigita
99
Jetpack Composeと状態アプリにおいて状態を管理しイベントに応じて更新していくことは大切なことです。
ここでの状態とは、ローディング中を表すフラグや入力中の文字列、アプリに表示されているコンテンツなどの時間ともに変化する可能性のある値全てを指します。

今までのAndroidアプリ開発ではアプリの状態を処理しつつ、XMLを使って描写したViewが持つ状態をアプリの状態に合わせて更新していくような方法が主に取られていました。
この方法はViewとアプリとの状態の不整合が起きやすかったり大量のViewの状態管理の複雑にりやすかったりということが問題としてありました。

Jetpack ComposeはKotlinで構築され宣言型UIツールキットとなっています。
そのため今まで主に利用されていた状態の更新方法とは違い、状態をどこでどのように利用するかといった処理が容易に行えます。

Jetpack Composeにおいてアプリの状態をどのように画面に描画させ、イベントに応じた状態更新をどのように行うのかについて話を行います。

関連キーワード
Jetpack Compose、コンポジション、コンポジションツリー、再コンポーズ、状態ホイスティング
Jetpack Composeを始めようとしている方
Jetpack Composeを始めたばかりの方
Jetpack Composeの状態管理に興味がある方
25minutes日本語Jetpackmitohato14
100
AndroidのOSアップデートの普及がなぜ遅いのかを理解するAndroidはiOSと比較して最新のOSバージョンを使用しているユーザーの割合が少なく、いつまでも古いOSバージョンをサポートしなくてはならないと感じている方は多いのではないでしょうか。このセッションでは、なぜAndroidのOSアップデートの普及が遅いのかを、OSがオープンソースとして公開されてからユーザーに届くまでの一連の流れを通して紹介します。加えて、少しでも早くOSアップデートをユーザーに届けるためのGoogleの取り組みを、TrebleとMainlineという二つのプロジェクトを通して概観するとともに、Android12で追加されたアップデートも紹介します。「なんでAndroidはiOSと比較して最新のOSバージョンを使用しているユーザーの割合が少ないの?」と疑問に感じている方、あるいは社内のステークホルダーに説明できるようになりたい方。25minutes日本語Androidプラットフォーム (Android Platform)Nichi