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
前提
- Android StudioのLadyBugをインストールしていること
個人的にいいなと思ったポイント
SuggestをコードにInesertしたり、依存関係をワンクリックで追加できる
例では、HTTPクライアントのログが出てなかったので追加してみました。
enable logging for API request
と入力してSubmit
挿入はカーソルがあたっているところなので、グチャッとなってしまうかも。。
HttpLoggingIntercepteorの依存関係がない。。そんなことも考慮されています。 Gemini上に表示されるゾウさんマークをクリックすると依存が追加され、Syncされます。
Context読み込み対象外にするファイルを選べる
Geminiではコードブロック単体を見ての判断ではなく、プロジェクト全体のContextを読み込んでSuggestしてくれることが強みです。
一方、壁になるのが、どこまで情報を渡してよいかという点だと思います。詳しいことはPrivacy Policyを読んでいただきたいのですが、.aiexclude ファイルを配置し、Contextを読み込んでほしくないパスを指定することができます。イメージとしては.gitignoreファイルが近いですね。 https://developer.android.com/studio/preview/gemini/aiexclude?hl=ja
なお、プロジェクト単位でContext読み込みの許可を選ぶこともできます。
Suggestとオリジナルのコードで差分表示が出ること
コードを選択するとポップアップメニューにGeminiが出てきます。Gemini > Trasform Selected Codeを選択すると、テキストボックスが表示されるので、例ではポケモン名でのFilterを追加したいと指示を出しています。
提案を差分表示して、Acceptすると反映されます。
ビルドしてみると?
でかい!笑 .fillMaxSize()
はいらなかったですね。消してみます。
おお、ちゃんとフィルタになっていますね。
選んだ関数に対してテストシナリオをつくってくれる
コードを選択するとポップアップでテストシナリオを作るオプションが出るのでクリック 実際のInput Outputは自分で書かないといけないものの、シナリオがでるだけでも実装での抜け漏れを防ぐのに役立ちそうです。今後はInput Outputまで補完されるようになると説明があったので期待です。
データに基づく意思決定を支える、Google Analytics for Firebase のイベント送信
ユーザの操作や画面遷移などのイベントを適切に送信するためのノウハウや、仕様書やログ送信状況を自動化を駆使して管理していく方法を解説いただきました。 詳細は実際の講演を見ていただくとして、個人的にいいなと思った自動化の部分について話していきます。
モバイルでのイベント送信において、Android & iOSでロジックを共通化していない時、イベント仕様書を作成してそこから各OSに実装をする必要があると思います。その際イベント名を間違えたり、イベントの仕様が適切に共有されなかったりしたりと課題が発生します。
その解決策として自動コード生成を用いたソリューションがすごくて、YAMLに仕様を書くだけで
- イベント仕様書の作成
- Androidのレポジトリへイベントクラス追加のPR作成
- iOSのレポジトリへイベント構造体追加のPR作成
を自動でやってくれるという優れものです。
何とデモ用のレポジトリまで提供してくれていて、クローンしてちょっとCIの向き先をいじるだけでPRの自動生成ができました!
実際に社内で導入するにはまだまだ調整が必要ですが、仕様書のメンテコストやイベント追加実装のコストを一気に削減できる素晴らしいシステムだと思います。
調整後チームに持ち帰ってみようと思います!
終わりに
DroidKaigiを通じて、様々な人や企業から貴重な知見を学ぶことができ、本当に素晴らしい経験となりました。最新のAI技術であるGeminiをはじめ、設計の基本原理に至るまで、多岐にわたるトピックが提供され、Android開発の奥深さを再認識しました。まだまだ学ぶべきことがたくさんあるなという感じです。
早速、セッション動画が公開されていますので、当日見逃したものを少しずつ視聴していこうと思っています。素晴らしいセッションばかりなので、ぜひ皆さんも気になるセッションをチェックしてみてください。
最後までお読みいただき、ありがとうございました。それでは!