← 戻る

開発環境での外部連携シークレット設計


課題

未設定のシークレット(Slack Webhook 等)で HTTP 500 エラーが発生し、開発が阻害される。

ベストプラクティス

外部連携は オプション扱い にする。

// ❌ 悪い例:必須として扱う
const webhookUrl = env.SLACK_WEBHOOK_URL; // undefined でクラッシュ
await fetch(webhookUrl, { method: 'POST', body: JSON.stringify(...) });

// ✅ 良い例:条件分岐でスキップ
const webhookUrl = env.SLACK_WEBHOOK_URL;
if (webhookUrl) {
  await fetch(webhookUrl, { method: 'POST', body: JSON.stringify(...) });
} else {
  console.log('Slack webhook not configured, skipping notification');
}

// 呼び出し側は成功を返す(重要)
return { success: true, message: 'Email sent' };

利点

  • 開発環境では Slack 通知なしで動作
  • 本番環境では通知される
  • 500 エラーがなくなり、開発効率向上

適用対象

  • Slack Webhook
  • メール送信サービス
  • 外部 API 連携
  • アナリティクス等のオプション機能

注意

メール送信などの主要機能は必須として扱う。 スキップ対象は「あると便利」な通知程度に留める。