⚠ デモ/モックアプリ: このページはデータベースや認証機能を持たないデモ/モックです。学習・参考用コンテンツとしてご活用ください。より深く学びたい方は村瀬にご連絡いただくか、AIアシスタントにご相談ください。
Hub に戻る

API連携ベストプラクティス

MCP・Tool Use・REST API統合の実践ガイド

API連携の全体像
MCP(Model Context Protocol)の重要性
MCPはAnthropicが提唱するオープンプロトコルで、AIモデルと外部ツール・データソースを標準化された方法で接続します。2026年現在、3,000以上のMCPサーバーがコミュニティで公開されており、AIアプリケーション開発における事実上の標準となりつつあります。MCPにより、開発者はサービスごとに個別のインテグレーションを構築する必要がなくなり、統一されたインターフェースで多様なツールを活用できます。
🔌 Tool Use / Function Calling の基本概念
🔧

Tool Use とは

AIモデルが外部ツール(関数)を呼び出す機能です。モデルが「いつ」「どのツールを」「どんな引数で」呼ぶかを判断し、構造化されたJSONで呼び出しを返します。開発者はその結果を実行してモデルに返却します。

🔄

Function Calling

OpenAI系のTool Useに相当する呼称です。定義されたJSON Schemaに基づいて関数呼び出しを生成します。Anthropic Claude、OpenAI GPT、Google Geminiなど主要モデルが対応しています。

🚀

MCP

Model Context Protocolは、Tool Useをさらに一歩進めた標準プロトコルです。サーバー・クライアントアーキテクチャで、ツール・リソース・プロンプトを統一的に管理し、再利用可能なインテグレーションを実現します。

📋 REST API統合の3つのパターン
1

直接呼び出し

アプリケーションから直接REST APIを呼び出すシンプルなパターン。小規模プロジェクトに最適。認証管理やエラーハンドリングを自前で実装する必要があります。

2

ミドルウェア経由

バックエンドサーバーを中間層として配置するパターン。認証情報の隠蔽、レート制限の管理、レスポンスの加工が可能。本番運用に推奨されるアプローチです。

3

MCP経由

MCPサーバーを介してAPI連携するパターン。ツール定義の標準化、認証の一元管理、複数モデルでの再利用が可能。2026年のモダンなAIアプリ開発で急速に普及しています。

📈 2026年のAPI連携トレンド
3,000+
MCPサーバー
コミュニティで公開されているMCPサーバー数。ファイルシステム、DB、SaaS連携など多岐にわたる
85%
Tool Use採用率
本番AIアプリでTool Use / Function Callingを利用しているプロジェクトの割合
Multi
マルチモーダルAPI
テキスト・画像・音声・動画を統合的に処理するAPIが主流に。単一エンドポイントで複数モダリティを扱える
OAuth 2.1
認証標準
OAuth 2.1がデフォルトの認証規格に。PKCEが必須化され、暗黙フローは非推奨に
ポイント
2026年のAPI連携は「直接REST API呼び出し」から「MCPによる標準化された統合」へと大きくシフトしています。新規プロジェクトではMCPファーストなアーキテクチャを検討しましょう。既存のREST APIもMCPサーバーでラップすることで、AIアプリケーションからの活用が容易になります。
🔗 主要API連携パターン
S
Slack API Salesforce

Webhook / Bot連携による通知自動化が主な用途です。Incoming Webhookで簡易通知、Bot Token APIで双方向のインタラクション、Socket Modeでリアルタイムイベント受信が可能。AIアプリからの通知・レポート配信、チャットボット構築に最適です。

🔒 OAuth 2.0 通知自動化 Bot開発 Webhook
Stripe API Stripe

決済統合とサブスクリプション管理の業界標準です。Payment Intents APIで安全な決済フロー、Billing APIでサブスク管理、Webhook経由でのリアルタイムイベント通知に対応。PCI DSS準拠を最小限の実装で実現できます。

🔑 APIキー 決済統合 サブスク管理 Webhook
G
Google Drive API Google

ファイル操作自動化のための強力なAPIです。ファイルのアップロード・ダウンロード・検索、共有設定の管理、Google Docs/Sheets/Slidesとの連携が可能。AIアプリでのドキュメント自動生成やRAG用データソースとして活用されています。

🔒 OAuth 2.0 ファイル操作 ドキュメント自動生成 Google Workspace連携
L
LINE Messaging API LY Corporation

日本国内で9,600万人以上が利用するLINEプラットフォームでのBot開発APIです。プッシュメッセージ・リプライメッセージ・リッチメニュー・Flex Messageに対応。WebhookでユーザーイベントをリアルタイムLに受信し、AIチャットボットを構築できます。

🔑 チャネルアクセストークン Bot開発 顧客対応自動化 Webhook
GitHub API GitHub / Microsoft

CI/CD連携とPR自動レビューの中核です。REST API v3とGraphQL API v4を提供。Issues、Pull Requests、Actions、Webhookをプログラマティックに操作可能。AIによるPRの自動レビュー、Issue分析、リリース自動化などに活用されています。

🔑 PAT / GitHub App CI/CD連携 PR自動レビュー GraphQL
連携設計のヒント
各APIとの連携では、まずWebhookベースの非同期通信を検討しましょう。リアルタイム性が必要な場合はWebSocket(Slack Socket Mode等)を活用します。認証情報は必ず環境変数で管理し、コードにハードコードしないことが鉄則です。MCPサーバーとしてラップすれば、Claude等のAIモデルから直接これらのAPIを利用できるようになります。
MCP実践ガイド
MCPとは何か
Model Context Protocol(MCP)は、Anthropicが2024年末に発表したオープンプロトコルです。AIモデルと外部ツール・データソースを標準化された方法で接続するクライアント-サーバーアーキテクチャを採用しています。JSON-RPCベースの通信プロトコルで、ツール(Tools)、リソース(Resources)、プロンプト(Prompts)の3つの機能を提供します。TypeScript / Python SDKが公式に提供されており、誰でもMCPサーバーを構築・公開できます。
🛠 セットアップ手順
📝 ツール定義の書き方(JSON Schema)
MCP Tool Definition Example
{
  "name": "search_documents",
  "description": "Search documents by keyword and return matching results",
  "inputSchema": {
    "type": "object",
    "properties": {
      "query": {
        "type": "string",
        "description": "Search keyword or phrase"
      },
      "limit": {
        "type": "number",
        "description": "Max number of results (default: 10)",
        "default": 10
      }
    },
    "required": ["query"]
  }
}
Claude Desktop Config Example
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"]
    },
    "slack": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-slack"],
      "env": {
        "SLACK_BOT_TOKEN": "xoxb-your-token-here"
      }
    }
  }
}
🌐 3,000+ コミュニティサーバーの活用
📁

ファイルシステム

ローカルファイルの読み書き・検索が可能。指定ディレクトリ内のファイル操作をAIモデルが直接実行できます。セキュリティのためサンドボックス化されたアクセスを提供。

🗃

データベース

PostgreSQL、SQLite、MongoDBなど主要DBへの接続サーバー。SQLクエリの実行、スキーマ確認、データ分析をAIが直接行えます。読み取り専用モードも設定可能。

💬

Slack / Discord

メッセージの送受信、チャンネル管理、ユーザー情報の取得が可能。AIチャットボットの構築や、コミュニケーションデータの分析に活用されています。

🌐

Web / ブラウザ

Webページのスクレイピング、ブラウザ自動操作(Puppeteer / Playwright)、API呼び出しを行うサーバー群。最新情報の取得やWebアプリのテスト自動化に使用。

開発ツール

GitHub、GitLab、Jira、Linear等の開発ツール連携。Issue管理、PR操作、CI/CDパイプラインの制御をAIモデルから実行できます。

📊

データ分析

Google Sheets、Notion、Airtable等のデータソース連携。データの取得・更新・分析をAIが統合的に実行し、インサイトを生成します。

🔒 セキュリティ考慮事項
MCP導入のコツ
まずは公式のファイルシステムサーバーやメモリサーバーから始めて、MCPの仕組みを理解しましょう。慣れたら既存のREST APIをMCPサーバーとしてラップする自作サーバーの構築に進むのが効率的です。TypeScript SDKの@modelcontextprotocol/sdkを使えば、数十行のコードでMCPサーバーを構築できます。
設計パターン
🔒 認証パターン
🔒

OAuth 2.0 / 2.1

ユーザー認可を伴うAPI連携の標準。Slack、Google Drive等で使用。OAuth 2.1ではPKCEが必須化され、暗黙フローが非推奨に。アクセストークンの自動更新を実装しましょう。

🔑

APIキー

シンプルな認証方式。Stripe、OpenAI等で使用。ヘッダーまたはクエリパラメータで送信。環境変数で管理し、フロントエンドに露出させないこと。ローテーション計画を必ず策定。

📜

JWT(JSON Web Token)

ステートレスな認証トークン。GitHub App等で使用。ペイロードに有効期限・権限スコープを含む。署名検証で改竄を検出。RS256アルゴリズムを推奨。

短命トークン

有効期限が短い(数分〜数時間)トークン。漏洩リスクを最小化。リフレッシュトークンと組み合わせて使用。STS(Security Token Service)パターンで動的に発行。

🔄 リトライ戦略
指数バックオフ + ジッター
API呼び出しが失敗した場合のリトライには、指数バックオフ(Exponential Backoff)にジッター(ランダムな遅延)を加えた戦略が推奨されます。リトライ間隔を1秒 → 2秒 → 4秒 → 8秒と倍増させつつ、各間隔に0〜100%のランダムな遅延を追加します。これにより、同時にリトライする複数クライアントの衝突(Thundering Herd問題)を防止できます。
Exponential Backoff with Jitter
async function fetchWithRetry(url, options, maxRetries = 3) {
  for (let attempt = 0; attempt <= maxRetries; attempt++) {
    try {
      const response = await fetch(url, options);
      if (response.status === 429 || response.status >= 500) {
        throw new Error(`HTTP ${response.status}`);
      }
      return response;
    } catch (error) {
      if (attempt === maxRetries) throw error;
      // Exponential backoff with jitter
      const baseDelay = Math.pow(2, attempt) * 1000;
      const jitter = Math.random() * baseDelay;
      await new Promise(r => setTimeout(r, baseDelay + jitter));
    }
  }
}
サーキットブレーカーパターン
🟢

Closed(正常)

通常稼働状態。リクエストはそのまま外部APIに転送されます。失敗が閾値(例: 5回連続失敗)を超えるとOpen状態に遷移します。成功数・失敗数をカウントして監視します。

🔴

Open(遮断)

外部APIへのリクエストを遮断し、即座にフォールバック応答を返します。一定時間(例: 30秒)経過後にHalf-Open状態へ遷移。障害中のAPIへの無駄なリクエストを防止します。

🟠

Half-Open(試行)

限定的にリクエストを通して回復を確認します。成功すればClosed状態に復帰、失敗すればOpen状態に戻ります。段階的な回復により、障害からの安全な復旧を実現します。

🚦 レート制限対策
🛠 抽象化レイヤーの設計(Provider Pattern)
Provider Pattern Example
// Abstract provider interface
interface NotificationProvider {
  send(message: string, channel: string): Promise<void>;
  getChannels(): Promise<Channel[]>;
}

// Slack implementation
class SlackProvider implements NotificationProvider {
  async send(message: string, channel: string) {
    await this.client.chat.postMessage({ channel, text: message });
  }
}

// LINE implementation
class LineProvider implements NotificationProvider {
  async send(message: string, channel: string) {
    await this.client.pushMessage({ to: channel, messages: [{ type: "text", text: message }] });
  }
}

// Usage - easily swap providers
const provider = getProvider(config.notificationService);
await provider.send("Deploy completed!", "#releases");
エラーハンドリングのベストプラクティス
🚨

構造化エラー

APIエラーは統一フォーマットで返却しましょう。エラーコード、メッセージ、HTTPステータス、リクエストIDを含め、クライアント側での適切なハンドリングを可能にします。

📋

フォールバック

外部APIが応答しない場合のフォールバック戦略を必ず用意します。キャッシュされたデータの返却、デグレードされた機能の提供、ユーザーへの適切なエラーメッセージ表示を実装します。

📈

監視とアラート

API呼び出しのレイテンシー、エラー率、成功率をメトリクスとして収集します。閾値を超えた場合にアラートを発報し、SLAの維持と障害の早期検出を実現します。

🗒

ログ戦略

リクエスト/レスポンスのログを構造化JSONで出力します。機密情報のマスキング、リクエストIDによるトレーサビリティ、ログレベルの適切な設定が重要です。

設計パターンのまとめ
API連携の設計では、認証・リトライ・サーキットブレーカー・レート制限の4層で堅牢性を確保します。Provider Patternで抽象化すれば、サービスの切り替えが容易になり、テスタビリティも向上します。MCPサーバーとしてこれらのパターンを組み込むことで、AIアプリケーションから安全かつ効率的にAPIを活用できるアーキテクチャが実現します。