LINEヤフー Tech Blog

LINEヤフー株式会社のサービスを支える、技術・開発文化を発信しています。

Agent Development Kit(ADK)を使って Single/Multi-Agent 開発と社内への統合

こんにちは、LINEヤフー株式会社の井上 秀一です。私は2024年4月に新入社員としてLINEヤフー株式会社に入社し、現在は社内向け Kubernetes as a Service である FKE チームで開発業務に従事していて、Orchestration Development Workshop ギルドメンバーとしても活動しています。

Orchestration Development Workshopとは、Orchestration Guildは、CTO から選抜されたエンジニアが集まり、現場の AI 活用の実践知識を横断的に持ち寄るコミュニティです。Workshopで扱うテーマ提案、実践的ユースケースの共有、技術的観点での品質アドバイスなどを担当し、Orchestration Development Workshop の コンテンツが属人化せず、継続的に発展していくことを支える役割を担っています。

このテックブログでは、Orchestration Development Workshopで開催したワークショップ「Agent Development Kit(ADK)を使った Single/Multi-Agent 開発と社内への統合」の内容を紹介します。

社内の現状と課題

業務のAI活用ニーズ

日々の業務の中で、大規模言語モデル(LLM)を使って業務を自動化・補助できる余地は数多く存在します。Pull Request(PR)レビュー、カスタマーサポート(CS)対応、社内 Wiki の検索など、チームの業務においても活用できる場面は少なくありません。

特に弊社では、JiraやConfluenceといった社内システムでの情報検索に課題があります。大企業特有の問題として、ドキュメントが社内のさまざまな場所に散在しており、必要な情報を探し出すのに時間がかかります。また、細則やガイドラインなど難解な内容を理解するために、AIの支援を求めるニーズも高まっています。

こうした背景から、弊社では「今後3年間で業務生産性を2倍に高め、継続的なイノベーションの創出を目指す」という方針のもと、積極的にAIを活用して業務効率化を推進しています。

AIの活用に伴う課題

Challenges In AIAdoption

AIの活用が進む一方で、新たな課題も浮き彫りになってきました。

現在、ClineやClaude Codeなどのローカルで動作する AI Agent ツールが使われ始めていますが、その活用は「個人戦」になりがちです。使う人はどんどん使いこなす一方で、使わない人はあまり使わない。結果として、ナレッジがサイロ化し、チーム内で業務生産性に個人差が生まれてしまいます。

さらに、チーム内の共通課題に対して、複数人が個別にプロンプトを作成・最適化しているため、作業の重複が発生しています。

また、Multi-Agentという概念そのものを知らない人が多く、Single-Agentの限界に直面して AI Agent の活用を諦めてしまうケースも見受けられます。

解決に向けたきっかけと取り組み

Solutions For AI Adoption Challenges

こうした課題を解決するために、私はチーム内で草の根活動を行ってきました。具体的には、ローカル AI ツール(例:Cline、Claude Code)だけに頼るのではなく、AI Agent を作成してホスティングすることでチーム全体に共有する方法や、Multi-Agentの重要性を啓発しながら、PoC(Proof of Concept)ツールを開発したり、社内の LT(Lightning Talk)会で技術的な啓発活動を実施しました。こうした活動がきっかけとなり、Orchestration Development Workshopへギルドメンバーになりました。

Orchestration Development Workshopを通じて、社内のAI活用における課題を解決するためには、以下の3つの要素を組織全体で深く理解する必要があると考えました。

  1. Single-AgentとMulti-Agentの概念と特性の理解
    • Single-Agentの限界とメリット・デメリット
    • Multi-Agentの特性とメリット・デメリット
  2. チーム全体での知見共有の実現
    • 中央集権的な AI Agent を構築し、ナレッジを集約
  3. AI Agentと社内システムの連携手法
    • Model Context Protocol(MCP)の活用

しかし、これらを座学で学ぶだけでは、実践的な理解には限界があります。そこで、Agent Development Kit(ADK)を題材に、参加者が実際に手を動かしながら上記3つの要素を体験できる場として、ワークショップ「Agent Development Kit(ADK)を使った Single/Multi-Agent 開発と社内への統合」を実施しました。

Workshop 内容のサマリ

Workshop Banner

座学:Single-Agent と Multi-Agent の比較

  • Single-Agent:
    • 特徴:単一の LLM で構成されるシンプルなシステム。開発コストが低い。
    • 課題:複雑な問題や高い専門性への対応力が限定的。
  • Multi-Agent:
    • 特徴:複数の LLM で構成され、複雑な問題対応力やタスクへの最適化が高い。
    • 課題:消費トークンの増加、開発の複雑化、レートリミットに注意。

座学:Agent Development Kit(ADK)の概要

  • ADKとは:Agentの動作を定義し、Multi-Agentシステムを実現するための OSS
  • 特徴:Python/Java/Go で利用可能。Pythonで定義した関数をそのままツールとして Agent が実行できる
  • 価値:チームで Agent を構築・ホスティングし共有することで、個々のプロンプト調整の手間を省き、生産性を向上させる

ハンズオン:シンプルな Single-Agentの作成

実施内容

  • ADK の基本的な Agent を体験
  • ADK の Web UI を起動し、Agent をブラウザ経由で実行
  • カスタマイズ:プロンプトを変更し、Agentの振る舞いを調整
  • ツール利用:あらかじめ用意された Python 関数を Agent が実行できるようにし、ツール呼び出しを体験

学びとポイント

  • インストラクションによって Agentの応答を柔軟に制御できる
  • シンプルな Python コードをツールとして Agent に組み込める容易さを実感

座学:MCP(Model Context Protocol)の紹介

  • MCPとは:LLM が外部システムに接続するためのオープンソースな標準プロトコル
  • 機能:LLM が能動的に情報を探索(例:過去の問い合わせ、資料の場所)することを可能にする
  • 社内システム連携の例:JiraやConfluenceなどとMCPで連携
  • 課題と対策:ツールを持たせすぎるとプロンプトが増大し、応答遅延や精度低下を招く。Multi-Agentでコンテキストを分離する緩和策を紹介

ハンズオン:MCPによる社内システムとの連携

  • シンプルな Agent に、MCP を設定
  • 重要性:ツールを渡すだけでなく、適切なプロンプトを設定しないと LLM はツールをうまく使えないことを確認
  • 効果:適切なプロンプトにより、Agent が Confluence などの社内 Wiki から情報を能動的に検索・取得できることを確認

ハンズオン:シーケンシャルな Multi-Agent(Project Tracker)

実施内容:Project Tracker の構成

  • 目的:Jira で管理されているProjectの進捗状況を分析し、包括的なレポートを作成する Multi-Agentシステムを構築
  • 構成:シーケンシャル Agent(Sequential Agent)を利用し、4つの Agent(情報収集→分析→レポート作成→翻訳)を順次実行

Project Tracker の詳細

  • アーキテクチャ:

    Project Tracker

  • ADK のサンプルコード(一部のみ):

    from google.adk.agents import Agent, SequentialAgent
    from google.adk.models.lite_llm import LiteLlm
    
    from common import agent_config, mcp, prompt
    
    # Agent 1: In-Progress Task Analyzer
    in_progress_analyzer_agent = Agent(
       name="in_progress_analyzer",
       model=LiteLlm(model=agent_config.MODEL),
       description=(
          "A specialized agent that analyzes in-progress tasks in a Jira PROJECT. "
          "Extracts PROJECT key from URL, searches for in-progress tasks, and provides detailed analysis."
       ),
       instruction=(
          prompt.mcp_agent() + prompt.mcp_jira() + prompt.in_progress_analyzer()
       ),
       tools=[
          mcp.mcp_jira,
       ],
    )
    
    # Agent 2: Todo Task Analyzer
    todo_analyzer_agent = Agent(
       name="todo_analyzer",
       model=LiteLlm(model=agent_config.MODEL),
       description=(
          "A specialized agent that analyzes todo/unstarted tasks in a Jira PROJECT. "
          "Searches for todo tasks and provides detailed analysis including priorities and dependencies."
       ),
       instruction=(prompt.mcp_agent() + prompt.mcp_jira() + prompt.todo_analyzer()),
       tools=[
          mcp.mcp_jira,
       ],
    )
    
    # Agent 3: Report Generator
    report_generator_agent = Agent(
       name="report_generator",
       model=LiteLlm(model=agent_config.MODEL),
       description=(
          "A specialized agent that generates comprehensive PROJECT progress reports. "
          "Synthesizes analysis from previous agents into a structured Markdown report."
       ),
       instruction=prompt.report_generator(),
    )
    
    # Agent 4: Translator
    translate_agent = Agent(
       name="translate_agent",
       model=LiteLlm(model=agent_config.MODEL),
       description=(
          f"A specialized agent that translates reports into {agent_config.LANGUAGE}. "
          "Preserves original formatting and structure while providing accurate translation."
       ),
       instruction=prompt.translate_report(),
    )
    
    # Root Agent - Sequential Multi-Agent System
    root_agent = SequentialAgent(
       name="PROJECT_tracker_system",
       description=(
          "Multi-agent system for PROJECT progress tracking. "
          f"Analyzes in-progress and todo tasks, generates comprehensive reports, and translates to {agent_config.LANGUAGE}."
       ),
       sub_agents=[
          in_progress_analyzer_agent,
          todo_analyzer_agent,
          report_generator_agent,
          translate_agent,
       ], 

期待される効果と学び

  • 効果:スプリントプランニング時の進捗確認効率化、他部門への進捗報告レポート作成の自動化など、実務への応用が期待される
  • 学び:ADK のシーケンシャル Agent により、複数の Agent を連携させ、複雑なワークフローを容易に実現できる

ワークショップの成果

今回のワークショップでは約2,000名の方がリアルタイムで参加しました。また、ワークショップの効果を測るため、参加者を対象に今回のWorkshopの内容について、あなたの実践状況を教えてくださいという趣旨のアンケートを実施しました。以下はアンケート結果です。

選択肢内容割合
4すでに継続的に活用している / Already using it on an ongoing basis1.7%
3すでに一部を試している / Already tried some parts17.4%
2まだ試していないが、近いうちに試す予定がある / Haven't tried it yet, but plan to try it soon68.2%
1まだ試していないし、試す予定もない / Haven't tried it yet and have no plans to try it10.0%
その他-2.7%

約7割(68.2%)の参加者が「まだ試していないが、近いうちに試す予定がある」と回答しました。この結果から、多くの参加者が内容を前向きに受け止め、実践への意欲を持っていることがわかります。

一方で、「すでに一部を試している」「継続的に活用している」といった実践層は約19%でした。この層の取り組みを今後社内で共有することで、他の参加者にも具体的な実践のきっかけを提供できるでしょう。

「まだ試していないし、試す予定もない」と回答した層(10%)に対しては、導入のハードルを下げるサポート施策や成功事例の紹介が有効と考えられます。

全体として、今回のワークショップは「これから実践していきたい」という意欲を引き出す良い機会となりました。

Orchestration Development Workshopで得た学び

Orchestration Development Workshop #2の実施にあたり、コンテンツの収集・選定からワークショップの企画まで、ギルドメンバーで協力して取り組みました。準備やリハーサルでは都度振り返りを行い、メンバーからフィードバックをもらいながら、効果的なハンズオンの進め方を緻密に計画しました。

コンテンツ設計の重要性

ワークショップの成功において最も重要だったのは、参加者の理解度に合わせたコンテンツ設計でした。座学とハンズオンのバランスを取りながら、段階的に難易度を上げていく構成にしたことで、初心者でも無理なく学習できる流れを作ることができました。

特に、Single-Agent → MCP 連携 → Multi-Agentという順序で進めることで、各概念の理解を深めながら実践的なスキルを身につけてもらうことができました。

また、限られた時間の中で最大限の学びを提供するため、「体験」を最重視したコンテンツ設計を心がけました。理論的な説明は必要最小限に留め、参加者が実際に手を動かして「AI Agent で何ができるのか」を肌で感じられることに重点を置きました。Agentが社内システムから情報を取得する様子や、Multi-Agentが協調してタスクを遂行する様子を実際に目にすることで、参加者は技術の可能性を具体的にイメージできました。

この「できること」を体感してもらうアプローチにより、参加者の多くが「自分の業務でも使えそう」という実践的な気づきを得られたことが、アンケート結果にも表れています。

ギルドメンバーとの協働

ギルドメンバーとの協働を通じて、多様な視点からフィードバックを得られたことも大きな学びでした。各メンバーが異なるバックグラウンドを持っているため、「この説明では初心者には難しすぎる」「ここはもっと簡単にした方が良い」といった具体的な改善提案をもらうことができました。

リハーサルを重ねることで、想定外のトラブルへの対処策や参加者へのサポート体制を整えることができ、本番では落ち着いて進行できました。

社内への技術普及の難しさと喜び

このワークショップを通じて、新しい技術を社内に普及させることの難しさと同時に、その喜びも実感しました。アンケート結果から、多くの参加者が「近いうちに試してみたい」と前向きな反応を示してくれたことは、大きなやりがいとなりました。

今後は、このワークショップをきっかけに、社内で AI Agent を活用する文化がさらに広がっていくことを期待しています。

これから取り組む人へのおすすめステップ

AI Agent や ADK を使った開発に取り組みたい方に向けて、実践的なステップを紹介します。

Step 1:まずは Single-Agentから始める

  • ADKの公式ドキュメントを参照し、環境構築を行う
  • シンプルなチャットボットを作成し、基本的な動作を理解する
  • プロンプトエンジニアリングを試し、Agentの振る舞いを制御する感覚を掴む

Step 2:ツール連携を体験する

  • Python で簡単な関数を作成し、Agentのツールとして組み込む
  • ファイル操作から業務で利用するツールの操作など、実用的なツールを試す
  • MCP を使って外部サービス(GitHub や Slack など)と連携する

Step 3:チーム内での小さな課題を解決する

  • チーム内で共通する課題を見つける(例:定型作業の自動化、情報検索の効率化)
  • Single-Agentで解決できる範囲から始め、実際の業務で使ってみる
  • チームメンバーからフィードバックをもらい、改善を重ねる

Step 4:Multi-Agentにチャレンジする

  • Single-Agentの限界を感じたら、Multi-Agent構成を検討する
  • まずはシーケンシャル Agent から始め、タスクの分解と連携を理解する
  • 徐々に複雑なワークフローに挑戦し、実務での価値を検証する

Step 5:知見を共有し、チーム全体で成長する

  • 成功事例や失敗事例を社内で共有する
  • ドキュメントやナレッジベースを整備し、他のメンバーが参考にできるようにする
  • ワークショップや LT(Lightning Talk)会を開催し、組織全体の AI 活用を推進する

重要なのは、小さく始めて段階的に拡大していくことです。完璧を目指すのではなく、まずは動くものを作り、フィードバックを得ながら改善していくアプローチが成功への近道です。

おわりに

本記事では、Orchestration Development Workshopで実施した「Agent Development Kit(ADK)を使った Single/Multi-Agent 開発と社内への統合」の内容を紹介しました。

AI Agent の活用は、今後ますます重要になっていく技術領域です。しかし、個人での活用に留まらず、チーム全体で知見を共有し、組織として生産性を向上させていくことが重要だと考えています。

今回のワークショップを通じて、多くの参加者が AI Agent の可能性を実感し、実践への意欲を持ってくれたことは、大きな成果でした。今後、社内で AI Agent を活用する文化がさらに広がり、業務効率化やイノベーション創出につながることを期待しています。

最後に、Orchestration Development Workshopのギルドメンバー、参加者の皆様、そしてワークショップの開催を支援してくださった全ての方々に感謝します。

もし本記事の内容に興味を持たれた方は、ぜひADKを試してみてください。そして、あなたの取り組みや知見を社内外で共有していただけると嬉しいです。