environment-validation について
Environment Validation は、スクリプトやアプリケーションが業務ロジックを始める前に必須の環境変数を検証する参考パターンです。早期に失敗させ、不足項目を明確に示す方法と、CLI 向けの環境マネージャー例を説明します。
主な機能
- 01エントリーポイントで必須環境変数を確認
- 02不足している設定をまとめて表示
- 03業務ロジック開始前に検証
- 04複雑なプロジェクトで共有環境マネージャーを利用
- 05デプロイスクリプト、Lambda、CLI に適用
活用シーン
- 01設定不足によるデプロイスクリプトの途中失敗を防ぐ
- 02Lambda 起動時に環境設定の問題を検出
- 03CLI コマンド実行前に設定を検証
- 04複数のエントリーポイントで環境検証を一元化
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ loxosceles-dev/ dev-skills --skill environment-validationインストール後、Claude Code で/environment-validationを入力して読み込まれたか確認します。
詳細
環境検証パターン
これはリファレンスパターンです。 このアプローチから学び、状況に合わせて調整してください。文章をそのままコピーしないでください。
問題:環境変数が不足しているためにスクリプトが途中で失敗し、時間を無駄にするだけでなく、システムが不整合な状態になることがあります。
解決策:処理を開始する前に、必要な環境変数をすべて最初に検証します。
パターン
早期に検証する:ビジネスロジックを開始する前に、必要な設定をすべて確認します。
// ✅ Preferred: Validate at entry point
function validateEnvironment() {
const required = ['AWS_REGION', 'PROJECT_ID', 'ENVIRONMENT'];
const missing = required.filter(key => !process.env[key]);
if (missing.length > 0) {
throw new Error(`Missing required environment variables: ${missing.join(', ')}`);
}
}
// At script/app entry point
validateEnvironment();
// Now proceed with business logic
環境マネージャーパターン(複雑なプロジェクト向け):
// shared/env-loader.ts
export function loadAndValidateEnv() {
const required = ['AWS_REGION', 'PROJECT_ID', 'ENVIRONMENT'];
const missing = required.filter(key => !process.env[key]);
if (missing.length > 0) {
throw new Error(`Missing: ${missing.join(', ')}`);
}
return {
awsRegion: process.env.AWS_REGION!,
projectId: process.env.PROJECT_ID!,
environment: process.env.ENVIRONMENT!
};
}
// Usage in scripts/handlers
const config = loadAndValidateEnv();
// All env vars validated, proceed with business logic
メリット
- 迅速な失敗:設定エラーを即座に検出できます
- 明確なエラー:何が不足しているのかを正確に把握できます
- クリーンなコード:ビジネスロジックに検証処理が散在しません
- 一貫性:アプリケーション全体で検証箇所を1つにできます
使用する場面
- 常に:デプロイ用スクリプト、Lambda ハンドラー、CLI ツールに使用します
- エントリーポイント:アプリケーションやスクリプトの開始時に検証します
- 共有設定:複雑なプロジェクトでは環境マネージャーを使用します
CLI アーキテクチャとの統合
3 層 CLI アーキテクチャには、このパターンを実装する EnvironmentManager が含まれています。
// core/env-manager.ts
export class EnvironmentManager extends BaseManager {
loadEnv(stage: string): Record<string, string> {
this.log(`Loading environment for ${stage}`);
// Validate required variables
const required = ['AWS_REGION', 'PROJECT_ID'];
const missing = required.filter(key => !process.env[key]);
if (missing.length > 0) {
throw new Error(`Missing: ${missing.join(', ')}`);
}
return process.env;
}
}
これにより、すべての CLI コマンドでビジネスロジックの実行前に環境が検証されます。
関連項目
- CLI アーキテクチャ - 3 層パターンには EnvironmentManager が含まれています
- 設定管理
- エラー処理
- セキュリティベースライン
継続的な改善
開発者が、このスキルで防げるはずの動作を修正した場合は、今後同じ修正が必要にならないよう、このスキルへの具体的な修正案を提案してください。
コメント
Markdown 対応