こんにちは!新卒でPocochaのAndroidエンジニアをしています市原です!
2023/9/14/〜9/16にベルサール渋谷ガーデンで開催されたDroidKaigi 2023に現地参加してきました。
僕自身、カンファレンス初参加だったので不安だらけでしたが、その不安が吹き飛ぶくらい楽しかったので、 現地で自分が感じたことや良かったことなどをレポートしていきます!
会場の様子
会場は1FとB1Fに分かれており、1Fがセッション会場、B1Fはセッション会場とスポンサーブースになっていました。
会場に入ると、ネームカードとTシャツなどのノベルティを受け取る事ができます。 エンジニアがよく着ているイベントTシャツだ!とテンションがあがりつつ、最初のセッションであるWelcome Talkに参加しました。
トーク中に鳴るカメラ音がほとんどAndroidのカメラアプリの音で、生粋のAndroidユーザとしては実家に帰ったくらいの安心感がありました!!(先日iPhone 15 Pro買ったので楽しみです)
スポンサーブースに入ると、多くの人で賑わっていて驚きました。 中央ではたくさんの軽食やジュース、コーヒーなどが配られており、休憩しながら回れるようになっていました。
そして!DroidKaigi 2023ではオフライン参加するとお弁当の提供がありました! ワクワクしながら受け取ると、なんと今半のお弁当でした(写真にはロゴなくてわかりませんが)。
種類もいくつか選べ、とっても美味しく大満足なランチとなりました。
スポンサーブース
スポンサーブースでは様々な企業がブースを出していました。 それぞれの企業ではユニークな企画が開催されており、とっても楽しく回ることができました!
また、スタンプラリーも開催しており、各ブースでもらえるスタンプの数に応じて景品がありました。 最初は緊張してブースの方に話しかけられなかったのですが、「スタンプください」をきっかけに色々なブースを回れたのでとっても助かりました。
「9割できています」がお気に入りです。
フェンリル株式会社さん
フェンリル株式会社さんはお題と一致するModifierを当てるという問題をやっていました。 ソースコードとかけて景品がソースだったのは思わず笑ってしまいました笑
株式会社ZOZOさん
株式会社ZOZOさんでは自社にまつわるクイズに答える企画を行っていました。
クイズに全問正解でくじ引きができるのですが、なんと全問正解&あたりを引いて5000円分のZOZOポイントをもらいました! あたりは結構少ないらしく、とっても嬉しかったです。
DeNA
DeNAのブースでは品質本部のSWETによるテストの解説や、Pocochaのエフェクトやパフォーマンスを体験できる展示を行いました。
ステッカーやチョコ、色鉛筆などのノベルティ配布も行っており、多くの方にお越しいただきました。
また、企画として「Jetpack Compose 脳内プレビュー大会」も開催しました!
こちらはJetpack Composeで書かれたコードを見て脳内プレビューをし、描画される画面を予想するという企画です。
自分もいくつか問題作成したのですが、Modifierの順序の問題や意外と悩む配置の問題、その他珍しい実装など様々な問題が用意されていました。 ありがたいことに、多くの方にチャレンジいただき大変盛り上がった企画となりました!
問題や回答詳細は こちら の記事で紹介しているので、気になる方やJetpack Composeに自信のある方はぜひチェックしてみてください!
セッション内容
DroidKaigi 2023では40超のトークセッションが開催されました。
タイムテーブルはWebや、専用のアプリからも確認ができ、とても快適に視聴をすることができました。 どれも興味深く、勉強になったセッションでしたが、特に気になったものを紹介させていただきます。
Modifier.Node を使いましょう
こちらはSuraj(すーじ)さんの「Modifier.Node を使いましょう」というセッションです。
このトークではJetpack ComposeのSmart Recompositionの仕組みからはじまり、パフォーマンス低下の原因となったModifier.composedが追加された背景と、 パフォーマンス低下の原因について述べられていました。
ComposableではModifierパラメータが変更された場合、Recompositionを行います。 変更検知はコンパイラが比較をしているのですが、Modifier.composed自体は@Composable関数ではないため、コンパイラが変更の比較をできず、 結果常にラムダが呼び出されてしまうということがパフォーマンス低下の原因となりました。
つまり、コンパイラが変更の比較ができるようになればこの問題が解決されます。
そこでCompose 1.3.0で追加されたのがModifier.Nodeです。 Modifier.Nodeはレイアウトと同じライフサイクルを持ち、stateやレイアウトに影響するプロパティを保持します。 コンパイラによって比較されるのはModifier.Nodeと1対1の関係をもつModifier.NodeElementで、Modifier.Nodeを生成/更新します。
このように比較の役割を担う部分とstate保持やレイアウトにプロパティを提供する部分を分けることで上記の問題が解決し、パフォーマンス改善が行われました。
僕自身、Modifierの仕組みについて詳しく知らなかったため、大変勉強になったセッションでした。
中規模アプリにおけるレイヤードアーキテクチャでの例外との向き合い方
次に、Yukihiro Moriさんによる「中規模アプリにおけるレイヤードアーキテクチャでの例外との向き合い方」を紹介します。
このトークでは規模の大きくなったアプリで複雑になりがちな例外処理について、柔軟でスケーラブルな例外処理実装について発表されていました。
KotlinとJavaの例外言語使用が変わった背景に基づき、複雑化する例外処理をカスタム例外とErrorStateを用いることでエラーを変換し、 ErrorHandlerによって画面ごとにエラーハンドリングを定義することで拡張性を向上させていました。
また、repository層で発生しうるカスタム例外と予期外例外を定義することでハンドリングすべき例外が整理され、起こりうるエラーの一覧化をしていました。
どの層でどういったエラーの扱いをするかを丁寧に説明しており、拡張性の高いエラーハンドリングを理解することができました。
アフターパーティー
Day1のセッション後にはアフターパーティーが開催されました!
会場では色々なお料理をバイキング形式で楽しめ、ビールやワイン、ジュースなども提供されていました。
また、実際に目の前で板前さんがお寿司を握ってくれるブースもあり、その日の疲れが吹き飛びました! そして、社外の人や運営の方とも話す機会があり、セッションや仕事についてなど様々なお話をすることができました。
まとめ
初めてカンファレンスに参加するということで不安ばかりなDroidKaigi 2023でしたが、終わってみればとっても楽しく充実したカンファレンスとなりました。
セッションも難しいのかと思いきや前提からしっかりと説明してくれたり、キャッチーなセッションもあったりとAndroid歴が長くない僕にも十分理解できました。
登壇を見たり、会場の様子を見て、勉強になったことはもちろん、自分も登壇をすることや運営をすることにも興味をもつことができ、良い経験になりました。 また、コロナ禍も落ち着きオフラインでも開催されていたため、よりリアルな交流を持つことができたことも良かったです。
カンファレンス参加はハードルが高いと感じる方も多いと思いますが、思った以上にハードルは低く得るものがたくさんあります(ノベルティも)。 参加を悩んでいる方がいれば、是非参考にしていただけたら幸いです。
ありがとうございました!
最後まで読んでいただき、ありがとうございます!
この記事をシェアしていただける方はこちらからお願いします。