DroidKaigi 2022のオフラインに初参加しました
Amaziaで開発者をやっている日向です。
エンジニアが主役のAndroidカンファレンス「DroidKaigi」に全3日参加しましたのでそちらの感想を書きたいと思います。
過去の参加履歴について
オフラインの初参加と書きましたが、自分の過去の参加履歴を挙げていきます。
2020 残り15%のユーザーにリーチするためのAccessibility という内容でスピーカーとして初参加予定でしたが、中止になったので動画の形でセッションを上げています
2021 セッション採択ならず、オンライン一般参加
2022 セッション採択ならず、オフラインの形で一般参加
ですので、Droidkaigiには初めてオフラインの場での参加となっています。
3日間とも参加したのですが、全てにおいて学びがありましたので参加したセッションについて感想をあげていきたいと思います。
DAY 1 10/5
Jetpack Compose で Material Design 3
Material Design 3に関するセッションになります。
自分としては初代Material Designで知識が止まっているので、M2、M3の違いや移行についても触れてもらえて大変ためになるセッションとなりました。
既存のアプリがすぐM3へ移行するのは厳しそうな感じもしましたが、すでにRCが出ているようですので、figmaのツールの使い方を調べつつ活かせていければと思います。
マンガアプリのメモリ改善とメモリ解析方法
Bitmapがメモリ消費の肝であるとして、サーバーからの画像の制限や端末側では遅延ロードなど、すぐに業務に役立ちそうなTIPSの詰まったセッションでした。
多数の端末をサポートするがゆえに起こるメモリリークについて、ログ解析やAndroid Studioのツールの使い方についても大変ためになりました。
Android 8.0がメモリ管理におけるターニングポイントとのことで、できれば対応OSを8.0以上にしたいところです。
AndroidManifest.xmlはその後どうなっているのか?
AndroidManifest.xmlは絶対に触れる部分ですが、それぞれの設定項目について深く知らずに設定していることも多く、そんな設定項目もあるんだ、と思いながら興味深くみていたセッションでした。
個人的にもAndroid apk上で内包されているxmlがどうなっているのかも気になりました。どこかでドキュメントがあればいいんですが。
詳解Google Playの新しい定期購入 ~オファーの活用や実装例を添えて~
Google Play Billing Library v5における定期購入対応と、v4からの移行についてのセッションでした。
実際のライブラリの使い方だけではなく、管理画面で定期購入をどう設定するのか、割引や期間限定無料はどう使い運用していくのかをサービスを想定した説明になっていたので、大変わかりやすいセッションでした。
コルーチンを使って処理の見通しをよくする - リアルタイム放送の品質を向上し、保つために
既存のコードをいかにコルーチンで切り分けるか、どういう単位で切り分けるべきか、実践に即したセッションでした。
アプリのチーム体制が開発チームとQualityチームに分けて分担してユーザー問い合わせに対応しているという点が印象的でした。
Camera Xライブラリの魅力と最新機能を紐解く
Androidでカメラを動かすライブラリ、Camera Xライブラリについてのセッションでした。
個人的にはCamera 2→Camera Xと使っていて、Camera Xは全てのCamera 2の機能を内包していてCamera Xに一本化していいものだと思っていたのですが、Camera 2ではないと使えない機能があるという点は興味深かったです。
今年リリースされたCTS-D (互換性テストスイート)をアプリ開発に活用しよう!
CTSという互換性テストスイートの紹介と、アプリ開発者が参加できるCTS-Dについてのセッションでした。
各種端末ベンダーはCTSというテストに合格しないと端末を世に出せないという仕組みも知らなかったのですが、それに対してアプリ開発者も参画できるということを新たに知りました。
ここから各種カメラやBluetoothなど、端末に強く依存する問題の報告もできるんでしょうか。もっとCTS-Dについて知りたいと思いました。
DAY 2 10/6
アプリ アーキテクチャ ガイドの解説
公式のアプリアーキテクチャガイドに対する補足といった内容でした。Googleの方がアプリアーキテクチャガイドについて直接解説してくれる機会を受けられるのもDroidKaigiの魅力だと感じています。
セッション中では、とにかくドメイン層の設計が重要であることが頻出していました。画面中心思考になると画面の区別を超える対応が難しくなること、データに集中しすぎるとデータスキーマがドメイン/UIまで影響する、という点を触れていて、思い当たる節が色々あるなと感じました。設計については実際のコーヒーメーカーを例にしてわかりやすく説明されていました。
その他、公式ガイドの点では説明されていない点を色々と補完していた内容となっていたので、スライドが公開されたら何度も見直したいセッションです。
アクセシビリティは向上させる物 ~視覚障害当事者の立場で私が目指している理想的な社会~
Androidに標準で備わっているアクセシビリティ機能(読み上げ、点字)に触れつつ、現状の社会でのアクセシビリティ環境について、視覚障害のある当事者のかたが語られていました。
個人的には、アクセシビリティの環境を整えておくのは自分の将来にとっても必要なことに繋がると考えています。アクセシビリティはデジタル化の恩恵が進んできましたがまだまだ役所では書類が必須とのことなので、タイトル通り理想的な社会に進めていけるといいなと感じました。
BLEを使ったアプリを継続的に開発するために
BLE関連のAPIを、コルーチンとFlowを使ってコード整理するセッションとなっています。
BLEは昔からあるAPIで、最新のコードで刷新されることはないと思うので、今回のような最新のコードを活かした用例は大変ためになりました。スライドを参考にしたいと思います。
BLEのService(赤外線、温度センサー)の分け方も勉強になりました。
実践 `edge-to-edge`: 端から端まで解説
上下のステータスバーやナビゲーションのパディングを消すedge-to-edgeについてのセッションになります。
基本的には公式のポリシー通りにedge-to-edgeを実装するのが理想ですが、デザイン上での問題があり、独自のガイドラインを設けての対応を行なっているそうです。M3と同じく、自分のアプリがedge-to-edgeにすんなり適用できないとなるとマンパワーが必要そうと感じました。
ボタンナビゲーションとジェスチャーナビゲーションの区別が普通では出来ないというのも気をつけなければいけない点だと思いました。
2022年の動画再生アプリの作り方
ExoPlayerの使い方からバックグラウンド再生、PiPの対応など、多岐にわたる動画再生のためのエッセンスが詰め込まれた、大変ためになるセッションでした。
直近で動画対応を実装する予定はないですが、スライドを見て押さえておきたいと思います。
人の声を可視化する
こちらは、後で生放送アーカイブより視聴したセッションになります。
Androidには録音にも再生にも多くのAPIが用意されていて混乱した記憶があるので、その辺りもまとめられていて、音に関することを扱うには必聴のセッションでした。
個人的にAndroid開発の歴史は音のレイテンシとともに歩んできたといっても差し支えないので、低レイテンシーな音を扱うOboeにも触れられていたのもとてもありがたいです。
Anatomy of Dynamic color
プログラミングというよりは、Material design 3も含めたDynamic colorの概念や思想についての説明や、色にまつわる計算式などを紹介するセッションでした。
個人的にはMaterial design 3も含めて是非とも取り入れたい機能です。
CameraX × ML Kit でパスポートOCR機能を実装
先ほどのCamera Xに、ML Kitの連携を取り入れた実践的なOCRの実装を説明するセッションでした。
個人的には元々AndroidにあるFaceDetectorと組み合わせて顔認識アプリを作ったりしていましたが、ML Kitのサポートが加わったことでより実践的なカメラアプリが作れそうで楽しみです。
Android アプリの内と外をつなぐ UI
セッションの最後のトークでした。
Googleの方が直接、スプラッシュ画面の扱いにはサポートライブラリを使うこと、edge-to-edgeへ対応すること、戻るボタンへの対応のベストプラクティスを教えてくれました。
DAY 3 10/7
DAY 3は会場を移してCodeLabを行いました。
興味のあるテーマに沿って集まってCodeLabを行いました。自分はComposeに関するCodeLabを行なっていました。その中で、チューターの方に「ComposeはTVで使えないか」と質問したところ、公式で対応を始めているとの情報を受けて調べたところ、10/5のDroidKaigi DAY1の裏でAlpha版がリリースされていました。
自分もAndroid TVのComposeでセッションの公募に申し込んでいたので、もし採用されていたらDroidKaigiとバッティングして冷や汗モノでした。
簡単な使い方についてはQiitaに載せておきます。
最後に
今回自分は初めてDroidKaigiに参加しました。セッションを聞くのに手一杯で、なかなかブースをゆっくり回ることは出来なかったですが、どのブースも工夫されており、訪れたエンジニアとの意見交換も活発に行われていました。各種ブースのスタンプはコンプリートしました。
今回は自分は初参加ですが、以前からAmaziaは業務の一環としてDrodiKaigiに参加しております。このようなカンファレンスで自分も学んでいきたいというAndroidエンジニアの皆さんを大募集中です。
Androidエンジニアもですが、iOSエンジニアも大募集中です。