Microsoft developer platformのESLint 10.3.0更新まとめ:影響範囲と確認すべき設定

2026年5月5日にMicrosoft developer platform関連のGitHubリポジトリで、agent-governance-typescript配下の開発用依存関係として使われているESLintが10.2.1から10.3.0へ更新されました。結論から言うと、アプリ本体のAPI変更ではなく、TypeScript SDKのlint、CI、開発環境、コードレビュー品質に関わる更新です。利用者が最優先で確認すべきなのは、CIで使っているNode.jsのバージョン、ESLint設定、no-unused-private-class-membersに関連する指摘の増減です。該当PRはDependabotによる更新で、2026年5月5日にmainへマージされています。(GitHub)

目次

Microsoft developer platformで更新された内容

今回の更新は、Microsoftのagent-governance-toolkitリポジトリ内にあるagent-governance-typescriptディレクトリを対象にした依存関係アップデートです。対象パッケージはESLintで、更新前は10.2.1、更新後は10.3.0です。PR上では、依存種別はdirect:development、更新種別はversion-update:semver-minorとして扱われています。(GitHub)

変更ファイルは主に次の2つです。

確認項目内容
対象ディレクトリ/agent-governance-typescript
更新対象eslint
更新前10.2.1
更新後10.3.0
変更ファイルpackage.json、package-lock.json
変更の性質開発用依存関係の更新
マージ日2026年5月5日

package.jsonでは、devDependencies内のeslintが10.2.1から10.3.0へ変更されています。GitHub上の差分では、package.jsonが1行追加・1行削除、package-lock.jsonも更新対象として表示されています。(GitHub)

今回の更新で何が変わるのか

ESLint 10.3.0のリリース内容を見ると、主な変更は「新機能」「バグ修正」「ドキュメント更新」「CIやテスト周りのメンテナンス」に分かれます。特に実務で注目したいのは、no-unused-private-class-membersに対するsuggestion追加と、ルール提案時の挙動修正です。(GitHub)

分類変更点実務上の意味
新機能no-unused-private-class-membersにsuggestionを追加未使用のprivateメンバーを検出した際、エディタやレビュー画面で修正候補を扱いやすくなる可能性がある
バグ修正利用できないrequire cacheの扱いを修正特定の実行環境やツール連携でESLint実行が安定する可能性がある
バグ修正class body内でrule suggestionが継続してしまう問題を修正自動修正・提案表示まわりの誤動作リスクを下げる
ドキュメントREADMEやコメントの修正開発者向け説明の改善
ChoresCI、pnpm、テスト、関連ツールの更新直接の機能変更ではないが、周辺品質の改善につながる

この更新は、TypeScript SDKの実行時ロジックを直接変更するものではありません。@microsoft/agent-governance-sdkのpackage.jsonでは、lintスクリプトがeslint src/ tests/ --ext .tsとして定義されており、ESLintはソースコードとテストコードの静的解析に使われています。(GitHub)

対応が必要な人、様子見でよい人

今回の更新は「全ユーザーが今すぐコードを書き換えるべき変更」ではありません。ただし、Microsoft developer platform関連のTypeScript SDKを参照している開発チームや、Agent Governance Toolkitをフォークしているチームでは確認が必要です。

立場対応優先度確認すべきこと
agent-governance-typescriptを直接開発している人高npm run lint、CI、Node.jsバージョン、ESLint設定
リポジトリをフォークして独自拡張している人高Dependabot更新の取り込み後にlint結果が変わらないか
@microsoft/agent-governance-sdkをアプリから利用しているだけの人低SDKの公開バージョンやリリースノートを確認。通常はアプリコードへの直接影響は小さい
ESLint 10系へ移行中のTypeScript開発者中自社プロジェクトのNode.js、flat config、非推奨設定
CIだけでlintを実行しているチーム中CIイメージ、Node.js、エディタ拡張とのバージョン差

注意したいのは、「開発用依存関係だから影響なし」と決めつけないことです。ESLintの更新は、ビルド成果物そのものよりも、CIの失敗、PRレビューの差し戻し、エディタ上の警告増加として現れることがあります。

まず確認すべき変更点

Node.jsのバージョン

ESLint v10系では、Node.jsの対応バージョンに注意が必要です。ESLint公式のv10移行ガイドでは、ESLint v10.0.0以降でNode.js v20.19.0以上、v22.13.0以上、v24以上がサポート対象として示されています。Node.js v20.19未満、v21、v23はサポート対象外です。(ESLint)

一方、agent-governance-typescriptのpackage.jsonにはenginesとしてnode: >=18.0.0が記載されています。これはSDKパッケージ側の指定であり、ESLint v10を実行する開発環境やCIでは、ESLint側の要件も合わせて確認する必要があります。(GitHub)

実務では、次のようなズレが起きやすいです。

場面起きやすい問題対応
ローカル開発環境開発者ごとにNode.jsのバージョンが違う.nvmrc、Volta、asdfなどでバージョンを固定する
GitHub ActionsなどのCI古いNode.jsイメージでlintが失敗するactions/setup-nodeなどの設定を確認する
VS CodeのESLint拡張ターミナルでは成功するがエディタ上で警告が出るエディタが参照するNode.jsとワークスペース依存関係を確認する
Docker開発環境ベースイメージが古いDockerfileのNode.jsタグを見直す

特にCIでnpm ci後にnpm run lintを実行している場合、最初にNode.jsのバージョンを確認してください。ESLintのアップデート自体は小さく見えても、実行環境が要件を満たしていないと、コード変更とは無関係にパイプラインが止まる可能性があります。

no-unused-private-class-membersのsuggestion追加とは

ESLint 10.3.0では、no-unused-private-class-membersルールにsuggestionが追加されています。このルールは、使われていないprivate class memberを検出するものです。ESLint公式ドキュメントでは、宣言されたもののコード内で使われていないprivateメンバーは、不完全なリファクタリングの結果である可能性が高く、読み手を混乱させる原因にもなると説明されています。(ESLint)

たとえば、次のようなコードは確認対象になります。

class PolicyCache {
  #unusedTtl = 300;

  getPolicy(id: string) {
    return id;
  }
}

この例では、#unusedTtlが宣言されているものの、読み取りに使われていません。実務では、次のどちらかを判断します。

判断対応例
本当に不要privateメンバーを削除する
将来使う予定があるコメントで意図を残す。ただし不要な先行実装なら削除を優先する
実装漏れ参照すべき箇所に処理を追加する
テスト不足で未使用に見えるテストコードと実装の責務を見直す

今回追加されたsuggestionは、こうした指摘に対してエディタや一部の開発ツールで修正候補を提示しやすくする変更です。自動修正を機械的に受け入れるのではなく、「削除してよい未使用コードなのか」「本来は使うべき実装漏れなのか」を判断してから対応するのが安全です。

影響範囲はランタイムよりも開発プロセス

今回の変更は、dependenciesではなくdevDependenciesのESLint更新です。つまり、アプリやSDKを実行する利用者に直接配布される実行時依存関係の変更ではなく、開発・検証時の品質管理に関する変更と捉えるのが適切です。PR上でも依存種別はdirect:developmentとして示されています。(GitHub)

ただし、開発プロセスへの影響は軽視できません。特に次のようなチームでは、更新後にlint結果が変わるか確認してください。

  • PR作成時にlintを必須チェックにしている
  • ESLintの警告をゼロに保つ運用をしている
  • --max-warnings=0を使って警告もCI失敗扱いにしている
  • private class fieldsを多く使うTypeScriptコードがある
  • 生成コードやテストヘルパーにもlintをかけている

agent-governance-typescriptでは、lintスクリプトがsrc/とtests/を対象にしています。そのため、実装コードだけでなくテストコード側の未使用privateメンバーや構文上の問題も検出対象になります。(GitHub)

移行・設定確認の手順

自社プロジェクトやフォーク先で同様の更新を取り込む場合は、次の順番で確認すると失敗を減らせます。

手順コマンド・確認内容判断基準
現在のNode.jsを確認node -vESLint v10の要件を満たすか
依存関係を更新npm ciまたはnpm installlockfileが意図せず大きく変わっていないか
ESLintのバージョンを確認npx eslint -vv10.3.0になっているか
lintを実行npm run lint新規エラーや警告が出ないか
テストを実行npm testlint修正で挙動が変わっていないか
CI設定を確認GitHub Actions、Azure PipelinesなどローカルとCIのNode.js差分がないか
エディタ連携を確認VS Code ESLint拡張などローカルCLIと同じ結果になるか

フォークや社内リポジトリで更新する場合は、単にeslintのバージョンだけを変えるのではなく、package-lock.jsonも一緒に更新してください。package.jsonだけを変更すると、CIでは古いlockfileをもとに依存関係が復元され、ローカルとCIで結果がずれることがあります。

CIで確認したいポイント

Microsoft developer platform関連の開発では、GitHub ActionsやAzure Pipelinesなどでlintを自動実行しているケースが多いはずです。今回のようなESLint更新では、CI設定の確認が重要です。

Node.jsの指定が古くないか

CIで次のような設定をしている場合は注意してください。

- uses: actions/setup-node@v4
  with:
    node-version: 18

ESLint v10を実行する開発・CI用途では、Node.js 18系のままでは要件を満たさない可能性があります。ESLint公式のv10移行ガイドに合わせ、Node.js v20.19.0以上など、対応バージョンへの更新を検討してください。(ESLint)

lint対象が広すぎないか

src/ tests/以外にも、生成ファイル、ビルド成果物、サンプルコード、古い移行用コードをlint対象にしていると、ESLint更新のたびに不要な指摘が増えやすくなります。

たとえば、次のようなディレクトリは意図的に除外するかを確認してください。

dist/
coverage/
generated/
fixtures/
tmp/

ただし、除外を増やしすぎると品質チェックが形骸化します。判断基準は、「人が保守するコードかどうか」です。人が日常的に編集するコードはlint対象に残し、機械生成コードは除外するのが現実的です。

よくある失敗と対処法

ローカルでは通るのにCIで失敗する

原因として多いのは、Node.jsのバージョン差、npm installとnpm ciの違い、lockfileの未更新です。

対処として、ローカルでもCIと同じコマンドを使って確認します。

rm -rf node_modules
npm ci
npm run lint
npm test

CIがNode.js 20以上、ローカルがNode.js 18のように分かれている場合、結果が一致しないことがあります。チームで使うNode.jsを明示的に固定してください。

suggestionを自動適用して必要なコードまで消してしまう

no-unused-private-class-membersの指摘は、「未使用だから削除すればよい」とは限りません。未使用になっている理由が、リファクタリング漏れ、テスト不足、条件分岐の設計ミスである可能性もあります。

削除前に、次の3点を確認してください。

確認項目見るべきポイント
直近の変更履歴リファクタリングで参照だけ消えていないか
テストの意図privateメンバーを使う想定のケースが抜けていないか
設計上の責務その値やメソッドが別クラスへ移動すべきものではないか

ESLint 10系への移行差分を小さく見積もる

今回のPRは10.2.1から10.3.0へのマイナー更新ですが、ESLint 10系そのものには設定形式やNode.js要件などの大きな変更があります。すでにESLint 10.2.1を使っているプロジェクトでは影響は限定的でも、ESLint 8系や9系から一気に10.3.0へ上げる場合は、v10移行ガイドの確認が必要です。ESLint v10では旧設定形式のサポート終了、新しい設定ファイル探索アルゴリズム、eslint-envコメントの扱いなど、複数の破壊的変更が案内されています。(ESLint)

自社プロジェクトに取り込むべきか

同じようにESLintを10.3.0へ上げるべきかは、次の基準で判断するとよいでしょう。

状況判断
すでにESLint 10.2.1を使っている基本的には更新候補。lintとCIが通るか確認して取り込む
ESLint 10系へ移行済みだがNode.jsが古い先にNode.jsとCIイメージを更新する
ESLint 8系・9系から移行する10.3.0だけでなく、v10移行全体として計画する
TypeScriptのprivate fieldsを多用しているno-unused-private-class-membersの指摘を重点確認する
CIが厳格で警告も失敗扱い小さな更新でも検証ブランチで試す
SDKを利用しているだけ直接対応は不要な可能性が高い。公式リリースや利用中パッケージの更新内容を確認する

更新を取り込む場合は、まず小さな検証ブランチでnpm ci、npm run lint、npm testを実行してください。lintエラーが増えた場合は、ルールをすぐ無効化するのではなく、指摘が正しいかを先に確認することが重要です。

変更確認チェックリスト

最後に、今回のMicrosoft developer platform documentation updateに関連して確認すべき項目を整理します。

チェック項目確認済みにする条件
ESLintのバージョンnpx eslint -vで10.3.0が確認できる
Node.jsESLint v10のサポート対象バージョンを使っている
package-lockpackage.jsonと整合している
lintnpm run lintがローカルとCIで通る
testsnpm testが通る
private class memberssuggestionを機械的に適用せず、削除・実装修正・設計見直しを判断した
CI設定Node.js、キャッシュ、lockfile利用方法がチーム方針と一致している
エディタ連携VS CodeなどのESLint結果がCLIと大きくずれていない

今回の更新は、Microsoft developer platformの利用者全員に大きな移行作業を求めるものではありません。しかし、TypeScript SDKを開発・保守しているチームにとっては、lint品質とCI安定性を見直す良いタイミングです。まずはNode.jsのバージョン、npm run lintの結果、no-unused-private-class-membersに関する指摘を確認し、問題がなければ通常の依存関係更新として取り込むのが現実的です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次