初めまして、弁護士ドットコム事業部でバックエンドエンジニアを担当しています、渡辺です。
今回は、最近私がジョインした新規プロダクト開発チームでの AI 利用についてお話しします。
新規プロダクト開発チームについて
弁護士ドットコム事業部では弁護士ドットコムサイトを中心とした、複数のサービスを展開しています。すでに世に出ているプロダクトの開発はもちろん、新しいプロダクトの開発なども並行して進んでおります。
私は今年の 6 月頃から事業部の新規プロダクトチームにジョインし、バックエンドの開発を担当しています。既存プロダクトは PHP で実装されているケースが多いですが、新規プロダクトでは Go を利用したバックエンド開発となっており、事業部的にも新しい試みとなっております。
課題:コード品質について
新規プロダクトチームでは、私がジョインした時点で必要な機能は 6〜7 割ほど実装完了しており、残りの機能の開発とすでに実装完了した機能のブラッシュアップ、両方のタスクが存在する状態でした。
メンバーも優秀な方々が集まっており、非常にスピーディーな開発ができていた一方で、コード品質については一定量の課題が残っていました。
ロジックの部分もテスト未実装の箇所がちらほらあり、今後の機能実装やリファクタリングに懸念が残っていました。また静的解析も go vet コマンドでの検査のみとなっており、より詳細な解析を施してコード品質向上を目指したいという気持ちが強くなっていました。
チームメンバー間で話し合い、このタイミングで上記のテコ入れをすることを決めました。
AI ツールの活用
弊社では cursor, Claude Code などをはじめとした、多くの AI ツールが利用できる状態となっております。コード品質の改善に力を入れつつ、機能開発のスピードも落としたくなかったチームとしては、 AI ツールを用いた開発効率化はぜひともものにしたいところでした。
理想は、機能開発とコード品質向上のタスクが並列で進むような形です。
しかし、ただ闇雲に AI に対してテストの実装やリファクタリングをお願いしても、なかなか思い通りのコードが生成されませんでした。作成されたテストが通らなかったり、 t.Skip() で無理やりテストを通そうとすることもありました。
また AI による作業の効率性を定量的に評価したいという思いもあったため、何らかの形で AI がこなすタスク量を可視化する必要がありました。
上記を踏まえたうえで、まずはコードの品質を可視化し、AI に適切な粒度のタスクを割り振るような工夫を施す必要が出てきました。タスクの粒度を調整することによって、コード生成の精度向上とタスク量の可視化を達成を図りました。
カバレッジレポートとリンターの導入
今回はそれぞれ以下のツールを利用しました。
jandelgado/gcov2lcov
カバレッジレポートの生成には jandelgado/gcov2lcov を利用しました。正確には jandelgado/gcov2lcov を用いて lcov ファイルを生成し、 genhtml コマンドを用いて html 形式のカバレッジレポートを出力します。
go tool cover コマンドを用いる方法 でもカバレッジレポートを出力できましたが、各パッケージのカバレッジを表形式で可視化したいという思いもあり、今回のツールの採用に至りました。
カバレッジレポート例

golangci/golangci-lint
静的解析ツールとして golangci/golangci-lint を採用しました。 Go のリンターとして社内外で利用実績が多く、カスタマイズ性も高いためこちらを採用しました。
リンター設定例
yaml 形式で実行したいリンターを指定できます。利用可能なリンターは 公式ドキュメント で確認できます。以下はチームに導入した際の設定例です。
linters: default: none enable: - errcheck - govet - ineffassign - staticcheck - unused - gosec - misspell - gocyclo - prealloc - unconvert - unparam - whitespace
導入による効果
カバレッジレポートとリンター導入により、以下のような効果を得ることができました。
AI のコード生成の精度向上
カバレッジを可視化することで AI に対してより具体的かつ適切なスコープでの指示を出せるようになりました。 これにより、結果として出力されるコードの質が向上しました。
例
- 「〇〇パッケージのテストを実装してください」
- 「〇〇パッケージの〇〇関数のテストケースを追加してください」
- 「リンターが検知した errcheck のイシューを修正してください」
AI がこなすタスク量の可視化
AI の生成したコードが、カバレッジレポートやリンターの指標にどれくらいの影響を与えたのかが可視化されました(詳細は後述)この数値は、今後の AI ツール利用でも参考となると感じています。
導入後の指標の変化
大体 1 か月ほどで、以下のような指標の変化となりました。
- リンターのイシュー: 45 件 → 0 件
- テストカバレッジ: 44.1 % → 76.7 %
- 計測時点で約 4000 行のコード
今回の指標変化のほとんどは AI が生成したコードによるものであり、機能実装や別タスクをこなしたうえでの成果でしたので、個人的には結構満足しています。
今後の展望
今回、コーディングは cursor と Claude Code 主にを利用してきましたが、これら以外の AI ツールの利用も試してみたいと考えています。直近だと devin が気になっているため、今後の開発業務で利用してみたいです。
まとめ
AI ツールの台頭は確かに我々の開発環境を大きく変えてきました。ですが、全く 0 から勉強し直すというわけでもなく従来のアプローチと AI をどう組み合わせていくか、みたいな発想も重要度が増してきていると感じました。まだ試行錯誤の部分が多いですが、今回の対応を機により理解を深めたいです。