はじめに
これまでのレッスンで、自動化の様々な要素を学んできました。
でも、現実の自動化では、1つのツールだけで完結することは稀です。
- Googleフォームで受付 → Slackに通知
- Twitterの投稿 → Googleスプレッドシートに記録
- ECサイトの注文 → 会計ソフトに連携
このような「異なるサービスをつなぐ」仕組みがAPIです。
今回は、このAPIの基本を、プログラミング知識なしで理解していきましょう!
APIを日常生活で例えると
レストランのウェイター
APIは、レストランのウェイターのような存在です:
お客様(あなた) ← → ウェイター(API) ← → 厨房(サービス)
流れ:
1. お客様:「ハンバーグください」
2. ウェイター:注文を厨房に伝える
3. 厨房:ハンバーグを作る
4. ウェイター:完成品をお客様に運ぶ
ウェイター(API)がいることで:
- お客様は厨房に入らなくていい
- 注文の仕方が統一される
- 厨房は料理に専念できる
コンビニATM
異なる銀行のカードが使えるのもAPIのおかげ:
あなた → ATM → 各銀行のシステム
ATMというAPIを通じて:
- A銀行のカード → A銀行のシステムと通信
- B銀行のカード → B銀行のシステムと通信
- C銀行のカード → C銀行のシステムと通信
統一された操作方法で、どの銀行とも連携
APIの役割
- 異なるシステム間の「通訳」
- 統一された方法でサービスを利用
- 直接の接続なしに連携可能
- 安全にデータをやり取り
APIでできること
1. データの取得(GET)
「ください」「教えてください」タイプの操作:
例:天気予報APIに問い合わせ
あなた:「東京の今日の天気を教えて」
API:「晴れ、最高気温25度です」
例:在庫確認API
あなた:「商品Aの在庫数を教えて」
API:「残り50個です」
2. データの送信(POST)
「これを登録して」「これを処理して」タイプの操作:
例:メール送信API
あなた:「このメールを送って」(宛先、件名、本文)
API:「送信完了しました」
例:注文登録API
あなた:「この注文を登録して」(商品、数量、顧客情報)
API:「注文番号12345で登録しました」
3. データの更新(PUT/PATCH)
「これを変更して」タイプの操作:
例:在庫更新API
あなた:「商品Aの在庫を30個に変更」
API:「更新完了しました」
例:ステータス変更API
あなた:「注文12345を発送済みに変更」
API:「ステータスを更新しました」
4. データの削除(DELETE)
「これを削除して」タイプの操作:
例:予約キャンセルAPI
あなた:「予約番号98765をキャンセル」
API:「キャンセル完了しました」
実際のAPI連携例
例1:フォーム → Slack通知
1. Googleフォームで問い合わせ受付
↓
2. フォーム送信をトリガーに
↓
3. Slack APIを呼び出し
- 送信内容:チャンネル名、メッセージ
↓
4. Slackに通知が表示される
具体的な流れ:
フォーム:「山田太郎さんから問い合わせ」
↓
自動化ツール:Slack APIに送信
{
channel: "#問い合わせ",
text: "新規問い合わせ: 山田太郎",
details: "内容: 料金について..."
}
↓
Slack:指定チャンネルにメッセージ投稿
例2:ECサイト → 会計ソフト
1. ECサイトで注文発生
↓
2. 注文データを取得
- 顧客情報、商品、金額
↓
3. 会計ソフトAPIに送信
- 売上データとして登録
↓
4. 自動で帳簿に記載
メリット:
- 手動入力不要
- ミスがない
- リアルタイム反映
例3:天気 → 業務調整
1. 天気予報APIから明日の天気を取得
↓
2. もし雨予報なら
↓
3. カレンダーAPIで屋外イベントを検索
↓
4. 該当者にメール送信APIで通知
「明日は雨予報のため、屋内会場に変更」
完全自動で天候による調整が可能
APIキーと認証
APIキーとは?
APIキーは「会員証」のようなもの:
図書館の例:
- 会員証がないと本を借りられない
- 会員証で誰が借りたか記録
- 借りられる冊数に制限
APIキーも同じ:
- キーがないとAPI使用不可
- 誰が使ったか記録される
- 使用回数に制限がある場合も
APIキーの取得方法
一般的な流れ:
1. サービスのWebサイトでアカウント作成
2. 開発者向けページでAPIキーを発行
3. キーを安全に保管
4. API呼び出し時にキーを含める
APIキーの取り扱い注意
- パスワードと同じく秘密に
- 公開リポジトリにアップしない
- 定期的に更新する
- 不要になったら削除する
認証方式の種類
1. APIキー認証
最もシンプル:
- 固定のキーを使用
- 「?api_key=あなたのキー」を付けて送信
2. OAuth認証
SNS連携でよく使われる:
- 「Googleでログイン」ボタン
- ユーザーが許可すると連携
- より安全で柔軟
3. Bearer Token
一時的なトークン:
- ログイン時に発行
- 有効期限がある
- より安全
よく使われるAPI
1. コミュニケーション系
Slack API
できること:
- メッセージ送信
- チャンネル作成
- ユーザー情報取得
- ファイルアップロード
活用例:
- エラー通知
- 日報の自動投稿
- 承認ワークフロー
Gmail API
できること:
- メール送信/受信
- ラベル管理
- 検索
- 添付ファイル処理
活用例:
- 自動返信
- メール振り分け
- 一括送信
2. データ管理系
Google Sheets API
できること:
- データ読み書き
- シート作成
- グラフ作成
- 書式設定
活用例:
- データ集計
- レポート作成
- 在庫管理
Notion API
できること:
- ページ作成/更新
- データベース操作
- ブロック追加
- 検索
活用例:
- タスク管理
- ナレッジベース更新
- 議事録作成
3. ビジネス系
Stripe API(決済)
できること:
- 決済処理
- 顧客管理
- サブスクリプション
- 請求書発行
活用例:
- ECサイト決済
- 月額課金
- 自動請求
Zoom API
できること:
- ミーティング作成
- 参加者管理
- 録画管理
- レポート取得
活用例:
- 自動スケジューリング
- 参加者リスト作成
- 録画の自動保存
API連携の実践パターン
パターン1:通知の集約
複数のサービスから1箇所に通知:
メール受信 ─┐
Twitter DM ─┼→ 自動化ツール → Slack通知
フォーム送信 ┘
すべての通知を見逃さない
パターン2:データの同期
マスターデータを複数箇所に反映:
Googleスプレッドシート(マスター)
↓
自動化ツール
├→ Webサイト更新
├→ 在庫管理システム
└→ ECサイト
1箇所更新すれば全て反映
パターン3:ワークフローの自動化
承認フローの例:
申請(Googleフォーム)
↓
承認者にメール(Gmail API)
↓
承認されたら
├→ 申請者に通知(Slack API)
├→ カレンダー登録(Google Calendar API)
└→ 経理システム連携(会計API)
パターン4:定期レポート
毎月1日に自動実行:
売上データ取得(ECサイトAPI)
↓
在庫データ取得(在庫管理API)
↓
顧客データ取得(CRM API)
↓
すべてを統合してレポート作成
↓
メール送信(SendGrid API)
APIのレート制限
レート制限とは?
「使いすぎ防止」の仕組み:
例:Twitter API
- 15分間に15回まで
- 超えるとエラー
理由:
- サーバー負荷の軽減
- 公平な利用
- 悪用防止
レート制限への対処
1. 制限を確認
- 1時間に何回?
- 1日に何回?
2. 賢く使う
- 必要な時だけ呼び出す
- キャッシュを活用
- バッチ処理でまとめる
3. エラー時の対処
- 待機時間を設ける
- 代替手段を用意
- 利用状況を監視
トラブルシューティング
よくあるエラーと対処
401 Unauthorized
原因:認証エラー
対処:
- APIキーを確認
- 有効期限をチェック
- 権限を確認
404 Not Found
原因:指定したリソースが存在しない
対処:
- URLを確認
- IDが正しいか確認
- 削除されていないか確認
429 Too Many Requests
原因:レート制限超過
対処:
- 時間をおいて再試行
- 呼び出し頻度を下げる
- 上位プランを検討
500 Internal Server Error
原因:サーバー側のエラー
対処:
- 時間をおいて再試行
- サービスの状態を確認
- サポートに連絡
今日のまとめ
API連携の要点
- APIは異なるサービスをつなぐ「通訳」
- GET(取得)POST(送信)PUT(更新)DELETE(削除)が基本
- APIキーは大切に管理
- レート制限に注意
- エラー処理を忘れずに
次回予告
次のレッスンでは、「自動化設計の実践演習:業務フローを分解する」を学びます。
- 実際の業務を自動化可能な部分に分解
- これまでの知識を総動員
- 設計から実装までの流れ
- よくある落とし穴と対策
すべての要素を組み合わせて、実践的な自動化を設計しましょう!
チャレンジ問題
問題1:適切なAPIメソッドを選ぼう
以下の操作に適切なメソッド(GET/POST/PUT/DELETE)を選んでください:
- 商品の在庫数を確認する
- 新規ユーザーを登録する
- 注文のステータスを変更する
- 古い履歴データを削除する
- 今日の売上を確認する
答えを見る
- GET:データを取得するだけ
- POST:新規データを作成
- PUT:既存データを更新
- DELETE:データを削除
- GET:データを取得するだけ
問題2:API連携フローを設計しよう
「お客様からの問い合わせを適切な部署に自動振り分け」するシステムを、API連携で設計してください。
使用可能なAPI:
- Gmail API(メール受信)
- ChatGPT API(内容解析)
- Slack API(通知)
- Google Sheets API(ログ記録)
設計例を見る
1. Gmail APIでメール受信を検知
↓
2. メール内容を取得
↓
3. ChatGPT APIで内容を解析
- カテゴリー判定(技術/営業/その他)
- 緊急度判定(高/中/低)
↓
4. カテゴリーに応じてSlack APIで通知
- 技術 → #tech-supportチャンネル
- 営業 → #sales-teamチャンネル
- その他 → #general-inquiryチャンネル
↓
5. Google Sheets APIでログ記録
- 受信日時
- 送信者
- カテゴリー
- 緊急度
- 対応状況
追加の工夫:
- 緊急度が高い場合は@hereで全員に通知
- 営業時間外は翌朝一番に通知
- 対応完了後、自動で返信メール
問題3:エラー対策を考えよう
API連携で「毎朝、天気予報を取得してSlackに投稿」する自動化で、起こりうる問題と対策を3つ挙げてください。
解答例を見る
問題1:天気予報APIがダウン
- 対策:複数の天気APIを用意(フォールバック)
- 対策:前日のデータをキャッシュしておく
問題2:Slack APIのレート制限
- 対策:投稿間隔を調整
- 対策:複数チャンネルの場合はバッチ送信
問題3:APIキーの有効期限切れ
- 対策:期限を監視して事前に通知
- 対策:自動更新の仕組みを作る
問題4:データ形式の変更
- 対策:エラーログを詳細に記録
- 対策:管理者への即時通知
- 対策:柔軟なデータ解析処理
API連携をマスターすれば、あらゆるサービスを組み合わせた強力な自動化が実現できます。次回の実践演習も楽しみにしていてください!