Loading...
Gemini APIで画像を解析し、Next.jsアプリに組み込む方法【2024年版】
Next.jsGemini APIVercel AI SDK

Gemini APIで画像を解析し、Next.jsアプリに組み込む方法【2024年版】

Google Gemini APIとVercel AI SDKを使って、画像から情報を抽出するアプリを構築しよう。

2025-07-277分で読める

🧠 はじめに

Googleが提供するマルチモーダルな生成AI「Gemini API」を使えば、画像から情報を抽出するアプリを簡単に構築できます。 この記事では、Next.js + Gemini API + Vercel AI SDKを組み合わせて、画像に関する質問を送信し、その回答をリアルタイムで受け取るチャット型アプリの作り方を紹介します。


✅ 必要なもの

  • Node.js (v18以上)
  • Google AI StudioのAPIキー
  • Next.jsの基本的な知識

⚙️ プロジェクトのセットアップ

まずはNext.jsアプリを作成します:

npx create-next-app@latest gemini-vision-app
cd gemini-vision-app

必要なライブラリをインストール:

npm install @google/generative-ai @vercel/ai

🔑 APIキーの設定

Google AI Studio(こちら)でAPIキーを取得し、.env.local ファイルに以下のように記述します:

GOOGLE_API_KEY=YOUR_API_KEY

🔧 Gemini Vision APIルートの作成

画像とテキストを同時に送信して回答を取得するためのAPIエンドポイントを作成します。

ファイル: src/app/api/chat/route.ts

import { GoogleGenerativeAI } from "@google/generative-ai";
import { GoogleAIStream, StreamingTextResponse } from "ai";

export const dynamic = "force-dynamic";
export const runtime = "nodejs"; // Buffer を使うためNode.js環境に指定

const genAI = new GoogleGenerativeAI(process.env.GOOGLE_API_KEY || "");

export async function POST(req: Request) {
  const {
    messages,
    data,
  }: {
    messages: { role: string; content: string }[];
    data: { imageUrl: string };
  } = await req.json();

  const lastMessage = messages[messages.length - 1];
  const prompt = lastMessage.content;

  const imageResponse = await fetch(data.imageUrl);
  const imageBuffer = await imageResponse.arrayBuffer();
  const imageBase64 = Buffer.from(imageBuffer).toString("base64");

  const imagePart = {
    inlineData: {
      data: imageBase64,
      mimeType: imageResponse.headers.get("Content-Type") || "image/jpeg",
    },
  };

  const model = genAI.getGenerativeModel({ model: "gemini-pro-vision" });

  const stream = await model.generateContentStream([
    { text: prompt },
    imagePart,
  ]);

  const aiStream = GoogleAIStream(stream);
  return new StreamingTextResponse(aiStream);
}

🖼️ フロントエンドの実装

ユーザーが画像URLと質問を入力し、Geminiからの応答を受け取るUIを作成します。

ファイル: src/app/page.tsx

"use client";

import { useChat } from "ai/react";
import { useState } from "react";

export default function Home() {
  const [imageUrl, setImageUrl] = useState(
    "https://storage.googleapis.com/from-gemini/meiro.jpg"
  );

  const {
    messages,
    input,
    handleInputChange,
    handleSubmit,
  } = useChat({
    api: "/api/chat",
    body: { imageUrl },
  });

  return (
    <div className="flex flex-col w-full max-w-md py-24 mx-auto space-y-6">
      <div>
        <h2 className="text-lg font-semibold">画像のURLを入力してください</h2>
        <input
          className="w-full p-2 border rounded"
          value={imageUrl}
          onChange={(e) => setImageUrl(e.target.value)}
        />
      </div>

      <form onSubmit={handleSubmit}>
        <input
          className="w-full p-2 border border-gray-300 rounded"
          value={input}
          placeholder="この画像について質問してください"
          onChange={handleInputChange}
        />
      </form>

      <div className="mt-6 space-y-2">
        {messages.map((m) => (
          <div key={m.id} className="whitespace-pre-wrap">
            <strong>{m.role === "user" ? "User" : "AI"}:</strong> {m.content}
          </div>
        ))}
      </div>
    </div>
  );
}

🔍 動作イメージ

  • 画像URLに「迷路の写真」などを指定
  • 「この迷路のゴールはどこ?」と入力
  • Geminiが視覚的に解析して回答!

🌟 まとめ

Gemini APIとNext.jsを連携させることで、画像に対する自然語基盤の質問応答アプリを簡単に構築できます。後は導入や应用のアイデア潰し!

  • 商品画像のキャプション生成
  • 医療画像の予備診断
  • 視覚教材の理解支援

など、広範囲な分野での活用が可能です。


🔗 参考リンク

PR
この記事が役に立ったら:

developer note 記事

Sunoで演歌を作ってみた話 〜AIが奏でる昭和の哀愁〜
Suno / music / 生成AI

最近AI音楽生成サービス「Suno」を使って遊んでいるのですが、思い付きで演歌を作れるか実験しました。

2025-09-21

Sunoで演歌を作ってみた話 〜AIが奏でる昭和の哀愁〜

写真を90年代風に加工できるツールが登場!
写真加工 / JavaScript / 生成AI

AIで生成した画像を90年代風にしてみた

2025-08-15

写真を90年代風に加工できるツールが登場!

WindowsにLatentSyncで大苦戦!AIリップシンクをローカルPCで動かそうとしてエラーの地獄を見た全記録
AI / LatentSync / wsl

「ローカルPCで手軽にAIリップシンクを楽しみたい!」そんな甘い夢を見て、巷で話題の「LatentSync」をインストールしようとしたのが全ての始まりでした。まさか、これが数々のエラーという名の強敵と戦い、黒い画面(ターミナル)という名のダンジョンを彷徨う、壮大な冒険になるとは…この記事は、その血と汗と涙の全記録です。

2025-08-15

WindowsにLatentSyncで大苦戦!AIリップシンクをローカルPCで動かそうとしてエラーの地獄を見た全記録

2025年、AIが「ヤバい」ことになっている件について
AI / 最新技術 / トレンド

もはやSFではない。音楽作成、新薬開発、未知の物理法則の発見まで、最新AIの驚くべき成果を完全解説。

2025-08-15

2025年、AIが「ヤバい」ことになっている件について

構造化XMLタグ完全ガイド - AIプロンプトを劇的に改善する技術
プロンプト / XML

AI時代の新常識「何を言うか」より「どう伝えるか」が決定的な差を生む。構造化XMLタグは、あなたのプロンプトを次のレベルに押し上げる強力な武器です。

2025-08-13

構造化XMLタグ完全ガイド - AIプロンプトを劇的に改善する技術

GPT-5プロンプトガイド: 次世代AIモデルを最大限活用する方法
OpenAI / GPT-5

OpenAIが発表したGPT-5は、エージェント的タスク実行、コーディング、推論能力、そして操作性において大幅な向上を実現したフラグシップモデルです。本記事では、GPT-5の潜在能力を最大限引き出すためのプロンプト技術について、実用的な観点から解説します。

2025-08-13

GPT-5プロンプトガイド: 次世代AIモデルを最大限活用する方法

SunoでフューチャーファンクをDIY!完全解説ガイド
生成AI / Suno / 楽曲

こんにちは!今回は、AI音楽生成ツール「Suno」を使って、ノスタルジックな80年代風フューチャーファンクトラックを作成した体験記をお届けします。プロンプトエンジニアリングのコツから、フューチャーファンクの魅力まで、詳しく解説していきます。

2025-08-12

SunoでフューチャーファンクをDIY!完全解説ガイド

【やってみた】Claude Desktop × Browser MCPでXポスト自動化!AI操作の可能性に驚きと感動!
AI / 自動化 / Claude / mcp

こんにちは!今回は、ずっと気になっていた「AIにX(旧Twitter)への投稿を自動化させる」というチャレンジをしてみました。

2025-08-12

【やってみた】Claude Desktop × Browser MCPでXポスト自動化!AI操作の可能性に驚きと感動!

OpenAI GPT OSS:新しいオープンソースモデルファミリー - 詳細要約
GPT-5 / AI / 創造 / 生産性 / 未来

OpenAIが初のオープンソースモデルファミリー「GPT OSS」をリリースしました。これは推論、エージェント型タスク、多様な開発用途に設計された待望のオープンウェイトモデルです。

2025-08-10

OpenAI GPT OSS:新しいオープンソースモデルファミリー - 詳細要約

GPT-5超速報:爆速創造時代の始まり
GPT-5 / AI / 創造 / 生産性 / 未来

ヤバいAI、GPT-5がキタ!あなたの「ひらめき💡」を「カタチ✨」にする最強の相棒が爆誕。仕事も遊びも爆速になる未来は、もうここにある。速さはAIがくれる。その先にある「信頼」と「物語」を創るのは、いつだって人間だ。

2025-08-09

GPT-5超速報:爆速創造時代の始まり

Gemini Code Assist、2025年夏アップデートで「エージェントモード」とIDE機能強化を発表!開発がさらに加速
Google / Gemini / Code Assist / エージェントモード / IDE

GoogleのAIコーディングアシスタントであるGemini Code Assistは、個人の開発者から企業まで、すべての方のコーディングをさらに高速化する画期的なアップデートを2025年7月に発表しました。今回の目玉は、AIがコードベース全体を理解し、複雑なタスクを実行する「エージェントモード」の登場、そして開発環境(IDE)の使いやすさを向上させる様々な機能強化です。

2025-08-08

Gemini Code Assist、2025年夏アップデートで「エージェントモード」とIDE機能強化を発表!開発がさらに加速

Browser MCP徹底解説:AI(Claude)がX(旧Twitter)に自動投稿する仕組みと手順
Claude / Browser MCP / X

Browser MCPを活用してAIがWebブラウザを操作し、X(旧Twitter)へ自動的に投稿を行うための詳細な設定方法と具体的な利用例を徹底的に解説します。

2025-08-01

Browser MCP徹底解説:AI(Claude)がX(旧Twitter)に自動投稿する仕組みと手順

Gemini APIで画像を解析し、Next.jsアプリに組み込む方法【2024年版】
Next.js / Gemini API / Vercel AI SDK

Google Gemini APIとVercel AI SDKを使って、画像から情報を抽出するアプリを構築しよう。

2025-07-27

Gemini APIで画像を解析し、Next.jsアプリに組み込む方法【2024年版】

機械学習を用いてドラゴンクエスト12の発売日を予測
Python

ちょっとしたプログラミングの遊びをしてみたくて、機械学習を使ってドラゴンクエスト12の発売日を予測してみることにしました。

2024-05-14

機械学習を用いてドラゴンクエスト12の発売日を予測

ESP32とDHT11を使って温度と湿度を測定し、AWS Lambda経由でX(Twitter)に投稿する
Electronics

Freenove ESP32-WROOMボードとDHT11温湿度センサーを使用して、環境の温度と湿度を測定し、そのデータをAWS Lambdaを介してX(Twitter)に自動投稿してみました。

2024-04-05

ESP32とDHT11を使って温度と湿度を測定し、AWS Lambda経由でX(Twitter)に投稿する

年に一度で忘れがちのiOS Distribution Certificate証明書の更新メモ
iOS

毎年、現在ご利用のiOS Distribution証明書の有効期限まであと30日になりました。以降、この証明書は無効となります。新しい証明書を生成するには、サインインして「Certificates, Identifiers &amp; Profiles」(証明書、ID、プロファイル)にアクセスしてください。とAppleからご案内が来るのですが、年に1度しか対応しないのですぐ忘れてしまうためメモいたしました

2024-01-05

年に一度で忘れがちのiOS Distribution Certificate証明書の更新メモ

Xcode15で作成したアプリにAdMobを設定したい時のメモ
iOS

Xcode15でAdMobを導入した時のことを備忘録としてメモいたしました。

2023-10-04

Xcode15で作成したアプリにAdMobを設定したい時のメモ

機械学習を用いて衆議院の解散日を予測
Python

ニュースで衆議院の解散はいつ?みたいなことを取り上げていたので、機械学習を使って衆議院の解散の日を予測してみることにしました。

2023-09-18

機械学習を用いて衆議院の解散日を予測