入社4ヶ月で大型機能をリリースしたAIエージェント活用術
はじめに
振り返ってみると、入社から4ヶ月目という比較的早い時期に、物流業界のカーボンニュートラル実現を支える重要な機能であるCO2排出量可視化機能を、フロントエンドからバックエンドまで一貫して実装し、本番リリースまで完了することができました。
その秘訣は、Claude CodeやDevinといった最新のAIコーディングエージェントを戦略的に活用したことにあります。
今回の記事では、実際の開発プロセスを振り返りながら、AIエージェントをどのように使い分けて効率的な開発を実現したのか紹介していきます。特に、新しい環境でのキャッチアップや大規模なコードベースとの向き合い方について、私の実体験をお話しできればと思います。
作ったもの:物流業界の環境負荷を可視化するシステム
今回開発したのは、FleetにおけるCO2排出量可視化機能です。この機能は荷主が自社のトラックやその他の車両がどの程度のCO2を排出しているかを、リアルタイムで確認できるようにするものです。
近年、物流業界でも環境負荷の軽減が急務となっており、特にカーボンニュートラルの実現に向けた取り組みが求められています。しかし、多くの会社では、自社の車両がどの程度の環境負荷を与えているのかを正確に把握することが困難でした。そこで、この機能により、日々の運行データから自動的にCO2排出量を算出し、環境負荷を意識した運行計画を立てられるようにしました
使用した技術スタック
今回のCO2可視化機能は、既存のシステムへの機能追加として実装しました。既存システムで使用されている技術スタックは以下の通りです。
バックエンドはGoを中心とした構成になっており、gRPCを使用したマイクロサービス間通信、MySQLによるデータ管理、Redisを活用したキャッシング機能で構成されています。フロントエンドはReactとTypeScriptの組み合わせで、ビルドツールにはViteが使用されています。
新機能の実装にあたっては、これらの既存技術に合わせて開発を行い、経済産業省と国土交通省が共同で作成している「ロジスティクス分野におけるCO2排出量算定方法共同ガイドライン Ver.3.2」に準拠した計算ロジックを追加実装しました。
AIエージェントの使い分け
Devinをコードリーディングのお供として活用
入社してまず直面したのが、想像を超える巨大なコードベースでした。50万行を超えるコードが複数のリポジトリにまたがって存在し、「一体どこから手を付ければよいのか...」という状況に陥りました。従来であれば、先輩社員に聞くなどしながら少しずつコードを読み進めていくのが一般的なアプローチですが、今回はDevinを活用することで、この課題を効率的に解決しました。
Devinの最大の強みは、大規模なコードベース全体を俯瞰的に分析し、関連するファイルや依存関係を素早く特定できることです。特に、複数のリポジトリを同時に読み込んで横断的に分析できる能力は、複数のリポジトリにまたがる機能追加において不可欠でした。
Devinとの実際のやり取り例
このシステムでCO2計算機能を追加する場合の影響範囲を教えてほしいです
車両の燃費データはどのテーブルに格納されていていますか?
フロントエンドで車両の走行データを結果を表示している画面のコンポーネントはどこで実装されていますか?
既存の走行距離計算ロジックや燃料消費量はどこに実装されていますか?
Devinは、これらの質問に対して驚くほど詳細かつ正確な回答を返してくれました。例えば、データの流れについては、データベーステーブルからgRPCサービス、BFFで呼びだされているREST API、そしてフロントエンドのコンポーネントまで、一連のデータフローを図解付きで説明してくれました。
Claude Codeを相棒エンジニアとして活用
一方、実装フェーズではClaude Codeを活用しました。Claude Codeは、日々のコーディング作業において、まさに隣に座っているペアプログラミング相手のような存在でした。
Claude Codeとの実際のやり取り例
業界ガイドラインの計算式も考慮したCO2排出量を計算・保持するvalue objectを実装してください。
CO2計算のテストを実装してください。
フロントエンドのこの画面に燃費を入力するフォームを追加してください。
特に印象的だったのは、Claude Codeは細かな指定をしなくても既存のコードスタイルやアーキテクチャパターンを理解して、それに合わせたコードを生成してくれることでした。例えば、CO2計算ロジックを実装する際には、既存の設計パターンを分析し、その思想に添った実装を提案してくれました。
AIエージェント活用のメリット・注意点
想像以上だったメリット
学習コストの劇的な削減
プロジェクトに新規に参画したエンジニアにとって最大の課題である、既存コードベースの理解において、AIエージェントの活用は革命的でした。通常であれば、他のエンジニアの時間を大幅に使いながら少しずつ理解していく必要があるところを、わずかな時間で実装に必要なレベルまで理解できました。これは、AIエージェントが24時間いつでも質問に答えてくれるという特性と、大量のコードを瞬時に分析できる能力によるものです。弊社ではAIに関して予算を気にせず使って良いという文化もあり、何の気兼ねもなく使い倒すことができました。
特に重要なのは、日本語で自然にコミュニケーションできることでした。日本語で「この部分はどういう意味?」「このパターンで実装したいけどどう書く?」と気軽に質問できたのは大きなアドバンテージでした。
予想を上回るコードの品質
AIが生成するコードの品質について、当初は不安もありましたが、実際に使ってみると予想を大きく上回るものでした。業界標準への準拠性については、AIエージェントが最新のガイドラインを理解し、それに基づいた実装を提案してくれました。特に、計算式の妥当性チェックや、エッジケースの洗い出しにおいて、人間では見落としがちな詳細まで考慮されていました。
既存パターンとの一貫性についても、AIエージェントは既存コードのスタイルやアーキテクチャパターンを正確に把握し、それに合わせたコードを生成してくれました。これにより、新機能が既存システムに自然に統合され、保守性の高いシステムを構築できました。
注意すべきポイント
コードレビューの重要性
AIが生成したコードは、その妥当性を人間が理解し、説明できることが重要です。なぜそのような実装になっているのか、どのような意図でそのコードが書かれているのかを理解することで、将来の保守性や拡張性を確保できます。
AIツールとの適切な距離感
AIエージェントは非常に強力なツールですが、過度に依存しすぎると、自分自身のプログラミングスキルの向上や、根本的な理解が阻害される危険性があります。AIエージェントを「補助ツール」として適切に位置づけ、自分自身で考え、判断する能力を維持・向上させることが重要です。
特に、新しい技術や概念を学ぶ際には、AIエージェントの説明をそのまま受け入れるのではなく、公式ドキュメントや信頼できる情報源で確認し、自分なりの理解を深めることを心がけました。
おわりに
入社してわずか4ヶ月で、物流業界の環境課題に貢献する機能を、フロントエンドからバックエンドまで一貫してリリースできたことは、正直自分でも驚いています。50万行を超えるコードベースを前にした時の「本当にこれを理解できるのだろうか...」という不安は非常に大きなものでした。
そんな中、AIエージェントという強力なパートナーを得て、想像以上のスピードで理解が進み、実装が形になっていく体験は、エンジニアとしての新たな可能性を感じさせてくれました。単に開発効率が向上しただけでなく、「新しい環境でもチャレンジできる」という自信や、「AIと協働すれば従来不可能だったことも可能になる」という確信を得られたことが、何より大きな収穫でした。
AIは決して万能なツールではありませんが、正しく活用することで、人間の能力を大幅に拡張してくれる強力なパートナーになり得ます。今後もAIに頼りきるのではなく、それぞれの強みを活かし合いながら、物流業界のデジタル変革というミッションに向けてAIと共に挑戦し続けたいと思います。
Discussion