#design (1)
課題
未設定のシークレット(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 連携
- アナリティクス等のオプション機能
注意
メール送信などの主要機能は必須として扱う。 スキップ対象は「あると便利」な通知程度に留める。