📊 データ処理

APIデータ取得・整理ツール

APIからデータを取得し、構造化ファイルとして保存します

★★★ 上級 20-30 min 2025年1月12日

概要

多くのサービスがプログラムからデータにアクセスするためのAPIインターフェースを提供しています。Claudeは、APIからデータを取得するスクリプトの作成、ページネーションやエラーリトライの処理、結果を表やレポートに整理することをお手伝いします。

活用シーン

  • ソーシャルメディアの統計データ取得
  • ECプラットフォームの注文情報抽出
  • 天気や株価などの公開データ収集
  • サードパーティシステムとのデータ同期

手順

ステップ1: API構造の理解

まずAPIを呼び出して、レスポンス形式を確認します。

GitHub APIからリポジトリ情報を取得したいです:
API: https://api.github.com/repos/user/repo
リクエストタイプ: GET
必要なToken: ghp_xxxxx

以下をお願いします:
1. このAPIにアクセス可能か確認
2. 返されるJSON構造を表示
3. 必要なフィールドを特定:name, stars, forks, open_issues

ステップ2: ページネーションデータの処理

大量のデータを返すAPIでは、ページネーションが必要です。

APIはページネーションを使用し、1ページあたり100件のレコードを返します:
- 最初のページ: https://api.example.com/data?page=1
- Link headerまたはnext_pageフィールドで次のページを取得

以下のスクリプトを作成してください:
1. すべてのページからデータを自動取得
2. 1つの完全なデータセットに統合
3. 取得進捗を表示
4. ~/data/api_results.json に保存

ステップ3: エラー処理とリトライ

ネットワーク問題に対応するためのフォールトトレランスを追加します。

スクリプトの信頼性を向上させてください:
- リクエスト失敗時、自動的に3回リトライ
- リトライ間隔は5秒
- 429(レート制限)発生時、60秒待ってからリトライ
- 失敗したリクエストをすべてログファイルに記録
- 中断再開をサポート(中断された場合、次回は前回の位置から継続)

ステップ4: データ変換

APIから返されたJSONをより使いやすい形式に変換します。

取得したデータを処理してください:
1. 必要なフィールドを抽出し、不要なフィールドは無視
2. ネストした構造をフラット化(例:user.name -> user_name)
3. 日時を標準フォーマットに整形
4. CSVファイルに変換:~/data/api_data.csv
5. 各フィールドの意味を説明するデータディクショナリを生成

ステップ5: 定期自動取得

データを自動更新するスケジュールタスクを作成します。

自動化スクリプトを作成してください:
1. 上記の取得ロジックをPythonスクリプトにカプセル化
2. コマンドライン引数のサポートを追加(例:日付範囲の指定)
3. 実行ごとにタイムスタンプ付きファイルを生成
4. 毎日午前2時に自動実行するcronジョブを設定
5. エラー発生時に通知メールを送信
~/scripts/api_fetcher.py として保存

ヒント

APIのレート制限に注意してください。リクエストが頻繁すぎるとブロックされる可能性があります。リクエスト間隔を追加し、頻繁に変更されないデータはキャッシュすることをお勧めします。

APIキーは環境変数または設定ファイルに保存し、スクリプトにハードコードしないでください。漏洩を防ぐため、.envファイルでキーを管理し、.gitignoreに追加してください。

よくある質問

Q: APIが返すデータが多すぎてメモリが不足する場合は? A: ストリーミング処理を使用し、取得しながらファイルに書き込み、一度にすべてのデータをメモリに読み込まないでください。または、バッチ処理で一度に一部のデータのみを取得してください。

Q: APIのバージョンアップグレードにどう対応しますか? A: スクリプトでAPIバージョン番号を指定してください(通常はURLまたはHeaderで)。APIドキュメントの変更通知を監視し、スクリプトを適時更新してください。

Q: 複数のAPIを同時に呼び出せますか? A: はい。Claudeは複数のAPIを並行して呼び出すスクリプトを作成したり、複数のデータソースからデータを取得して統合したりできます。異なるAPIの認証やフォーマットの違いに注意してください。