Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Devinにファーストレビューをさせ、コードレビューを効率化するには / Using Devi...

Avatar for technuma technuma
May 14, 2025
1.8k

Devinにファーストレビューをさせ、コードレビューを効率化するには / Using Devin to Make Code Reviews More Efficient

Avatar for technuma

technuma

May 14, 2025
Tweet

Transcript

  1. AIレビュアーを育てる、継続的運用の3本柱 1. AIレビュアー を Testable に保つ 変化に対応し、信頼性を維持するために 2. 効率的な Knowledge

    管理 AIが学習しやすく、人間もメンテナンスしやすい知識ベース 3. エージェントをA/Bテストしやすい仕組み 既存への影響を最小限にしつつ、AIレビュアーの効果を測定・改善するため に 7
  2. 柱1: AIレビュアー を Testable に保つ 背景:AIモデルは進化し、最適解は常に変わる フィードバックループを短く、迅速な検証が不可欠 テスト容易性の鍵:単一責任の原則 (SRP) AIレビュアーの各チェック機能を疎結合に

    例:FlakyTestsチェッカー、脆弱性チェッカーなど アンチパターン:責務過多の巨大AIレビュアー テストが複雑化、変更の影響範囲大 FlakyTestsと脆弱性チェッカーは依存関係がないので、独立させるべき (例:1つのAIに何でもやらせようとするとテストが難しくなる) 8
  3. 柱2: 効率的な Knowledge 管理 AIレビュアーの「脳」となる知識ベース コードベース、設計ドキュメント、 コーディング規約など 「コード整頓」のアプローチ DevinWikiのようにコードからドキュメント 生成されるように

    人間にもAIにも直感的でないコードはリフ ァクタしていく リファクタリングが難しい既存コード構造 化 例:説明コメント、説明変数の追加、 デッドコード削除など 9
  4. Devinのレビュー:Before Jobがビジネスロジックを持って肥大化している例 class ExternalService::Contact::BulkUpdateUserNameJob < BaseJob sidekiq_options queue: :low_priority def

    perform(contact_ids_cache_key) # ... external_service_contacts.each do |contact| updated_name_attrs = user_name_attributes(contact) # ... (ビジネスロジックの一部) bulk_update_payload << ExternalService::Schemas::Bulk::Contact.new( id: contact.object_id, properties: updated_name_attrs ) # ... (さらにビジネスロジック) end # ... end private def user_name_attributes(contact) # 本来モデルにあるべきロジック # ... end 13
  5. Devinのレビュー:After モデルにロジックを移動しJobはシンプルに # app/models/group_proposal_user.rb class GroupProposalUser < ApplicationRecord def mask_personal_information!

    # ... マスキング処理 ... end end # app/models/group_proposal.rb class GroupProposal < ApplicationRecord def self.expired_without_application # ... 検索ロジック ... end def mask_users_personal_information! group_proposal_users.each(&:mask_personal_information!) end end 14
  6. AIエージェント「Roo Code」で課題解決 Roo Code とは? Cline(自律的なAIコーディングエージェント)から派生 Mode(エージェント人格のようなもの)を定義可能 Devinの課題に対するRoo Codeの利点 Knowledge・Rulesのファイル管理

    Git等でバージョン管理できて扱いやすい 変更履歴の追跡、複数人での共同編集 人格の増やし方がかんたんなので、エージェントの優劣をみるためのA/Bテス トができる 19
  7. Roo Code AIレビュアー育成マニュアル 1. 障害やヒヤリハット事例のPRをAIに見せる (インプット) 2. 「何がリスクだったか?」を答えを与えずにAIに徹底分析させる (思考訓練) 3.

    実際の障害対応PR(正解例)を見せる (模範解答) 4. 「どうすれば事前に気づけたか?」をAIに分析させる (再発防止策の検討) 5. 分析結果を 新規ModeのRulesにルールとして記述 (形式知化) 6. ルールが具体的すぎたら、適度に抽象化して汎用性を持たせる (応用力UP) 7. 別の類似PRをレビューさせ、正しく指摘できるかテスト (実践演習) →指摘できなかったら正しく指摘できるまで繰り返す 23