chigichan24のお気持ち表明

おきもちを表明している

DroidKaigi 2023 Day2 セッション感想

Day1 はこちらにまとめています

chigichan24.hatenablog.com

11:00~ Kotlinハイパフォーマンスプログラミング

speakerdeck.com

Kotlin(JVM)は遅いみたいなのは、ART時代の産物ぽいよねと確かに改めて思いました。 キャッシュヒットまで考えたカリカリチューニングはしたことがないので、勉強になりました。

syntax sugar がインスタンスを使い捨てているのはなるほどになりました。

11:00~ ビジネス向けアプリを開発するときに知っておくべきAndroid Enterpriseの世界

speakerdeck.com

Android Enterprise は開発者としては全く取り扱ったことがないので、概念から勉強になりました。

11:00~ Compose の Text Field を理解する

drive.google.com

TextFieldはだいぶ良くなってるなあという印象を受けました。また、発表の途中でAndroidStudioを使いながら説明していて、非常にわかりやすかったです。

11:00~ A small leak can sink a great ship

タイトルが良い。スライドか動画の公開楽しみです (未視聴)

11:00~ MVIに基づくStateMachineアーキテクチャ:KMMとJetpack ComposeとSwiftUIを組み合わせる

speakerdeck.com

MVIの例のコードもかなりわかりやすかったです。また、SwiftUI側でも同じように記述できるのが体感できました。個人的にはKMPでも UI 部分は それぞれで実装したほうがいいと考えているので、自分の思考にちかいものがまとめられていて嬉しかった(?)です。

12:00~ Flutterにおけるアプリ内課金実装 -Android/iOS 完全なる統一-

speakerdeck.com

アプリ内課金という一番プラットフォーム固有の面倒なコード部分を統一できるのは非常に魅力的だなぁと思いました。

pub.dev

StoreKit2 にもきっちり追従してくれると、本当により良いなと思いました。

12:00~ Androidの『音』を制御する

docs.google.com

音に関連するものが網羅的にまとめられており良かったです。端末差異について後半まとめられており、こういうのは調査が鬼大変なので大変参考にになると思いました。

というか、ここGoogle側でベンダーに何かしらルールやスペックみたいなものを定義できないのだろうか(もしくは定義しているが無視されている?)

12:00~ 共有

docs.google.com

カスタムのshare sheetやめませんか?については、仰ることはわかりますになりました。custom actionがまだ API Level 34なので、完全に対応できるのはまだまだ先になりそうだなぁと思いました。

12:00~ GPIOの制御を通してAndroidがハードを制御する仕組みを学ぶ

https://www.canva.com/design/DAFueiRwYlw/2MoKq_v7-FhA9uW7oRsDgw/view?utm_content=DAFueiRwYlw&utm_campaign=designshare&utm_medium=link&utm_source=viewer

最初にタイトルを見たときにはHALまで書くのかと思ったのですが、流石にそこまではしていなかったので安心(?)しました。

特権ユーザで頑張るための過程が書かれていて追試しやすいまとめ資料になっていて良かったです。

14:00~ Androidアプリの良いユニットテストを考える

speakerdeck.com

テストダブルは意外にメンテナンスが大事話が刺さりました。Androidフレームワークに依存している箇所のテストはコードレビューの中でもよく議論になるので、一つの指標として、この資料を参考にしたいと思います。

14:00~ パフォーマンス管理ツールの活用: Firebase Performance MonitoringとMacrobenchmarkを駆使してJetpack Composeを導入するまで

speakerdeck.com

Composeを導入するまでの道のりが書かれていてよかったです。一度計測できる環境(+ baseline)があれば、その後の改善も楽になりそうだと感じました。Composeでパフォーマンスが落ちた部分は、production buildではある程度改善されそうという予感もしました。

14:00~ Jetpack Composeを活用した強力なUI表現の実装実例

speakerdeck.com

技巧的コードは誰にも触れなくなりがちなので、負債にならないように扱うには?という視点の話もあり良かったです。また、AGSLの話にまで最後は触れられていて、この技術は私も気になっているので参考になりました。

これは完全に余談ですが、背景が青で白文字だったので、ブルースクリーンのようでドキドキしました。

14:00~ Introduction to Bytecode Instrumentation with AGP 8

Bytecode Instrumentation 大好きなので、早く資料を見たいです (未視聴)

15:00~ What's new (?) in Android Text

docs.google.com

近年のアップデートとその裏側について詳細に書かれており、勉強になりました。ただ、資料だけだと詳細が分からなかったので、動画が公開されたら再度見たいと思います。

15:00~ Jetpack Compose で Android/iOSアプリを作る

speakerdeck.com

KMPで完全に共通化するにはまだまだ外部ライブラリに依存する必要があるのが実感しました。commonMainの Preview 問題はまじで早く解決してほしい....

15:00~ 様々なユースケースに利用できる "パスキー" の導入事例の紹介とUXの課題解説

speakerdeck.com

zenn.dev

Passkeyのネイティブでの実装方法についてまとめられていました。Web integrationの方法しか知らなかったので、nativeでもいけるのかと驚きました。

15:00~ Jetpack Benchmark and where to find them

benchmark系の話は何度でも聞きたいので、楽しみです(未視聴)

16:00~ 中規模アプリにおけるレイヤードアーキテクチャでの例外との向き合い方

speakerdeck.com

レイヤードアーキテクチャに置いて、例外含め、エラーとどう向き合うかについてわかりやすくまとまっていました。ビジネス例外やシステム例外としてまとめたり、レイヤーごとにrethrowしたり、モデルとしてresultで返したり、様々アプローチがあることを再認識できました。

16:00~ Jetpack Compose の Side-effect を使いこなす

speakerdeck.com

基本的には既知の内容がほとんどでしたが、produceState については知らなかったので、ほえ〜となりました。

16:00~ Building a screenshot testing pipeline that scales

ライブでチラ見しただけだったけど、動画か資料が公開されたら感想を書きます (未視聴)

16:00~ 突撃!隣のコードレビュー

speakerdeck.com

チームのボトルネックがコードレビュー待ちになるのはもったいないので、コードレビューの集中時間を作る取り組みはいいなと思いました。

コードレビューは reviewer も reviewee も準備が必要だと個人的には思っていたのですが、そのことにも触れられていてすごく良かったです。

Android特有のレビューtipsはもっと色々ある気がするので、来年は登壇しますか(?)

17:00~ できる!アクセシビリティ向上

speakerdeck.com

talkback の優先度決めのフローが非常に参考になりました。ここでもNIKKEIさんの施策の進め方のうまさが出てるなぁと感じました。本当にすごい会社だ...

17:00~ Our ongoing journey from REST to GraphQL on Android

apollo Client を使った GraphQL の向き合い方や様々なユースケースでの実装方法について触れられており良かったです。

17:00~ Material 3 やめました

speakerdeck.com

タイトルからずっと気になっていたセッション。実際に取り組んで見えてきた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

speakerdeck.com

よくよく考えると、なぜ plugin にしなきゃいけないのかいまいち旨味がわかっておらず、shared gradle fileやmaven repositoryにpublishでええやんという先入観があったので、それを解消する意味でも導入が非常に良かったです。

convention plugin がどういうケースで有効に働くのか、どう書いていくといいのかがわかりました。(gradleはなんとなくでしか update 追ってないのでちゃんと知ろうと思いました)

11:20~ Modifier.Node を使いましょう

speakerdeck.com

後半の書き換え 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

speakerdeck.com

canary の変更ばかりよく追っているので、これって今stableになったんだ(まだ stable じゃないんかい)の知見がたくさんあった。こうやってまとめてみると結構差分が多いなぁというお気持ちになりました。

13:20~ よく見るあのUIをJetpack Composeで実装する方法〇選

[docs.google.com

こういう細かな知見をもっとためて、迅速にUIを実装できるようにしたいと思いました。

いったい sticky header はいつになったら experimental が外れるんだとまた思いました。

13:20~ Supercharging Android Testing: Scalable Environments for Large Teams on Diverse Devices & Features

WhatsAppでの事例になるのかな... 気になる (未視聴)

13:20~ 作って学ぶadbプロトコル

speakerdeck.com

かなり面白いものでした。はじめに基本的な登場人物の概念について説明した後に、ls コマンドと、デバイスにメッセージを送る部分を実装していて興味深かったです。

14:20~ Securing Android Applications - The not so secret guide explained

そもそも、こんなページが用意されていることも知らなかった。

developer.android.com

R8をちゃんと使ったり、正しくAPIを使っていれば大丈夫なはずみたいなのも多いけど今一度、本当に「正しく」使えているかは確認したほうがいいなと思いました。

14:20~ Push 通知許諾率向上のアプローチ

speakerdeck.com

攻め (通知をonにさせる) と 守り (通知をoffにさせない) の部分についてそれぞれどう取り組まれたのか、かなり具体的な数値とともに記載されていて参考になりました。NIKKEI さんの施策への取り組み方かなり素敵だなと例年話を聞いていて思います。

14:20~ (Unofficial) Guide to App Architecture Guide Vol. 2

去年のVol.1 は面白かったので、Vol.2 も期待 (未視聴)

14:20~ iOSAndroidで定期購入の意図しない解約を防ぐ

speakerdeck.com

タイトルを見たときから、どういう意味だろうと疑問に思っていましたがスライドを見て納得しました。最近はこういった課金周りの実装を大真面目にやったことがなかったので、そもそもGrace Period なるものがあることや、カスタムの in app message を出すための実装などが参考になりました。

15:20~ モニタリングでパフォーマンス改善入門

docs.google.com

非常に良かったです。実は私も似たようなテーマでCfSを出していたので、こういった話を伝えたかったですw

AndroidStudioのprofilerは主に操作性に難がある所も多いので、perfettoのUIを自分も推します。

15:20~ YouTubeへのライブ配信機能をリリースするまで

speakerdeck.com

Google Verification に4-6 週かかるのまじかとなりました。また、それにたいしてなにを事前準備できるかの部分は非常に参考になりました。

15:20~ Android boot verification to ensure integrity of OS and partitions.

speakerdeck.com

Boot verification の話を始める前に、Bootってなんですか?どういうステップで進みますか?みたいな初心者むけのところから始まっていて大変勉強になりました。

15:20~ Host-based card emulationで簡単NFC生活

speakerdeck.com

APDUのエンコーダ・デコーダAndroidプラットフォームにAPIが用意されていないというのを見て、やはりそうなのか...になった。

このへんの実装は気になるので、ここを後でちゃんと見てみようと思います。

github.com

16:20~ Maintaining E2E Test Automation as We Transition from View to Compose

speakerdeck.com

これはかなり良かったです。

こういうmigurationの正当性を担保する類の話は、どの out 部分をどういう方法でテストするのかが大事だと思っていて (例えば、単一のクラスなら public method の unit test、もう少し大きなコンポーネントならE2E test、手によるテストなど)、それを今回は automatic になるべくやる方法をうまく実現しているなぁと思いました。

16:20~ Master of NestedScroll

speakerdeck.com

いろんなケースについて、詳細にコードを例示しながら説明されていて非常にわかりやすかったです。何か問題に直面した時にまた、ちゃんと見てみたい。

協力的な親View は大事w

16:20~ Overcoming the Challenges of Integrating an Epub Viewer into a Modern Android App

docs.google.com

いわゆる、アーキテクチャガイドに掲載されている形式にするための、解釈のしかたと、実際にAndroidViewをラップして compose でやっていく上での注意点みたいな部分が勉強になりました。EPUBに限らず、使える tips だと感じました。これは、似たようなことをやる機会が来たタイミングで読み直したい。

16:20~ Jetpack GlanceではじめるMaterial3のColor

speakerdeck.com

M3の課題部分が非常に興味深かったです。個人で作るような適当な(?)アプリでは、雑に導入できますが、やはり「画面全体を使うアプリでユーザーのカスタマイズを反映することが体験の向上につながるかは検討が必要」という部分は慎重な議論が本当に必要だと思いました。

DroidKaigi2022に参加しました

久しぶりのオフラインDroidKaigi

久しぶりのDroidKaigiオフラインでした。非常に楽しみにしてました。

思えば、初めてDroidKaigiに参加したのは、DroidKaigi2018でした。当時はコロナのコの字もなく、非常に楽しく会場でワイワイしていた記憶があります。
そして、今思えば若気の至りで、色んな人に突撃してお話を聞いていたなぁと懐かしく思います。

chigichan24.hatenablog.com

2019は卒業研究の発表と日程がかぶり、泣く泣く行くのをやめました。

そして、DroidKaigi2020 は当時は大学院生でしたが、インターンシップなどの成果をいい感じにまとめられ、その内容で運良く DroidKaigi で登壇する予定でした(継続的に機能開発を進めながら行うマルチモジュール化)。
しかし、ちょうど新型コロナウイルスが盛り上がりを見せてしまい、中止となってしまいました。

chigichan24.hatenablog.com
droidkaigi.jp
speakerdeck.com


DroidKaigi2021 は完全オンラインで開催され、新しいカタチでのワイワイを見つけられました。この回も運良くCfSが採択され、DroidKaigiアプリのアーキテクチャ変遷について話すことができました(DroidKaigiカンファレンスアプリの歴史からみるアプリアーキテクチャのこれまでとこれから)。

droidkaigi.jp
www.youtube.com
speakerdeck.com

DroidKaigi 2022 当日まで

今年も何か話したいなぁと思っていて、いくつかアイデアがあったのですが、ちょうどGW頃に、「いっちょAOSPでもビルドしてみっか〜」とビルドだけとりあえずしてみたことがありました。また、別の側面として、AOSPのコードってCode Searchをつかってちょいちょい読むよなぁという経験もありました。
そのへんの話をまとめて「Android "を" ビルドしてAndroid Systemを覗いてみよう」という話をすることにしました。

無事に採択が決まった後は、あらためて細かい部分を調査しながら資料を作成しました。去年と同様にホテルに引きこもって細部を詰めました。
ホテルに泊まりましたが、結局日中はコワーキングスペースで圧倒的進捗を出していたので、来年も資料作成する機会がある場合はホテルシステムはやめようと思いましたw

DroidKaigi 2022

自分の発表関連の感想

DroidKaigi 2018 のときの記事にSpeakerのとこに並びたいと書いていましたが、無事にフラグ回収できました。

DroidKaigi2018の記事に書いていたフラグ回収

AppBarsの部屋が思ったよりでかくて、発表まではなんだか落ち着かない感じがしましたが、いざ舞台に立ったら「よし話すか〜」という普段の雑談と変わらないメンタルになったので良かったです。

のんきにピースする筆者

反省点は、通訳の人のためにもう少しちゃんとしたスクリプトを用意しておきたかった、ゆっくり話すべきだった、聞いている人を引き込むような機転の効いたアドリブをいれたかった、AOSPのビルドを試せるサンプルとかを用意したかった、実機にカスタムビルド版をいれて用意しておきたかった 等あります。

droidkaigi.jp
speakerdeck.com

他の方の発表の感想

ブースの手伝いなどあってちょくちょくしかセッションを見れてませんでしたが、感想を書いていこうと思います。

詳解Google Playの新しい定期購入 ~オファーの活用や実装例を添えて~

PBLv5 に移行していく上でのツラミ、特に自動移行の話が心に残りました。というか、PBLは頻繁にメジャーバージョン上がるな....

詳解Google Playの新しい定期購入 ~オファーの活用や実装例を添えて~ | DroidKaigi 2022

The world of Android wireless communications without Internet

BLE、WiFi Direct の話などがコードと一緒に話されていてわかりやすかったです。

The world of Android wireless communications without Internet | DroidKaigi 2022

アプリエンジニアとQAチームがデバッグ機能の改善に取り組むぞ!

エンジニアがデバッグ機能を好き勝手作っちゃってQAから怒られる流れ....となりました。改善のイテレーションを回したときにどうなるのかの話がまた聞きたいなぁと思いました。

アプリエンジニアとQAチームがデバッグ機能の改善に取り組むぞ! | DroidKaigi 2022

実例から学ぶJetpack Composeのパフォーマンス改善

全体的にスライドがわかりやすかったです。Flamingo での機能も積極的に使いたいと思いました。

実例から学ぶJetpack Composeのパフォーマンス改善 | DroidKaigi 2022

実践 `edge-to-edge`: 端から端まで解説

edge to edge やっていこう!になりました。

実践 `edge-to-edge`: 端から端まで解説 | DroidKaigi 2022

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を支えてくれていて、一参加者としては、安心して参加できました。ありがとうございます。