エージェント(アシスタント)を活用したAI拡張型ソフトウェア開発

青い吹き出し、質問マーク、チェックマークを含むフローチャートのイラスト
概要

LLMにおける最もエキサイティングな進歩の1つは、エージェント(アシスタントとも呼ばれる)の概念です。これらは、特定の役割をサポートするために事前にプロンプトが表示され、ファイン・チューニングされた大規模言語モデル(LLM)の特殊バージョンです。ここでは、ソフトウェア開発における役割をサポートする方法を探ります。

AIエージェントは、基本的にAI機能を備えたバーチャル・アシスタントです。これらのエージェントは、自然言語を理解して処理するように設計されており、自然かつ直感的な方法で人間と対話することができます。これらのAIエージェントを際立たせているのは、その専門性です。汎用AIモデルとは異なり、AIエージェントは特定の役割に関連する特定のタスクについてトレーニングされます。

例えば、プロダクト・オーナーAIエージェントは、市場分析、機能の優先順位付け、ビジネス・ケースの作成などのタスクを支援するようにトレーニングされます。一方、開発者向けAIエージェントは、コード生成の自動化、既存コードの最適化、バグの特定支援機能を備えています。

この特殊性は、LLMがサポートするように設計された役割に関連するデータに関するLLMの事前プロンプトとファイン・チューニングから得られます。これには、開発者向けAIエージェントのコードのデータセットや、プロダクト・オーナーのAIエージェントの市場調査と製品機能のデータセットでのAIエージェントのトレーニングが含まれる場合があります。

AIエージェントは、ソフトウェア開発チームの運用方法に革命をもたらしています。役割に応じた支援を提供することで、生産性を高め、エラーの可能性を減らし、チーム・メンバーがより複雑で創造的な作業に集中できるようにします。これらのAIエージェントが次に進むにつれて、ソフトウェア開発チームのすべてのメンバーがパーソナライズされたAIアシスタントを備え、開発プロセスをより効率的かつ効果的にする未来が約束されています。

非常に強力な役割固有のエージェントは、検索拡張生成とインターネット/コード/コーパス検索の技術をファイン・チューニングと動的プロンプトと組み合わせることで作成できます。

複数のソフトウェア開発プロセスの役割をサポートするAI Assistantのフローチャート
AI Assistantがソフトウェア開発プロセスにおける複数の役割をどのようにサポートできるかを示すイラスト。
人間

AIアシスタントをソフトウェア開発プロセスに組み込むことで、大きな変革がもたらされます。チームの各役割をAIアシスタントで強化することで、効率を高め、エラーの可能性を減らし、人材をより複雑で創造的なタスクに集中させることができます。

ただし、これらのAIアシスタントはソフトウェア・エンジニアの代わりにではなくサポートするために設計されたツールであり、生成AIテクノロジーには限界があることを覚えておくことが重要です。

現時点では、大規模言語モデルは、複雑なトラブルシューティング、デバッグ、既存のコードベースへの統合に苦労しており、業種・業務、ドメイン固有、もしくは企業固有の情報、または完璧なコードを生成するための最新のトレーニング・データが不足しています。また、主体性も欠けており、あらゆる種類のアウトプットを生成するようプロンプトする必要があります。

AI拡張プロダクト・オーナー

プロダクト・オーナーはソフトウェア開発チームの中で重要な役割を担い、製品のビジョンとロードマップを推進します。AIアシスタントは、意思決定を支援するデータ駆動型の洞察を提供することで、開発者をサポートできます。例えば、AIは顧客の使用状況データを分析して、市場で人気のある機能や不足している機能を特定できます。

これは、プロダクト・オーナーが製品バックログの機能に優先順位を付けるのに役立ちます。AIは、ビジネス・ケースの作成、市場分析の実行、トレンドの予測も支援できます。

プロダクト・オーナー向けAIアシスタントは多面的なサポートを提供し、以下のような方法で役割を強化します。

プロダクト・オーナーAIアシスタントは、堅牢なビジネス・ケースの作成に役立ちます。関連データの収集と分析、主要な価値提案の特定、ビジネス・ケース文書の草案作成に役立ちます。AIは、ビジネス・ケースを構造化するためのテンプレートを提供し、市場分析、費用対効果分析、リスクアセスメント、戦略的調整などの重要な側面を確実にカバーします。

AI Assistantは、プロダクト・オーナーのアイデア出しプロセスをサポートできます。AIは、市場の傾向、顧客からのフィードバック、競合他社の分析を通じて、新しい機能のアイデアや製品の改善を提案することができます。また、プロンプトを提供し、創造的思考を刺激することで、ブレーンストーミング・セッションを促進することもできます。

AI Assistantは、製品バックログを効率的に管理するのに役立ちます。AIは、ビジネス価値、顧客需要、開発努力などの要素に基づいて機能の優先順位を付けることができます。また、ユーザー・ストーリーと承認基準の作成を自動化できるため、プロダクト・オーナーの貴重な時間を節約できます。

AI Assistantは、利害関係者とのコミュニケーションを支援できます。ステータス更新の準備、Eメールの下書き、プレゼンテーション・スライドの作成に役立ちます。また、利害関係者からのフィードバックを分析し、プロダクト・オーナーに洞察を提供することもできます。

AI Assistantは、包括的な市場分析を実行できます。市場動向、競合製品、顧客のニーズに関するデータを収集できます。AIはこのデータを分析して、洞察と推奨事項をプロダクト・オーナーに提供できます。

AI Assistantは、潜在的なリスクを特定し、軽減のストラテジーを提案することでリスク管理を支援できます。プロジェクトの進捗状況を監視し、計画からの逸脱にフラグを立てることができるため、プロダクト・オーナーはタイムリーな是正措置を講じることができます。

プロダクト・オーナー・アシスタントがビジネス・ケースを作成するために事前にプロンプトする方法の例

あなたが、X業界に焦点を当てたAI支援のプロダクト・マネージャーのAI-Pamだとします。あなたは、お客様のあらゆる要件をインプットとして受け取り、エグゼクティブ・サマリーを提供し、ビジネス価値を推定し、潜在的な依存関係とリスクを特定します。

X業界とY企業に特有の要件を含めます。

入力例:.. 出力例:..

AI拡張スクラム・マスター

スクラム・マスターは、アジャイル・プロセスのスムーズな実行を保証します。AIアシスタントは、スクラム・マスターのスプリントの組織化と管理をサポートできます。ユーザー・ストーリーの作成を自動化し、潜在的な障害を予測することでスプリント計画を支援し、チームの速度を追跡できます。AIはまた、チームのパフォーマンス・データを分析し、チーム内の効率とコラボレーションを改善する方法についての洞察を提供することもできます。

カンバンボードやツールとの統合により、多くの場合、作業が容易になります。

 

AI拡張開発者

開発者はソフトウェア開発プロセスの中心にあり、AIアシスタントは、さまざまな方法で開発者を支援できます。コード生成を自動化し、既存のコードを最適化し、コーディング基準を適用できる可能性があります。

AIは、バグやセキュリティーの脆弱性を特定することで、コードレビューにも役立ちます。さらに、開発者がアプリケーションに適したAPIやライブラリーを選択するサポートもできます。

LLMはドキュメンテーションの作成やコードのドキュメンテーションにも優れています。例えば、Pythonで十分に作成された変数名やドキュメンテーション文字列(docstring)の作成などです。

コードのリファクタリングによるドキュメンテーション文字列(docstring)のドキュメンテーション生成

以下のコードをリファクタリングして、最近のすべてのベスト・プラクティスを含むPythonのベスト・プラクティス、docstringドキュメンテーション、および型のヒントを含めます

def add(a, b):
    return a + b


結果:

def add_numbers(num1: int, num2: int) -> int:
    “””
    This function adds two numbers and returns the result.
    
    Args:
        num1 (int): The first number to add.
        num2 (int): The second number to add.
        
    Returns:
        int: The sum of num1 and num2.
    “””
    return num1 + num2

 

AI拡張テスター

テスターはソフトウェア製品の品質を保証します。AIアシスタントは、製品要件に基づいてテスト・ケースの生成を自動化できます。

また、回帰テスト、負荷テスト、性能テストの実行にも役立ちます。AIはデータから学習できるため、アシスタントはソフトウェアの潜在的な障害領域を予測し、事前にバグを修正できるようになります。

 

AI拡張サイト信頼性エンジニア(SRE)

SREは、ソフトウェア・システムの信頼性と安定性を担当します。AIアシスタントは、SREのデプロイメントプロセスの管理と自動化に役立つ可能性があります。

また、システムの性能の監視や潜在的なシステム障害の予測にも役立ちます。Ansibleのようなコードとしてのインフラストラクチャー(IaC)ツールを使用するSREにとって、AIはプレイブックの作成を自動化し、既存のスクリプトを最適化します。

 

AI拡張エンジニア

バックエンド、フロントエンド、フルスタックのいずれのエンジニアでも、AIアシスタントのメリットを受けることができます。フロントエンド・エンジニアにとって、AIは応答性の高い設計の作成、ユーザー・インターフェースの最適化、アクセシビリティー基準の確保を支援できます。

バックエンド・エンジニアにとって、AIはデータベース・クエリーの最適化、サーバー・リソースの管理、セキュリティー・コンプライアンスの確保に役立ちます。フルスタック・エンジニアの場合、AIはコードの最適化からデプロイメントの管理まで、エンドツーエンドのサポートを提供できます。

次のステップ

ハイブリッドクラウドの導入パターンのデプロイメントについて、IBMのエキスパートに相談する

その他の参考情報 IBMアーキテクチャー・センター 図のツールとテンプレート IBM Well-Architected Framework
寄稿者

ミハイ・クリヴェティアル・ハミド

更新日:2023年12月5日