AI SDKとGeminiで市場分析を自動化!最先端のAIエージェント開発入門
皆さん、AIを活用したビジネスの自動化に興味はありませんか?私は長年AIの最前線を見てきましたが、特にVercel AI SDKとGoogle Geminiの組み合わせは、まさにゲームチェンジャーだと断言できます。この強力なコンビネーションを使えば、まるで敏腕アナリストを雇ったかのように、市場トレンドの調査からデータ分析、さらにはプロフェッショナルなレポート作成まで、一連の作業を自動化するAIエージェントを構築できるんです。
GoogleのAI技術は日々進化しており、特に最近一般提供が開始されたInteractions APIは、最新のモデルと機能を活用するための鍵となります。今回ご紹介するアプリケーションは、この最新技術を駆使し、GeminiがGoogle検索で最新の市場トレンドを調査し、その結果から構造化データを抽出し、最終的にはグラフを含むHTMLレポートをPDFとして出力するという、非常に実用的なものです。これからのビジネスにおいて、このようなAIエージェントは、意思決定のスピードと質を格段に向上させるでしょう。
開発環境の準備とAI SDKの基本をマスターする
さて、この最先端のAIエージェントを開発するためには、まずしっかりとした開発環境を整えることが肝心です。私の経験上、環境構築は最初のハードルですが、ここを乗り越えれば一気に視界が開けますよ。
必要なものは以下の通りです。
* Gemini APIキー: Google AI Studioで無料で取得できます。
* Node.js: バージョン18以上が必須です。
* パッケージマネージャー: npm、pnpm、yarnのいずれか。
まずはプロジェクトディレクトリを作成し、初期化しましょう。例えばnpmを使うなら、以下のコマンドを実行します。
mkdir market-trend-app
cd market-trend-app
npm init -y
次に、必要なライブラリを一括でインストールします。AI SDK本体、Google AI Generativeプロバイダー、データ検証に使うzod、そしてグラフ描画のchart.js、PDF生成のpuppeteerなどです。
npm install ai @ai-sdk/google zod puppeteer chart.js
npm install -D @types/node tsx typescript @types/chart.js
npx tsc --init
ここで一つ注意点があります。tsconfig.jsonファイルが生成されたら、"verbatimModuleSyntax": trueの行をコメントアウトしてください。これはTypeScriptのコンパイラエラーを避けるためです。また、puppeteerはChromiumブラウザをダウンロードするスクリプトを実行しますので、プロンプトが表示されたら承認を忘れずに行ってくださいね。
最後に、Gemini APIキーを環境変数GOOGLE_GENERATIVE_AI_API_KEYに設定します。これで、AI SDKが自動的にキーを読み込んでくれるようになります。
環境が整ったら、main.tsファイルを作成し、以下のコードでGeminiとの簡単な対話を試してみましょう。これで「植物性ミルクとは何か?」という質問に対するGeminiの回答がコンソールに表示されれば、準備は万端です!
import { google } from "@ai-sdk/google";
import { generateText } from "ai";
async function main() {
const { text } = await generateText({
model: google("gemini-3.7-flash"),
prompt: 'What is plant-based milk?',
});
console.log(text);
}
main().catch(console.error);
GeminiとGoogle検索ツールでリアルタイム市場トレンドを掴む
環境構築が完了したら、いよいよAIエージェントの核心部分に入っていきましょう。ビジネスにおいて、情報は鮮度が命です。Geminiの「Google検索ツール」機能は、まさにその課題を解決する切り札だと断言できます。このツールを有効にすることで、Geminiはプロンプトに応じてウェブを検索し、最新の情報を取得して回答に反映させることができるのです。
main.tsファイルを更新し、以下のコードを追加してみましょう。ここでは、北米における2024年から2025年の植物性ミルク市場のトレンド(市場規模、主要プレーヤー、消費者動向など)を検索するようGeminiに指示しています。tools: { google_search: google.tools.googleSearch({}) }という記述が、GeminiにGoogle検索の力を与える魔法の呪文です。
import { google } from "@ai-sdk/google";
import { generateText } from "ai";
async function main() {
// Step 1: Search market trends
const { text: marketTrends, sources } = await generateText({
model: google("gemini-3.7-flash"),
tools: {
google_search: google.tools.googleSearch({}),
},
prompt: `Search the web for market trends for plant-based milk in North America for 2024-2025.
I need to know the market size, key players and their market share, and primary consumer drivers.
`,
});
console.log("Market trends found:\n", marketTrends);
// 必要であれば、以下の行をアンコメントして情報源を確認できます。
// console.log("Sources:\n", sources);
}
main().catch(console.error);
このコードを実行すれば、Geminiがウェブを巡回し、最新の市場トレンド情報をテキストとして返してくれるはずです。私の経験では、このリアルタイム検索機能は、営業資料の作成、競合分析、新規事業の市場調査など、多岐にわたるビジネスシーンで絶大な威力を発揮します。もはや手動で情報を集める時代は終わりを告げたと言っても過言ではありません。
複雑なデータを構造化し、魅力的なレポートを自動生成する技術
AIが生成した生のテキスト情報は非常に有用ですが、それをさらにビジネスに活かすためには、構造化し、視覚的に分かりやすく表現することが不可欠です。ここで登場するのが、AI SDKのgenerateObject機能とzodスキーマです。generateObjectは、Geminiが生成したテキストから、私たちが定義した厳密なデータ構造(スキーマ)に従って情報を抽出する能力を持っています。
main.tsに以下のコードを追加してください。zodを使って、どのようなグラフ(棒グラフか折れ線グラフか)、ラベル、データ、色が必要かをAIに指示するスキーマを定義しています。そして、createChartConfigというヘルパー関数で、抽出されたデータをChart.jsが理解できる形式に変換します。これにより、市場トレンドのテキストから、自動的にグラフの元データが生成されるのです。
import { google } from "@ai-sdk/google";
import { generateText, generateObject } from "ai";
import { z } from "zod"; // zod/v4ではなく、zodを直接インポートします。
import { ChartConfiguration } from "chart.js";
// Chart.jsのコンフィグを作成するヘルパー関数
function createChartConfig({
labels,
data,
label,
type,
colors,
}: {
labels: string[];
data: number[];
label: string;
type: "bar" | "line";
colors: string[];
}): ChartConfiguration {
return {
type: type,
data: {
labels: labels,
datasets: [
{
label: label,
data: data,
borderWidth: 1,
...(type === "bar" && { backgroundColor: colors }),
...(type === "line" && colors.length > 0 && { borderColor: colors[0] }),
},
],
},
options: {
animation: {
duration: 0
}, // 静的なPDFレンダリングのためにアニメーションを無効化
},
};
}
async function main() {
// Step 1: Search market trends (省略 - 上記のコードを参照)
const { text: marketTrends, sources } = await generateText({
model: google("gemini-3.7-flash"),
tools: {
google_search: google.tools.googleSearch({}),
},
prompt: `Search the web for market trends for plant-based milk in North America for 2024-2025.
I need to know the market size, key players and their market share, and primary consumer drivers.
`,
});
console.log("Market trends found.");
// Step 2: Extract chart data
const { object: chartData } = await generateObject({
model: google("gemini-3.7-flash"),
schema: z.object({
chartConfigurations: z
.array(
z.object({
type: z.enum(["bar", "line"]).describe('The type of chart to generate. Either "bar" or "line"'),
labels: z.array(z.string()).describe("A list of chart labels"),
data: z.array(z.number()).describe("A list of the chart data"),
label: z.string().describe("A label for the chart"),
colors: z.array(z.string()).describe('A list of colors to use for the chart, e.g. "rgba(255, 99, 132, 0.8)"'),
}),
)
.describe("A list of chart configurations"),
}),
prompt:
`Given the following market trends text, come up with a list of 1-3 meaningful bar or line charts
and generate chart data.
Market Trends:
${marketTrends}
`,
});
const chartConfigs = chartData.chartConfigurations.map(createChartConfig);
console.log("Chart configurations generated.");
// Step 3: Generate the final report (このセクションの続きで実装します)
// ここでは、これらのグラフ設定と市場トレンドのテキストを組み合わせて、
// Puppeteerを使ってHTMLレポートを生成し、PDFとして保存する処理が続きます。
// これにより、数分でプロフェッショナルな市場分析レポートが完成するわけです。
}
main().catch(console.error);
このステップこそが、AIを実務で活かす上での真骨頂だと私は考えています。営業担当者なら、顧客への提案資料を瞬時に作成できますし、経営層は市場の動向を素早く把握し、的確な意思決定を下せるようになります。開発者にとっては、このような自動化ツールを構築できることは、自身の市場価値を高める強力な武器となるでしょう。AIが生成した情報に、人間が求める「形」を与えることで、その価値は何倍にも跳ね上がるのです。この技術を習得すれば、あなたのビジネスは間違いなく次のステージへと進むはずです。