最近のコードリーディングの話
はじめに
初めまして!
皆様どうもこんにちは、こんばんは、おはようございます。
エンジニアの enomoto です。
開発業務においてコーディングエージェントを組み込むのはもはや当たり前になってきています。
コーディングエージェントは、コード生成だけでなく、既存コードの理解にも大きな力を発揮します。
今回は、コードリーディングにおけるコーディングエージェントの活用について、実際の業務での経験を踏まえて書いていきたいと思います。
最近のお仕事について
最近は新規開発だけでなく、受託のお仕事もあり、多種多様なコードを見る機会が増えています。
既存のコードベースをきちんと理解し、適切に修正や機能追加を行うためには、コードリーディングが欠かせません。
自分が慣れている言語だったらまだ良いのですが、未経験の言語、フレームワークだとなかなかコードリーディングに時間がかかっていました。
そのフレームワークのお馴染みのルール、言語の慣習、設計思想などなど、そういった根本的な部分から理解するのが時間がかかる要因でもありました。
ドキュメントが不十分だったり、複雑なビジネスロジックが絡み合っていたりすると、さらにコードの理解に多くの時間がかかってしまいます。
コーディングエージェント をコードリーディングに使う基本的なアプローチ
コーディングエージェントは、コードリーディングにおいて強力な補助ツールとなります。
基本的な活用方法
-
コード全体の構造把握
- リポジトリの全体像を理解する
- 主要なクラスやモジュールの関係性を把握する
- ドキュメントが充実しているとさらに、深い理解ができる(ドキュメントが誤った情報であれば、解釈がズレる)
-
特定のコードの詳細理解
- 複雑なロジックの解説を求める
- 使われているデザインパターンの確認(特に未経験の言語、フレームワークだと、感覚的に何をやっているのか、どのような作り、思想でアプリケーションが作られているのか?というのが分かりづらかったりします)
-
依存関係の可視化
- 特定の関数やクラスがどこで使われているか
- 変更した場合の影響範囲の推測
具体的な質問例
- 「このクラスの責務は何ですか?」
- 「この関数の処理フローを説明してください」
- 「このコードで使われているデザインパターンは何ですか?」
- 「このリポジトリの中身をざっくり教えてください」
- 「この変更が影響する可能性のある箇所を教えてください」
- 「この処理は ruby でいうと〇〇な処理と同じですか?」
コードリーディングこそコーディングエージェント
個人的に、コードリーディングこそコーディングエージェント が最も力を発揮する場面だと考えています。
なぜコードリーディングとコーディングエージェント の相性が良いのか
コード生成に関しては早いが、完璧ではありません。
しかし、既存のコードを読むというのはかなりの精度でできることです。(もちろん与えるコンテキストによっては間違ったことをいう可能性もあり、全体像が見えていないと、わからないこともある。)
なので、必ず全体像からスコープを小さくしていき、聞いていくのが良いと考えています。
従来の方法との比較
従来のコードリーディング:
- ドキュメントを読む → コードを追う → 実行して確認する
- 時間がかかる
- わからない部分で詰まりやすい
コーディングエージェント を活用したコードリーディング:
- AI に質問 → 説明を受ける → コードで確認 → さらに深掘り
- 効率的
- 何度も同じことが聞けたり、わからない文法に対しても調べなくても良い。
コードリーディングでのコーディングエージェント 活用のコツ
実際に使ってみて有効だったコツをいくつか紹介します。
1. 段階的に質問する
いきなり詳細を聞くのではなく、まず全体像を把握してから詳細に入る。
2. 具体的なコードスニペットを示す
抽象的な質問よりも、具体的なコードを示して質問する方が精度の高い回答が得られる。
3. 回答を鵜呑みにしない
AI の説明を参考にしつつ、実際のコードで確認する習慣をつける。
特に重要な部分は、実行して動作を確認する。
怪しそうな部分はほんまなん?根拠はどこ?と詳しくガンガン追求するのが大事。
案外間違ってましたー。というのはあったりします。
4. 効果的なシーン
以下のような場面で特に威力を発揮します:
- レガシーコード: ドキュメントがない古いコード
- 複雑なビジネスロジック: 多くの条件分岐や計算が絡むコード
- 経験のない言語のコード: 慣れていない言語で書かれたコード
- 大規模なコードベース: ファイル数が多く全体像が掴みにくいプロジェクト
5. 避けた方が良い使い方
- AI の説明だけで理解したつもりになる
- コードを読まずに AI の説明だけに頼る
OSS などの公開されているリポジトリが気軽に読めるようになる
これまで OSS 開発に参加したくてもできない、公開されているフレームワーク本体(例えば Rails 本体の動きなど)がどういう処理をしているかわからないといった一定の敷居の高さはジュニア~ミドルぐらいのエンジニアは感じていたと思います。(自分もそうだった)
技術的理解がないと難しい、知らない言語だと難しい、なんか書いてあることがよくわからん、みたいな壁にぶち当たってしまい、もういいかーとなってしまいがちでした。
そういった壁を一緒に登ってくれるパイセンであり、大幅に読みやすさが飛躍する道具でもあります。
近年の XX as code と相性が良い
Infrastructure as code などが代表的で、近年はなんでもコード化できてしまう流れがあると思っています。
大規模開発や開発チームへの適用のしやすさなどさまざまな要因がありますが、これも AI によるコードリーディングとかなり相性が良いです。
コード化によるメリットの一つに加えられる日も来ると思っています。
終わりに
コーディングエージェントは、コードリーディングの生産性を大きく向上させてくれます。
ただし、AI はあくまで補助ツールであり、最終的には自分自身でコードを理解し、判断する必要があります。
AI の説明を参考にしつつ、実際のコードを確認し、実行して動作を確かめることで、より深い理解が得られます。
コードリーディングは開発者にとって重要なスキルですが、コーディングエージェント を上手く活用することで、より効率的に、より深く学習できるようになりました。
いつか deep dive 的な記事も書きたい!
皆さんもぜひ、コードリーディングにコーディングエージェントを活用してみてください!
Discussion