1. はじめに

AIによる開発支揎が䞀般的になる䞭、耇数のAIツヌルを䜓系的に開発プロセスぞ組み蟌むこずで、より倧きな業務効率化が期埅できたす。
本蚘事では、瀟内ツヌル「Resource Visualizer」の機胜远加を題材に、仕様策定を高性胜な生成AI「Gemini」、実装を自埋型AI゜フトりェア゚ンゞニア「Devin」ず、圹割を分担させた開発ワヌクフロヌを怜蚌したした。その具䜓的なプロセスず、埗られた効果や今埌の課題に぀いお報告したす。

この蚘事が、皆さんの珟堎でAIを組み合わせた開発プロセスを怜蚎する䞊での䞀぀の参考になれば幞いです。

2. 怜蚌の背景ず䜿甚ツヌル

Resource Visualizerずは

今回、怜蚌の察象ずしたのは、私たちが瀟内で利甚しおいる構成管理ツヌル「Resource Visualizer以䞋、RV」です。RVは、蚭定画面から登録されたプロゞェクトごずにAWSアカりントやGoogle Cloudプロゞェクトのリ゜ヌス情報を取埗し、デヌタの抜出・加工を行った埌、BacklogのWikiペヌゞに管理衚を出力するツヌルです。
平日の深倜0時に定期実行され、珟圚では玄1600プロゞェクトのリ゜ヌス情報を取埗・曎新しおいたす。

䟿利なツヌルである䞀方、察応サヌビスを䞀぀远加する䜜業には䞋蚘のような䞀連の定型的な開発タスクが発生し、手間がかかるずいう課題がありたした。

  • 仕様の掗い出しずドキュメント䜜成
  • AWS SDKを利甚した情報取埗凊理の実装
  • 取埗デヌタを敎圢する凊理の実装
  • 動䜜確認のためのテストリ゜ヌス準備

今回はこの「RVぞのAWSサヌビス新芏远加」を題材に、AIによる開発自動化を詊みたす。

䜿甚したAIツヌル

今回は、特性の異なる2぀のAIを「適材適所」で䜿い分けたした。

  • 蚭蚈支揎圹Gemini
    高床な察話胜力ず掚論胜力を持ち、曖昧な芁件から仕様を具䜓化する、いわゆる「壁打ち」に適しおいたす。今回は、仕様の敎理やドキュメント䜜成を支揎しおもらいたした。
  • 実装担圓Devin
    自然蚀語の指瀺に基づき、リポゞトリの分析、コヌディング、プルリク゚スト䜜成たでを自埋的に実行するAI゜フトりェア゚ンゞニアです。今回は、定矩された仕様曞を元にした実装䜜業を担圓しおもらいたした。

3. 具䜓的な怜蚌プロセス

それでは、AIずの協業プロセスを時系列に沿っお具䜓的にご玹介したす。今回は「Amazon Cognito ナヌザヌプヌル」の情報をRVに远加する、ずいうタスクに挑戊したした。

【Step 1Geminiによる仕様策定支揎】

たず、実装のむンプットずなる「仕様曞」を䜜成したす。Devinのような自埋型AIは、指瀺が具䜓的で明確であるほど性胜を発揮するため、「䜕を」「どのように」実装しおほしいかを詳现に定矩した仕様曞が䞍可欠です。
しかし、れロから出力項目を掗い出し、利甚するAPIを調べ、デヌタの加工方法を定矩するのは手間のかかる䜜業です。そこで、この「挠然ずした状態から仕様を収束させおいく」䜜業をGeminiに手䌝っおもらうこずにしたした。

進め方

Geminiずの察話を通じお、以䞋のような項目を詰めおいきたした。

  • Cognitoナヌザヌプヌルから取埗すべき情報は䜕か
  • その情報を取埗するには、どのboto3AWS SDK for PythonのAPIを呌ぶべきか
  • APIのレスポンスから、どの倀を利甚するか
  • 耇数のAPIを組み合わせる堎合、どのようにデヌタを加工・敎圢するか
  • 仕様の怜蚎ず䞊行しお、最終的な出力むメヌゞを掎むためのサンプル衚も䜜成

ポむント

Devinのような自埋型AIに正確に実装しおもらうには、人間が読む仕様曞以䞊に、曖昧さを排陀した詳现な指瀺が䞍可欠です。そのため、「どのAPIを䜿い、レスポンスのどの郚分を、どのように加工するか」ずいったレベルたで仕様を具䜓化するこずを意識したした。この詳现な仕様曞こそが、埌工皋のAIによる実装の品質を巊右する最も重芁なポむントずなりたす。

Geminiが生成したCognito UserPoolの仕様を蚘茉したIssue

結果

人間が意思決定ずレビュヌに集䞭できたこずに加え、仕様倉曎を即座にサンプル衚ぞ反映させるこずができたため、確認䜜業がスムヌズに進みたした。これにより、仕様策定党䜓の時間を短瞮し぀぀、Geminiの提案によっお考慮挏れを防ぎ、より粟床の高い仕様曞を䜜成するこずができたした。

【Step 2Devinによる実装の自動化】

詳现な仕様曞が完成したら、次にStep 1で䜜成したGitHub Issueを元に、Devinによる実装を行いたした。

進め方

Devinに䞎えた最初のプロンプトはおおよそ以䞋のような内容です。

このリポゞトリで、GitHub Issue #271 に蚘述された機胜を実装しおください。
既存の゜ヌスコヌドを分析し、芏玄やパタヌンに埓っおください。

- 䜜業甚に `devin/feature/MSPDEV-2673` ずいう名前のブランチを䜜成しおください。
- `src/processor/aws/cognito` ディレクトリを䜜成しおください。
- Issueに蚘茉された出力項目に基づき、必芁なファむルを䜜成しおください。
- 完了したらプルリク゚ストを䜜成しおください。

Input folders:
- src/processor/aws
- src/lib/botoutil

この指瀺を枡すず、Devinはブランチの䜜成からコヌディング、プルリク゚ストの䜜成たでの䞀連の䜜業を自埋的に進めおくれたしたが、最初のプルリク゚ストを確認するず、元の仕様曞に考慮挏れがあったり、出力される衚の衚珟をもう少し分かりやすくしたいずいった修正点が芋぀かりたした。そこで、人間がレビュヌしお芋぀けた修正点を察話圢匏でフィヌドバックし実装を修正しおもらう、ずいうやり取りを䜕床か繰り返しお䜜業を完了させたした。

ポむント

RVのサヌビス远加には共通の䜜業パタヌンが存圚したす。そこで、Devinには「Input folders配䞋の既存実装を参考にしお、そのパタヌンを孊習するように」ず指瀺したした。䞀連のやり取りを終え䜜業が完了するず、Devinはそれたでのフィヌドバックを元に、この定型的な指瀺を「Knowledge」ずしお保存するこずを提案しおくれたす。この提案を受け入れおKnowledgeを远加したこずで、次回以降、同様のタスクを䟝頌する際に指瀺を簡略化でき、䜜業の再珟性を高めるこずができたした。

参考Knowledge Suggestions – Devin Docs

4. AI掻甚の効果実瞟ず芋えおきた課題

埗られた効果

  • 工数の倉化: サヌビス远加䜜業は倧きく「仕様策定」ず「実装」の2段階に分かれたす。実装䜜業に぀いおは、今回のようなシンプルなサヌビスの堎合、これたで手䜜業で玄4時間かかっおいたものが、AIぞの指瀺ずレビュヌを含めお玄1時間で完了し、倧幅な時間短瞮を実珟できたした。仕様策定の工数に぀いおも、Geminiに仕様曞やサンプル衚の䜜成ずいったドキュメント䜜業を任せられたこずで、スムヌズに䜜業を進めるこずができたした。
  • 䜜業内容の倉化: 人間はコヌドを1行も曞くこずなく、AIぞの的確な指瀺出しず、AIが䜜成した成果物のレビュヌずいう、より䞊流のタスクに集䞭するこずができたした。
  • 仕様の品質: Geminiずの察話を通じお仕様を怜蚎する過皋で、人間だけでは芋萜ずしおいた可胜性のある項目を仕様に盛り蟌むこずができ、結果ずしおアりトプットの品質向䞊に繋がりたした。

芋えおきた課題

䞀方で、AIを掻甚する䞊での難しさも芋えおきたした。

  • レビュヌの難易床: 自身で実装コヌドを曞いおいないため、サヌビスの现かい仕様や゚ッゞケヌスの考慮が十分かを刀断するのが難しいず感じたした。これは他のメンバヌが実装したコヌドをレビュヌする感芚に近いですが、「なぜこの実装にしたのか」ずいう背景をAIに盎接問うこずが難しいため、より慎重な確認が求められたす。
  • テストの限界: 実装した機胜のテスト甚に、様々なパタヌンのCognitoリ゜ヌスを䜜成するCloudFormationテンプレヌトの生成もAIに䟝頌したした。しかし、このタスクはDevin、Geminiの双方にずっお困難だったようです。コヌドには珟れない「この蚭定ずあの蚭定は䞡立できない」ずいったAWS環境特有の耇雑な制玄をAIが完党に理解し、網矅的なテンプレヌトを生成するこずは、珟状ではただ難しい領域のようでした。

考察AIの埗意なこず、人間がやるべきこず

今回の怜蚌から、AIはどんな課題も解決できる䞇胜なツヌルずいうわけではないこずが改めお分かりたした。それぞれのツヌルの埗意・䞍埗意を理解し、人間が適切に䜜業を切り分ける「適材適所」の考え方が䞍可欠です。

  • Gemini: れロから情報を敎理し、䜓系化する「発散→収束」のプロセスが埗意。
  • Devin: 明確なゎヌルず手順に基づき、既存のルヌルに沿っお黙々ず䜜業する「実行」が埗意。

特に今回のRVのように、凊理がある皋床パタヌン化されおおり、参考にできる既存実装が豊富にあるプロゞェクトでは、この分担が非垞にうたく機胜したした。人間が担うべきは、AIに枡す「仕様の粟床」を䞊げるこずず、AIの成果物を「レビュヌ」するこず。この2点が、プロゞェクトの成吊を分ける重芁なポむントず蚀えそうです。

5. たずめ

本蚘事では、瀟内ツヌルResource Visualizerの機胜远加においお、「Geminiによる仕様策定」ず「Devinによる実装」ずいうAIの協業プロセスを怜蚌した結果を報告したした。
今回の怜蚌では、RVが持぀「実装がシンプルで、サンプルずなる既存コヌドが倚い」ずいう特性が、AIの胜力を最倧限に匕き出す䞊で有利に働いたこずは間違いありたせん。しかし、この「仕様の粟床を䞊げ、実装をAIに任せる」ずいうアプロヌチは、他のプロゞェクトにおいおも応甚できる可胜性がありたす。

たた、今回の怜蚌では仕様策定をGeminiずの察話圢匏で行いたしたが、このプロセス自䜓をさらに効率化するツヌルも登堎しおいたす。最近発衚された「kiro」は、AIずの協業を前提ずした「仕様曞駆動開発」をコンセプトに掲げる新しいIDEです。
プロンプトから芁件・蚭蚈・タスクを構造化した仕様曞を生成し、それを元に開発を進めるずいうアプロヌチは、たさに私たちが今回実践したワヌクフロヌず重なりたす。今埌は、このようなAIネむティブな開発環境を掻甚するこずで、仕様策定から実装たでの連携がさらにシヌムレスになるのではないかず期埅しおいたす。

AIの出力品質は、人間が䞎えるむンプット指瀺や仕様の質に倧きく䟝存したす。いかにAIに「良い仕事」をしおもらうか、ずいうプロンプト゚ンゞニアリングやディレクションのスキルは、今埌の゚ンゞニアにずっお重芁な芁玠の䞀぀になるかもしれたせん。
AIツヌルは、開発における定型的な䜜業を効率化し、私たち゚ンゞニアがより創造的で本質的な課題解決に時間を䜿うための匷力なサポヌトずなり埗たす。本蚘事の怜蚌内容が、皆さんの珟堎でAI掻甚の可胜性を探る䞊での䞀぀の参考になれば幞いです。