【ITニュース解説】How Qred Bank to use agents.md on scale
2025年10月02日に「Dev.to」が公開したITニュース「How Qred Bank to use agents.md on scale」について初心者にもわかりやすく解説しています。
ITニュース概要
Qred BankはAI(エージェント)を開発に活用し、作業効率化とルール遵守を強化した。AIへの指示を統一するため`agents.md`という標準ファイルを採用。中央指示リポジトリと各プロジェクトのファイルを連携させ、大規模開発でもAIの挙動を一貫させつつ柔軟に運用する仕組みを確立した。
ITニュース解説
Qred Bankは、システム開発においてAIを活用した効率化と品質向上に取り組む企業である。彼らは「エージェント的コーディング」という手法を導入し、小さなタスクから中程度の複雑なタスクまで、AIエージェントが開発作業の一部を自動的に実行したり、開発者に対して適切な情報やガイダンスを提供したりすることで、開発プロセスを支援している。特に、開発作業におけるコンプライアンス(法規制や社内規定の順守)の改善を目指している点が特徴的だ。一般的に、AIの導入はそれ自体がコンプライアンス上の懸念を生むこともあるが、Qred Bankはこれを体系的に考え、実装することで克服したと述べている。
Qred BankのIT環境は大規模だ。約50人のエンジニアが働き、コードを保存・管理する場所である「リポジトリ」が400以上存在し、そのうち約100が常に活発に開発されている。さらに、特定の機能だけを必要な時に実行する「サーバーレス関数」が800以上、アプリケーションを分離して実行する「コンテナ」が50稼働しており、これらが彼らのビジネスを支えている。このような複雑で大規模な環境において、AIエージェントの振る舞いを統一し、効果的に管理することが彼らの大きな課題だった。
初期のアプローチは、技術的な制約や構造の不統一さから、期待通りの成果が得られなかった。具体的には、開発全体の責任者であるCTOが、AIエージェントの動きや割り当てられたタスクに対して、一貫した指示を与え、組織全体に影響を及ぼすことが困難だった。この経験から、Qred Bankは特定のAIエージェント開発製品に全面的に依存するのではなく、より汎用性が高く、自社の状況に合わせた柔軟な解決策を模索する方向に方針転換した。
彼らはまず、開発支援ツールであるCopilotの中央指示機能を利用していたが、この機能には文字数制限という大きな課題があった。当初は1,000文字、後に4,000文字に拡張されたものの、詳細な指示を記述するには不十分だった。また、追加できる知識ベースの実際の活用方法も不明瞭だった。さらに、リポジトリ固有の指示を記述するファイルも存在したが、やはり文字数制限に悩まされた。そこでQred Bankは、各開発チームに最新の指示ファイルをコピーし、それぞれのニーズに合わせて修正するよう求めたが、この方法は組織全体でスケールするものではないと最初から認識していた。結果として、ほとんどのチームは指示ファイルを自分たちのリポジトリに追加すらしなかった。各リポジトリの多様な状況に対応するため、スクリプトを使ってファイルを自動で展開・編集することも検討されたが、現実の複雑な「例外ケース」が多く、この方法も断念された。これがCopilotの利用をやめる大きな理由の一つとなった。
次に彼らはClaude Codeというツールに切り替えたが、このツールはclaude.mdという特定のファイルフォーマットのみをサポートしていた。しかし、この時期に彼らはAgents.mdという新しい標準規格に出会う。このAgents.mdは、ほとんどのエージェント開発環境やコマンドラインツールで互換性があるという大きな利点を持っていた。Claude CodeではまだAgents.mdの直接サポートはないものの、Qred Bankは将来的な互換性を重視し、この標準に準拠しつつClaude Codeも利用できる方法を考案した。彼らは、claude.mdファイルの中で@[agents.md](http://agents.md)という記述を用いてAgents.mdを参照するようにした。この方法により、Agents.mdがAIエージェントに対する指示の唯一の「真実のソース」となり、将来的に異なるエージェント開発ツールを導入したり、それらを組み合わせて使ったりすることが非常に容易になった。
しかし、最も困難な課題は、組織全体で一貫性を保ちつつ、各リポジトリに固有の柔軟性も確保することだった。Qred BankではJavaScript、Java、Pythonといった複数のプログラミング言語が異なるユースケースやチームの専門性に合わせて使われていたため、全体的な原則やガイドラインを設けつつ、各言語や各リポジトリの個別の事情にも対応できる仕組みが不可欠だった。
この要件を満たすために、Qred Bankは次のような体系的な構造を構築した。まず、「ai-development-instructions」という名前の中央リポジトリを作成した。このリポジトリには、組織全体の共通の指示(例えば、どの技術を使うか、セキュリティに関する原則、APIの構造のルールなど)と、各プログラミング言語に特化した指示が格納される。
次に、各開発リポジトリには「Gitサブモジュール」という機能を使って、この中央リポジトリをサブフォルダとして含めるようにした。Gitサブモジュールとは、Gitというバージョン管理システムにおいて、一つのリポジトリの中に、別の独立したリポジトリを埋め込むことができる機能である。この仕組みにより、中央のai-development-instructionsリポジトリで指示が更新された場合でも、各開発リポジトリでgit pullコマンド(最新の変更を取り込むコマンド)を実行するだけで、その変更が自動的にすべての開発リポジトリに反映されるようになった。
さらに、各ローカルリポジトリには「agents-repo-specific.md」というファイルを用意した。このファイルには、そのリポジトリ固有のコンテキスト、例えばテストの実行方法、特定のフォルダやファイルの構造、あるいはそのリポジトリ特有のロジックなどが記述される。
最終的に、AIエージェントに対する指示を記述する各リポジトリのagents.mdファイルは、以下のような構造となった。まず「AI Instructions Manifest」として、複数のファイルから合成された指示に従うことを明記する。そして、「Central Instructions」のセクションでは、ai-development-instructionsリポジリト内の共通指示ファイルや言語別指示ファイルを参照する。具体的には、組織全体の指示、安全な開発のための指示、特定のJavaバージョンに関する指示などが挙げられる。最後に「Repository-Specific Instructions」のセクションで、各リポジトリ固有のagents-repo-specific.mdファイルを参照する。
この構造は、ai-development-instructionsリポジリト(組織のGitHubアカウントにある共有リポジトリ)が、すべての開発リポジリトにGitサブモジュールとして組み込まれることを示している。したがって、新しいリポジリトを設定する際の標準的な手順(ブループリント)の一部として、この仕組みが最初から導入されることになった。
この体系的なアプローチにより、CTOは、多数のリポジリトと多様な経験を持つエンジニアたちがいる大規模な組織においても、コードの開発や本番環境へのデプロイにおけるAIエージェントの振る舞いを、強力かつ柔軟にコントロールできるようになった。これは、開発プロセスの一貫性、品質、そしてコンプライアンスを維持・向上させる上で非常に重要な成果である。Qred Bankの事例は、AI技術を大規模な開発組織に効果的に組み込むための実用的な戦略と、その中で生じる課題をどのように解決していくかを示す良い例と言える。