1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ChatGPTを使ってAndroidコードレビューを効率化してみた

Posted at

はじめに

今回この内容を試してみた動機は

  • レビューを依頼する手間を減らしたい
  • 軽微なリファクタを検出したい
  • ケアレスミスを減らした

といった感じです。

そこで「どの程度までAIに任せられるのか?」という疑問が生じたので今後のためにも、個人的によく使っているChatGPTで試してみした。

使用ツール

  • ChatGPT(GPT-5 Mini)
  • 検証コード例:ViewModelやRepositoryなど簡単なKotlinコード

実践例

class MainViewModel : ViewModel() {
    private val _count = MutableLiveData(0)
    val count: LiveData<Int> = _count

    fun count() {
        _count.value = _count.value!! + 1
    }
}

上記コードをレビューしてください。


ChatGPTの回答

レビューの観点は 安全性・可読性・Android開発のベストプラクティス です。
1. 安全性の観点から
問題点

_count.value = _count.value!! + 1
  • !! 演算子は NullPointerException を投げる可能性があります
  • LiveDataは非同期更新される場合もあるため、!! の使用は危険

改善例

_count.value = (_count.value ?: 0) + 1
  • _count.value が null の場合でも 0 として扱える
  • 安全にインクリメント可能

2. パフォーマンス・スレッド安全性

  • LiveData はメインスレッドでしか value を更新できません
  • バックグラウンドスレッドで更新する場合は postValue() を使う
  • 現状はメインスレッド前提なら問題なし

3. 可読性・設計の観点
LiveData ではなく StateFlow / MutableStateFlow を使う選択肢もあり

  • Kotlin Coroutine を使ったモダンな状態管理
  • フロー型の方が Compose や非同期処理との相性が良い
class MainViewModel : ViewModel() {
    private val _count = MutableStateFlow(0)
    val count: StateFlow<Int> = _count

    fun count() {
        _count.value += 1
    }
}

利点

  • 非同期対応が容易
  • LiveData よりも Compose や Flow と親和性が高い

まとめ(レビュー結果)

観点 問題点 推奨改善
Null安全 _count.value!! でNPEリスク (_count.value ?: 0) + 1
スレッド安全 メインスレッド以外で更新不可 バックグラウンドなら postValue() 使用
モダン設計 LiveDataよりStateFlowが望ましい MutableStateFlow を使用
可読性 コード短くシンプル 命名・アクセス制御は問題なし

総評

  • 小規模でシンプルなViewModelとしては問題なし
  • Null安全やモダンフローへの置き換えで、より堅牢・可読性の高いコードにできる

使ってみた感想

思っていたよりも使えそう?な感じがする。
動機にあるケアレスミスの削減や軽微なリファクタには使えそう。
プログラミング初心者やAndroid開発初心者のコードレビューとしては十分使えそうな印象でした。

まとめ&もっと上手な使い方

  • レビューを依頼する際に注目して見てほしい箇所や具体的な観点を伝えることも合わせてコメントすると、例のように長文にならなくて済むと思います。

「パフォーマンス面を中心に」
「安全性を重視して」
「Jetpack Compose向けコードとして」
「テストしやすさに注目して」

など

  • 段階的にレビューしてもらうと精度が上がる

ステップ1:問題点を列挙
ステップ2:修正例を提案
ステップ3:修正後コードを再レビュー

  • 誤指摘も出るため“ペアレビューツール”として使うのが現実的、プロジェクト独自の機構などがある場合はリファクタリングなど簡単なものに注力させた方がいいかも
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?