Slack

Slack の 429 エラー:原因と解決策429

Slack 429 エラーの原因と解決策 Slack APIへのリクエストが短時間に集中し、レート制限を超えた場合に発生するエラーです。429レスポンスが返された場合、一時的に再試行を延期する必要があります。 よくある原因 ループ処理内でのAPI呼び出し間隔がない ループで複数のメッセージ送信やユーザー情報取得を行う際、各リクエストの間に待機時間を設けないと、短時間に大量のリクエストがSlack APIに到達します。Slack APIのレート制限は一般的にメソッドごと、時間帯ごとに設定されており、例えばchat.postMessage は1分間に数十〜数百リクエストの上限があります。待機なしで100件のメッセージを送信しようとすると、ほぼ確実に429エラーが発生します。 API Tierに応じた呼び出し頻度を超過している Slack APIの各メソッドは複数のTier(Tier1から4など)に分類されており、Tierごとに分あたりのリクエスト上限が異なります。例えば高頻度で呼び出されるTier3メソッドは上限が厳しく、定時実行のバッチ処理や大量ユーザー取得時に超過しやすくなります。公式ドキュメントで確認しないまま実装すると、本番環境で突然429エラーが増加します。 非同期処理なしで一気にリクエストを送信している Promise.allやfor-of ループで複数のAPI呼び出しを並列実行すると、すべてのリクエストがほぼ同時刻にSlackサーバーに到達します。これは単純な順序実行よりも効率的に見えますが、Slack側のレート制限はセッション単位で集計されるため、並列数が多いほど制限に引っかかりやすくなります。 解決手順 Retry-Afterヘッダーを確認して待機する 429レスポンスにはRetry-Afterヘッダーが含まれており、何秒待つべきかが明記されています。このヘッダー値を読み出し、その秒数待ってから再試行してください。 // Node.js + axios の例 async function callSlackAPIWithRetry(url, data) { try { const response = await axios.post(url, data, { headers: { Authorization: `Bearer <your-bot-token>` } }); return response.data; } catch (error) { if (error.response?.status === 429) { const retryAfter = parseInt(error.response.headers['retry-after'], 10); console.log(`レート制限に達しました。${retryAfter}秒待機します。`); await new Promise(resolve => setTimeout(resolve, retryAfter * 1000)); return callSlackAPIWithRetry(url, data); // 再試行 } throw error; } } 各メソッドのAPI Tierを確認し、呼び出し間隔を設定する Slack公式ドキュメント(https://api.slack.com/methods)で対象メソッドのTierを確認し、推奨呼び出し頻度に合わせて間隔を設けます。例えばTier2メソッドの場合、1リクエストあたり最低100〜200ミリ秒の間隔を目安にしてください。 # Python + slack-sdk の例 import time from slack_sdk import WebClient client = WebClient(token='<your-bot-token>') user_ids = ['U123456', 'U234567', 'U345678'] # Tier2メソッドの場合、200ミリ秒の間隔を設定 for user_id in user_ids: try: response = client.users_info(user=user_id) print(f"取得成功: {response['user']['name']}") except Exception as e: print(f"エラー: {e}") time.sleep(0.2) # 200ミリ秒待機 メッセージ送信を非同期キューで処理する ...

2026年5月28日 · ErrorLog
Slack

Slack の 500 エラー:原因と解決策500

Slack API利用時に500エラーが返される場合、Slack側のサーバーで予期しない内部エラーが発生しています。ほとんどのケースは一時的な障害ですが、適切な対応手順を踏む必要があります。 よくある原因 Slackのインフラで一時的な障害が起きている Slack側のサーバー環境で予期しないエラーが発生しており、APIリクエストを処理できない状態です。これは大規模なデータベース更新、サーバーメンテナンス、トラフィック急増などが原因で発生します。ユーザー側の設定やコードに問題がなくても、Slack側の問題で500エラーが返されることがあります。特にWorkspaceの規模が大きい場合や、バッチ処理で短時間に大量のAPIリクエストを送信している場合に発生しやすい傾向があります。 解決手順 ステップ1:Slack公式の障害情報を確認する まず status.slack.com にアクセスして、現在の障害状況を確認します。 https://status.slack.com このページで「All Systems Operational」と表示されていれば、Slack側に広範な障害は発生していません。「Investigating」や「Degraded Performance」などの表示がある場合は、Slack側で対応中の問題があります。この場合、障害が解決されるまで待機するしかありません。 ステップ2:数秒の遅延を入れて再試行する 一時的な障害の場合、数秒後に同じリクエストを再送すると成功することがあります。以下はPythonでの再試行実装例です。 import requests import time from requests.adapters import HTTPAdapter from urllib3.util.retry import Retry # リトライ戦略の設定 session = requests.Session() retry_strategy = Retry( total=3, backoff_factor=2, # 2秒、4秒、8秒の間隔でリトライ status_forcelist=[500, 502, 503, 504] ) adapter = HTTPAdapter(max_retries=retry_strategy) session.mount("https://", adapter) # Slack APIへのリクエスト例 headers = { "Authorization": "Bearer <your-bot-token>", "Content-Type": "application/json" } response = session.post( "https://slack.com/api/chat.postMessage", headers=headers, json={ "channel": "<your-channel-id>", "text": "テストメッセージ" } ) print(response.status_code) print(response.json()) このコードは自動的に500エラーで最大3回までリトライしており、各リトライ間隔は2秒、4秒、8秒となります。 ...

2026年5月28日 · ErrorLog
Slack

Slack の 400 エラー:原因と解決策400

Slack を使っているときに 400 というエラーが出た場合、このページで解決できます。難しい知識は不要です。上から順に確認していきましょう。 まずこれだけ試してください 難しいことを調べる前に、次の3つを確認してください。多くの場合、これだけで解決します。 一度ログアウトして、再度ログインする ブラウザのキャッシュ・Cookieをクリアして再試行する しばらく待ってから(5〜10分後)再試行する このエラーの意味 400 は、Slack が「Slack APIへのリクエストの形式または必須パラメータに誤りがある。」という状態のときに表示されます。 エラーが出ても、データが消えたり壊れたりするわけではないので安心してください。 よくある原因 このエラーが出るときによく見られるパターンです。自分の状況に近いものを探してみてください。 必須パラメータ(channel・text等)が欠けている リクエストボディのContent-TypeがapplicationなのにJSON形式になっていない Block KitのブロックJSONの構造が正しくない 解決手順(上から順に試す) Slack APIドキュメントで必須パラメータを確認する Content-Type: application/json ヘッダーが設定されているか確認する Block Kit Builderでブロックの構造を検証する それでも解決しない場合 Slack のサポートに問い合わせる:エラーメッセージの全文をスクリーンショットで送ると対応が早くなります 公式ヘルプページを検索する:「400 Slack」で検索すると関連ページが見つかることがあります 時間をおいて再試行する:Slack 側で一時的な問題が起きているケースもあります 免責事項:本記事の内容は、執筆時点の公開情報をもとに作成したものです。ソフトウェアの仕様は予告なく変更されることがあります。最新の情報は各ツールの公式サポートページをご確認ください。本記事の情報を利用した結果生じたいかなる損害についても、著者および運営者は責任を負いかねます。

2026年5月27日 · ErrorLog
Slack

Slack の 401 エラー:原因と解決策401

Slack 401 エラーが発生する原因と解決方法 Slack API を使用する際に 401 エラーが返される場合、アプリケーションが Slack に正しく認証できていません。このエラーが発生すると、ボット機能やカスタムアプリが機能しなくなるため、迅速な対応が必要です。 よくある原因 トークンが無効または期限切れになっている Bot トークン(xoxb で始まる)や User OAuth トークン(xoxp で始まる)が期限切れになったり、無効な状態になったりしている場合、API リクエストは 401 エラーで拒否されます。特に、セキュリティアップデートやトークンのローテーション(定期的な更新)後に発生することが多いです。 OAuth スコープが不足している OAuth スコープ(権限範囲)は、アプリが何ができるかを制限する仕組みです。必要なスコープが不足していると、API コールが拒否されます。例えば、メッセージ送信には chat:write スコープが必要ですが、これが許可されていないと 401 エラーが発生します。 アプリがワークスペースからアンインストールされた ワークスペースの管理者がアプリをアンインストールした場合、そのトークンはもはや有効ではありません。再度認証が必要になります。 解決手順 ステップ 1: トークンを再生成する Slack ワークスペースの管理画面にアクセスし、以下の手順を実行してください。 Slack App Directory にログイン 対象のアプリを選択 左メニューから「OAuth & Permissions」をクリック 「Bot Token Revoked」の場合、「Reinstall to Workspace」をクリック 新しいトークンを環境変数に設定 export SLACK_BOT_TOKEN="xoxb-新しいトークン" ステップ 2: OAuth スコープを確認・追加する 必要なスコープが設定されているか確認しましょう。 App 設定の「OAuth & Permissions」セクションを開く 「Scopes」の「Bot Token Scopes」を確認 必要なスコープが無い場合は「Add an OAuth Scope」をクリックして追加 一般的に必要なスコープの例: - chat:write(メッセージ送信) - channels:read(チャンネル情報取得) - users:read(ユーザー情報取得) - reactions:write(リアクション追加) スコープを追加した後は、必ず「Reinstall to Workspace」をクリックして再インストールしてください。 ...

2026年5月27日 · ErrorLog
Slack

Slack の 403 エラー:原因と解決策403

Slack の 403 エラーの原因と解決方法 Slack API を使用してメッセージを送信したり、チャンネルを操作しようとした際に 403 エラーが返される場合があります。このエラーは認証(ログイン)には成功しているものの、実行しようとした操作やアクセス対象のチャンネルに対する権限がないことを示しています。 よくある原因と詳しい説明 Bot トークンに投稿権限がない Bot を作成して API を利用する際、Bot トークンに「特定のチャンネルへの投稿権限」が付与されていないケースが多くあります。Bot は作成直後では、どのチャンネルにアクセス可能かが明確に定義されていないため、権限不足で 403 エラーが発生します。 プライベートチャンネルに Bot が招待されていない プライベートチャンネル(招待されたメンバーのみがアクセス可能)の場合、Bot を明示的にチャンネルに招待する必要があります。招待されていない Bot がそのチャンネルへのアクセスを試みると、403 エラーが返されます。 Enterprise Grid での Organization レベル制限 Enterprise Grid(大規模組織向けプラン)では、Organization 管理者が Bot のアクセスを制限している場合があります。この場合、ワークスペース管理者が権限を設定するだけでは解決しません。 解決手順 手順 1: Bot をチャンネルに招待する まず最初に、Bot をチャンネルに招待してください。Slack クライアント上で以下を実行します: /invite @Bot名 例えば、Bot の名前が myapp の場合: /invite @myapp これにより、Bot がチャンネルのメンバーとなり、基本的なアクセス権が付与されます。 手順 2: OAuth スコープの確認と追加 Slack アプリの管理画面で、必要なスコープ(権限)が設定されているか確認します。 Slack アプリ管理画面にアクセスします 左メニューの 「OAuth & Permissions」 をクリック 「Bot Token Scopes」 セクションで以下のスコープが含まれているか確認: chat:write - メッセージ送信権限 channels:read - チャンネル閲覧権限 groups:write - プライベートチャンネルへの書き込み権限 スコープが不足していればクリックして追加し、画面下部の 「Save Changes」 をクリックします。 ...

2026年5月27日 · ErrorLog
Slack

Slack の 404 エラー:原因と解決策404

Slack 404 エラーの原因と解決方法 Slack API を使用する際に 404 エラーが返される場合、指定したチャンネル・メッセージ・ユーザーが見つからないことを意味します。このエラーは開発初期段階でよく遭遇するもので、原因を理解することで素早く対応できます。 よくある原因 チャンネル ID またはユーザー ID が間違っている Slack API は ID 値に厳密です。チャンネル ID が「C123ABC」のはずが「C123ABD」と入力されていると、API は該当するリソースを見つけられず 404 を返します。IDは文字種の大文字小文字を区別しているため、コピペ時の誤りやタイプミスに注意が必要です。 チャンネル名を ID の代わりに使っている 初心者がよく犯す間違いです。「#general」や「#random」といったチャンネル「名」を API に直接指定してはいけません。Slack API では必ずチャンネル ID(例:C0G9QF9GZ)形式での指定が必須です。 対象リソースが削除されている チャンネルやメッセージが削除された後、そのリソースへのアクセスを試みると 404 が返されます。キャッシュされた ID から古い参照が残っていないか確認しましょう。 解決手順 1. conversations.list API でチャンネル ID を確認 まず、利用可能なチャンネル一覧とその ID を取得します。 curl -X GET 'https://slack.com/api/conversations.list' \ -H 'Authorization: Bearer xoxb-YOUR_BOT_TOKEN' \ -d 'limit=100' レスポンスから、対象チャンネルの「id」フィールドを確認してください。 2. users.list API でユーザー ID を確認 ユーザーに関連するエラーの場合は、以下を実行します。 curl -X GET 'https://slack.com/api/users.list' \ -H 'Authorization: Bearer xoxb-YOUR_BOT_TOKEN' 目的のユーザーの「id」フィールド(U12345ABC 形式)を記録してください。 ...

2026年5月27日 · ErrorLog