APIデータ取得・整理ツール
APIからデータを取得し、構造化ファイルとして保存します
概要
多くのサービスがプログラムからデータにアクセスするための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の認証やフォーマットの違いに注意してください。