iOSエンジニアの私がDroidKaigiに初参加してきました〜ワクワクAndroid〜
Androidの技術カンファレンスに初めて参加したので備忘録。
どの時間帯もセッションをずっと見ていました。
きっかけ
iOSDC Japan 2024の時にメインがAndroidアプリ開発をしてる社員さんからDoroidKaigiも もし良かったらと言われたのがきっかけでした。私は普段やっていない領域でしたが行きたい欲のまま、アディショナルチケットが出た時に速攻で購入しに行きました。
タイムテーブルのチェック✍️
初参加で理解できるか不安もあったので事前にタイムテーブルから気になる・分かりそうな内容をチェックしていました。
また、メモ用にNotionのページを作ったり。。
いざDroidKaigiへ🏃♀️
ワ、ワワワ…!
ノベルティのTシャツとトートバッグを受け取り、ドキドキしながらWelcome Talkを聴きました。
どうやら10回目の開催のようです(歴史が長い!)
セッションを聞きます👂
全然Jetpackやったことない〜と思ってday1のWSは参加していませんでした(勿体無い、、!)
day2 9/12 Thu
Contextを理解する DroidKaigi 2024 by Okumura
FragmentからActivityContextを取得するときに、getContextとrequireContextを使いますが、contextがnullになる場合がFragmentがActivityにアタッチされてない時と知ることができました。
アタッチについてちょっと調べてみて…
public void onAttach (Context context)
FragmentがAcitvityに対して関連づけられる(アタッチされる)時に呼ばれ、nonnullのContextが渡されることから、この時から確実にActivityのContextを取得できそうです。これはFragmentのライフサイクル上ほぼ最初に呼ばれるものです。
いまから追い上げる、Jetpack Composeトレーニング by nyafunta9858
Jetpack Composeについて全然手を動かしたことが無く、今のプロジェクトで置き換えの検討や学習方法について情報がまとめられていて良かったです!
KSPの導入・移行を前向きに検討しよう! by shxun6934
kaptとKSPの仕組みの話から、ビルド時間の比較についてのお話でした。JavaベースのkaptはExperimentalとして将来的に無くなるかも知れないステータスのためKSPに移行しているのか確認してみようと思いました。
エンジニア1年目で複雑なコードの改善に取り組んだ話 by たなむら
ジュニアのエンジニアとして、自分の知らない実装やリアーキを行うときに、その仕組みを図に書き出したり周りとコミュニケーションを増やして仕事を進めていたそうです。図にまとめる事は、自分の整理にもなるし自分の理解度を示せるため、上長の人が任せる判断の材料にできるのだなと思いました。あとは認識齟齬がないか分かるとか。
また、スライドにもあったのですが、プロジェクトを適切に進めるのは技術力ではない部分が大きいという部分にとても共感しました。
day3 9/13 Fri
アプリをリリースできる状態に保ったまま段階的にリファクタリングするための戦略と戦術 by Yuki Anzai
version catalog, フォーマットチェックツールあたりを見てみたいです。また、リファクタの戦略として、依存関係が少なくテストのしやすい通信周りから行うようです。例として挙げられていた、通信結果のステータスは全て200でJSONに成功・失敗が乗ってくるケースでは、API層でNGを例外として返すことでUIやVM層で煩雑にしないというのは、ふむふむと思いました。
起動時間で差をつけろ!アプリ起動パフォーマンス改善! by yanmar
アプリ起動の種類や起動時間の指標について説明がありました。
個人的にはFirebaseのPerformance Monitorningは自分でも手軽に毎リリースのアプリで極端にパフォーマンスが落ちていないか見ていけるなと思いました。
分析に裏打ちされたアプリウィジェット開発 - Jetpack Glanceとともに
ちょっと面白いなと思ったのは、同じComposeのような宣言的に書くにもかかわらず、GlanceではModifierであるpaddingとsizeの適用順番の動作が異なる事でした。
分析の面では、Androidユーザーはウィジットの存在に気づいてないかも知れないので、アプリ内の特定の機能を使用していたらウィジット利用を進めるバナーを表示し、そのバナーを出した人の方がウィジット利用の増えたデータがあって納得感がありました。
デザインからアプリ実装まで一貫したデザインシステムを構築するベストプラクティス by しゅーぞー
Figmaを使い構造的に作る事で、実装時にSwiftUIやJetpack Composeで構造を組む(=レイアウトを作る)時に、デザイナーの意図からズレにくい。
エンジニアがFigmaを見て実装のしにくい・表現が難しい場合はデザイナーとかけ合ってFigmaで変更をしていく。そうすることで、エンジニアは実装もしやすく、デザイナーは変にされてない理想の(実装する時によしなにされてない)実装されたUIで良いものをリリースすることにつながる。
便利そうと思ったもの
Style Dictionary
デザイントークン定義した後に各プラットフォーム向けに書き出せる…
A New Era of Testing by Marcel Schnelle
登壇者がandroid-junit5の作者さんでした。
条件付きテストで、デバイスやSdkVersion、CIかローカル別でテストが書ける便利なアノテーションがありました。
Androidじゃなくて、Javaの方のJUnit5のページでも条件付き用のアノテーションも見てみました→(JUnit5のConditional Test Execution :https://junit.org/junit5/docs/current/user-guide/#writing-tests-conditional-execution)
Conditional Test Execution by Jumpei Matsuda
ありがたいことに公式のデバック機能から紹介していました。(基本の提供されてる機能を使い倒すのかっこいい。)
Androidでデバッグ実行の時は動作が重くなるな〜と思ってましたが、スマホを「デバッガーを待機する」にしてデバッガーは途中から当てることで、直前までパフォーマンスに影響を出さずに実行可能なようでした。次回から使ってみます。
途中で紹介されていた、条件を決めてBreakpointを有効にする機能はXcodeにもあるので、Xcodeでのデバッグ機能を改めて何ができるか確認したくなりました。(これ→https://developer.apple.com/documentation/xcode/setting-breakpoints-to-pause-your-running-app)
Android開発以外のAndroid開発経験の活かしどころ by konifar
自分は入りがiOSだったので逆だ〜と思いながらでした。
プレイヤーとして動くときに、考え方などを広げるためにもマネジメント系のキャッチアップするのはやりたい!と思いました。(書籍やポッドキャストなど参考資料が載っていてありがたかった)
さいごに
結構見たいセッションが被ったりしたので、後から動画を見てみようと思います。
DroidKaigi参加して、カンファレンス中は色んな人とお話しできて、後日は見たセッションを軽くふりかえって、とても充実感がありました☺️
ちょっとずつAndroidをキャッチアップして来年も行きたいです。
DroidKaigi2024を開催してくださった皆さん、ありがとうございました!