はじめに
こんにちは!マイクロアドのシステム開発部の酒井です。
ここ数年、ChatGPTをはじめとする生成AIが大きな話題になっていますね。マイクロアドでも、日々の開発業務で生成AIを活用しています。使ってみると想像以上に便利で、もはや日常でも手放せないツールになっています。
この記事では、マイクロアドの開発で主に使っているGemini Enterprise(旧Google Agentspace)とGitHub Copilotという2つの生成AIツールについて、どんな場面でどのように活用しているのかをご紹介します。「生成AIって実際の開発現場でどう使われてるの?」という疑問をお持ちの方の参考になれば嬉しいです。
マイクロアドの開発フロー
まず、私たちシステム開発部が普段どんな流れで開発を進めているのか、簡単にご紹介します。開発と言ってもひとえにコーディングだけでなく、マイクロアドのエンジニアは上流から下流まで一気通貫で担当をします。
マイクロアドではスクラム形式での開発を採用しており、開発要望を「エピック」という大きな単位で管理し、それを機能ごとの「ストーリー」に分割します。それぞれのストーリーの中で、以下のステップを踏んで開発を進めていきます。
- ビジネス側との要望すり合わせ
- システム仕様検討
- 受け入れテスト項目の作成(リリース前に行うシステム検証)
- 実装
- レビュー
- テスト
- リリース
この流れの中で、生成AIが色々な場面で活躍しています。具体的にGemini EnterpriseやGitHub Copilotをどう使っているのか、順番に見ていきましょう。
Gemini Enterpriseの活用
Gemini Enterpriseとは
Gemini Enterpriseは、Googleが提供する生成AI支援プラットフォームです。企業内の様々な情報ソースと連携し、文書作成、情報検索、要約などのタスクを効率化できるツールです。社内のドキュメント、データベース、その他のナレッジベースと統合することで、文脈に沿った高品質なアウトプットを生成できます。
マイクロアドでGemini Enterpriseを採用した理由
マイクロアドでは、普段の会話にSlackを利用し、ドキュメント管理にConfluenceを活用しています。Gemini Enterpriseには、SlackやConfluenceと連携するための専用コネクタが用意されており、社内のナレッジベースとシームレスに統合できる点が大きな決め手となりました。
実は、Gemini Enterprise導入以前には、社内DBにConfluenceのドキュメントを格納し、独自にRAG(Retrieval-Augmented Generation)システムを構築して検証していた時期もありました。しかし、以下のような課題がありました。
- 検索精度の限界による関連情報の取得漏れ
- 生成された回答の品質が実用レベルに達しない
Gemini Enterpriseを試験的に導入したところ、独自RAGシステムと比較して、実用に足るレベルの回答生成精度を実現できることが分かりました。特に以下の点で優れていました。
- 文脈理解の精度: Confluenceページ間の関連性を適切に把握し、必要な情報を参照
- 回答の十分性: テストケースなどでも必要なテストを十分に網羅して列挙してくれる
この比較検証の結果、独自RAGシステムからGemini Enterpriseへの移行を決定しました。Confluenceコネクタにより、以下のメリットが得られています。
- 社内の技術ドキュメントへのアクセスが容易
- テストケース作成時にConfluenceの情報を参照可能
- 開発効率の大幅な向上
システム仕様検討での活用
システム仕様検討のフェーズでは、ビジネス要件を技術仕様に落とし込む必要があります。ここでGemini Enterpriseを活用することで、以下のような支援を受けられます。
- 要件の整理と構造化: ビジネス側からの要望を受けて、技術的な観点から仕様として整理する際の壁打ちと叩き台を生成
- 既存システムとの整合性確認: システムの仕様ドキュメントを参照しながら、既存システムとの連携方法の検討や影響範囲の確認
活用例
例えば、新機能の追加要望があった場合、以下のようなプロンプトでGemini Enterpriseに問い合わせます。
「〇〇機能を△△のアプリに追加したい。既存の□□システムとの連携を考慮した場合、 どのような技術的な検討が必要か、仕様書を確認しながら整理してください。」
Gemini Enterpriseは社内の既存ドキュメントや技術資料を参照しながら、検討内容の叩き台を生成してくれます。これにより、以下のような効果が期待できます。
- 検討の初期段階での時間削減
- 影響範囲の見落とし防止
- 既存システムとの整合性確保
受け入れテスト項目の作成での活用
受け入れテスト項目の作成においても、Gemini Enterpriseは有効です。
- テストケースの網羅性向上: システム仕様から必要なテストケースを自動生成
- 境界値やエッジケースの提案: 考慮すべきテストシナリオの洗い出し
- テストドキュメントの整形: 社内のテスト仕様書フォーマットに合わせた形式での出力
活用例
システム仕様書とJIRAチケットの内容を入力として、以下のような定型のプロンプトでテスト項目の生成を依頼します。
プロンプト例を見る
# 指示内容 JIRAチケットに記載された開発内容について、受け入れテストのためのテスト因子を作成してください。 # ステップ1: 開発対象のシステムを理解 Confluenceに記載されているシステム仕様書を参照し、開発対象のアプリケーションに関連する部分だけを抽出し、内部的な前提として扱ってください。 * システム全体の仕様: [仕様書URL] # ステップ2: 開発内容の理解 以下のJIRAチケットの内容を理解してください。 不明点があればConfluenceのドキュメントを参照してください。 <jira_ticket_description> [JIRAチケットの内容] </jira_ticket_description> # ステップ3: テスト因子を作成 開発内容が期待通りに実装されていることを確認するためのテスト因子を考えてください。 ブラックボックステストの観点で、以下を重視してください: * システムへの入力(APIリクエストなど) * システムが参照する外部環境(データベース、キャッシュなど) * システムからの出力(レスポンス、ログなど) # ステップ4: ドキュメント化 マークダウン形式で、テスト因子を箇条書きで出力してください。 # ステップ5: 自己レビュー 生成したドキュメントを、プロダクトオーナー、開発者、テストエンジニアの視点でレビューし、 必要に応じて改善してください。最終的な完成版のみを出力してください。
このようなステップに分けたプロンプトにより、テスト項目の漏れを防ぎ、品質の高いテスト設計が可能になります。
GitHub Copilotの活用
GitHub Copilotとは
GitHub Copilotは、GitHubとOpenAIが共同開発したAIペアプログラミングツールです。エディタ上でコードを書く際に、文脈に応じたコード補完や提案をし、開発者の生産性を大幅に向上させます。複数のプログラミング言語に対応し、コメントからコードを生成する機能も備えています。
MCPサーバによる連携
マイクロアドでは、GitHub Copilotの活用をさらに進化させるため、MCP(Model Context Protocol)サーバを導入しています。MCPサーバを利用することで、Copilotが以下のことが可能になりました。
- Confluenceに記載された仕様を直接参照しながらの開発
- 社内DBのDDLやデータを把握しながらの開発
具体的には、以下のようなワークフローを実現しています。
- アプリケーションの全体把握: Serena MCPなどを用いてリポジトリ内のコード全体を一度読み込ませる
- 仕様・開発内容の直接参照: Copilotに「Confluence上の〇〇機能の仕様を確認してください」と指示すると、MCPサーバ経由でConfluenceから該当ページを取得。また、Gemini Enterpriseで事前に作成した開発内容やテスト項目も参照可能
- 実装計画の作成: 取得した仕様に基づいて、Copilotが実装計画を作成。この段階で既存のアーキテクチャとの整合性や実装方針の妥当性を確認
- 手戻りの削減: 実装前に方針を固めることで、「実装してから設計ミスに気づく」といった手戻りを大幅に削減
sequenceDiagram
participant User as 開発者
participant Copilot as GitHub Copilot
participant MCP as MCP Server
participant Conf as Confluence / 社内DB
User->>Copilot: 「〇〇機能の仕様を確認して」
Copilot->>MCP: 情報取得リクエスト
MCP->>Conf: ドキュメント検索・取得
Conf-->>MCP: 仕様データ
MCP-->>Copilot: コンテキストとして提供
Copilot-->>User: 仕様に基づいた回答・コード提案
ワークフローの効果
このワークフローをCopilotで実現することで、以下のようなメリットが得られています。
| メリット | 説明 |
|---|---|
| 既存アーキテクチャの把握 | プロジェクトのコードベース全体を分析し、既存の設計パターンやアーキテクチャを理解した上で計画を立案 |
| 実装方針の妥当性確認 | 「この実装方針で問題ないか」を事前に検証し、チームでレビュー可能 |
| タスク分割の最適化 | 実装を適切な粒度のタスクに分割し、開発の優先順位付けを支援 |
これにより、誤った方針で開発が進むことを防ぎ、未考慮の要件や影響範囲の早期発見が可能となり、より確実で効率的な開発が実現しています。
実装フェーズでの活用
実装フェーズでは、GitHub Copilotが最も威力を発揮します。
Agent Modeでの対話的な実装
マイクロアドでは、GitHub Copilotの「Agent Mode」を使った対話的な実装がよく活用されています。Agent Modeでは、Copilotに段階的に指示を出しながら実装を進めていくことができます。
特に、前述のMCPサーバ連携で事前に実装計画を立てているため、Agent Modeでの対話が非常にスムーズです。既に仕様を理解し、実装方針が明確になった状態で実装を開始するため、指示が的確で、Copilotからの提案も期待通りのものになりやすいのです。
具体的な活用方法は以下です。
- 実装計画の確認: MCPサーバで作成した実装計画をCopilotに確認させる
- 段階的な実装: 「実装計画の最初のステップから実装してください」と指示し、Copilotが提案したコードを確認
- 次のステップへ: 「次は〇〇の処理を追加してください」と、計画に沿って段階的に実装を進める
- リファクタリング: 「この部分をより読みやすく整理してください」など、対話的に改善
- テストの追加: 「このコードに対するユニットテストを作成してください」
この対話的なアプローチに加え、事前の実装計画により、開発者は実装の進行を細かくコントロールしながら、より効率的にコードを作成できます。
その他の活用機能
Agent Modeに加えて、以下のような機能も活用しています。
- コード補完の高速化: 関数名や変数名を入力すると、文脈に応じた実装を提案
- コメントからのコード生成: 日本語のコメントを書くだけで、対応するコードを提案
高い実装完成度
特筆すべき点として、簡単な機能追加や小規模なプロダクトなら、Copilotに実装を任せるだけで、ほぼ100%実装が完了するケースも出てきています。
例えば以下のような場合です。
- 既存機能の微拡張や微改修
- ユーティリティ関数やヘルパークラスの追加
- 小規模な内部ツールの開発
これらのケースでは、開発者が行うのは以下のみです。
- Confluenceの仕様をCopilotに読み込ませる
- 実装計画を確認・承認する
- Copilotが生成したコードをレビューする
- 必要に応じて微調整を加える
このように、従来は数日〜数週間かかっていた実装が、数時間で完了することも珍しくありません。
活用例
例えば、以下のようなprompt fileを用いて、既存リポジトリの内容を把握しています。
プロンプト例を見る
# 指示内容 次のステップに従って、コードベースの全体設計を理解し、主要な機能を把握してください。 ## ステップ0: 使用するツールの確認 Serena MCP、Atlassian MCPなどのツールを使って、コードベースを調査する準備を整えてください。 ## ステップ1: 既存のコードベースの全体設計について理解する Serena MCP、Atlassian MCPなどのツールを使いつつ、既存のコードベースを調査し、どのような機能が実装されているかを把握してください。 特に、処理の大まかなパイプラインや、各コンポーネントの役割を理解することが重要です。 ## ステップ2: 主要な機能を特定する コードベースから主要な機能を抽出し、それぞれの機能がどのように実装されているかを箇条書きで出力してください。 ## ステップ3: 全体設計をまとめる コードベースの全体設計を簡潔にまとめ、主要な機能とその相互作用を説明してください。 また、処理のパイプラインをMermaid形式で図示してください。
その後いくつかのprompt fileを用いてCopilotは仕様を参照し、既存コードを分析した上で、詳細な実装計画を提示してくれます。
レビューフェーズでの活用
GitHub Copilotは、コードレビューの際にも活用できます。
- リファクタリングの提案: より読みやすく保守性の高いコードへの書き換え提案
- コメントの追加: コードの意図を説明するコメントの自動生成
- セキュリティ上の問題の指摘: 潜在的な脆弱性のパターンを検出
活用例
プルリクエストのレビューでは、以下のようなprompt fileを用いて体系的なコードレビューを実施しています。
プロンプト例を見る
# 指示内容 GitHub Pull Requestの内容を確認し、コードレビューを実施してください。 ## レビュー観点 - コードの可読性(変数名、関数名、コメント) - コードの保守性(冗長性、将来の変更への対応) - コードのパフォーマンス(無駄な処理、アルゴリズムの効率性) - コードのセキュリティ(脆弱性の有無) - テストカバレッジ(ユニットテスト、統合テストの妥当性) - エラーハンドリング(例外処理の適切性) ## 実行手順 1. プルリクエストの目的と背景を確認 2. 変更内容と関連ドキュメントを確認 3. レビューコメントを作成 ## 出力フォーマット レビューコメントには、以下のメタ情報を付与してください: - [must]: 修正必須(この対応がないとApproveできない) - [imo]: 修正任意(対応されていなくてもApproveできる) - [nits]: 細かい指摘 - [good]: 良い点 マークダウン形式で、ファイルごとにレビューコメントを記載してください。
このようなプロンプトにより、Copilotが体系的にコードレビューを実施し、改善点を具体的に指摘してくれます。
GitHubクラウド移行による今後の展望
現在、マイクロアドのGitHub環境はオンプレミス版で運用されていますが、GitHub Cloudへの移行を進めています。オンプレミス環境では利用できない、GitHubが提供する以下のような先進的な機能を導入することで、さらなる開発フローの向上を目指しています。
今後活用予定の機能
GitHub Cloudへの移行により、以下の機能を活用予定です。
1. GitHub 上での GitHub Copilot によるプルリクエストレビュー
- プルリクエスト上でCopilotがコードレビューを自動実施
- コードの問題点や改善提案を自動でコメント
- レビュワーの負担軽減と、レビュー品質の均一化を実現
2. GitHub Codespaces
- ブラウザ上で完結する開発環境
- ローカル環境のセットアップ不要で、新規参加メンバーの立ち上がりが高速化
- 統一された開発環境により、「環境差分による動作不具合」を解消
3. GitHub Spec Kit
- 仕様書からテストケースやドキュメントを自動生成
- 仕様の一貫性チェックや、実装との乖離検出
- ドキュメント駆動開発のさらなる効率化
- 参考: github/spec-kit
クラウド移行による期待効果
これらの機能を組み合わせることで、以下のような開発フローの実現を目指しています。
- Gemini Enterpriseで仕様書とテスト項目を作成
- GitHub Codespacesで統一環境を即座に起動
- MCPサーバ連携Copilotで実装計画を作成し、コードを実装
- Copilotによる自動レビューがプルリクエスト上で実施
- Spec Kitで仕様と実装の整合性を継続的にチェック
クラウド移行により、生成AIを活用した開発フローがさらに進化し、より高速で高品質な開発が可能になると期待しています。
両ツールの使い分けと相乗効果
まとめるとGemini EnterpriseとGitHub Copilotは、それぞれ異なるフェーズで活用することで、開発プロセス全体の効率化を実現しています。
開発フェーズ別の活用状況
| フェーズ | 主な活用ツール | 用途 |
|---|---|---|
| ビジネス側との要望すり合わせ | Gemini Enterprise | 要望の整理、技術的実現性の検討 |
| システム仕様検討 | Gemini Enterprise | 仕様書作成、技術選定支援 |
| 受け入れテスト項目の作成 | Gemini Enterprise | テストケース生成、網羅性確認 |
| 実装 | GitHub Copilot | コード生成、補完 |
| レビュー | GitHub Copilot | リファクタリング、コメント追加 |
| テスト | GitHub Copilot | テストコード生成 |
| リリース | - | - |
この使い分けにより、上流工程では文書やテスト設計をGemini Enterpriseで効率化し、下流工程ではコーディングをCopilotで開発フローが加速するという相乗効果が生まれています。
導入効果
開発チームによって効果の差はあるものの、生成AIツールを使用することによって概ね以下のような効果が得られています。
開発速度の向上
- ドキュメント作成時間: 推定20-30%減
- コーディング時間: 推定30-40%減
- テスト項目作成時間: 推定40-50%減
品質の向上
- テストケースの網羅性向上
- コードレビューでの指摘事項の削減
- ドキュメントの一貫性向上
開発者の満足度向上
- 単体テストの作成などの単純作業の削減により、創造的な作業に集中できる
- 新しい技術や未知の領域への学習が容易に
- ペアプログラミングのような支援を常に受けられる安心感
- 細々したミスを事前に修正できることで、レビュワーが仕様や設計など本質的な部分に集中してレビューできる
- 大規模なコードベースの理解支援: 歴史の長い社内アプリケーションの複雑なコードも、AIが解説してくれるため、新卒や新規参画者がコードを読み進め、理解する際の強力な補助となる
課題と今後の改善点
生成AIツールは強力ですが、活用していく中でいくつかの課題も見えてきています。
Gemini Enterpriseの課題
大規模データ作成の限界
Gemini Enterpriseでテスト項目やテストデータを生成する際、大規模で複雑なデータの作成には限界があります。以下のようなケースでは、生成データの品質や正確性の低下が見られます。
- カラム数が100個を超えるような大規模なテストデータ
- カラム間の関係性や制約条件を適切に考慮したデータ生成が困難
- 複雑な依存関係を持つテストケース
- 複数のシステム間の連携が絡む場合、全体の整合性を保つのが難しい
このような場合は、Gemini Enterpriseで生成した叩き台を基に、人間による手作業での調整・補完が必要です。今後は、以下のようなアプローチを検討しています。
- プロンプトの工夫による精度向上
- データを分割して段階的に生成する方法の確立
GitHub Copilotの課題
コンポーネント分割粒度の不適切さ
Copilotに実装を任せる際、コンポーネントの分割粒度について適切でないケースがあります。
- 過度に細かい分割
- 不要に多くの小さなクラスや関数を生成し、可読性が低下
- 粗すぎる分割
- 1つのクラスや関数に多くの責務が詰め込まれ、保守性が悪化
- 既存の設計パターンとの不整合
- プロジェクト固有の設計方針や命名規則と異なる実装が提案される
これらの課題に対しては、以下のような対策を進めています。
- 実装計画の段階で設計方針を明確に指示
- 既存コードのパターンを参照させるプロンプトの工夫
- 生成されたコードの必須レビューによる品質担保
共通の課題
AIツールを活用する上で、以下の点に注意が必要です。
- 生成結果の検証コスト
- AIが生成した内容は必ず人間による検証が必要
- 過信のリスク
- 生成されたコードやドキュメントを鵜呑みにしない
これらの課題を認識しつつ、ツールの特性を理解して適切に活用することで、開発効率と品質の向上を実現しています。
今後の展望
マイクロアドでは、さらなる開発効率の向上を目指して、以下の取り組みを進めています。
- GitHub Cloudへの移管
- オンプレミスからクラウド環境へ移行し、GitHub の最新機能を活用できる環境を整備
- より柔軟で効率的な開発基盤を構築
- Spec Kitの活用による高精度な開発
- GitHub の仕様管理ツール Spec Kit を導入し、仕様とコードの一貫性を向上
- AIが参照する仕様の品質を高めることで、より正確な実装支援を実現
- Codespaces によるドキュメント管理
- 開発環境とドキュメントを統合管理し、コードとドキュメントの乖離を防止
- アプリケーションとドキュメントをより密に連携
- 生成AIを用いたシームレスな開発フロー
- 仕様策定から実装、テスト、レビューまで、生成AIが各フェーズを自然に繋ぐワークフローを構築
- ツール間の連携を強化し、より滑らかな開発体験を実現
まとめ
ここまで、マイクロアドで実際に使っているGemini EnterpriseとGitHub Copilotの活用事例をご紹介してきました。
Gemini Enterpriseのポイント
Confluenceと連携させることで、仕様書やテスト項目の作成がグッと楽になりました。以前使っていた独自RAGシステムと比べても、回答の精度が格段に上がっています。
GitHub Copilotのポイント
MCPサーバを使ってリポジトリのコードの全体像やConfluenceの仕様、社内DBを直接参照できるのがポイントです。実装計画を先に作ってもらうことで、「あれ、こうじゃなかった...」という手戻りが減りました。簡単な機能なら、ほぼ完成形まで実装してくれることもあります。
課題と展望
もちろん、課題もあります。大規模なテストデータの生成やコンポーネント設計は、まだ人間のチェックが欠かせません。でも、これらの課題を理解した上で使えば、開発速度と品質の両方を確実に向上できます。
今後、GitHubクラウドへの移行を予定しています。それによりCodespacesや自動レビューといった便利な機能が使えるようになります。生成AIは、もう開発に欠かせない相棒みたいな存在となっています。
マイクロアドの開発現場で生成AIをどのように活用しているかの参考となれば幸いです。最後まで読んでいただき、ありがとうございました!