DroidKaigi 2023 Day2 セッション感想
Day1 はこちらにまとめています
11:00~ Kotlinハイパフォーマンスプログラミング
Kotlin(JVM)は遅いみたいなのは、ART時代の産物ぽいよねと確かに改めて思いました。 キャッシュヒットまで考えたカリカリチューニングはしたことがないので、勉強になりました。
syntax sugar がインスタンスを使い捨てているのはなるほどになりました。
11:00~ ビジネス向けアプリを開発するときに知っておくべきAndroid Enterpriseの世界
Android Enterprise は開発者としては全く取り扱ったことがないので、概念から勉強になりました。
11:00~ Compose の Text Field を理解する
TextFieldはだいぶ良くなってるなあという印象を受けました。また、発表の途中でAndroidStudioを使いながら説明していて、非常にわかりやすかったです。
11:00~ A small leak can sink a great ship
タイトルが良い。スライドか動画の公開楽しみです (未視聴)
11:00~ MVIに基づくStateMachineアーキテクチャ:KMMとJetpack ComposeとSwiftUIを組み合わせる
MVIの例のコードもかなりわかりやすかったです。また、SwiftUI側でも同じように記述できるのが体感できました。個人的にはKMPでも UI 部分は それぞれで実装したほうがいいと考えているので、自分の思考にちかいものがまとめられていて嬉しかった(?)です。
12:00~ Flutterにおけるアプリ内課金実装 -Android/iOS 完全なる統一-
アプリ内課金という一番プラットフォーム固有の面倒なコード部分を統一できるのは非常に魅力的だなぁと思いました。
StoreKit2 にもきっちり追従してくれると、本当により良いなと思いました。
12:00~ Androidの『音』を制御する
音に関連するものが網羅的にまとめられており良かったです。端末差異について後半まとめられており、こういうのは調査が鬼大変なので大変参考にになると思いました。
というか、ここGoogle側でベンダーに何かしらルールやスペックみたいなものを定義できないのだろうか(もしくは定義しているが無視されている?)
12:00~ 共有
カスタムのshare sheetやめませんか?については、仰ることはわかりますになりました。custom actionがまだ API Level 34なので、完全に対応できるのはまだまだ先になりそうだなぁと思いました。
12:00~ GPIOの制御を通してAndroidがハードを制御する仕組みを学ぶ
最初にタイトルを見たときにはHALまで書くのかと思ったのですが、流石にそこまではしていなかったので安心(?)しました。
特権ユーザで頑張るための過程が書かれていて追試しやすいまとめ資料になっていて良かったです。
14:00~ Androidアプリの良いユニットテストを考える
テストダブルは意外にメンテナンスが大事話が刺さりました。Androidフレームワークに依存している箇所のテストはコードレビューの中でもよく議論になるので、一つの指標として、この資料を参考にしたいと思います。
14:00~ パフォーマンス管理ツールの活用: Firebase Performance MonitoringとMacrobenchmarkを駆使してJetpack Composeを導入するまで
Composeを導入するまでの道のりが書かれていてよかったです。一度計測できる環境(+ baseline)があれば、その後の改善も楽になりそうだと感じました。Composeでパフォーマンスが落ちた部分は、production buildではある程度改善されそうという予感もしました。
14:00~ Jetpack Composeを活用した強力なUI表現の実装実例
技巧的コードは誰にも触れなくなりがちなので、負債にならないように扱うには?という視点の話もあり良かったです。また、AGSLの話にまで最後は触れられていて、この技術は私も気になっているので参考になりました。
これは完全に余談ですが、背景が青で白文字だったので、ブルースクリーンのようでドキドキしました。
14:00~ Introduction to Bytecode Instrumentation with AGP 8
Bytecode Instrumentation 大好きなので、早く資料を見たいです (未視聴)
15:00~ What's new (?) in Android Text
近年のアップデートとその裏側について詳細に書かれており、勉強になりました。ただ、資料だけだと詳細が分からなかったので、動画が公開されたら再度見たいと思います。
15:00~ Jetpack Compose で Android/iOSアプリを作る
KMPで完全に共通化するにはまだまだ外部ライブラリに依存する必要があるのが実感しました。commonMainの Preview 問題はまじで早く解決してほしい....
15:00~ 様々なユースケースに利用できる "パスキー" の導入事例の紹介とUXの課題解説
Passkeyのネイティブでの実装方法についてまとめられていました。Web integrationの方法しか知らなかったので、nativeでもいけるのかと驚きました。
15:00~ Jetpack Benchmark and where to find them
benchmark系の話は何度でも聞きたいので、楽しみです(未視聴)
16:00~ 中規模アプリにおけるレイヤードアーキテクチャでの例外との向き合い方
レイヤードアーキテクチャに置いて、例外含め、エラーとどう向き合うかについてわかりやすくまとまっていました。ビジネス例外やシステム例外としてまとめたり、レイヤーごとにrethrowしたり、モデルとしてresultで返したり、様々アプローチがあることを再認識できました。
16:00~ Jetpack Compose の Side-effect を使いこなす
基本的には既知の内容がほとんどでしたが、produceState
については知らなかったので、ほえ〜となりました。
16:00~ Building a screenshot testing pipeline that scales
ライブでチラ見しただけだったけど、動画か資料が公開されたら感想を書きます (未視聴)
16:00~ 突撃!隣のコードレビュー
チームのボトルネックがコードレビュー待ちになるのはもったいないので、コードレビューの集中時間を作る取り組みはいいなと思いました。
コードレビューは reviewer も reviewee も準備が必要だと個人的には思っていたのですが、そのことにも触れられていてすごく良かったです。
Android特有のレビューtipsはもっと色々ある気がするので、来年は登壇しますか(?)
17:00~ できる!アクセシビリティ向上
talkback の優先度決めのフローが非常に参考になりました。ここでもNIKKEIさんの施策の進め方のうまさが出てるなぁと感じました。本当にすごい会社だ...
17:00~ Our ongoing journey from REST to GraphQL on Android
apollo Client を使った GraphQL の向き合い方や様々なユースケースでの実装方法について触れられており良かったです。
17:00~ Material 3 やめました
タイトルからずっと気になっていたセッション。実際に取り組んで見えてきたpain point はこれからM3を入れるかを悩む人にはかなり参考になると思いました。brand colorとのうまい落とし所は Google 側もなにか考えているのかなぁと気になりました。
DroidKaigi 2023 Day1 セッション感想
はじめに
現時点でアップロードされているセッションをすべて見たので感想です。オンラインで参加しており、直接スピーカーの方にフィードバックできないので、せめて感想だけでも... 動画として上がっているのは動画を、それ以外はスライドを見ました。どれも非常に面白かったので、明日(day2)も楽しみです。
11:20~ これで安心! Compose 時代のDon’t keep activities対応
Don't keep activities で壊れるアプリは地味にあるので、やはり気になるわね。(未視聴)
11:20~ Gradle Convention Plugins
よくよく考えると、なぜ plugin にしなきゃいけないのかいまいち旨味がわかっておらず、shared gradle fileやmaven repositoryにpublishでええやんという先入観があったので、それを解消する意味でも導入が非常に良かったです。
convention plugin がどういうケースで有効に働くのか、どう書いていくといいのかがわかりました。(gradleはなんとなくでしか update 追ってないのでちゃんと知ろうと思いました)
11:20~ Modifier.Node を使いましょう
後半の書き換え tips が非常に勉強になりました。また、p. 104 の Modifier.Node
への置き換え事例をまとめたスライドも良かったです。
Modifier.Node
は一体いつから入ったけなー発表を聞いた後に調べたらなんと、Compose 1.3.0 辺りらしかった。
本題とは関係ないのですが、配信は本番一発勝負なので問題が起きた時に、機材の担当者や発表者、聴講者含めてみんな焦りますよね。その中で、冷静に対処して続きを始めていたので、すごいなと思いました。
11:20~ Deep dive into size configuration changes
Foldable なデバイスの window size とかは configuration change に飛んでくると思うので、気になるセッション (未視聴)
11:20~ Android Open-source repositories 101: Everything you always wanted to know
AOSP を読むのは絶妙に難しいので、気になるセッション (未視聴)
13:20~ Unleashing the Power of Android Studio
canary の変更ばかりよく追っているので、これって今stableになったんだ(まだ stable じゃないんかい)の知見がたくさんあった。こうやってまとめてみると結構差分が多いなぁというお気持ちになりました。
13:20~ よく見るあのUIをJetpack Composeで実装する方法〇選
こういう細かな知見をもっとためて、迅速にUIを実装できるようにしたいと思いました。
いったい sticky header はいつになったら experimental が外れるんだとまた思いました。
13:20~ Supercharging Android Testing: Scalable Environments for Large Teams on Diverse Devices & Features
WhatsAppでの事例になるのかな... 気になる (未視聴)
13:20~ 作って学ぶadbプロトコル
かなり面白いものでした。はじめに基本的な登場人物の概念について説明した後に、ls
コマンドと、デバイスにメッセージを送る部分を実装していて興味深かったです。
14:20~ Securing Android Applications - The not so secret guide explained
そもそも、こんなページが用意されていることも知らなかった。
R8をちゃんと使ったり、正しくAPIを使っていれば大丈夫なはずみたいなのも多いけど今一度、本当に「正しく」使えているかは確認したほうがいいなと思いました。
14:20~ Push 通知許諾率向上のアプローチ
攻め (通知をonにさせる) と 守り (通知をoffにさせない) の部分についてそれぞれどう取り組まれたのか、かなり具体的な数値とともに記載されていて参考になりました。NIKKEI さんの施策への取り組み方かなり素敵だなと例年話を聞いていて思います。
14:20~ (Unofficial) Guide to App Architecture Guide Vol. 2
去年のVol.1 は面白かったので、Vol.2 も期待 (未視聴)
14:20~ iOSとAndroidで定期購入の意図しない解約を防ぐ
タイトルを見たときから、どういう意味だろうと疑問に思っていましたがスライドを見て納得しました。最近はこういった課金周りの実装を大真面目にやったことがなかったので、そもそもGrace Period なるものがあることや、カスタムの in app message を出すための実装などが参考になりました。
15:20~ モニタリングでパフォーマンス改善入門
非常に良かったです。実は私も似たようなテーマでCfSを出していたので、こういった話を伝えたかったですw
AndroidStudioのprofilerは主に操作性に難がある所も多いので、perfettoのUIを自分も推します。
15:20~ YouTubeへのライブ配信機能をリリースするまで
Google Verification に4-6 週かかるのまじかとなりました。また、それにたいしてなにを事前準備できるかの部分は非常に参考になりました。
15:20~ Android boot verification to ensure integrity of OS and partitions.
Boot verification の話を始める前に、Bootってなんですか?どういうステップで進みますか?みたいな初心者むけのところから始まっていて大変勉強になりました。
15:20~ Host-based card emulationで簡単NFC生活
APDUのエンコーダ・デコーダはAndroidプラットフォームにAPIが用意されていないというのを見て、やはりそうなのか...になった。
このへんの実装は気になるので、ここを後でちゃんと見てみようと思います。
16:20~ Maintaining E2E Test Automation as We Transition from View to Compose
これはかなり良かったです。
Mercariの話おもろかった👏ああいいう中間レイヤーを噛ますことで実装だけでなくE2Eテストをスイッチして品質保証するのは良い手法だなと素直に思った #DroidKaigi
— chigichan24 (@chigichan24) September 14, 2023
こういうmigurationの正当性を担保する類の話は、どの out 部分をどういう方法でテストするのかが大事だと思っていて (例えば、単一のクラスなら public method の unit test、もう少し大きなコンポーネントならE2E test、手によるテストなど)、それを今回は automatic になるべくやる方法をうまく実現しているなぁと思いました。
16:20~ Master of NestedScroll
いろんなケースについて、詳細にコードを例示しながら説明されていて非常にわかりやすかったです。何か問題に直面した時にまた、ちゃんと見てみたい。
協力的な親View は大事w
16:20~ Overcoming the Challenges of Integrating an Epub Viewer into a Modern Android App
いわゆる、アーキテクチャガイドに掲載されている形式にするための、解釈のしかたと、実際にAndroidViewをラップして compose でやっていく上での注意点みたいな部分が勉強になりました。EPUBに限らず、使える tips だと感じました。これは、似たようなことをやる機会が来たタイミングで読み直したい。
16:20~ Jetpack GlanceではじめるMaterial3のColor
M3の課題部分が非常に興味深かったです。個人で作るような適当な(?)アプリでは、雑に導入できますが、やはり「画面全体を使うアプリでユーザーのカスタマイズを反映することが体験の向上につながるかは検討が必要」という部分は慎重な議論が本当に必要だと思いました。
DroidKaigi2022に参加しました
久しぶりのオフラインDroidKaigi
久しぶりのDroidKaigiオフラインでした。非常に楽しみにしてました。
思えば、初めてDroidKaigiに参加したのは、DroidKaigi2018でした。当時はコロナのコの字もなく、非常に楽しく会場でワイワイしていた記憶があります。
そして、今思えば若気の至りで、色んな人に突撃してお話を聞いていたなぁと懐かしく思います。
2019は卒業研究の発表と日程がかぶり、泣く泣く行くのをやめました。
そして、DroidKaigi2020 は当時は大学院生でしたが、インターンシップなどの成果をいい感じにまとめられ、その内容で運良く DroidKaigi で登壇する予定でした(継続的に機能開発を進めながら行うマルチモジュール化)。
しかし、ちょうど新型コロナウイルスが盛り上がりを見せてしまい、中止となってしまいました。
chigichan24.hatenablog.com
droidkaigi.jp
speakerdeck.com
DroidKaigi2021 は完全オンラインで開催され、新しいカタチでのワイワイを見つけられました。この回も運良くCfSが採択され、DroidKaigiアプリのアーキテクチャ変遷について話すことができました(DroidKaigiカンファレンスアプリの歴史からみるアプリアーキテクチャのこれまでとこれから)。
DroidKaigi 2022 当日まで
今年も何か話したいなぁと思っていて、いくつかアイデアがあったのですが、ちょうどGW頃に、「いっちょAOSPでもビルドしてみっか〜」とビルドだけとりあえずしてみたことがありました。また、別の側面として、AOSPのコードってCode Searchをつかってちょいちょい読むよなぁという経験もありました。
そのへんの話をまとめて「Android "を" ビルドしてAndroid Systemを覗いてみよう」という話をすることにしました。
無事に採択が決まった後は、あらためて細かい部分を調査しながら資料を作成しました。去年と同様にホテルに引きこもって細部を詰めました。
ホテルに泊まりましたが、結局日中はコワーキングスペースで圧倒的進捗を出していたので、来年も資料作成する機会がある場合はホテルシステムはやめようと思いましたw
DroidKaigi 2022
自分の発表関連の感想
DroidKaigi 2018 のときの記事にSpeakerのとこに並びたいと書いていましたが、無事にフラグ回収できました。
AppBarsの部屋が思ったよりでかくて、発表まではなんだか落ち着かない感じがしましたが、いざ舞台に立ったら「よし話すか〜」という普段の雑談と変わらないメンタルになったので良かったです。
反省点は、通訳の人のためにもう少しちゃんとしたスクリプトを用意しておきたかった、ゆっくり話すべきだった、聞いている人を引き込むような機転の効いたアドリブをいれたかった、AOSPのビルドを試せるサンプルとかを用意したかった、実機にカスタムビルド版をいれて用意しておきたかった 等あります。
他の方の発表の感想
ブースの手伝いなどあってちょくちょくしかセッションを見れてませんでしたが、感想を書いていこうと思います。
詳解Google Playの新しい定期購入 ~オファーの活用や実装例を添えて~
PBLv5 に移行していく上でのツラミ、特に自動移行の話が心に残りました。というか、PBLは頻繁にメジャーバージョン上がるな....
The world of Android wireless communications without Internet
BLE、WiFi Direct の話などがコードと一緒に話されていてわかりやすかったです。
The world of Android wireless communications without Internet | DroidKaigi 2022
アプリエンジニアとQAチームがデバッグ機能の改善に取り組むぞ!
エンジニアがデバッグ機能を好き勝手作っちゃってQAから怒られる流れ....となりました。改善のイテレーションを回したときにどうなるのかの話がまた聞きたいなぁと思いました。
実例から学ぶJetpack Composeのパフォーマンス改善
全体的にスライドがわかりやすかったです。Flamingo での機能も積極的に使いたいと思いました。
実践 `edge-to-edge`: 端から端まで解説
edge to edge やっていこう!になりました。
The art of hiding sensitive info in plain sight
offense / defence の両面からAndroidアプリのデータをどうやって扱っていくのいいのかが述べられていてよかったです。
The art of hiding sensitive info in plain sight | DroidKaigi 2022
Molecule: Using Compose for Presentation Logic
Molecule について徹底解説されていて、使ってみようになりました。また、スライドがすごい綺麗でした。
Molecule: Using Compose for Presentation Logic | DroidKaigi 2022
ブースのお手伝い
これはまた、どこかで話そうと思います。
まとめ
オフラインだったので、直接会話して、交流できたのが非常に良かったです。ブースに居るエンジニアの方と話せて、いろんな企業の話がきけてよかった。至るところに知人がいて、「おぉ、やっほ〜。久しぶり〜。オフラインでははじめまして!!」となるのは面白かったです。
来年もまた機会があれば登壇できるように色々ネタを温めたいと思います。もうそろそろ、お仕事での話とかをしたい。。。
また、スタッフの方々がいろんな方面でDroidKaigiを支えてくれていて、一参加者としては、安心して参加できました。ありがとうございます。