Frontend Weekly 2025-11-07
ESLint v9.39.1リリース
日付:2025年11月3日
ESLint v9.39.1がリリースされた。v9.39.0で導入されたバグを修正するパッチリリース。
v9.39.0では全てのルールのvisitor関数が2つの引数で呼び出されるようになった。これにより、visitor関数が1つの引数のみを受け取ることを期待するサードパーティルール(特に@typescript-eslint/unified-signatures)が壊れた。v9.39.1では、JavaScript/TypeScriptのvisitorメソッドにはターゲットノードのみを引数として渡す以前の動作に戻された。
Cloudflare Workers VPC Services (Beta) リリース
日付:2025年11月5日
Cloudflare Workers VPC Services (Beta) が利用可能になった。Workersからプライベートネットワーク内のリソースに安全にアクセスできる。
VPC Servicesでは、Worker binding構文を使用して内部API、データベース、サービスへの安全な接続を作成できる。AWS、Azure、GCPなどの外部クラウドやオンプレミスのリソースにCloudflare Tunnelsを使用して接続可能。
export default { async fetch(request, env, ctx) { // Worker bindingを使用してAWS ECS上の内部APIにアクセス const response = await env.AWS_VPC_ECS_API.fetch("https://internal-host.example.com"); return new Response(); },};Safari 26.1リリース
日付:2025年11月3日
Safari 26.1がリリースされた。iOS 26.1、iPadOS 26.1、visionOS 26.1、macOS 26.1、macOS Sequoia、macOS Sonomaで利用可能。
CSS Anchor Positioningで、最後に成功したposition-tryフォールバック位置を記憶する機能を追加。スタイル変更時のレイアウトジャンプを削減。SVGで相対単位のサポートを追加。
主な修正として、スクロールしたiframeコンテンツのヒットテスト、VoiceOverのラジオボタンカウント、動的に展開されるdetails要素のアクセシビリティツリーへの公開、anchor positioningのマルチカラムフロー対応、:has()セレクタのパフォーマンス改善、WebGPUでのSVG画像処理、WebCodecsでのWebGPUレンダラー使用時の動画再生の問題修正が含まれる。
npmセキュリティアップデート:Classic token作成無効化とgranular token変更
日付:2025年11月5日
GitHubがnpmのセキュリティ強化の一環として、npm token管理システムの変更を実施した。
npm classic tokenの新規作成が無効化された。npmjs.comウェブサイト、CLI、APIを通じた新規作成は不可。既存のnpm classic tokenは2025年11月19日まで動作。npm token create CLIコマンドはnpm classic tokenを生成しなくなった。
npm granular access tokenでは、書き込み権限を持つ新しいnpm tokenはデフォルトで2FAが必須。CI/CDワークフロー向けに「Bypass 2FA」オプションが追加(デフォルトは無効)。既存の書き込み権限を持つnpm granular tokenは最大90日の有効期限に制限。2026年2月3日以降に有効期限が設定されていたトークンは、その日に調整された。
移行が必要な場合:
- npm classic tokenを使用している場合、2025年11月19日までにnpm granular access tokenへ移行が必要
- npm granular tokenを使用している場合、有効期限を確認し、必要に応じてローテーションを計画
- CI/CDで非対話的な公開が必要な場合、「Bypass 2FA」を有効化するか、OIDCを使用した確立されたtrust publishingを検討
これらの変更はnpmレジストリ用のnpm tokenのみに影響。GitHub personal access tokens(classic)、GitHub fine-grained personal access tokens、GitHub Actions secrets、GITHUB_TOKENは影響を受けない。
2025年11月19日には、すべてのnpm classic tokenが永続的に無効化され、長期間有効なローカル公開トークンは2時間のセッショントークンに置き換えられる。
出展:npm security update: Classic token creation disabled and granular token changes
Redux Toolkit v2.10.0リリース
日付:2025年11月4日
Redux Toolkit v2.10.0がリリースされた。Immer依存関係を10.2に更新し、パフォーマンス改善とcombineSlicesの型修正を含む。
Immer 10.2のパフォーマンス改善を取り込み。RTK 2.10.0ではsetUseStrictIteration(false)を呼び出し、標準的なRedux stateの使用では文字列キーのみを想定することで、Immer更新操作で約10%の高速化を実現。シンボルキーをRedux stateで使用している場合は、アプリコードでsetUseStrictIteration(true)を呼び出すことで以前の動作に戻せる。
追加のRTKパフォーマンス改善として、繰り返しのfilter().map().map()呼び出しをマイクロ最適化。RTKQ tag invalidationがproxyでラップされた配列から読み取っていたのを、プレーン配列から読み取るように変更。ESBuildでのインポート重複を解消し、外部インポートを1回のみ取り込むように内部構造を再構築。
バイト削減により、RTKQコアから約0.6K min、RTKQ Reactバンドルから約0.2K minを削減。
combineSlicesがPreloadedStateが入力型と一致しない場合(永続化された値など)をより適切に処理するように修正。
GitHub Secret ScanningがBase64エンコードされたシークレットを検出
日付:2025年11月4日
GitHub Secret ScanningがBase64エンコードされたシークレットの検出に対応した。サードパーティクラウドプロバイダーのシークレットタイプのBase64エンコードバリアントを検出可能。
対応するプロバイダーとシークレットタイプ:
- Alibaba: alibaba_cloud_access_key_secret
- Amazon AWS: aws_access_key_id、aws_secret_access_key、aws_temporary_access_key_id
- Anthropic: anthropic_api_key
- Azure: azure_cache_for_redis_access_key、azure_cosmosdb_key_identifiable、azure_function_key、azure_openai_key、azure_storage_account_key
- Brevo: sendinblue_api_key
- Databricks: databricks_access_token
- GitHub Secret Scanning: secret_scanning_sample_token
- GitLab: gitlab_access_token
- Google: google_oauth_client_id、google_oauth_client_secret、google_oauth_refresh_token
- Groq: groq_api_key
- Hugging Face: hf_user_access_token
- JFrog: jfrog_platform_reference_token
- Twilio: twilio_account_sid
Base64エンコードされたシークレットはデフォルトでpush保護される。GitHubは追加のタイプを順次サポートする。
拡張メタデータチェックが追加された。シークレットの所有者情報、作成日、組織の詳細などの追加コンテキストをチェック可能。対応するプロバイダーとして、Adafruit、Anthropic、Apify、Contentful、Discord、Dropbox、Fastly、Figma、GitLab、Google、Hugging Face、Intercom、Mailchimp、Mailgun、Mapbox、Notion、OpenAI、Postman、SendGrid、Slack、Stripe、Tailscale、Telegram、Terraform Cloudが含まれる。
有効性チェックがGrafanaとNotionに追加された。検出されたシークレットがアクティブかどうかを確認可能。
出展:Secret scanning detects Base64-encoded secrets and more — October 2025
コミットメッセージ内の@メンションによる通知を削除
日付:2025年11月7日
GitHubがコミットメッセージ内の@メンションによる通知を削除することを発表した。不要な通知を減らし、重要な情報に集中できるようにするため。
12月8日から、コミットメッセージ内でユーザーやチームをメンションしても通知は送信されない。issues、pull requests、discussions内のメンションは引き続き通知をトリガーする。
GitHub Actionsのpull_request_targetとenvironment branch protection rulesの変更
日付:2025年11月7日
GitHub Actionsのpull_request_targetとenvironment branch protection rulesの評価方法が変更される。12月8日から適用。ユーザー制御ブランチでの予期しないワークフローコード実行や環境シークレットへのアクセスを防ぐため。
pull_request_targetイベントは常にデフォルトブランチをワークフローソースと参照として使用するようになる。ワークフローファイルとcheckoutコミットは常にリポジトリのデフォルトブランチから取得され、pull requestのベースブランチに関係なく実行される。これにより、リポジトリ内の他のブランチにある古い、脆弱な可能性のあるワークフローが実行されることを防ぐ。
GITHUB_REFはデフォルトブランチに解決され、GITHUB_SHAはそのブランチの最新コミットを指す。これにより、信頼できない名前やブランチが評価に影響を与える既知の脆弱性クラスを閉じる。
以前は、pull requestのベースブランチとして設定された親リポジトリ内の任意のブランチが実行されるワークフローのソースとして使用され、古いワークフローが実行される可能性があった。この変更により、これらのイベントで実行されるワークフローソースとしてリポジトリのデフォルトブランチのみが使用される。
環境ブランチ保護ルールは実行参照に対して評価される。pull requestワークフロー中に環境シークレットへの意図しないアクセスを防ぐため、環境ブランチ保護ルールはpull request head(HEAD_REF)ではなく実行参照(GITHUB_REF)に対して評価される。
pull_request、pull_request_review、pull_request_review_commentでは、環境ルールはrefs/pull/number/mergeに対して評価されるpull_request_targetでは、環境ルールはデフォルトブランチに対して評価される
推奨事項:
pull_request_targetの使用を必要最小限にし、ユーザー制御入力やコードが信頼できないコードを実行する方法で実行に影響を与えないようにする- ワークフローが高度な権限やシークレットへのアクセスを必要としない場合、
pull_requestを使用する - これらのワークフローに付与される権限を制限し、デフォルトトークン権限を読み取り専用に設定するか、ワークフローで最小権限設定を適用する
- CodeQLを使用してアクションワークフローの脆弱性をスキャンする
環境ブランチ保護ルールを使用し、pull requestイベントでトリガーされるワークフローの場合:
pull_requestの環境ブランチフィルターを更新し、refs/pull/number/mergeのようなパターンを追加pull_request_targetでは、リポジトリのデフォルトブランチを追加
出展:Actions pull_request_target and environment branch protections changes
Pull request「Files changed」ページのパブリックプレビューとマージ体験の更新
日付:2025年11月6日
GitHubのpull request「Files changed」ページのパブリックプレビューに新機能が追加された。
複数の提案された変更を一括で適用できる機能を追加。クラシック「Files changed」ページと同様に、複数の提案された変更をバッチで適用可能。「Add suggestion to batch」をクリックしてバッチに追加し、「Remove from batch」で削除。「Commit suggestions」をクリックすると、適用される提案を確認し、必要に応じてコミットメッセージを更新できるダイアログが開く。
Copilotがpull request内の変更を分析し、グループ化する機能を追加。Copilot EnterpriseとCopilot Pro+ユーザーが新しい「Files changed」ページから利用可能。リファクタリング、設定更新、テスト改善などの関連する変更をグループ化し、複雑なpull requestの理解とナビゲーションを支援。ファイルツリーのスペースを確保するため、このセクションを折りたたみ可能。
CIツールやその他のアプリによって報告されるアノテーション(エラー、警告、その他のメッセージ)を折りたたみ可能。コード表示のスペースを確保できる。設定メニューの「Minimize comments」オプションで、コメントとアノテーションの両方を最小化可能。
マージ体験の改善として、「Conversation」ページのマージ体験から直接pull requestをdraftに変換できる「Convert to draft」リンクを追加。以前はサイドバーの「Reviewers」セクションからのみ可能だった。
merge queueを使用して変更をマージする場合、キューページにオプションのステータスチェックが表示される。オプションのチェックはマージをブロックしないが、調査が必要な潜在的な問題を強調表示できる。
出展:Pull request “Files changed” public preview and merge experience – November 6 updates
GitHub Actionsの新機能、再利用可能なワークフローの拡張
日付:2025年11月6日
GitHub Actionsに新機能が追加された。
再利用可能なワークフローの制限が増加。最大10ネストの再利用可能なワークフローと、1つのワークフロー実行から最大50ワークフローの呼び出しが可能。以前の制限はそれぞれ4と20。自動化のスケーリングとコラボレーションの効率化が容易になる。
M2 macOSランナーが一般提供開始。macos-latest-xlarge、macos-15-xlarge、macos-14-xlarge、macos-13-xlargeラベルを使用してM2マシンでワークフローを実行可能。パフォーマンスとGPUアクセラレーションが向上。
GitHub Copilot coding agentがGitHub Actionsを有効化しなくても使用可能。組織でGitHub Actionsを有効化しなくても、GitHub Copilot coding agentを使用できる。ワークフロー自動化とAI支援コーディングアシスタンスの設定の柔軟性が向上。
GitHub Code Searchにenterprise:修飾子が一般提供開始
日付:2025年11月5日
GitHub Code Searchに新しいenterprise:修飾子が追加され、エンタープライズ内のすべての組織を横断して検索できるようになった。
以前は、複数の組織を横断して検索する場合、多くのorg:修飾子をブール演算子で手動で組み合わせる必要があった。数百または数千の組織を持つエンタープライズでは煩雑なプロセスだった。
コード検索クエリにenterprise:修飾子を追加することで、エンタープライズ内のすべての組織を横断して検索可能。enterprise:修飾子は既存の検索修飾子とシームレスに連携し、GitHub Code Searchの他のすべての修飾子と同じ制限が適用される。
GitHub Enterprise Cloudのすべての顧客が利用可能。
出展:enterprise: qualifier is now generally available in GitHub code search
Rulesetsで特定のチームからのレビューを必須に
日付:2025年11月3日
GitHubのrulesetsで、ファイルとフォルダに基づいて特定のチームからの承認を必須とする機能が追加された。保護されたブランチへの変更をマージする際に、より細かい制御が可能になる。
主な機能:
- リリースや本番ブランチなどの機密ブランチを保護し、より厳格なレビューポリシーを強制可能
- リポジトリ、組織、エンタープライズ全体でポリシーをスケールし、一貫した強制を実現
- 特定のファイルとフォルダを対象にし、指定されたチームから特定の数のレビューを要求可能
CODEOWNERSとの違い:
- CODEOWNERSは所有権の定義に適しているが、この新しいrulesetはポリシー強制に焦点を当てる
- 機密ブランチや重要なコードパスで特定の承認を簡単に要求でき、エンタープライズ全体でシームレスにスケール可能
- CODEOWNERSファイルを補完するように設計されており、置き換えるものではない。CODEOWNERSファイルは引き続き所有権の管理、個人をレビュアーとしてサポート、必須でなくてもレビューを要求するために使用される
出展:Required review by specific teams now available in rulesets