ClaudeのコードスキルでAPIリクエスト・ネットワーク(データ取得)を行う方法

Ashley Goolam

Ashley Goolam

21 1月 2026

ClaudeのコードスキルでAPIリクエスト・ネットワーク(データ取得)を行う方法

新しい統合ごとにフェッチ呼び出しを手動で作成し、認証トークンを処理し、APIレスポンスを解析することは、Webアプリにとってアセンブリコードを書くようなものです。データフェッチのためのClaude Code Skillsは、HTTPリクエストを宣言的で再利用可能なツールに変え、認証パターン、ページネーション、およびレスポンス検証を理解し、ボイラープレートを排除しながらコードベース全体で一貫性を確保します。

開発ワークフローにおいてAPIネットワーキングスキルが重要な理由

すべての開発者は、反復的なAPIの配線作業に何時間も費やします。OAuth 2.0のヘッダーを設定したり、レート制限されたエンドポイントのために指数関数的バックオフを実装したり、予測不能なJSONレスポンスのためにタイプガードを記述したりする作業です。これらのタスクはエラーが発生しやすく、特定のサービスに密接に結合されているため、テストとメンテナンスが困難です。Claude Code Skillsは、この複雑さをバージョン管理され、テスト可能なツールに抽象化し、AIアシスタントが自然言語で呼び出すことができます。

命令型のAPI呼び出しから宣言的なデータフェッチへと移行します。fetch(url, { headers: {...} })と書く代わりに、意図を記述します:「GitHub APIからENVのトークンを使用してユーザーデータをフェッチし、型付けされた結果を返してください。」スキルは資格情報管理、リトライロジック、およびレスポンス解析を処理し、アプリケーションがすぐに利用できる強力な型付けされたデータを返します。

💡
美しいAPIドキュメントを生成する優れたAPIテストツールをお探しですか?

開発チームが最大限の生産性で共同作業できる、統合されたオールインワンプラットフォームをお探しですか?

Apidogはあなたのすべての要求に応え、Postmanをはるかに手頃な価格で置き換えます
button

Claude Codeでデータフェッチスキルを設定する

ステップ1:Claude Codeをインストールし、MCPを設定する

Claude Code CLIをまだインストールしていない場合:

npm install -g @anthropic-ai/claude-code
claude --version  # Should show >= 2.0.70

MCP設定ディレクトリとファイルを作成します:

# macOS/Linux
mkdir -p ~/.config/claude-code
touch ~/.config/claude-code/config.json

# Windows
mkdir %APPDATA%\claude-code
echo {} > %APPDATA%\claude-code\config.json
Claude Code

ステップ2:データフェッチスキルをクローンしてビルドする

公式のデータフェッチスキルは、REST、GraphQL、および汎用HTTPリクエストのパターンを提供します。

git clone https://github.com/anthropics/skills.git
cd skills/skills/data-fetching
npm install
npm run build

これにより、TypeScriptハンドラがdist/index.jsにコンパイルされます。

ステップ3:MCPがスキルをロードするように設定する

~/.config/claude-code/config.jsonを編集します:

{
  "mcpServers": {
    "data-fetching": {
      "command": "node",
      "args": ["/absolute/path/to/skills/data-fetching/dist/index.js"],
      "env": {
        "DEFAULT_TIMEOUT": "30000",
        "MAX_RETRIES": "3",
        "RATE_LIMIT_PER_MINUTE": "60",
        "CREDENTIALS_STORE": "~/.claude-credentials.json"
      }
    }
  }
}

重要

Claudeのスキル

ステップ4:資格情報ストアを設定する

トークンのハードコーディングを避けるために、資格情報ファイルを作成します:

# 暗号化された資格情報ストアを作成する
mkdir -p ~/.claude
echo '{}' > ~/.claude/credentials.json
chmod 600 ~/.claude/credentials.json

APIトークンを追加します:

{
  "github": {
    "token": "ghp_your_github_token_here",
    "baseUrl": "https://api.github.com"
  },
  "slack": {
    "token": "xoxb-your-slack-token",
    "baseUrl": "https://slack.com/api"
  },
  "custom-api": {
    "token": "Bearer your-jwt-token",
    "baseUrl": "https://api.yourcompany.com",
    "headers": {
      "X-API-Version": "v2"
    }
  }
}

スキルは起動時にこのファイルを読み込み、リクエストに資格情報を挿入します。

ステップ5:インストールを確認する

claude

ロードされたら、以下を実行します:

/list-tools

以下が表示されるはずです:

Available tools:
- data-fetching:rest-get
- data-fetching:rest-post
- data-fetching:rest-put
- data-fetching:rest-delete
- data-fetching:graphql-query
- data-fetching:graphql-mutation
- data-fetching:raw-http

コアAPIリクエストパターン

1. RESTful GETリクエスト

ツールdata-fetching:rest-get
ユースケース:認証、ページネーション、キャッシュを使用してRESTエンドポイントからデータをフェッチする

パラメータ

:GitHubユーザーのリポジトリをフェッチする

Use rest-get to fetch repositories for user "anthropics" from GitHub API, including pagination for 100 items per page, and return only name, description, and stargazers_count.

生成される実行

// ハンドラが実行する:
const response = await fetch('https://api.github.com/users/anthropics/repos', {
  headers: {
    'Authorization': 'token ghp_your_github_token_here',
    'Accept': 'application/vnd.github.v3+json'
  },
  params: {
    per_page: 100,
    page: 1
  }
});

// JMESPathで変換する
const transformed = jmespath.search(response, '[*].{name: name, description: description, stars: stargazers_count}');
return transformed;

Claude Codeでの使用方法

claude --skill data-fetching \
  --tool rest-get \
  --params '{"service": "github", "endpoint": "/users/anthropics/repos", "params": {"per_page": 100}, "transform": "[*].{name: name, description: description, stars: stargazers_count}"}'

2. POST/PUT/DELETEリクエスト

ツールdata-fetching:rest-post / rest-put / rest-delete
ユースケース:リソースの作成、更新、または削除

パラメータ

:GitHub Issueを作成する

Use rest-post to create an issue in the anthorpics/claude repository with title "Feature Request: MCP Tool Caching", body containing the description, and labels ["enhancement", "mcp"].

実行

await fetch('https://api.github.com/repos/anthropics/claude/issues', {
  method: 'POST',
  headers: {
    'Authorization': 'token ghp_...',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    title: "Feature Request: MCP Tool Caching",
    body: "Description of the feature...",
    labels: ["enhancement", "mcp"]
  })
});

3. GraphQLクエリ

ツールdata-fetching:graphql-query
ユースケース:ネストされた関係を持つ複雑なデータフェッチ

パラメータ

:コメント付きのリポジトリの問題をフェッチする

Use graphql-query to fetch the 10 most recent open issues from the anthorpics/skills repository, including title, author, comment count, and labels.
query RecentIssues($owner: String!, $repo: String!, $limit: Int!) {
  repository(owner: $owner, name: $repo) {
    issues(first: $limit, states: [OPEN], orderBy: {field: CREATED_AT, direction: DESC}) {
      nodes {
        title
        author { login }
        comments { totalCount }
        labels(first: 5) { nodes { name } }
      }
    }
  }
}

パラメータ

{
  "service": "github",
  "query": "query RecentIssues($owner: String!, $repo: String!, $limit: Int!) { ... }",
  "variables": {
    "owner": "anthropics",
    "repo": "skills",
    "limit": 10
  }
}

4. 生のHTTPリクエスト

ツールdata-fetching:raw-http
ユースケース:REST/GraphQLツールでカバーされないエッジケース

パラメータ

:カスタムヘッダー付きのWebhook配信

Use raw-http to POST to https://hooks.slack.com/services/YOUR/WEBHOOK/URL with a JSON payload containing {text: "Deployment complete"}, and custom header X-Event: deployment-success.

高度なネットワーキングシナリオ

ページネーション処理

スキルはページネーションパターンを自動的に検出します:

// GitHub Linkヘッダーの解析
const linkHeader = response.headers.get('Link');
if (linkHeader) {
  const nextUrl = parseLinkHeader(linkHeader).next;
  if (nextUrl && currentPage < maxPages) {
    return { 
      data: currentData, 
      nextPage: currentPage + 1,
      hasMore: true 
    };
  }
}

すべてのページをリクエストします:

Use rest-get to fetch all repositories for user "anthropics", handling pagination automatically until no more pages exist.

スキルはすべての結果のフラットな配列を返します。

レート制限とリトライロジック

リクエストごとにリトライ動作を設定します:

{
  "service": "github",
  "endpoint": "/rate_limit",
  "maxRetries": 5,
  "retryDelay": "exponential",
  "retryOn": [429, 500, 502, 503, 504]
}

スキルはジッターを伴う指数関数的バックオフを実装します:

const delay = Math.min(
  (2 ** attempt) * 1000 + Math.random() * 1000,
  30000
);
await new Promise(resolve => setTimeout(resolve, delay));

同時リクエスト管理

複数のAPI呼び出しを効率的にバッチ処理します:

Use rest-get to fetch details for repositories: ["claude", "skills", "anthropic-sdk"], executing requests concurrently with a maximum of 3 parallel connections.

スキルはp-limitを使用して同時実行数を制限します:

import pLimit from 'p-limit';
const limit = pLimit(3); // 最大3つの同時接続

const results = await Promise.all(
  repos.map(repo => 
    limit(() => fetchRepoDetails(repo))
  )
);

リクエストの傍受とモック

テストのために、実際APIにヒットせずにリクエストを傍受します:

// スキル設定内
"env": {
  "MOCK_MODE": "true",
  "MOCK_FIXTURES_DIR": "./test/fixtures"
}

これで、リクエストはJSONファイルからモックされたデータを返します:

// test/fixtures/github/repos/anthropics.json
[
  {"name": "claude", "description": "AI assistant", "stars": 5000}
]

実践的なアプリケーション:GitHubダッシュボードの構築

ステップ1:リポジトリデータをフェッチする

Use rest-get to fetch all repositories from GitHub for organization "anthropics", including full description, star count, fork count, and open issues count. Cache results for 5 minutes.

ステップ2:コントリビューターデータで強化する

各リポジトリについて、上位のコントリビューターをフェッチします:

Use rest-get to fetch contributor statistics for repository "anthropics/claude", limit to top 10 contributors, and extract login and contributions count.

ステップ3:要約統計量を生成する

Claude Codeでデータを結合します:

const repos = await fetchAllRepos('anthropics');
const enrichedRepos = await Promise.all(
  repos.map(async (repo) => {
    const contributors = await fetchTopContributors('anthropics', repo.name);
    return { ...repo, topContributors: contributors };
  })
);

return {
  totalStars: enrichedRepos.reduce((sum, r) => sum + r.stars, 0),
  totalForks: enrichedRepos.reduce((sum, r) => sum + r.forks, 0),
  repositories: enrichedRepos
};

ステップ4:ダッシュボードを公開する

Use rest-post to create a GitHub Pages site with the dashboard data using the GitHub API to commit to the gh-pages branch.

エラー処理と回復力

スキルはエラーを適切に処理するために分類します:

// 4xxエラー:クライアントエラー
if (response.status >= 400 && response.status < 500) {
  throw new SkillError('client_error', `Invalid request: ${response.status}`, {
    statusCode: response.status,
    details: await response.text()
  });
}

// 5xxエラー:サーバーエラー(再試行可能)
if (response.status >= 500) {
  throw new SkillError('server_error', `Server error: ${response.status}`, {
    retryable: true,
    statusCode: response.status
  });
}

// ネットワークエラー:接続障害
if (error.code === 'ECONNREFUSED' || error.code === 'ETIMEDOUT') {
  throw new SkillError('network_error', 'Network unreachable', {
    retryable: true,
    originalError: error.message
  });
}

Claude Codeは構造化されたエラーを受け取り、再試行、中止、またはユーザーの介入を要求するかどうかを決定できます。

結論

Claude Code Skills for APIネットワーキングは、アドホックなHTTPリクエストを信頼性が高く、タイプセーフで、監視可能なデータフェッチツールに変換します。資格情報管理を一元化し、スマートな再試行を実装し、構造化されたエラー処理を提供することで、API統合の最も一般的なバグの原因を排除します。まず、rest-get、rest-post、graphql-query、raw-httpの4つのコアツールから始め、特定のユースケースに合わせて拡張してください。スキル構成への投資は、コードの一貫性と開発速度においてすぐに報われます。

データフェッチスキルが内部APIと連携する場合、信頼性の高い契約をAI駆動型統合が利用できるように、Apidogでそれらのエンドポイントを検証してください。

button

ApidogでAPIデザイン中心のアプローチを取る

APIの開発と利用をよりシンプルなことにする方法を発見できる