Cloudflare Wrangler 4.27.0 がリリースされました。このバージョンでは、ローカル開発環境での環境変数管理が大幅に改善され、エンタープライズユーザー向けのコンテナインスタンス設定機能も追加されています。
主要な新機能
1. 環境変数管理の改善
ローカル開発時の環境変数読み込みが大幅に柔軟になりました。
新しい環境変数オプション
# .envファイルから自動的に変数を読み込む
export CLOUDFLARE_LOAD_DEV_VARS_FROM_DOT_ENV=true
# プロセス環境変数を含める
export CLOUDFLARE_INCLUDE_PROCESS_ENV=true
複数の.envファイルのサポート
以下のファイルから環境変数を自動的に読み込めるようになりました:
.env
- 基本的な環境変数.env.local
- ローカル環境専用の設定.env.<environment>
- 環境別の設定(例:.env.production
)
CLIオプションでの指定
# 特定の.envファイルを指定して実行
wrangler dev --env-file=path/to/custom.env
# 複数の環境ファイルを組み合わせて使用
wrangler dev --env-file=.env.base --env-file=.env.local
2. カスタムインスタンス設定(エンタープライズ向け)
エンタープライズプランのユーザーは、コンテナのリソース制限をカスタマイズできるようになりました。
wrangler.tomlでの設定例
name = "my-worker"
main = "src/index.js"
# カスタムインスタンス設定
[instance_type]
vcpu = 1 # vCPU数
memory_mib = 1024 # メモリ(MiB)
disk_mb = 4000 # ディスク容量(MB)
この設定により、より大規模なアプリケーションや、メモリを多く消費する処理に対応できます。
3. Node.js互換性の改善
nodejs_compat
モードでの require("debug")
の互換性が修正されました。
// これが正しく動作するように
const debug = require('debug')('my-app');
debug('Starting application...');
// → my-app Starting application... +0ms
実践的な使用例
環境別の設定管理
# ディレクトリ構造
project/
├── .env # 共通設定
├── .env.local # ローカル開発用(gitignore)
├── .env.production # 本番環境用
├── .env.staging # ステージング環境用
└── wrangler.toml
.envファイルの例
# .env(共通設定)
API_VERSION=v1
DEFAULT_TIMEOUT=30000
# .env.local(ローカル開発)
DATABASE_URL=http://localhost:8787
DEBUG=true
API_KEY=dev-key-12345
# .env.production(本番環境)
DATABASE_URL=https://api.production.com
DEBUG=false
API_KEY=prod-key-secure
開発時の起動
# ローカル開発(.envと.env.localを自動読み込み)
CLOUDFLARE_LOAD_DEV_VARS_FROM_DOT_ENV=true wrangler dev
# 本番環境の設定でテスト
wrangler dev --env-file=.env.production
# カスタム環境ファイルを使用
wrangler dev --env-file=config/special.env
Worker内での環境変数の使用
// src/index.ts
export interface Env {
API_VERSION: string;
DATABASE_URL: string;
DEBUG: string;
API_KEY: string;
}
export default {
async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
// 環境変数を使用
const isDebug = env.DEBUG === 'true';
if (isDebug) {
console.log('API Version:', env.API_VERSION);
console.log('Database URL:', env.DATABASE_URL);
}
// APIキーの検証
const authHeader = request.headers.get('Authorization');
if (authHeader !== `Bearer ${env.API_KEY}`) {
return new Response('Unauthorized', { status: 401 });
}
// メイン処理
return new Response(
JSON.stringify({
version: env.API_VERSION,
environment: isDebug ? 'development' : 'production',
}),
{
headers: { 'Content-Type': 'application/json' },
}
);
},
};
マイグレーションガイド
既存プロジェクトの移行
1. 環境変数ファイルの整理
# 既存の環境変数をファイルに移動
echo "DATABASE_URL=your-db-url" >> .env
echo "API_KEY=your-api-key" >> .env.local
# .gitignoreに追加
echo ".env.local" >> .gitignore
2. package.jsonスクリプトの更新
{
"scripts": {
"dev": "CLOUDFLARE_LOAD_DEV_VARS_FROM_DOT_ENV=true wrangler dev",
"dev:prod": "wrangler dev --env-file=.env.production",
"deploy": "wrangler deploy",
"deploy:staging": "wrangler deploy --env staging"
}
}
3. wrangler.tomlの更新
# 環境別の設定
[env.staging]
name = "my-worker-staging"
vars = { ENVIRONMENT = "staging" }
[env.production]
name = "my-worker-production"
vars = { ENVIRONMENT = "production" }
# エンタープライズユーザーの場合
[env.production.instance_type]
vcpu = 2
memory_mib = 2048
disk_mb = 8000
ベストプラクティス
1. 環境変数の階層化
# 優先順位(高い順)
1. CLIオプション (--env-file)
2. .env.local
3. .env.<environment>
4. .env
5. wrangler.tomlのvars
2. セキュリティの考慮
# .gitignore
.env.local
.env.*.local
*.key
*.pem
# 本番環境の秘密情報はWrangler Secretsを使用
wrangler secret put API_KEY
wrangler secret put DATABASE_PASSWORD
3. 開発チーム向けのテンプレート
# .env.example(リポジトリにコミット)
API_VERSION=v1
DATABASE_URL=http://localhost:8787
DEBUG=true
API_KEY=your-api-key-here
# 新しい開発者向けの説明
# 1. .env.exampleを.env.localにコピー
# 2. 実際の値を設定
# 3. wrangler devで開発開始
トラブルシューティング
環境変数が読み込まれない場合
# デバッグモードで確認
wrangler dev --log-level debug
# 環境変数の確認
console.log('Loaded env vars:', Object.keys(env));
インスタンス設定エラー
# エラーが出る場合は、プランを確認
# エンタープライズプラン以外では使用不可
[instance_type]
# vcpu = 1 # コメントアウトして無効化
パフォーマンスへの影響
メモリ使用量の最適化
// 環境変数によるメモリ管理
const MAX_CACHE_SIZE = parseInt(env.MAX_CACHE_SIZE || '100');
const cache = new Map();
function addToCache(key, value) {
if (cache.size >= MAX_CACHE_SIZE) {
// 最も古いエントリを削除
const firstKey = cache.keys().next().value;
cache.delete(firstKey);
}
cache.set(key, value);
}
今後の展望
Wrangler 4.27.0 のリリースは、Cloudflare Workers の開発体験を大きく向上させる重要なアップデートです。特に:
- 開発効率の向上 - 環境変数管理の簡素化により、ローカル開発がよりスムーズに
- エンタープライズ対応 - 大規模アプリケーションへの対応力が向上
- 互換性の改善 - Node.jsエコシステムとの統合がより自然に
これらの改善により、Cloudflare Workers はさらに実用的で強力なプラットフォームへと進化しています。
まとめ
Wrangler 4.27.0 の主要な改善点:
- ✅ 柔軟な環境変数管理(
.env
ファイルの自動読み込み) - ✅ カスタムインスタンス設定(エンタープライズ向け)
- ✅ Node.js互換性の向上
- ✅ 開発体験の大幅な改善
既存のプロジェクトでも、簡単な設定変更で新機能を活用できます。特に環境変数管理の改善は、すべての開発者にとって大きなメリットとなるでしょう。
アップデートは以下のコマンドで実行できます:
npm install -g wrangler@latest
# または
bun add -g wrangler@latest