AIエージェントフレームワーク比較2026 — LangChain vs CrewAI vs AutoGen vs Mastra
2026年、AIエージェント開発はもはや実験段階を超え、プロダクション環境での活用が本格化しています。フレームワークの選択はプロジェクトの成否を左右する重要な意思決定です。
本記事では、現在最も注目されている4つのAIエージェントフレームワーク — LangChain、CrewAI、AutoGen、Mastra — を実際のコード例とともに徹底比較します。
目次
- 4大フレームワーク概要
- LangChain — 汎用性と拡張性の王者
- CrewAI — マルチエージェント協調の最適解
- AutoGen — Microsoftが推す会話型エージェント
- Mastra — TypeScriptネイティブの新星
- コード比較:同じタスクを4つのフレームワークで実装
- 性能比較表
- ユースケース別おすすめ
- まとめ:どれを選ぶべきか
4大フレームワーク概要
まず、4つのフレームワークの立ち位置を整理しましょう。
| フレームワーク | 言語 | 開発元 | 初回リリース | GitHub Stars (2026/3) | 主な用途 |
|---|---|---|---|---|---|
| LangChain | Python / JS | LangChain Inc. | 2022年10月 | 98k+ | 汎用LLMアプリ・RAG・エージェント |
| CrewAI | Python | CrewAI Inc. | 2023年12月 | 48k+ | マルチエージェント協調 |
| AutoGen | Python / .NET | Microsoft | 2023年9月 | 42k+ | 会話型マルチエージェント |
| Mastra | TypeScript | Mastra Inc. | 2025年12月 | 32k+ | TS/Node.jsエージェント・ワークフロー |
各フレームワークの設計哲学は大きく異なります。LangChainは「何でもできる汎用ツールキット」、CrewAIは「役割ベースのチーム協調」、AutoGenは「エージェント間の会話」、Mastraは「TypeScriptファーストの開発体験」を重視しています。
LangChain — 汎用性と拡張性の王者
特徴
LangChainは、AIエージェントフレームワークの中で最も歴史が長く、エコシステムが充実しています。2026年現在のv0.3系では、以前の複雑さが大幅に改善され、LangGraphによるステートフルなエージェント構築が主流となりました。
強み:
- 700以上のインテグレーション(LLMプロバイダー、ベクトルDB、ツール)
- LangGraphによる柔軟なワークフロー定義
- LangSmithによるオブザーバビリティ
- 豊富なドキュメントとコミュニティ
弱み:
- 学習曲線がやや急(抽象レイヤーが多い)
- 依存パッケージが多く、バンドルサイズが大きい
- バージョン間の破壊的変更が過去に多発
コード例:ReActエージェント
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool
from langgraph.prebuilt import create_react_agent
# ツール定義
@tool
def search_web(query: str) -> str:
"""Web検索を実行し、結果を返します。"""
# 実際の検索APIを呼び出す
return f"「{query}」の検索結果: AI市場は2026年に500億ドル規模..."
@tool
def calculate(expression: str) -> str:
"""数式を計算します。"""
return str(eval(expression))
# モデルとエージェントの作成
llm = ChatOpenAI(model="gpt-4o", temperature=0)
agent = create_react_agent(
model=llm,
tools=[search_web, calculate],
prompt="あなたは調査アシスタントです。日本語で回答してください。"
)
# 実行
result = agent.invoke({
"messages": [("user", "AI市場の2026年の規模を調べ、前年比成長率を計算して")]
})
for message in result["messages"]:
print(message.content)
LangGraphによるステートフル・ワークフロー
from langgraph.graph import StateGraph, START, END
from typing import TypedDict, Annotated
import operator
class ResearchState(TypedDict):
query: str
sources: Annotated[list[str], operator.add]
summary: str
review: str
def research_node(state: ResearchState) -> dict:
"""情報収集ノード"""
# Web検索やDB検索を実行
sources = [f"Source about {state['query']}"]
return {"sources": sources}
def summarize_node(state: ResearchState) -> dict:
"""要約ノード"""
summary = f"調査結果の要約: {len(state['sources'])}件のソースを分析"
return {"summary": summary}
def review_node(state: ResearchState) -> dict:
"""レビューノード"""
return {"review": "品質チェック完了"}
# グラフ構築
graph = StateGraph(ResearchState)
graph.add_node("research", research_node)
graph.add_node("summarize", summarize_node)
graph.add_node("review", review_node)
graph.add_edge(START, "research")
graph.add_edge("research", "summarize")
graph.add_edge("summarize", "review")
graph.add_edge("review", END)
app = graph.compile()
result = app.invoke({"query": "AI エージェント最新動向"})
CrewAI — マルチエージェント協調の最適解
特徴
CrewAIは、役割ベースのマルチエージェントシステムを最も直感的に構築できるフレームワークです。「チーム(Crew)」という概念を中心に、各エージェントに明確な役割と目標を設定する設計が特徴です。
強み:
- 直感的なAPI設計(Role / Goal / Backstoryの3要素)
- プロセス管理(Sequential / Hierarchical / Consensual)
- 最小限のコードでマルチエージェントを実現
- メモリ機能(短期・長期・エンティティメモリ)
弱み:
- シングルエージェントの用途ではオーバースペック
- カスタムワークフローの柔軟性がLangGraphに劣る
- Python専用(JSサポートなし)
コード例:リサーチチーム
from crewai import Agent, Task, Crew, Process
from crewai_tools import SerperDevTool
# ツール
search_tool = SerperDevTool()
# エージェント定義
researcher = Agent(
role="シニアリサーチャー",
goal="AIエージェントフレームワークの最新動向を徹底調査する",
backstory="""あなたは10年以上の経験を持つテクノロジーアナリストです。
技術トレンドの分析に優れ、複雑な情報を分かりやすく整理できます。""",
tools=[search_tool],
verbose=True,
llm="gpt-4o"
)
writer = Agent(
role="テクニカルライター",
goal="調査結果を読みやすい技術ブログ記事にまとめる",
backstory="""あなたは技術文書のプロフェッショナルです。
複雑な技術概念を開発者が理解しやすい形で伝えることを得意とします。""",
verbose=True,
llm="gpt-4o"
)
reviewer = Agent(
role="品質レビュアー",
goal="記事の技術的正確性とわかりやすさを検証する",
backstory="あなたはシニアエンジニアとして多くの技術レビューを経験しています。",
verbose=True,
llm="gpt-4o"
)
# タスク定義
research_task = Task(
description="2026年のAIエージェントフレームワークの最新動向を調査してください。",
expected_output="主要フレームワークの特徴・最新アップデート・採用動向のレポート",
agent=researcher
)
writing_task = Task(
description="調査結果を元に3000字程度の技術ブログ記事を執筆してください。",
expected_output="Markdown形式のブログ記事",
agent=writer,
context=[research_task]
)
review_task = Task(
description="記事の技術的正確性を検証し、改善点を指摘してください。",
expected_output="レビューコメントと修正済み記事",
agent=reviewer,
context=[writing_task]
)
# Crew実行
crew = Crew(
agents=[researcher, writer, reviewer],
tasks=[research_task, writing_task, review_task],
process=Process.sequential,
memory=True,
verbose=True
)
result = crew.kickoff()
print(result)
CrewAIの最大の魅力は、このように人間のチーム構成をそのままコードに落とし込める点です。role、goal、backstoryの3つを設定するだけで、エージェントが適切な行動を取ります。
AutoGen — Microsoftが推す会話型エージェント
特徴
AutoGenはMicrosoft Researchが開発する、会話ベースのマルチエージェントフレームワークです。2025年にv0.4系として大規模リファクタリングが行われ、autogen-agentchatとautogen-coreに分離されました。
強み:
- 会話パターンによる柔軟なエージェント協調
- ヒューマンインザループが標準装備
- コード実行環境の安全なサンドボックス
- Azure OpenAI / Microsoft 365との深い統合
弱み:
- APIの変更が頻繁(v0.2→v0.4で大幅変更)
- ドキュメントの整理が不十分な部分がある
- セットアップの手順がやや複雑
コード例:会話型エージェントチーム
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_agentchat.conditions import TextMentionTermination
from autogen_ext.models.openai import OpenAIChatCompletionClient
# モデルクライアント
model_client = OpenAIChatCompletionClient(model="gpt-4o")
# エージェント定義
planner = AssistantAgent(
name="Planner",
model_client=model_client,
system_message="""あなたは計画立案の専門家です。
タスクを分解し、実行順序を決定してください。
計画が完了したら「PLAN_COMPLETE」と出力してください。"""
)
coder = AssistantAgent(
name="Coder",
model_client=model_client,
system_message="""あなたはシニアソフトウェアエンジニアです。
計画に基づいてPythonコードを実装してください。
実装が完了したら「CODE_COMPLETE」と出力してください。"""
)
tester = AssistantAgent(
name="Tester",
model_client=model_client,
system_message="""あなたはQAエンジニアです。
コードのテストケースを作成し、品質を検証してください。
すべて問題なければ「APPROVED」と出力してください。"""
)
# 終了条件
termination = TextMentionTermination("APPROVED")
# チーム構成
team = RoundRobinGroupChat(
participants=[planner, coder, tester],
termination_condition=termination,
max_turns=10
)
# 実行(asyncio)
import asyncio
async def main():
result = await team.run(
task="Pythonで簡単なTODOアプリのCLIツールを作成してください"
)
for message in result.messages:
print(f"[{message.source}]: {message.content[:200]}")
asyncio.run(main())
AutoGenの特徴的な機能:コードサンドボックス
from autogen_ext.code_executors.docker import DockerCommandLineCodeExecutor
from autogen_agentchat.agents import CodeExecutorAgent
# Docker内でコードを安全に実行
code_executor = DockerCommandLineCodeExecutor(
image="python:3.12-slim",
timeout=60,
work_dir="/tmp/code"
)
executor_agent = CodeExecutorAgent(
name="CodeRunner",
code_executor=code_executor
)
AutoGenの強みは、エージェント間の会話を通じてタスクを進めるというアプローチにあります。特にコード実行のサンドボックス化は、セキュリティが重要なエンタープライズ環境で大きなメリットとなります。
Mastra — TypeScriptネイティブの新星
特徴
Mastraは2025年末にリリースされた、TypeScript/Node.jsネイティブのAIエージェントフレームワークです。Gatsby.jsの元開発者チームによって設計され、フロントエンド開発者にとって馴染みやすいAPIを提供します。
強み:
- TypeScriptファースト(型安全なエージェント定義)
- Next.js / Vercel / Cloudflareとのシームレスな統合
- ワークフローエンジンが標準搭載
- RAG・メモリ機能が組み込み済み
- 軽量かつ高速な起動
弱み:
- 2025年末リリースのため事例がまだ少ない
- Pythonエコシステムのツール資産を直接利用できない
- コミュニティの規模がまだ小さい
コード例:基本的なエージェント
import { Agent } from "@mastra/core/agent";
import { openai } from "@ai-sdk/openai";
import { createTool } from "@mastra/core/tools";
import { z } from "zod";
// ツール定義(Zodスキーマによる型安全な入出力)
const webSearchTool = createTool({
id: "web-search",
description: "Web検索を実行して最新情報を取得します",
inputSchema: z.object({
query: z.string().describe("検索クエリ"),
maxResults: z.number().default(5).describe("最大結果数"),
}),
outputSchema: z.object({
results: z.array(z.object({
title: z.string(),
url: z.string(),
snippet: z.string(),
})),
}),
execute: async ({ context }) => {
// 検索API呼び出し
const results = await fetchSearchResults(context.query, context.maxResults);
return { results };
},
});
const analyzeTool = createTool({
id: "analyze-data",
description: "データを分析してインサイトを抽出します",
inputSchema: z.object({
data: z.string().describe("分析対象のデータ"),
analysisType: z.enum(["summary", "trend", "comparison"]),
}),
outputSchema: z.object({
insights: z.array(z.string()),
confidence: z.number(),
}),
execute: async ({ context }) => {
return {
insights: [`${context.analysisType}分析の結果...`],
confidence: 0.85,
};
},
});
// エージェント作成
const researchAgent = new Agent({
name: "Research Agent",
instructions: `あなたはリサーチアシスタントです。
ユーザーの質問に対して、Web検索とデータ分析を組み合わせて
正確かつ包括的な回答を提供してください。日本語で回答します。`,
model: openai("gpt-4o"),
tools: { webSearchTool, analyzeTool },
});
// 実行
const response = await researchAgent.generate(
"2026年のAIエージェント市場の動向を教えてください"
);
console.log(response.text);
Mastraのワークフロー機能
import { Workflow, Step } from "@mastra/core/workflows";
import { z } from "zod";
// ステップ定義
const fetchDataStep = new Step({
id: "fetch-data",
inputSchema: z.object({
topic: z.string(),
}),
outputSchema: z.object({
rawData: z.string(),
sourceCount: z.number(),
}),
execute: async ({ context }) => {
const data = await fetchFromMultipleSources(context.topic);
return { rawData: data.content, sourceCount: data.sources.length };
},
});
const analyzeStep = new Step({
id: "analyze",
inputSchema: z.object({
rawData: z.string(),
}),
outputSchema: z.object({
analysis: z.string(),
keyFindings: z.array(z.string()),
}),
execute: async ({ context }) => {
return {
analysis: "分析完了",
keyFindings: ["発見1", "発見2"],
};
},
});
const reportStep = new Step({
id: "generate-report",
inputSchema: z.object({
analysis: z.string(),
keyFindings: z.array(z.string()),
}),
outputSchema: z.object({
report: z.string(),
}),
execute: async ({ context }) => {
return { report: `レポート: ${context.keyFindings.join(", ")}` };
},
});
// ワークフロー構築
const researchWorkflow = new Workflow({
name: "research-pipeline",
triggerSchema: z.object({ topic: z.string() }),
});
researchWorkflow
.step(fetchDataStep)
.then(analyzeStep)
.then(reportStep)
.commit();
// 実行
const run = researchWorkflow.createRun();
const result = await run.start({ triggerData: { topic: "AI Agent 2026" } });
Mastraの最大の強みは、TypeScriptの型システムをフル活用した開発体験の良さです。ZodスキーマによるI/O定義は、IDEの補完やコンパイル時のエラー検出を可能にし、大規模プロジェクトでの保守性を高めます。
コード比較:同じタスクを4つのフレームワークで実装
ここでは「Webを検索して結果を要約する」という同一タスクを4つのフレームワークで実装し、コードの違いを比較します。
LangChain版
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool
from langgraph.prebuilt import create_react_agent
@tool
def search(query: str) -> str:
"""Web検索"""
return "検索結果..."
agent = create_react_agent(
model=ChatOpenAI(model="gpt-4o"),
tools=[search],
)
result = agent.invoke({"messages": [("user", "AIの最新動向を調べて")]})
コード行数: 約10行 / セットアップの複雑さ: 中
CrewAI版
from crewai import Agent, Task, Crew
agent = Agent(
role="リサーチャー",
goal="最新のAI動向を調査する",
backstory="テクノロジーアナリスト",
)
task = Task(
description="AIの最新動向を調べて要約してください",
expected_output="要約レポート",
agent=agent,
)
crew = Crew(agents=[agent], tasks=[task])
result = crew.kickoff()
コード行数: 約12行 / セットアップの複雑さ: 低
AutoGen版
from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
agent = AssistantAgent(
name="Researcher",
model_client=OpenAIChatCompletionClient(model="gpt-4o"),
system_message="AIの最新動向を調査するリサーチャーです。",
)
import asyncio
result = asyncio.run(agent.run(task="AIの最新動向を調べて要約してください"))
コード行数: 約8行 / セットアップの複雑さ: 中
Mastra版
import { Agent } from "@mastra/core/agent";
import { openai } from "@ai-sdk/openai";
const agent = new Agent({
name: "Researcher",
instructions: "AIの最新動向を調査するリサーチャーです。",
model: openai("gpt-4o"),
});
const result = await agent.generate("AIの最新動向を調べて要約してください");
コード行数: 約8行 / セットアップの複雑さ: 低
コード比較のポイント
| 観点 | LangChain | CrewAI | AutoGen | Mastra |
|---|---|---|---|---|
| 最小コード行数 | 10行 | 12行 | 8行 | 8行 |
| ツール定義 | デコレータ | クラス/関数 | クラス | Zodスキーマ |
| 型安全性 | 低(Python) | 低(Python) | 中(Python) | 高(TypeScript) |
| 非同期 | 任意 | 内部処理 | 必須(async) | 必須(async) |
| 設定の冗長さ | 中 | やや多い | 中 | 少ない |
性能比較表
実運用で重要となるパフォーマンスと機能面を包括的に比較します。
機能比較
| 機能 | LangChain | CrewAI | AutoGen | Mastra |
|---|---|---|---|---|
| シングルエージェント | A | B | A | A |
| マルチエージェント | A (LangGraph) | S | A | B |
| RAG | S | A | B | A |
| メモリ管理 | A | A | B | A |
| ワークフロー | S (LangGraph) | A | B | A |
| ツール統合数 | S (700+) | A (100+) | B (30+) | B (50+) |
| オブザーバビリティ | S (LangSmith) | A | B | A |
| ストリーミング | A | B | A | A |
| ヒューマンインザループ | A | A | S | B |
| コード実行サンドボックス | B | B | S | C |
※ S=最優秀、A=優秀、B=良好、C=基本的
非機能比較
| 指標 | LangChain | CrewAI | AutoGen | Mastra |
|---|---|---|---|---|
| 学習コスト | 高 | 低 | 中 | 低 |
| 起動速度 | 中 | 速い | 中 | 速い |
| メモリ使用量 | 大 | 中 | 大 | 小 |
| ドキュメント品質 | A | A | B | A |
| コミュニティ規模 | S | A | A | B |
| エンタープライズ対応 | A | B | S | B |
| 更新頻度 | 高(週次) | 中(月次) | 中(月次) | 高(週次) |
| 破壊的変更リスク | 中 | 低 | 高 | 低 |
LLMプロバイダーサポート
| プロバイダー | LangChain | CrewAI | AutoGen | Mastra |
|---|---|---|---|---|
| OpenAI | O | O | O | O |
| Anthropic Claude | O | O | O | O |
| Google Gemini | O | O | O | O |
| AWS Bedrock | O | X | O | O |
| Azure OpenAI | O | O | O | O |
| ローカルLLM (Ollama) | O | O | O | O |
ユースケース別おすすめ
1. RAGチャットボット構築
おすすめ: LangChain
LangChainのRAGエコシステムは他を圧倒しています。ベクトルDB連携(Pinecone、Chroma、pgvector等)の豊富さ、チャンク分割の柔軟性、リトリーバーのカスタマイズ性は2026年時点でも最強です。
from langchain_community.vectorstores import Chroma
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain.chains import create_retrieval_chain
from langchain.chains.combine_documents import create_stuff_documents_chain
from langchain_core.prompts import ChatPromptTemplate
# ベクトルストアとリトリーバー
vectorstore = Chroma(
collection_name="docs",
embedding_function=OpenAIEmbeddings()
)
retriever = vectorstore.as_retriever(search_kwargs={"k": 5})
# RAGチェーン
prompt = ChatPromptTemplate.from_messages([
("system", "以下のコンテキストを元に日本語で回答してください:\n{context}"),
("human", "{input}"),
])
chain = create_retrieval_chain(
retriever,
create_stuff_documents_chain(ChatOpenAI(model="gpt-4o"), prompt)
)
result = chain.invoke({"input": "AIエージェントの最新トレンドは?"})
2. チーム型タスク自動化
おすすめ: CrewAI
複数のエージェントがそれぞれの専門性を活かして協調するシナリオでは、CrewAIが最も直感的です。タスクの依存関係管理やプロセス制御が組み込みで提供されます。
from crewai import Agent, Task, Crew, Process
# マーケティングチーム
market_analyst = Agent(
role="マーケットアナリスト",
goal="競合分析と市場トレンドの把握",
backstory="SaaS業界で8年の分析経験を持つアナリスト",
)
content_strategist = Agent(
role="コンテンツストラテジスト",
goal="データに基づくコンテンツ戦略の立案",
backstory="B2Bマーケティングのエキスパート",
)
copywriter = Agent(
role="コピーライター",
goal="ターゲットに響くコンテンツの作成",
backstory="テックライティングの専門家",
)
# 階層型プロセスで実行
crew = Crew(
agents=[market_analyst, content_strategist, copywriter],
tasks=[...],
process=Process.hierarchical,
manager_llm="gpt-4o"
)
3. コード生成・レビュー自動化
おすすめ: AutoGen
コード実行のサンドボックス化とヒューマンインザループの組み合わせは、AutoGenの真骨頂です。生成されたコードを安全に実行し、結果を検証するワークフローが標準で用意されています。
from autogen_agentchat.agents import AssistantAgent, CodeExecutorAgent
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_ext.code_executors.docker import DockerCommandLineCodeExecutor
# コード実行環境
executor = DockerCommandLineCodeExecutor(image="python:3.12-slim")
coder = AssistantAgent(
name="Coder",
system_message="要件に基づいてPythonコードを実装してください。",
model_client=model_client,
)
code_runner = CodeExecutorAgent(
name="Runner",
code_executor=executor,
)
reviewer = AssistantAgent(
name="Reviewer",
system_message="コードレビューを行い、問題があれば修正を依頼してください。",
model_client=model_client,
)
team = RoundRobinGroupChat(participants=[coder, code_runner, reviewer])
4. TypeScript/Node.jsプロジェクト
おすすめ: Mastra
フロントエンドやNext.jsアプリにAIエージェント機能を組み込むなら、Mastra一択です。TypeScriptの型システムによる開発効率の高さと、Vercel/Cloudflareへのデプロイのしやすさは他のフレームワークにはない強みです。
import { Mastra } from "@mastra/core";
import { Agent } from "@mastra/core/agent";
import { openai } from "@ai-sdk/openai";
// Mastraインスタンス(Next.js API Routeで利用可能)
const mastra = new Mastra({
agents: {
assistant: new Agent({
name: "Assistant",
instructions: "ユーザーの質問に日本語で回答します。",
model: openai("gpt-4o"),
}),
},
});
// Next.js API Route
export async function POST(req: Request) {
const { message } = await req.json();
const agent = mastra.getAgent("assistant");
const result = await agent.generate(message);
return Response.json({ reply: result.text });
}
5. エンタープライズ・業務自動化
おすすめ: AutoGen または LangChain
Microsoft 365やAzureとの統合が必要な企業環境ではAutoGen、それ以外の汎用的なエンタープライズ用途ではLangChain + LangSmithの組み合わせが適しています。
ユースケース別早見表
| ユースケース | 第1候補 | 第2候補 | 理由 |
|---|---|---|---|
| RAGチャットボット | LangChain | Mastra | ベクトルDB統合の豊富さ |
| マルチエージェント協調 | CrewAI | AutoGen | 直感的な役割定義 |
| コード生成・実行 | AutoGen | LangChain | サンドボックスの安全性 |
| TypeScript/フロントエンド | Mastra | LangChain.js | TS型安全性 |
| エンタープライズ(Azure) | AutoGen | LangChain | MS統合の深さ |
| プロトタイピング | CrewAI | Mastra | 最小コードで動作 |
| 複雑なワークフロー | LangChain | Mastra | LangGraphの柔軟性 |
| リアルタイム処理 | Mastra | LangChain | 軽量・高速起動 |
まとめ:どれを選ぶべきか
4つのフレームワークはそれぞれ明確な強みを持っています。最終的な選択は、プロジェクトの要件と開発チームのスキルセットに依存します。
選択フローチャート
- 使用言語はTypeScriptか? → Yes → Mastraを第一候補に
- マルチエージェントの協調が必要か? → Yes → CrewAIを第一候補に
- コード実行の安全性が最重要か? → Yes → AutoGenを第一候補に
- 豊富なインテグレーションが必要か? → Yes → LangChainを第一候補に
- よく分からない・汎用的に使いたい → LangChainから始めるのが無難
2026年の動向予測
- LangChain: LangGraphの進化により、ますますワークフローエンジンとしての地位を固める。LangSmithのオブザーバビリティは業界標準になりつつある
- CrewAI: マルチエージェントの需要増加に伴い、エンタープライズ向け機能を拡充。CrewAI Enterpriseの登場が予想される
- AutoGen: v0.4の安定化とAzure AI Agentsとの統合強化。Microsoft製品との親和性がさらに高まる
- Mastra: TypeScriptエコシステムでの急速な普及。Vercel AI SDKとの統合がさらに深化し、フルスタックAIアプリの標準になる可能性