2025年4月30日に開催された「Sansan×DMM.com Android Tech Talk」での登壇内容を基にしています。
https://sansan.connpass.com/event/349010/sansan.connpass.com
登壇資料は以下からご覧いただけます。
はじめに
プラットフォーム開発本部第1開発部のDMMポイントクラブグループにてAndroid TechLeadを担当しているmitohato14です。
直近の業務では、グループが抱える課題の解決やそれに伴ったAI促進を主に実施しています。
サービスの紹介
DMMポイントクラブは「DMMの全てをお得に」をサービスコンセプトとし、ポイント管理やポイントを獲得できるカジュアルゲーム、お得な情報の通知など多様な機能を提供しています。 モバイルアプリ版とWeb版があります。
Android版
iOS版
apps.apple.comWeb版
サービスコンセプト
本記事では、DMMポイントクラブの開発にAIコードレビューツール「CodeRabbit」を導入した経緯と、その効果について紹介します。
Androidアプリ開発を前提にした内容ですが、他の技術領域でもほとんど同じように利用できます。
AIコードレビュー導入前の状況
コードレビュー体制
CodeRabbit導入以前、DMMポイントクラブアプリのAndroid領域では3名の開発メンバーでコードレビューしていました。レビューしたメンバー全員(1名以上)のApproveをもってマージが可能となっています。
朝と夕方に各30分の口頭レビュータイムを設けており、作成したプルリクエスト(以下PR)の説明や実装相談を実施しています。
PRのテンプレートも用意し、セルフレビュー促進や作業漏れの抑制をしています。
導入前の課題
この体制にはいくつかの課題がありました。
- レビュアーの課題
- 命名規則の揺れやtypoなど、細かい指摘が多くなりやすい
- レビューに多くの時間が取られ、他の作業時間を圧迫
- 細かい指摘の繰り返しにより大枠を見失いがち
- レビュー品質がレビュアーに依存しやすい
- レビュイーの課題
- PR作成からマージまでの時間が長い
- 見落としによる申し訳なさ
- 修正の繰り返しによるマージ遅延
- レビュアー・レビュイー共通の課題
- コードレビューの質のばらつき
- テストのシナリオケースとテストコードの間にずれが発生しやすい
- 細部の見落としが後々の不具合につながるケース
- コミュニケーション長期化による心理的な負担
AIコードレビュー導入の検討
このような状況を改善すべく、AIコードレビューの導入が検討されることになりました。
AIコードレビューツールの何を導入するべきか考えているところ、他チームがCodeRabbitを試しているという話がありました。
その流れで、CodeRabbitの利用環境が全社的にも整備されたというアナウンスがあり、DMMポイントクラブでもCodeRabbitを導入してみようとなりました。
CodeRabbitの導入
CodeRabbitとは
CodeRabbitは、AIを活用したコードレビュー支援ツールです。
主な機能として以下が挙げられます。
- PR概要の自動生成
- シーケンス図の自動生成
- 改善提案を含むコードレビュー
- 類似リポジトリの列挙
- チャット機能
- 指摘について質問・議論が可能
- プロダクト固有の事情を伝えることができる
- やり取りを記憶して今後のレビューに活用
また、PRの差分だけでなく、リポジトリ全体を考慮したレビューを実施してくれる点も大きな特徴です。
導入の容易さ
導入は非常に簡単です。
- GitHubなどのアカウントでログイン
- ダッシュボードから有効化したいリポジトリを選択
これだけですぐに利用を開始できます。
さらに、.coderabbit.yaml
ファイルを追加して設定を記述することで、よりプロダクトに適した質の高いレビューを実現できます。
特に reviews/path_instructions
の設定を充実させることが重要だと感じています。
指定したディレクトリやファイルに対して事前コンテキストを個別に設定できるため、柔軟なコードレビューが期待できます。
DMMポイントクラブのAndroidアプリ開発リポジトリでは主に以下のような内容を観点として記述しています。
- Kotlinのコードスタイルガイドへの準拠
- 命名規則
- コード構造
- 読みやすさ
- メモリ効率
# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json language: "ja-JP" tone_instructions: "丁寧な言葉遣いで、具体的な改善点を指摘してください。" early_access: false reviews: profile: "assertive" request_changes_workflow: true high_level_summary: true poem: true review_status: true collapse_walkthrough: false suggested_reviewers: false path_instructions: - path: "**/*.kt" instructions: | Kotlin公式およびAndroid Developers公式のスタイルガイドに従い、コードの可読性を向上させてください。 特に、命名規則、空白の使用、コードの構造に注意してください。 クラス名・メソッド名・変数名は一貫性を持たせ、意図が明確に伝わるようにしてください。 読みやすさを考慮し、適切な改行とインデントを使用してください。 実装した内容がなるべく捨てやすい(削除や移動時に他への影響が少ない)状態になっているかを確認してください。 クラスやメソッドの責務を明確にし、単一責任の原則(SRP)などを意識してください。 データ層、ドメイン層、UI層を適切に分離し、責務を整理してください。 ViewModelを適切に活用し、ActivityやFragment、Composeにロジックを持たせすぎないようにしてください。 Daggerを適切に使用し、依存関係を明確にしてください。 メモリ効率を考慮し、不要なオブジェクトの生成を避けてください。 CoroutinesやFlowを適切に使用し、UIスレッドをブロックしないようにしてください。 APIキーやユーザーデータをハードコードせず、Secure Storageや環境変数を使用してください。 センシティブなデータは適切に暗号化し、安全性を確保してください。 変更されたコードのうち、ViewModelやUseCaseなどのロジックを含む部分には、適切な単体テストを追加してください。 機能ごとにモジュールを分割し、スケーラビリティを向上させてください。 公式サポートのある安定したライブラリを使用してください。 最新のAndroid SDKバージョンとの互換性を確保してください。 - path: "**/*.kts" instructions: | gradleの記述として適切な表現にする auto_review: enabled: true drafts: true ignore_title_keywords: ["wip"] base_branches: ["."] chat: auto_reply: true
導入1ヶ月の効果
CodeRabbitを導入して約1ヶ月が経過したタイミングでの効果を紹介します。
主なメリット
CodeRabbit導入効果として、多くの肯定的な点を感じています。
- 変更内容の要約が役立つ
- どのようなファイルにどんな変更があったかが分かりやすい
- 目的とした実装になっているか気づきやすい
- シーケンス図の自動生成
- レビュアーのコード理解促進
- コードの流れを視覚的に把握しやすくなった
- チャット形式でのやり取り
- 指摘について質問したり、プロダクトの背景事情を伝えたりすることが可能
- GitHub上にログとして残るため、他のメンバーもプロダクトの背景や議論の経緯を把握しやすい
- レビューの迅速さ
- AIが自動で素早くレビューを実施
- 作業を止めることなくコードのブラッシュアップが可能
- 事前の問題解決
- CodeRabbitとのやり取りを通じて細かい内容を事前確認
- 人力レビュー前に簡易な内容を修正可能
- 人力レビューでの詳細な指摘が減少
- Request ChangesやApproveステータスによる対応漏れ抑止
- ポエムによる心理的効果
- 生成されるポエムによって、柔らかい気持ちになれる
レビュー内容の変化
CodeRabbitが詳細な指摘を担当することにより、レビュー内容にも次のような変化が見られました。
- 人力レビューではより広い視点での実装改善レビューに時間を割けるようになった
- AIの指摘内容から新たな議論が発生し、気づきや学びのきっかけになった
定量的な効果
定量的な変化も観測しています。
- PR作成からマージまでの時間の平均値が減少
- 中央値は増加しているが、計測時期のPR粒度が要因
- 導入前:平均値で約68時間
- 導入後:平均値で約52時間
- PR作成から初レビューまでの時間の平均値・中央値が減少
- 特に顕著な改善
- 導入前:平均値で約206時間、中央値で約17時間
- 導入後:平均値で約8秒、中央値で約8秒(劇的な短縮)
CodeRabbitにより、開発者は作業を中断することなく、CIよりも精度の高い指摘をもとに、すぐに修正やコード改善に取りかかることができるようになりました。
チームメンバーからの声
チームメンバーからも肯定的な声が多く挙がっています。
- 細かいレベルで精度の高いレビューを素早く実行してくれる
- 修正点が明確で、直し方も分かりやすい
- 気づけていなかった問題点を指摘してくれることで、学びにつながる
- バグを事前に防止できる
Android開発ならではの指摘
CodeRabbitは、KotlinやAndroid特有のコードレビュー・指摘も行うことを確認できました。 具体的には次のようなレビューがありました。
- ComposeにおけるPaddingの記述方法
- 複数のpadding modifierを使うのではなく、一つに集約した方が良いという内容
- 非同期処理における
runTest
の推奨 - ComposeにおけるAndroidViewのfactoryとupdateの挙動違いに関する指摘
- 色指定をupdateに移動することでダークモードにも対応
今後の展望
課題解決の進捗
CodeRabbitの導入により、導入前に抱えていた課題の多くが解決に向かっています。
- 詳細な指摘、テストのずれ、見落としといった課題はCodeRabbitが対応
- レビュー時間の短縮
- レビュー品質の一定水準の担保
これにより、メンバーはビジネスロジックや仕様といったより重要な部分に時間をかけられるようになりました。
残された課題
しかし、まだ改善の余地もあります。
- yamlの設定が十分か検証不足
- AIの指摘内容が誤っている場合がある
- プッシュごとの実行による指摘コメントの多さ
- 人力レビュー中にCodeRabbitからの指摘対応によるコード更新が入りやすい
今後の方針
DMMポイントクラブでは、AIコードレビュー導入に関して今後以下の取り組みを進める予定です。
- レビュー観点やレビュータイミングのチューニング継続
- AIコードレビューと人力コードレビューが重複しない運用ルールの整備
プラットフォーム開発本部のAI戦略
また、私たちが所属するプラットフォーム開発本部では「AX戦略」を掲げており、DMMポイントクラブもこの取り組みを推進しています。この戦略では、コードレビューを含む様々な業務にAIを積極的に活用し、開発効率と品質の向上を目指しています。
人でやっていた業務の50%をAIに置き換えた(協働)うえで、開発リードタイムへの変化を観測する
DMM全社としてもAI技術の活用を積極的に推進しており、プラットフォーム開発本部のAX戦略もその一環です。今後もDMMはAI技術を活用した開発の効率化と品質向上に取り組んでいきます。
まとめ
今回の登壇・本記事を通じて、CodeRabbitによるAIコードレビュー導入がAndroidアプリ開発における生産性向上に大きく貢献していることを紹介しました。
CodeRabbitは気軽に導入でき、チームやプロダクトに応じた柔軟な設定で大きな効果を得られます。
CodeRabbitの主な効果をまとめると、以下になります。
- レビュー時間の劇的な短縮(初回レビューまで17時間→8秒)
- コード品質の向上(詳細な指摘と改善提案)
- チーム全体の学習促進(AIの指摘から新たな議論が生まれる)
- 開発者の心理的負担軽減(迅速なフィードバックによる安心感)
- より重要な部分へのリソース集中(細かい指摘はAIに任せられる)
今回のCodeRabbit導入を経て、「爆速レビューは人・チームを救う」と私は感じています。
AIコードレビューをはじめとしたAIの活用は、今後のチーム開発において、ますます重要になっていくでしょう。