# Takumi Guard を npm v11.15.0 以降で利用する際の挙動の改善

npm v11.15.0 以降のクライアントでも Takumi Guard を引き続き利用できるよう、npm クライアントに対するレジストリの挙動を改善しました。この変更により、npm v11.15.0 以降をご利用の場合、ロックファイル（`package-lock.json`）に Takumi Guard のレジストリ URL が記録されるようになります。

## 変更背景

npm v11.15.0 では、サプライチェーン保護機構である `--allow-remote` チェックの強制が導入されました。このチェックでは、設定されたレジストリと異なるホストを指す tarball ダウンロード URL を持つ依存パッケージは「remote」として分類され、推移的依存パッケージのダウンロードが拒否されます。

従来の Takumi Guard は、npm クライアントに対してアップストリーム（`registry.npmjs.org`）の tarball URL をそのまま配信していました。新しいチェックの下では、設定されたレジストリ（`npm.flatt.tech`）と tarball のホストが一致しないため、npm v11.15.0 以降では Takumi Guard 経由のインストールが `EALLOWREMOTE` エラーで失敗する場合がありました。

今回の変更により、npm v11.15.0 以降のクライアントに対しては tarball URL を Takumi Guard 自身のホストに書き換えて配信するようになり、正しく「registry」として分類されるようになります。今後の npm のリリースではこのチェックがさらに強化される予定であり（tarball URL がレジストリのパス配下にあることの検証など）、現在および将来の npm バージョンとの互換性を保つために必要な変更となります。

## 変更の影響範囲

### npm v11.15.0 以降への影響: 有

新規追加・更新されたロックファイル（`package-lock.json`）のエントリには、従来のアップストリームの URL ではなく、Takumi Guard のレジストリ URL（`https://npm.flatt.tech/...`）が `resolved` フィールドに記録されるようになります。これは意図された挙動であり、npm のサプライチェーンチェックの下でインストールを成功させるために必要な変更でございますので、ご理解いただけますと幸いです。

パッケージの完全性検証への影響はありません。`integrity` ハッシュは変更されず、`npm audit signatures` によるレジストリ署名・アテステーションの検証も従来どおり機能します。

### npm v11.15.0 未満への影響: 無

影響はありません。従来どおりアップストリームの tarball URL が配信され、ロックファイルにも変化はありません。

### pnpm・Yarn・Bun への影響: 無

本変更による影響はありません。pnpm は `pnpm-lock.yaml` に tarball URL 自体を記録しないため、ロックファイルにレジストリのホストが含まれることはありません。Yarn v1 については、[以前のリリースノート](/docs/ja/r/202604-takumi-guard-yarn-v1-lockfile)でご案内したとおり、既に `yarn.lock` に Takumi Guard の URL が記録される挙動となっています。Yarn v2–v4（Berry）および Bun への影響はありません。

## 推奨事項

ロックファイルにレジストリ URL を残したくない場合は、**pnpm** への移行をご検討ください。pnpm はロックファイルに tarball URL を埋め込まず、Takumi Guard とシームレスに連携できるほか、サプライチェーンセキュリティの観点でも優れた機能を備えています。
