freeeの開発情報ポータルサイト

AI駆動開発へ。freee は開発環境をどう進化させているか?- 前編

こんにちは!

freee AI駆動開発 (AI-Driven Development) チームのジェスンです。 社内では jason というあだなを使っているのですが、「エンジニアだから JSON にしたんですか?」 と言われて困っています 😆

はじめに

本記事は、5月頃に公開した下記の記事に続き、導入後の freee における AI駆動開発環境の進化や、最近の具体的な取り組みをご紹介するものです。 developers.freee.co.jp

その中でも前編では 「様々な AI Agent・Tools をどのように導入・活用しているのか」 について、実際の事例とともにご紹介します。

freee のプロダクトは、会計・販売をはじめ、人事労務や電子契約など、経営に欠かせない重要かつセンシティブな情報を日々取り扱っています。 そのため私たちは常に、「良いツールをどう安全に見極め、いかに素早く社内に導入・展開できるか」 という課題に向き合っています。

日々登場する新しい技術やツールに対し、freee が進める AI Agent や開発基盤の導入・整備の進め方、そして実際の活用によって開発現場がどう変わっているのか、その舞台裏をご紹介します。

AI Agent

Cline、Roo Code、Goose

Cline、Roo Code、Goose は、多くのエンジニアが設計・開発・ドキュメント作成などの日常業務で幅広く活用しています。 また、PdM や AD といったエンジニアではない職種でも Roo Code を取り入れ、PRD の作成やデータ分析にも活用しています。

AI Agent のツールごとのアクセス数

直近では Roo Code の利用割合が増加傾向にあります。一方で Goose には、CLI で動作する点や定型作業を Recipe として定義できる利点があり、これを活かして Commit や PR 作成の自動化、さらには GitHub Actions のような CI/CD 環境でのコードレビューやテストコード生成に取り組むチームもあります。

これら 3 つのツールは、Amazon Bedrock をベースにした社内の LLM 基盤上に、独自の Proxy Server *1 を設けることで、より安全で情報漏洩リスクの低い、安心して使える環境を実現しています。

さらに、AI Agent と連携可能な社内 MCP Server 基盤や、Roo Code の Custom Mode を活用した cutter *2 などの仕組みも整備されており、活用の幅は着実に広がっています。
(詳細はこの後のセクションでご紹介します)


Claude Code

最近話題の Claude Code も導入しており、積極的に AI 駆動開発に取り組むエンジニアを称えるため、毎週 「AI開発マニア」 を任命しています。 この称号は、一定の基準(例:期間内のPR 数や、Token 使用量など)を満たしたメンバーに与えられ、そのメンバーを中心に Claude Code を利用できるようにしています。

AI開発マニア数の推移
AI 開発マニア向けに特別に制作した Slack Badge


実際に社内からは、

  • 「Claude Code よりは Cline や Roo Code、Goose の方が自分には使いやすい」
  • 「性能面はもちろん、Bedrock で大量のトークンを使うより Claude Code の方がコスパが良い」
  • 「何が良いかはまだ分からないが、とりあえず色んなツールを試してみたい」

といったさまざまな声があります。

そのため freee では、「Claude Code を使うことが正解」 ということよりは、エンジニア一人ひとりが自分の好みや目的に応じて、最適なツールを自由に選んで使える環境*3を整えています。


また、Cline や Roo Code、Goose と同じく、社内の LLM 基盤を経由する path-through endpointを用意し社内標準のセキュリティを担保しています

claude() {
    (
        export ANTHROPIC_BASE_URL="https://<LLM 基盤の Endpoint>/proxy/anthropic_pass_through"

        read -r -d '' ANTHROPIC_CUSTOM_HEADERS <<EOF
X-API-TOKEN: Bearer <LLM 基盤の Token>
X-CLIENT: claude-code
EOF
        export ANTHROPIC_CUSTOM_HEADERS

        ~/.claude/local/claude "$@"
    )
}

Devin

完全自律型の AI ソフトウェアエンジニアである 「Devin」 も、すでに一部で導入が進んでおり、9月中の全社導入に向けて仕組みの整備や手続きを進めています。


利用者は Devin のドキュメント*4にガイドラインを意識しつつ、次のような場面で活用しています。

  • 変更内容が明確で、リポジトリにまたがる繰り返し修正や複数箇所での修正が必要な場合
  • Slack 上で修正方針について議論し、そのコミュニケーションを踏まえて修正を進めたい場合

こうしたケースでは、日常業務の流れの中で自然に、かつ気軽に開発へとつなげられるようになっています。

一方で、Devin が作成した PR は、Devinが作成したコードが誰であるか特定できないため自己 Approve ができてしまう危険性があります。そのため、validate-pr-review-action を導入し、必ず 2 人以上の Approve が必要となるように改善を行っています。


さらに Devin の活用は開発タスクにとどまらず、次のような場面にも広がっています。

  • PdM ・ AD が DeepWiki を活用して仕様調査を行い、企画やデザイン業務に応用
  • Dependabot 対応を拡張した 「Devindabot*5」 の運用
  • 開発中に AI Agent と DeepWiki MCP を連携させ、マイクロサービス(MSA)間での開発に活用

MCP Server

開発背景 ・ 技術選定

AI Agent がが必要とする新規データセットや各種ツールに安全にアクセスできるようにするためには MCP (Model Context Protocol) の設定と活用が欠かせません。しかし、様々な論文でも指摘されているとおり MCP Server には悪用されるリスクが比較的高い*6ため、freee では社内 MCP Server 基盤を構築しています。

社内 MCP Server 基盤の利用状況

MCP が登場した当初は、ローカル環境で CLI から実行可能な Binary 形式として Deploy する必要があったため、Go 言語と mcp-go を採用しております。(公式のgo-sdk のリリースに合わせて移行を進める予定)
執筆時点で、この社内 MCP Server 基盤には 20 個を超える MCP Server が稼働しており、社内の様々なユースケースを支えています。

どう運用しているのか?

公式・非公式を含む様々な OSS MCP を社内に導入する際には、Version 固定や Proxy pattern、Security filter といった対策を講じています。 さらに、社内 LLM 基盤のモニタリングを通じて、不正な MCP の利用や挙動、 Prompt Injection が発生しないよう監視し、基盤内で安全に利用できる環境を整えています。

それ以外にも、必要な機能を備えた OSS MCP が存在しない場合は、社内で独自に MCP Server を開発しています。

例えば:

  • Argo CD : SRE の gussan が開発した MCP Server (GitHub Repository 公開)
  • AskO3 : ChatGPT o3 モデルに専門的な質問をすることができる MCP Server
  • Shindan : PSIRT が脆弱性診断のために独自開発した MCP Server *7
  • Superfetch : Slack スレッド・Confluence・Web ページなどのコンテンツを取得し Markdown 化、さらに大規模なコンテンツに対しては Gemini が要約してコンテキスト圧縮を行ってくれる機能を備えた MCP Server
  • storybook : 社内デザインシステム*8(Vibes, 標準UI)の Components 情報や Docs が取得できる MCP Server

これらの MCP Server は AI 駆動開発チームだけでなく、社内 OSS として公開されており、他のメンバーもいつでも Contributor として参加できるようドキュメントも整備しています。

MCP Server 基盤の CONTRIBUTING.md

運用の課題

社内で様々な AI Agent や MCP Server が利用されるようになるにつれて、以下のような課題も挙がってきました。

  • go 言語以外の他の MCP Server も開発してチーム単位で自由に活用したい
  • MCP Server 設定を各ツールごとに管理するのが面倒くさい
  • ローカル PC 上で MCP Server を動かすコストが大きい

特に PdM や AD などエンジニアリングに慣れていない職種の方々が AI Agent や MCP を使い始めてからは、設定や管理に関する課題がより顕在化しています。 これらの課題を解決するために、MCP Server の設定を簡単にできる TUI ベースの機能を提供したり、EKS 上に Remote MCP Server を構築して、個々の設定負荷をできる限り減らす取り組みを進めています。

AI Agent 別の MCP Server 設定を簡単に管理できる TUI


最後に

このように freee では、様々な AI Agent・Tools を導入・活用しながら、開発環境の進化を進めています。後編では「これらをどのように活用し、開発環境をどう変えているのか?」についてご紹介しますので、ぜひご期待ください。

また、真夏の自由研究〜AIを使って雑にアプリを作ろう!〜 - freee Developers Hub という夏休みのアドベントカレンダーもあるので、良かったら是非ご覧ください

*1:Amazon Bedrock をベースにした社内の LLM 基盤上に独自の Proxy Server

*2:AIを活用してPRD、デザイン仕様書、標準UIベースのプロトタイプを自動生成する社内開発ツール

*3:AI開発マニアの任命基準を満たしていなくても、希望者は申請して Claude Code を利用可能

*4:Essential Guidelines - When to Use Devin

*5:Devindabot: Devinで実現するライブラリの脆弱性自動対応システム

*6:Trivial Trojans: How Minimal MCP Servers Enable Cross-Tool Exfiltration of Sensitive Data

*7:Shindan MCP の紹介記事

*8:社内デザインシステム