はじめに
こんにちは、minneのエンジニアチーム所属の fumy, kyu, tepi, daikiです!
本記事では、私たちが参加した「DroidKaigi 2024」での体験を余すところなくお届けします。最新のAndroid技術や興味深いセッションのレビュー、そして公式アプリへのコントリビューションをした話など、盛りだくさんの内容です。どうぞお楽しみください!
【参考までに昨年のブログはこちら💁】
DroidKaigi 2024について
DroidKaigiはAndroid関連の技術を中心に様々な情報が共有される技術カンファレンスです。 Android開発に関連する技術や知見が集まる貴重な機会なので、この日を心待ちにしていました。
今年は、昨年に引き続き参加するメンバーに加えて、今回が初参加のメンバーもいたので、総勢4名での参加になりました。
【今回もfumyがDroidKaigi公式アプリへのコントリビューションしています👍】
DroidKaigiでは、公式アプリをOSSとして公開しており、毎年多くのモバイルエンジニアの方々がコントリビューションをしています。また、このアプリは最新の技術トレンドを考慮したアーキテクチャやフレームワークを採用しているので、自分の開発環境下で動かしたりコードリーディングを進めるだけでも勉強になりますし、OSSに対してIssueを起票したり修正・改善するようなPull Requestを出す絶好の機会でもあります。
今年はiOSエンジニアのfumyが、Androidでの実装を参考にしてiOSのUI関連の改善対応を実施したり、環境起因のトラブルシューティングの対処法をREADMEへ追記するコントリビューションを実施しています。普段業務では触れない技術を経験できる一方で、iOS/Android両方を開発している経験を活かす機会でもあるので、今後はチームメンバーも積極的に巻き込みながら来年以降も取り組んでいきたいと思います。
スポンサーブース巡り
カンファレンスの合間には、各企業様のスポンサーブースにお邪魔していました。セッション終了後の休憩時間が20分でしたので、意外と余裕を持って回る事ができました。以前に勉強会やイベントで訪問した際に知り合った方、以前にお仕事でご一緒させて頂いた方、普段は遠方でリモート勤務なので久しぶりにお会いできた方と、近況・業務内の取り組み・最近関心がある技術トピック等の様々な話題で会話が弾みました。
気になったセッションのご紹介 & 参加したエンジニアの感想
カンファレンスは2日間と長丁場でしたが、セッションの内容は濃密かつ魅力的なラインナップでした。その中でも、特に気になったセッションをいくつかピックアップします。
daiki
気になったセッション: 2024年最新版!Android開発で役立つ生成AI徹底比較
minneだけに限らず、弊社内ではChatGPTや他のLLMの活用が検討及び実践されているところではありますが、他プロダクトやチームの開発場面においてどのようにLLMが活用されているのがとても気になっていました。
このセッションでは、ChatGPT、GitHub Copilot、Geminiという3つの生成AIが取り上げられ、それぞれのAndroid開発における活用方法が詳しく比較されました。特に、それぞれ以下の点での比較が印象的でした。
- ChatGPT: OpenAIが開発した会話型AIで、文章生成や翻訳、コード生成まで幅広いタスクに対応。汎用性が高く、多くの開発者が利用している点。しかしIDEとの統合は直接サポートされていない点。
- GitHub Copilot: GitHubが提供するAIツールで、エディター内でのコード補完や提案に特化しており、プルリクエストのサマリー生成など、開発を効率化する方法。AndroidStudioとの統合はPlugin経由で行われること、その使い勝手についてのデモ。
- Gemini: Googleが開発したAIで、日本語テキストを理解し、マルチモーダル推論が可能な点。Google関連のサービスとの親和性が高く、AndroidStudioへの統合やAndroid開発での利便性についての実例紹介。
いずれのLLMにおいても、最終的な成果物を得る前にエンジニアによる手直しが必要な場面は避けられないようでしたが、ADRの作成やコードコメントの付与などがLLMの強力な補完、提案により面倒くさくなくなることでより前進することが述べられており、minneにおけるドキュメント作成の場面でも参考となる考え方だと思いました。
参加した感想
オンサイトでDroidKaigiに参加したのは初めてだったのですが、会場で参加することで、他エンジニアと有機的につながれたのは大きいと感じました。参加しているエンジニアの方が普段どういった開発をされていて何に興味を持ちDroidKaigiの場に来ているのか、コミュニケーションを通じてお互いにシェアし合い、また開発意欲を刺激させ合いつつ、セッションの内容もチームに持ち帰り、より最高なプロダクトをユーザーへ届ける一助とすることができた有意義なイベントでした。
tepi
気になったセッション:分析に裏打ちされたアプリウィジェット開発 - Jetpack Glanceとともに
minneでも、ユーザーアンケートを実施する等して、外部の情報を元に開発する機能の選定を行ったりしていますが、このセッションで行われているような数字をベースとした機能開発は行えていません。 改めて数字を元に開発をし結果を確認することの大切さを学べた良いセッションでしたし、minneでのウィジェットの開発は少し検討されたものの進められていないため、実装を参考にしたい事例でもありました。
今後、プロダクトオーナーやデザイナーに開発手法を共有し実践していくとともに、モバイルチームからもセッションでもあったように数字を元に提案できるようなチームにしたいです。
参加した感想
毎年参加するだけになってしまっていますが、紹介される技術だけでなく、組織の体制等の内情を知れる良い機会として、今年も大いに楽しむ事ができました! また、直近自身でテックブログを書く機会も増えたことで、ネタの作り方としても参考になるセッションも多く、今後活かしていきたいです。 まだまだ当日聞けなかったセッションもありますので、視聴させていただきつつチームの向上に役立てていきます!
fumy
気になったセッション:Jetpack ComposeにおけるShared Element Transitionsの実例と導入方法またその仕組み
普段minneではiOS/Android両方の開発に携わっている事や、これまでのiOSアプリ開発ではありますが類似した表現を何度か実装する機会があり、Androidアプリ開発ではどの様に実現するかという点に関心がありました。Grid状に配置された写真サムネイルをタップすると、その写真が浮かび上がって表示され、その写真を指の動きに合わせて引っ張って閉じる事ができるサンプルアプリを題材にして実装方針からそのポイントを丁寧に解説されていました。具体的なサンプル実装を紐解く形の解説は思わず聞いていてワクワクする様な内容でした。
minneのモバイルアプリの中には、機能の中に目を引く様なUI表現を用いている箇所もあるので、今後は「機能と調和した美しい表現」についても少しずつ盛り込んでいきたいと感じた次第です。
参加した感想
2020年に初めてオンラインでセッションを視聴して以降は、事情によりオフライン参加する機会がありませんでしたが、今回初めてオフライン参加ができて嬉しかったです。 セッションに参加するのはもちろんですが、企業ブースを巡ったり、公式アプリへのコントリビューションをしたり、普段はオンライン上で交流経験がある方と対面でお会いできたりと、とても充実した2日間でした。 この機会で得られた知見を平素の開発業務に活かし、今よりも更に技術やスキルを磨いて行きたいと思います。
kyu
気になったセッション: Kotlin 2.0が与えるAndroid開発の進化
minneでもK2 compilerにmigration guideに沿って、移行したものの、K2に対する理解が浅いままでした。このセッションを通じて、K2に移行することの利点がよく理解できました。 K2に変えたことによる大きなメリットとして、コンパイル速度が最大2倍になるとのことですが、そのメリットを最大化するためにはkaptからのKSPの完全移行、DataBindingの廃止、JavaからKotlinへの移行が求められるという点で、minneでは解決すべき課題が多くあることを発見できました。 課題解決したことで得られるK2のメリットは業務改善につながると思うので、しっかりと目標を定め、着実に改善に取り組んでいきたいと思います。
参加した感想
去年も参加しましたが、自分の中のAndroidへの理解が深まったことの表れなのか、今回はより多くの「あるある」と感じる場面や新たな発見がありました。多くのセッションを通じて、minneでも取り入れたい実装や知見など、貴重な学びを得ることができました。 同時に、minneで既に採用している実装も、業界の動向からそれほど遅れをとっているわけではないと再認識できた点も多くあったので、これからもminneの改善に自信を持って取り組んでいこうと思います。
まとめ
貴重な知見や学びを多く得る事ができた貴重な機会と共に、Androidエンジニアが一堂に会してワイワイする本当に楽しい時間になりました。DroidKaigiへの参加によって、この機会で得られた技術的な知見を今後の開発へ活かすアイデアへ昇華するモチベーションへ繋がったのはもちろんですが、生成AIやAndroid関連する最新技術等を利用する事で生産性向上や価値創出へ繋げ、より良いアプリにするきっかけにしたいと感じた次第です。また、今回会場で見る事ができなかったセッションについても、公開されたプレゼンテーションや動画を利用して引き続きチェックしていこうと思います。