freeeの開発情報ポータルサイト

DroidKaigi2024に参加してきました!

記念撮影の様子 freee でAndroidエンジニアをしているodaryuです。 DroidKaigi 2024に参加してきましたのでブログを書きます!

会場の様子 にぎわってますね〜

シビック
シビックがある!!

TYPE R に搭載しているジャイロセンサーをつかった運転技術評価をAndroidアプリとしても提供しているらしいです。保険料の決定とかにも使えるのかもしれません。

今回のDroidkaigiでは講演を中心にみていたので、筆者がみて面白かったものを紹介します。

[招待講演] Android StudioのGeminiでコーディングの生産性を高める

2024.droidkaigi.jp Android StudioでGeminiを活用する方法を実演形式で紹介しています。この講演があった9月13日時点ではプレビュー版とのことでしたが、展望含め生産性上がる未来が見えました。

実際に少し触ってみたので個人的に良さそうに思った機能を紹介します。 なお、freeeとしてGeminiを正式運用しているわけではないので、サンプルコードを使用します。 https://github.com/RyujiOdaJP/Pokemon-JetpackCompose/tree/try_gemini

前提

  1. Android StudioのLadyBugをインストールしていること

個人的にいいなと思ったポイント

SuggestをコードにInesertしたり、依存関係をワンクリックで追加できる

例では、HTTPクライアントのログが出てなかったので追加してみました。 enable logging for API requestと入力してSubmit ロギングのコードが出力される様子

挿入はカーソルがあたっているところなので、グチャッとなってしまうかも。。 コードに提案を挿入

HttpLoggingIntercepteorの依存関係がない。。そんなことも考慮されています。 Gemini上に表示されるゾウさんマークをクリックすると依存が追加され、Syncされます。 依存関係を解決する様子

Context読み込み対象外にするファイルを選べる

Geminiではコードブロック単体を見ての判断ではなく、プロジェクト全体のContextを読み込んでSuggestしてくれることが強みです。

一方、壁になるのが、どこまで情報を渡してよいかという点だと思います。詳しいことはPrivacy Policyを読んでいただきたいのですが、.aiexclude ファイルを配置し、Contextを読み込んでほしくないパスを指定することができます。イメージとしては.gitignoreファイルが近いですね。 .aiexclude ファイルの例 https://developer.android.com/studio/preview/gemini/aiexclude?hl=ja

なお、プロジェクト単位でContext読み込みの許可を選ぶこともできます。 Geminiが読み込むContextの許可をするダイアログ

Suggestとオリジナルのコードで差分表示が出ること

コードを選択するとポップアップメニューにGeminiが出てきます。Gemini > Trasform Selected Codeを選択すると、テキストボックスが表示されるので、例ではポケモン名でのFilterを追加したいと指示を出しています。 選択したコードに対してのアクションをGeminiに伝える様子

提案を差分表示して、Acceptすると反映されます。 提案の差分が表示される様子

ビルドしてみると?

提案を受け入れてビルドしてみたときのUI

でかい!笑 .fillMaxSize()はいらなかったですね。消してみます。 微修正して正しいフィルタを実装する

おお、ちゃんとフィルタになっていますね。

選んだ関数に対してテストシナリオをつくってくれる

コードを選択するとポップアップでテストシナリオを作るオプションが出るのでクリック コード選択部分のテストシナリオの作成方法 実際のInput Outputは自分で書かないといけないものの、シナリオがでるだけでも実装での抜け漏れを防ぐのに役立ちそうです。今後はInput Outputまで補完されるようになると説明があったので期待です。 書き出されたテストシナリオ

データに基づく意思決定を支える、Google Analytics for Firebase のイベント送信

2024.droidkaigi.jp

ユーザの操作や画面遷移などのイベントを適切に送信するためのノウハウや、仕様書やログ送信状況を自動化を駆使して管理していく方法を解説いただきました。 詳細は実際の講演を見ていただくとして、個人的にいいなと思った自動化の部分について話していきます。

モバイルでのイベント送信において、Android & iOSでロジックを共通化していない時、イベント仕様書を作成してそこから各OSに実装をする必要があると思います。その際イベント名を間違えたり、イベントの仕様が適切に共有されなかったりしたりと課題が発生します。

その解決策として自動コード生成を用いたソリューションがすごくて、YAMLに仕様を書くだけで

  • イベント仕様書の作成
  • Androidのレポジトリへイベントクラス追加のPR作成
  • iOSのレポジトリへイベント構造体追加のPR作成

を自動でやってくれるという優れものです。

自動コード生成の流れ
https://github.com/tfandkusu/ga913-yaml

何とデモ用のレポジトリまで提供してくれていて、クローンしてちょっとCIの向き先をいじるだけでPRの自動生成ができました!

Gemini画面で提案を挿入する様子

実際に社内で導入するにはまだまだ調整が必要ですが、仕様書のメンテコストやイベント追加実装のコストを一気に削減できる素晴らしいシステムだと思います。

調整後チームに持ち帰ってみようと思います!

終わりに

DroidKaigiを通じて、様々な人や企業から貴重な知見を学ぶことができ、本当に素晴らしい経験となりました。最新のAI技術であるGeminiをはじめ、設計の基本原理に至るまで、多岐にわたるトピックが提供され、Android開発の奥深さを再認識しました。まだまだ学ぶべきことがたくさんあるなという感じです。

早速、セッション動画が公開されていますので、当日見逃したものを少しずつ視聴していこうと思っています。素晴らしいセッションばかりなので、ぜひ皆さんも気になるセッションをチェックしてみてください。

最後までお読みいただき、ありがとうございました。それでは!