
WooCommerce 11.0で配送クラスが非公開タクソノミーに変更
WooCommerce 11.0が2026年7月28日にリリースされる。このアップデートでは、商品の送料計算に使われる「product_shipping_class」タクソノミーが非公開に変更される。これまで明示的に設定されていなかった公開フラグが、WordPress のデフォルトで true 扱いとなっていた状態が解消され、内部データとしての扱いが明確になる。
多くの店舗や拡張機能では特別な対応は不要だが、配送クラスを公開タクソノミーとして利用していたコードは見直しが必要だ。この変更の背景と、開発者が確認すべきポイントを整理する。
WooCommerce 11.0で配送クラスのタクソノミーが非公開になる

配送クラス(product_shipping_class)は、商品を送料計算のグループに割り当てるための仕組みだ。たとえば「大型商品」「冷蔵商品」といったクラスを作り、各商品に紐づけることで、配送方法ごとに異なる送料を設定できる。
これまでの動き(Before)
WooCommerce 11.0 より前のバージョンでは、配送クラスをタクソノミーとして登録する際に public 引数が指定されていなかった。WordPress のタクソノミー登録関数は public が省略されるとデフォルトで true を適用する。そのため、配送クラスは「公開タクソノミー」として扱われ、is_taxonomy_viewable() が true を返していた。
この状態では、サイトマップ生成、タクソノミーアーカイブの処理、パブリックタクソノミーを列挙するクエリなどに配送クラスが意図せず含まれることがあった。
変更後の動作(After)
WooCommerce 11.0 からは、タクソノミー登録時に 'public' => false が明示的に設定される。これにより is_taxonomy_viewable( 'product_shipping_class' ) は false を返すようになり、WordPress の各種 API で配送クラスが非公開タクソノミーとして扱われる。
この変更はデータそのものを削除するものではない。すでに登録された配送クラスのタームや商品との紐づけ、送料ルールはそのまま維持される。
なぜこの変更が必要だったのか

配送クラスは本来、商品カテゴリーやタグのように顧客に見せるためのカタログ用タクソノミーではない。あくまでも送料計算のための内部データである。ところが公開タクソノミーとして振る舞うことで、サイトマップに配送クラスのアーカイブ URL が含まれたり、SEO ツールが意図しないページを認識したりといった副作用が生じていた。
一部のストアでは、この挙動を避けるために手動で除外設定を行なっていた。WooCommerce コアの修正により、根本的な原因を取り除き、特に設定をしなくても配送クラスが公開面に漏れ出さないようになる。
また、WordPress の public フラグが false になると、publicly_queryable も自動的に false を継承する。つまり、URL で配送クラスの一覧ページに直接アクセスすることもできなくなる。こうした一貫した内部データとしての扱いが、開発者にとっても予測しやすい動作につながる。
影響を受けるコードのチェックポイント

WooCommerce Developer Blog の案内に沿って、以下のようなコードを含むテーマやプラグインは変更後の動作を確認する必要がある。
is_taxonomy_viewable( 'product_shipping_class' )が true を返すことを前提にしている- 配送クラスのアーカイブページへのリンクをフロントエンドに生成している
- サイトマップや SEO、ナビゲーションの生成時に
product_shipping_classを public タクソノミーとして含めている get_taxonomies()などで公開タクソノミー一覧を取得し、その中に配送クラスが含まれることを期待している- タクソノミーの公開ステータスをもとに REST API や GraphQL のスキーマ、検索、フィルタリングをカスタマイズしている
- 送料計算以外の汎用的な商品グルーピングに配送クラスを流用している
ごく単純に、配送クラスを送料計算だけに使っている場合は影響を受けない。商品編集画面で配送クラスを設定したり、フックで送料を分岐させたりするコードはそのまま動作する。
開発者が取るべき具体的な対応

基本は何もしなくてよい
配送クラスを送料計算のみに使っているのであれば、コードの修正は不要だ。WooCommerce のコア変更がそのまま適用され、配送クラスは内部タクソノミーとして適切に管理される。
どうしても公開が必要な場合のフィルターフック
特定のサイトや拡張機能で、あえて配送クラスを公開タクソノミーとして扱い続けたいケースもあるだろう。たとえば、配送クラスのアーカイブページをカスタムデザインで用意している場合などだ。
そのような場合は、WooCommerce が用意している register_product_shipping_class_taxonomy_args フィルターを使って、登録時の引数を上書きできる。
add_filter(
'register_product_shipping_class_taxonomy_args',
function ( $args ) {
$args['public'] = true;
$args['publicly_queryable'] = true;
return $args;
}
);ただし、この方法はあくまで例外的な対応である。WooCommerce Developer Blog も述べているように、公開タクソノミーとして再利用するのではなく、本来の目的に合ったカスタムタクソノミーを新たに用意するほうが長期的に健全だ。
長期的にはカスタムタクソノミーへの移行を
商品を顧客向けにグルーピングしたい場合は、商品カテゴリー、商品タグ、商品属性、あるいは専用のカスタムタクソノミーを利用すべきだ。配送クラスはあくまで内部の送料計算用と割り切り、公開用の分類とは役割を分けることで、サイト構造が整理され、SEO の観点からも無駄なアーカイブページが生まれなくなる。
この変更はデータ移行を伴わない「公開状態の切り替え」であり、既存の設定には一切手が加えられない。しかし、今回のバージョンアップをきっかけに、配送クラスを公開タクソノミーとして使っていたコードがあれば、設計を見直す良い機会になるだろう。
この記事のポイント
- WooCommerce 11.0 で配送クラスのタクソノミーが非公開になり、サイトマップやアーカイブに現れなくなる
- 送料計算だけに使っているストアや拡張機能は特別な対応不要
is_taxonomy_viewable()や公開タクソノミーの一覧に依存しているコードは見直しが必要- どうしても公開が必要な場合はフィルターフックで復活できるが、長期的にはカスタムタクソノミーの利用を推奨

・ 複数業界における17年間のデジタルビジネス開発経験
・ ウェブサイト開発のためのHTML、PHP、CSS、JavaScript等の実用的知識
・ 15ヶ国語対応の多言語SaaSの開発経験
・ 17年間にも及ぶ、Eコマース長期運営経験
・ 幅広い業界でのSEO最適化の豊富な経験

VS Code 1.127リリース、エージェントブラウザツールがGAに
VS Code 1.127が2026年7月1日に公開された。今回のアップデートの焦点は、エージェント機能向けの統合ブラウザツールがプレビューを経て一般提供(GA)になった点と、エージェントウィンドウのセッション管理が大幅に強化された点にある。
ブラウザツールによって、AIエージェントはVS Code内のブラウザでページを開き、スクリーンショットを取得し、クリック操作まで行えるようになる。セッション管理ではグループ化やドラッグ&ドロップ、チャット入力バナーによるCI/CD統合、マルチチャットの改善が含まれ、開発者の生産性を高める機能が多数追加された。
エージェント向けブラウザツールが一般提供に、サイトごとの権限制御も実装

「ブラウザツール」の概要とGA化の意義
エージェント向けブラウザツールは、VS Codeの統合ブラウザ上でAIエージェントがWebアプリを開き、コンテンツの読み取り、コンソールエラーの取得、スクリーンショット撮影、さらにはクリックや入力といった操作を自律的に行えるようにする機能だ。これまでプレビューとして提供されていたが、1.127で一般提供へ移行し、デフォルトで有効化された。
このツールにより、エージェントは「Webアプリを構築して」という指示に対し、コード生成だけでなく実際のブラウザ上での表示確認やエラー検出、修正までをひとつのループで完結させられる。従来は開発者が逐一ブラウザで確認し、エージェントに修正を依頼する手間があったが、そのサイクルが自動化される。外部のMCPサーバーを用意する必要もない。
管理者はエンタープライズポリシーでブラウザツールの利用を制御できる。BrowserChatToolsポリシーで機能自体を無効化したり、エージェントネットワークフィルタリングによってアクセス可能なドメインを制限したりすることが可能だ。
ブラウザツールを活用すると、エージェントが独力でビルドからテスト、修正までのサイクルを回せる。開発者が手動で行っていた確認作業の大部分が自動化され、より高次の設計やレビューに集中できるようになる。
カメラや位置情報などサイト単位の権限制御
統合ブラウザにサイト単位の権限設定が追加された。ページがカメラ、マイク、位置情報、加速度センサー、Bluetooth、USBなどのWeb APIを要求した際、通常のブラウザと同様に許可・拒否のプロンプトが表示される。許可した内容は「サイト権限」メニューから一括管理できる。
これにより、ビデオ会議やフィットネス系Webアプリのテストなど、従来は統合ブラウザでは動作が制限されていたシナリオでもエージェント検証が可能になる。エージェントがカメラ映像を解析する必要があるテストも、この権限制御のもとで安全に実施できる。
エージェントセッション管理が大幅強化、グループ化やマルチチャットで並行作業を効率化

セッションをグループで整理し、ドラッグ&ドロップで並べ替え
エージェントウィンドウのセッションリストにグループ機能が追加された。複数のセッションを任意のグループにまとめられ、グループヘッダーを折りたたむことでリストを整理できる。各グループには「新しいセッションを開始」「グループ内の全セッションを完了としてマーク」といったクイックアクションも用意されている。
ドラッグ&ドロップにも新たに対応し、セッションの並べ替えやグループ間の移動、ピン留めが直感的に行える。複数セッションを選択してまとめて移動することも可能だ。
チャット入力バナーでプルリクエストのCI失敗やレビューコメントに即対応
エージェントがプルリクエストを作成しているセッションでは、チャット入力欄の真上にバナーが表示される。CIチェックが失敗した場合は「2 of 5 checks failed」といった件数とともに「チェックを修正」「詳細を表示」のアクションボタンが現れ、新たなレビューコメントが届いた際も同様に「コメントに対処」「コメントを表示」がワンクリックで実行できる。
従来はGitHubの画面を開いて状況を確認し、別途エージェントに指示を出す必要があった。このバナーにより、会話の流れを中断せずにエージェントへ修正を委ねられる。
チャット入力バナーにより、プルリクエストのCI失敗やレビューコメントが即座に可視化され、対応のリードタイムが短縮される。開発者がコンテキストを切り替える頻度も減るため、集中力を保ちやすい。
マルチチャットセッションの改善とエディタガターからのフィードバック
ひとつのエージェントホストセッション内で複数のチャットを走らせるマルチチャット機能にも改良が加わった。タブでチャットを切り替えられ、不要なチャットは閉じて非表示にし、後から「会話」ドロップダウンで再表示できる。完全に削除したい場合はタブのコンテキストメニューから「チャットを削除」を選択する。
進捗状況とファイル変更は全チャットで集約されるようになった。ひとつのチャットが作業中であればセッション全体が進行中と表示され、各タブにも個別の進捗が示される。セッションヘッダーの「Changes」ピルには、すべてのピアチャットの編集内容が合算されるため、並行して行われている変更の全容を把握しやすくなった。
会話のフォークも改善され、マルチチャットセッション内ではフォークが新たなピアチャットとして作成される。フォークしたチャットは分岐点までの会話を引き継ぎ、兄弟チャットとは独立して動作する。エディタのガターからは直接フィードバックを追加できるようになり、エージェントに修正してほしい行をホバー操作で即座に指摘できる。
チャットとターミナルの新機能、コスト管理の透明化

/troubleshootコマンドでエージェントの動作を診断
エージェントの動作に問題がある場合に利用できる/troubleshootコマンドが拡張され、エージェントホストセッションも診断対象になった。チャット入力欄で/troubleshootを入力し、続けて#sessionで特定のセッションを選択し、質問や問題の説明を追加すると、チャットログを解析してエージェントの振る舞いに関するインサイトを提示する。カスタム指示が無視される理由や応答が遅い原因の調査に役立つ。
ターミナルコマンドのサンドボックス化(macOSとLinux)
エージェントが実行するターミナルコマンドを、ネットワークアクセスを遮断しファイルシステムへのアクセスを制限したサンドボックス内で動作させる機能がmacOSとLinux向けに展開された。コマンドをサンドボックス外で実行する必要がある場合にのみエージェントが承認を求める仕組みで、毎回のプロンプト表示頻度が大幅に減る。
この機能はデフォルトで有効だが、権限設定のドロップダウンからオフにすることも可能だ。サンドボックス化によってエージェントの自律性が高まり、定型作業中の中断が少なくなる。開発者の心理的負荷も軽減されるだろう。
ターミナルコマンドのサンドボックス化は、エージェントの自律性を大きく引き上げる。毎回の承認待ちがなくなることで、ビルドからテストまでのパイプラインをエージェントがほぼ自動で進められるようになり、開発者の介入は「昇格が必要な重大操作」に絞られる。
サブエージェントの消費クレジットをホバー表示
エージェントがサブエージェントに作業を委譲した際、どの程度のAIクレジットが消費されたかが分かりにくいという課題があった。今回のアップデートで、チャット応答内のサブエージェントセクションにマウスカーソルを合わせると、そのサブエージェントが使用したクレジット数が表示されるようになった。コストの透明性が向上し、エージェントの利用計画を立てやすくなる。
Ollama内蔵プロバイダーが非推奨に、公式拡張への移行を推奨

公式Ollama拡張の提供開始と内蔵プロバイダーの非推奨化
モデルプロバイダーを拡張機能として提供する方針が明確化され、Ollamaの公式VS Code拡張がマーケットプレイスで公開された。これに伴い、これまで内蔵されていたOllamaプロバイダーは非推奨となった。ローカルのOllamaモデルをチャットで利用するには、公式拡張をインストールする方法が推奨される。
Bring Your Own Key(BYOK)で内蔵プロバイダーを使っていたユーザーは、公式拡張をインストールした後に内蔵プロバイダーを削除することで、継続してモデルを利用できる。非推奨プロバイダーの削除手順は、VS Code Blogのリリースノート内の動画で確認できる。
公式拡張への移行は、今後のOllamaモデルへの迅速な対応やセキュリティ更新を受け取るためにも重要だ。非推奨プロバイダーは近い将来削除されるため、早めの切り替えが望ましい。
エンタープライズ向け設定をファイル配信可能に、デバイス管理外でも適用

managed-settings.jsonによるCopilot設定の配信
管理者がGitHub Copilotのポリシーを適用する手段として、JSONファイルをOS固有のパスに配置する方式が追加された。MDM(モバイルデバイス管理)に登録されていないマシンや、構成管理システムでファイルを配信する方が簡便な環境で役立つ。macOSでは/Library/Application Support/GitHubCopilot/managed-settings.json、Linuxでは/etc/github-copilot/managed-settings.json、Windowsでは%ProgramFiles%\GitHubCopilot\managed-settings.jsonにファイルを置く。
ファイルのスキーマはGitHub.com上で管理者が設定する場合と同一で、アクセス許可やプラグインの有効・無効を制御できる。このファイルは、MDMやアカウントベースのエンタープライズ設定が存在しない場合にのみ適用されるため、既存の管理手法と競合しない。
この記事のポイント
- エージェント向けブラウザツールが一般提供開始、外部MCPサーバー不要でテスト自動化が可能に
- セッション管理がグループ化・ドラッグ&ドロップ・マルチチャット強化で並行作業の効率が向上
- チャット入力バナーでCI/CDフィードバックをその場で処理、ワークフローが途切れない
- ターミナルコマンドのサンドボックス化でエージェントの自律性が高まり、承認回数が減少
- Ollamaは公式拡張に移行し、内蔵プロバイダーは非推奨へ
- エンタープライズ向けに設定ファイル配信が可能になり、管理対象外端末にもポリシーを適用

・ 複数業界における17年間のデジタルビジネス開発経験
・ ウェブサイト開発のためのHTML、PHP、CSS、JavaScript等の実用的知識
・ 15ヶ国語対応の多言語SaaSの開発経験
・ 17年間にも及ぶ、Eコマース長期運営経験
・ 幅広い業界でのSEO最適化の豊富な経験

PayPal Standard終了、WooCommerce事業者が知るべき移行の全容
PayPal Standard終了がもたらすWooCommerce決済の転換点

WooCommerceで長年使われてきたPayPal Standardが、2026年6月に正式に役目を終える。PayPal Payments 4.1.0のリリースに伴い、条件を満たすと自動的に無効化され、管理画面からも非表示になる仕組みだ。すでにPayPal Standardを使っている場合でも、すぐに決済が止まるわけではない。しかし移行計画を立てるべきタイミングが来たことは間違いない。
WooCommerce Developer Blogの記事によれば、この動きは突然の発表ではない。2021年から段階的に縮小されてきた流れの最終段階にあたる。今回のアップデートでは、事業者の操作ミスを防ぎつつ、定期購入(サブスクリプション)の継続性を守る配慮が組み込まれている。
本記事では、PayPal Standard終了の背景、PayPal Payments 4.1.0の具体的な動作、移行を安全に進めるツールの使い方、そしてなぜこの変更が事業者にとってプラスになるのかを整理する。
上の図は、決済フローがどう変わるかの概念を示したものだ。外部サイトへの遷移がなくなるだけで、購入完了率は大きく変わる可能性がある。
これまでの経緯とPayPal Standard廃止の必然性

2021年から始まった段階的縮小
WooCommerceがPayPal Standardを新規店舗向けに非表示にし始めたのは2021年7月のことだ。WooCommerce 5.5では、コアに同梱されていた決済ゲートウェイが新規インストール時にデフォルトで読み込まれなくなり、必要ならばフィルターで再有効化する形に切り替わった。
このフィルターと同梱ゲートウェイ自体が完全に削除されたのはWooCommerce 8.9(2024年5月リリース)である。これ以降、PayPal Standardは「古い設定が残っている店舗」か「回避策のプラグイン」でしか生き延びられなくなっていた。今回のPayPal Payments 4.1.0は、その残存ケースを安全にアップグレードへ誘導する最終段階だ。
なぜこのタイミングなのか
PayPal StandardはAPIの進化に追随できない状態が続いていた。PayPal側が提供する最新のコンバージョン向上施策(Pay Later、Venmo、カード直接入力フィールドなど)を利用するには、PayPal Paymentsへの移行が不可避だった。事業者の売上機会を損なわないためにも、古い統合方式を整理する判断は合理的といえる。
PayPal Payments 4.1.0が実際に行うこと

上記の流れで最も重要なのは、アップデート自体が自動的に何かを変えるわけではない点だ。事業者が自らアカウント接続を行うまでは、従来のPayPal Standardはそのまま動作し続ける。
サブスクリプション保護の設計
WooCommerceの開発チームは、特に継続課金への影響を慎重に設計している。店舗に「アクティブ」または「キャンセル保留中」の定期購入が存在し、それがPayPal Standardで稼働している場合、プラグインはそれを検知し、無効化をスキップする。購読者は引き続き請求を受け、事業者には「影響を受けるサブスクリプションの数と所在」が通知される仕組みだ。
この「まず守る、その後に通知する」という順序は、事業者の売上を止めないための実務的な配慮といえる。移行操作を急ぐあまり、課金が途切れるリスクを負う必要はない。
アップグレード準備ツールで事前確認を徹底する

長期運用してきた店舗ほど、設定変更に対する不安は大きい。このツールはWordPress管理画面から操作でき、サイトには一切の変更を加えない読み取り専用設計だ。事前に「移行がどの程度スムーズに進むか」を把握してから行動に移せる点が最大の強みとなる。
なぜPayPal Paymentsへの完全移行が好機なのか

現代のオンライン購入者は、決済ステップでのストレスにきわめて敏感だ。サイトから離れずに支払いを完了できるかどうかが、コンバージョン率を大きく左右する。PayPal Paymentsは、まさにこの「離脱させない体験」を軸に設計されている。
単一プラグインで得られる最新機能群
Pay Later(後払い)、Venmo(米国向け送金・支払いサービス)、カード情報の直接入力フィールドといった機能は、PayPal Standardでは利用できなかった。これらはすべて、単一のプラグインで管理できる。PayPalのAPI変更やWooCommerceのアップデートにも同期してメンテナンスされるため、事業者が個別に対応する手間は大幅に減る。
コアからの分離で保守性が向上
WooCommerce 8.9以降、PayPal Standardはコアに戻る道を完全に断たれた。これは一見すると制約に感じるが、実際には「今後改善されない古いコードに依存し続けるリスク」を取り除く意味がある。PayPal Paymentsに集約することで、決済まわりのコードベースはシンプルになり、トラブルシューティングもしやすくなる。
PayPal Standard利用者が今すぐ着手すべき3つのアクション
- アップグレード準備ツールを実行し、現状のPayPal統合方式と注意点を把握する
- WooCommerce用のPayPal Paymentsプラグインをインストールし、事業者アカウントを接続する
- 定期購入を販売している場合、またはツールの結果に不明点があれば、WooCommerceサポートに相談する
アカウント接続が完了すれば、PayPal Standardからの移行はプラグインが安全に処理してくれる。人の手で設定を削除したり、手動で切り替えたりする必要はない。ツールの結果を踏まえて、確実に行動に移すことが重要だ。
この記事のポイント
- PayPal Standardは2026年6月のPayPal Payments 4.1.0で役目を終え、条件を満たすと自動無効化される
- アップデートだけでは何も変わらず、事業者が自らアカウントを接続するまでは安全に動作し続ける
- 有効な定期購入がある場合は無効化がスキップされ、売上停止のリスクを回避する設計になっている
- アップグレード準備ツールを使えば、サイトに変更を加えずに移行の準備状況を事前確認できる
- PayPal Paymentsへの集約により、最新のコンバージョン機能と継続的なAPI同期の恩恵を受けられる

・ 複数業界における17年間のデジタルビジネス開発経験
・ ウェブサイト開発のためのHTML、PHP、CSS、JavaScript等の実用的知識
・ 15ヶ国語対応の多言語SaaSの開発経験
・ 17年間にも及ぶ、Eコマース長期運営経験
・ 幅広い業界でのSEO最適化の豊富な経験

Astro 7.0リリース、Rustコンパイラでビルド時間を最大61%短縮
Astro 7.0が6月22日に正式リリースされた。今回のメジャーアップデートは「速度」にフォーカスしており、.astroファイルのコンパイラをRustで書き直した点が最大の変更点だ。
ベンチマークによると、ビルド時間は前バージョンと比較して15〜61%短縮される。Astro公式ブログが公開したテスト結果では、13,275ページを持つaspire.devのビルドが半分以下になった事例も報告されている。Rust化された基盤、Vite 8との統合、新しいアドバンストルーティング機能が主要な柱だ。
本記事ではAstro 7.0の全変更点を、実務者の視点から詳しく解説する。
Vite 8によるバンドル基盤の刷新

Astro 7.0のビルド高速化を支える土台が、Vite 8へのアップグレードだ。Vite 8は、JavaScriptツールチェインの世界で最も注目されているリリースのひとつである。最大の変更点は、Rustベースのバンドラ「Rolldown」が標準搭載されたことだ。
Rolldownとは何か
Rolldownは、従来のesbuildとRollupを単一のバンドラで置き換えるツールである。バンドラとは、複数のJavaScriptファイルやコンポーネントを本番用の少数のファイルにまとめる役割を持つ。Rolldownのベンチマークでは、Rollupと比較して10〜30倍高速という結果が出ている。速度だけでなく、既存のRollupプラグインAPIとの互換性も維持している点が実務上の大きな利点だ。
Astroユーザーにとって重要なのは、ほとんどのプロジェクトで設定変更が不要なことだ。Vite 8には既存のesbuild設定やrollupOptions設定を自動的にRolldown用に変換する互換レイヤーが組み込まれている。カスタムViteプラグインを使っている場合も、RolldownがRollupと同じプラグインAPIをサポートするため、そのまま動作する可能性が高い。
Rust化がもたらすビルド性能の飛躍的向上

Astroのビルドプロセスは、大きく2つの段階に分かれる。1つ目はサイトのページやコンテンツ、クライアントコンポーネントをJavaScriptにバンドルする段階。2つ目は、バンドルされたコードを「小さなサーバー」として実行し、プリレンダリング対象の全ページにリクエストを送ってHTMLを生成する段階だ。
Astro 7.0は両方の段階を改善しているが、とくに1つ目のバンドル段階に注力している。ビルド時間のボトルネックになりやすい処理をRustで書かれたネイティブコードに移行することで、大幅な高速化を実現した。
上図の通り、ビルドフローの主要な構成要素がRustベースに置き換えられている。.astroファイルのコンパイル、Markdown/MDXの処理、レンダリングエンジンのすべてが刷新された。以下では各要素を詳しく見ていく。
.astroコンパイラのRust化
Astro 7.0では、.astroコンポーネント形式の新しいコンパイラがRustで構築された。このコンパイラは、以前のGoベースのコンパイラをフルリライトしたものだ。内部的には、oxc(高速なJavaScript/TypeScriptパーサ)を解析に、Lightning CSSをCSSスコープ処理に使っている。
単体ではビルド時間の約6%改善にとどまるが、数千ページ規模の大規模サイトでは、他の改善と相乗効果を発揮する。以下の3点は後方互換性に関わる変更として注意が必要だ。
- HTML自動修正の廃止。旧コンパイラは「正しいHTML」にしようと要素の並べ替えやタグの自動クローズを行っていたが、新コンパイラではマークアップをそのまま扱う。予期せぬ挙動の原因だった自動修正がなくなり、意図した通りに出力されるようになった。
- JSX形式の厳格化。
<div>Helloのような閉じタグ欠落や、<div class="Hello >のような属性の未終端は、自動修正されずエラーになる。旧コンパイラがブラウザの挙動を真似て黙って修正していた部分だ。 - JSXホワイトスペース処理。インライン要素間の改行が可視スペースを生成しなくなる。たとえば、
<span>Hello</span><span>World</span>は「HelloWorld」と表示される。スペースが必要な場合は{' '}を明示的に挿入する。
Markdown/MDX処理のSätteri移行
Astro 7.0では、デフォルトのMarkdownとMDXの処理パイプラインが、Rust製プロセッサ「Sätteri」に置き換えられた。SätteriはAstroコアチームメンバーが開発したツールで、内部的にはpulldown-cmark(CommonMark解析)とoxc(MDX式解析)を使用している。
従来のAstroは、JavaScriptベースのunified(remark/rehypeとそのプラグイン群)でMarkdownを処理していた。数千ページのサイトでは、このパイプラインがビルドの最も遅い段階になることが多かった。Astro公式ブログによれば、AstroドキュメントサイトとCloudflareドキュメントサイトでSätteriに切り替えたところ、ビルド時間が1分以上短縮されたという。
Sätteriには、これまで別途プラグインが必要だったMarkdown機能の多くがビルトインで含まれている。GFM(テーブル、脚注、取り消し線、タスクリスト)、スマートパンクチュエーション(カーリークォート)、見出しID、コンテナディレクティブ、数式、フロントマター(YAML/TOML)、上付き・下付き文字、Wikilinksなどだ。これらはfeaturesオプションで有効化できる。
既存のremark/rehypeプラグインに依存しているプロジェクトは、@astrojs/markdown-remarkを使って従来のunifiedベースのパイプラインを引き続き利用できる。
キュー型レンダリングの安定化
Astro 6.0で実験的機能として導入されたキュー型レンダリングが、Astro 7.0で安定版となりデフォルトのレンダリングエンジンになった。これは、式が密集したページで約2.4倍高速という結果が出ている。
従来のレンダリングは再帰的アプローチを取っていた。親コンポーネントが子コンポーネントを呼び出し、さらにその子が孫を呼び出すという入れ子構造でレンダリングが進む。これに対し、新しいエンジンはキュー(またはスタック)と単一のループを使う。キューに子ノードを正しい順序で追加し、キューが空になるまでループでレンダリングを続ける仕組みだ。
初回の実装では「全コンポーネントの順序付きリストを作成→リストをループしてレンダリング」という2パス方式だったが、最終版ではリスト作成とレンダリングを同時に行う方式に改善された。この方式は再帰的アプローチと比較してメモリ使用量も少ない。
アドバンストルーティングでリクエストパイプラインを完全制御

Astroは静的サイトジェネレーターとしてスタートし、ファイルベースのルーティングを基本としてきた。しかし、ミドルウェア、リダイレクト、リライト、Actions、セッション、i18nといった機能が追加されるにつれ、リクエストのライフサイクル制御が複雑化していた。
認証をActionsより先に実行したい、ログ出力をページレンダリングだけに限定したい、APIリクエストをAstroの外で先に処理したい、といったニーズに応えるため、Astro 7.0ではsrc/fetch.tsファイルを追加することでリクエストパイプラインを完全制御できるようになった。
このパターンは、Cloudflare WorkersやDeno、Bunが採用している標準的なfetchハンドラ形式に準拠している。
import { astro, FetchState } from 'astro/fetch';
export default {
fetch(request: Request) {
const state = new FetchState(request);
// APIリクエストをバックエンドサービスに転送
if (state.url.pathname.startsWith('/api')) {
const url = new URL(
state.url.pathname + state.url.search,
'https://backend-api.example.com'
);
return fetch(new Request(url, request));
}
// それ以外はAstroのページやエンドポイントにフォールバック
return astro(state);
}
}Honoとの統合
アドバンストルーティングAPIはHonoとも互換性がある。Honoは軽量なWebフレームワークで、豊富なミドルウェアエコシステムを持つ。以下のようにBasic認証をAstroアプリケーションに組み込める。
import { astro } from 'astro/hono';
import { Hono } from 'hono';
import { basicAuth } from 'hono/basic-auth';
const app = new Hono();
app.use(basicAuth({ username: 'admin', password: 'secret' }));
app.use(astro());
export default app;より高度な使い方として、個別のAstro機能を別々のミドルウェアとして構成できる。認証、Actions、ミドルウェア、i18n、ページの各レイヤーを任意の順序で積み重ねられるため、認証チェックをActionsより手前に置くといった制御がシンプルに実現できる。このsrc/fetch.tsファイルを追加しなければ、Astroの動作は従来通りだ。
ルートキャッシングとCDNプロバイダ連携

オンデマンドレンダリング応答のキャッシュ制御は、ホスティングサービスごとに異なる仕組みで実装されてきた。Astro 7.0で安定版となったルートキャッシングは、デプロイ先を問わない単一のキャッシングAPIを提供する。
設定の流れはシンプルだ。まずキャッシュプロバイダを一度設定し、あとはページ内でAstro.cache(APIルートではcontext.cache)を使ってレスポンスごとにキャッシュ制御を記述する。標準的なHTTPキャッシングセマンティクスに従うため、特別な知識は不要だ。
import { defineConfig, memoryCache } from 'astro/config';
export default defineConfig({
cache: {
provider: memoryCache(),
},
});---
Astro.cache.set({
maxAge: 120, // 2分間キャッシュ
swr: 60, // 再検証中は1分間 stale を返す
tags: ['products'], // タグベースの無効化用
});
---routeRulesを使えば、ルートグループ単位で宣言的にキャッシュルールを設定できる。
export default defineConfig({
cache: { provider: memoryCache() },
routeRules: {
'/blog/[...path]': { maxAge: 300, swr: 60 },
},
});キャッシュの無効化はcache.invalidate()でタグ単位またはパス単位で行える。CMSのwebhookエンドポイントをAstroで実装し、コンテンツ更新時に該当キャッシュを破棄するといった使い方が可能だ。
CDNキャッシュプロバイダ
Astro 7.0では、Netlify、Vercel、Cloudflare向けのCDNキャッシュプロバイダが実験的機能として追加された(Cloudflareはプライベートベータ)。これらはレスポンスをメモリではなく、各プラットフォームのエッジネットワークにキャッシュする。キャッシュヒット時はサーバー関数を呼び出さず、CDNから直接応答が返るため、さらに高速なレスポンスを実現できる。
アダプタごとに/cacheエントリポイントからプロバイダをインポートする。
import { defineConfig } from 'astro/config';
import netlify from '@astrojs/netlify';
import { cacheNetlify } from '@astrojs/netlify/cache';
export default defineConfig({
adapter: netlify(),
cache: {
provider: cacheNetlify(),
},
});Astro.cache、routeRules、cache.invalidate()のAPIは、どのプロバイダでも同じように動作する。各プロバイダが、Astroのキャッシュディレクティブを各プラットフォームのネイティブなキャッシュ制御ヘッダと無効化APIに変換する仕組みだ。
AIエージェント向け開発サーバー機能

AIコーディングエージェントの普及に伴い、Astro 7.0はエージェント駆動開発を支援する機能を導入した。AIエージェントは、終了しない長時間実行プロセス(開発サーバー)の扱いが苦手だ。シェルコマンドを実行し、終了を待って出力を読むワークフローに、開発サーバーは適合しない。
バックグラウンド開発サーバー
astro dev --backgroundコマンドを使うと、開発サーバーを管理されたバックグラウンドプロセスとして起動できる。コマンドはサーバーがリクエストを受け付け可能になるまでブロックし、URLとプロセスIDを出力してからデタッチする。ポーリングやスリープ、端末出力の解析は一切不要だ。
AstroはAIエージェント内で実行されていることを自動検出し、バックグラウンドモードを自動的に有効にする。エージェントワークフローでは--backgroundフラグの指定すら不要だ。
ロックファイルによって重複インスタンスが防止される。エージェントが誤って2つ目のサーバーを起動しようとすると、既存インスタンスの詳細が返される。astro dev statusで状態確認、astro dev stopで停止、astro dev logsでバックグラウンドサーバーのログを確認できる。また、全実行中の開発サーバーは/_astro/statusヘルスエンドポイントを公開し、エージェントがサーバーの生存を確認できる。
JSONログ出力
Astroのロガーが完全に設定可能になった。AIエージェント向けには、バックグラウンドモードの自動検出時にJSONログが自動的に有効化される。それ以外の用途でも、CLIまたは設定ファイルで有効化できる。
astro dev --jsonimport { defineConfig, logHandlers } from "astro/config";
export default defineConfig({
logger: logHandlers.json()
})構造化ログが必要なユースケースはAIだけではない。SSRで本番運用しているチームは、Kibana、CloudWatch、Grafana/Lokiといったログ集約サービスと統合するために構造化ログを必要としている。従来のAstroのログ出力は、色付き表示や罫線文字、複数行エラーフォーマットなど、人間の可読性に特化しており、機械による解析が困難だった。
compose() APIを使えば、人間向けのコンソール出力と機械向けのJSONログを同時に出力できる。
import { defineConfig, logHandlers } from "astro/config";
export default defineConfig({
logger: logHandlers.compose(
logHandlers.console(),
logHandlers.json()
)
})この記事のポイント
- Astro 7.0は.astroコンパイラとMarkdown/MDX処理をRust化し、ビルド時間を15〜61%短縮した
- Vite 8のRust製バンドラRolldownが標準搭載され、既存の設定をほぼそのまま使える
- アドバンストルーティングでリクエストパイプラインを完全制御でき、Honoとの統合も可能
- ルートキャッシングが安定版となり、Netlify/Vercel/CloudflareのCDNキャッシュプロバイダも追加された
- AIエージェント向けにバックグラウンド開発サーバーとJSONログ出力が自動有効化される

・ 複数業界における17年間のデジタルビジネス開発経験
・ ウェブサイト開発のためのHTML、PHP、CSS、JavaScript等の実用的知識
・ 15ヶ国語対応の多言語SaaSの開発経験
・ 17年間にも及ぶ、Eコマース長期運営経験
・ 幅広い業界でのSEO最適化の豊富な経験

WooCommerce 11.0が商品オブジェクトキャッシュを標準化!新規ストアは自動有効
WooCommerce 11.0がリリースされ、商品オブジェクトキャッシュが新規ストア向けにデフォルトで有効化された。この機能は、商品ページやチェックアウト処理で同じ商品データを何度もデータベースから取得する無駄を省き、ECサイトの表示速度を底上げする。
可変商品がある製品ページでは約9〜12%、バンドル商品を含むチェックアウト処理では6〜12%の処理速度改善が報告されている。今回の変更は、WooCommerce 10.5で実験的導入が始まったキャッシュ機構が安定動作の段階に達したことを示している。
新規にWooCommerce 11.0以上をインストールしたストアには自動で適用されるが、アップグレードした既存ストアの設定は一切変更されない。必要に応じて管理画面から手動でオンにできる仕組みだ。
商品オブジェクトキャッシュの仕組みとパフォーマンス改善の数字

リクエスト内で商品データを使い回すメモリ内キャッシュ
このキャッシュは、一度のHTTPリクエストの間だけ生きている、揮発性のメモリ内キャッシュだ。wc_get_product(123)が呼ばれると、キャッシュに保存されていればデータベースに問い合わせず、すぐに商品オブジェクトの複製を返す。リクエストが終わればキャッシュは完全に消去されるため、次のリクエストで古い情報が残る心配はない。
特に、wc_get_product()を同じIDで何度もコールするパターンが多いテーマやプラグインで効果が大きい。各呼び出しが独立したオブジェクトのクローンを返すため、意図せず商品データの状態を共有してしまうバグも防げるようになった。
このデモは、同じ商品IDに対する繰り返し呼び出しがキャッシュによってどれだけ無駄を省けるかを示している。実際のECサイトでは、商品ループやセール情報の取得、決済フローの中で wc_get_product() が頻繁に呼ばれるため、体感速度の改善が期待できる。
実測値として9〜12%の高速化
WooCommerce 10.5の実験的導入時に公表されたパフォーマンス測定値は、今回の正式適用後も同じだ。可変商品(サイズや色のバリエーションがある商品)の製品ページでは、読み込み時間が9〜12%短縮された。バンドル商品を含むチェックアウト処理では6〜12%高速化されている。
この改善幅は、商品データを繰り返し取得する重いクエリがページ表示のボトルネックになっている状況で顕著だ。小規模なサイトでは効果が体感しにくいケースもあるが、商品数が多いストアや複雑な製品構成のサイトでは、目に見える速度向上が得られる。
WooCommerce 10.5から11.0への段階的な導入プロセス

10.5で実験的機能として登場、10.6で互換性の宣言が「互換」に
商品オブジェクトキャッシュは、WooCommerce 10.5で「実験的機能」として初めて公開された。当時はデフォルトで無効であり、ストア運営者が手動でオンにする必要があった。機能自体は、wc_get_product()の呼び出しをインターセプトし、リクエスト単位のメモリ内キャッシュからデータを返す仕組みだ。
WooCommerce 10.6では、この機能のプラグイン互換性宣言が「非互換」から「互換」に変更された。実験期間中に拡張機能エコシステム全体で互換性の問題が一切報告されなかったため、明示的に互換性を宣言していない拡張機能も、デフォルトで互換とみなされるようになった。
もし拡張機能が明示的に「この機能とは非互換」と宣言している場合は、WooCommerceの機能画面に従来通り非互換の通知が表示される。しかし、そのような宣言が必要になった拡張機能は見つかっていない。
11.0で新規ストアへの自動有効化を実装
WooCommerce 11.0のクリーンインストール時には、インストールプロセスの一環として商品オブジェクトキャッシュが自動で有効になる。機能登録自体は enabled_by_default => false のまま変更されていないが、新規インストール時に明示的に有効化が書き込まれる仕組みをとっている。
これは、HPOS(High-Performance Order Storage)など、他の機能がオプトインから新規インストール時デフォルトへ移行した際と同じパターンだ。バージョンアップだけでは既存ストアの設定を変更しない、慎重な設計が貫かれている。
既存ストアの挙動と手動有効化の手順

アップグレードしても設定は一切変わらない
WooCommerce 11.0より前に構築されたストアは、11.0へアップグレードしても既存のキャッシュ設定がそのまま維持される。もし以前に無効だった(それが11.0以前のストアのデフォルト設定だ)なら、アップグレード後も無効のままだ。すでに手動で有効にしていたストアは、そのまま有効が継続される。
つまり、次の3パターンに整理できる。
- WooCommerce 11.0以降を新規インストール → 自動的に有効(操作不要)
- 既存ストアで機能が無効だった → アップグレード後も無効のまま(手動で有効にできる)
- 既存ストアで機能が有効だった → アップグレード後も有効のまま(操作不要)
手動で有効化する方法
既存ストアでこの機能を試したい場合、管理画面の WooCommerce → 設定 → 詳細設定 → 機能 にアクセスし、「商品オブジェクトをキャッシュする(Cache Product Objects)」のトグルをオンにすればよい。ただし、設定変更後にサイト全体の動作を一通りチェックしておくことが推奨される。
トグルをオンにすると、その瞬間からリクエスト単位の商品キャッシュが働き始める。とくに、複数の拡張機能が同じ商品データにアクセスする大規模ストアでは、即効性のある改善が期待できるだろう。
拡張機能開発者への影響と注意点

標準APIを使っていればコード変更は不要
wc_get_product() やその他 WooCommerce 標準 API を通じて商品を取得している拡張機能は、このキャッシュの影響をまったく受けない。キャッシュは内部で透過的に動作し、呼び出し元には変わらず正しい商品オブジェクトが返る。
キャッシュから返されるのは、あくまで独立したクローンなので、取得した商品オブジェクトを編集しても他の処理に副作用が及ぶことはない。したがって、従来のコーディング規約に従っている拡張機能は、そのまま動作し続ける。
直接SQLを実行する拡張機能が注意すべきポイント
注意が必要なのは、WooCommerceのメタフックを経由せずに、商品データに対して直接SQLクエリを発行している拡張機能だ。これらのクエリはキャッシュの無効化フックを迂回するため、更新後のデータがキャッシュに反映されず、古い情報が返ってしまう可能性がある。
この問題は、商品オブジェクトキャッシュに限った話ではなく、WooCommerceのデータ整合性全般に関わる設計課題だ。該当する拡張機能を開発している場合は、標準の wc_get_product() やメタデータ更新用のAPIを使うことで、キャッシュの恩恵を受けつつ、データ不整合も回避できる。
今後のロードマップと全ストアへの有効化計画

データ蓄積後に全ストアで有効化へ
今回のリリースは通過点であり、最終的にはすべてのストア(既存ストアも含む)で商品オブジェクトキャッシュを有効化する計画が示されている。現時点で具体的な実施時期は明言されていないが、十分なストアでの稼働データが蓄積された段階で判断される。
すでに実験期間で問題が報告されていないこと、新規インストールのデフォルト有効化でさらなる実績が積み上がることを踏まえると、早ければ数バージョン後には全ユーザー対象の強制有効化に踏み切る可能性が高い。
問題が発生した場合の報告先
もし商品オブジェクトキャッシュに関連して予期せぬ挙動が見つかった場合、WooCommerceのGitHubリポジトリでIssueを報告してほしいと開発チームは呼びかけている。拡張機能開発者やストア運営者からのフィードバックが、今後の安定化に直結する。
この記事のポイント
- WooCommerce 11.0 で商品オブジェクトキャッシュが新規ストア向けに自動有効化された
- 可変商品の製品ページ読み込みは 9〜12% 高速化、バンドル商品のチェックアウトは 6〜12% 改善
- 既存ストアはアップグレードしても設定変更なし、管理画面から手動でオンにできる
- 標準の WooCommerce API を使う拡張機能はコード変更不要で動作する
- 最終的には全ストアで有効化される予定で、Issue 報告を募っている

・ 複数業界における17年間のデジタルビジネス開発経験
・ ウェブサイト開発のためのHTML、PHP、CSS、JavaScript等の実用的知識
・ 15ヶ国語対応の多言語SaaSの開発経験
・ 17年間にも及ぶ、Eコマース長期運営経験
・ 幅広い業界でのSEO最適化の豊富な経験

Action Scheduler 4.0.0の変更点、WooCommerceのテーブル肥大化を抑制
WooCommerceの裏側で動くAction Schedulerは、多くのデータベースの中でも特に負荷の高いテーブルを持つ。高トラフィックのストアでは、完了した処理を削除する仕組みが追いつかず、失敗したアクションは一切消えないまま蓄積し続けることが問題になっていた。4.0.0はその根本に手を入れたメジャーアップデートだ。失敗アクションの保持期間をデフォルトで3か月に制限し、クリーンアップを専用のデイリージョブとして分離した。これにより、アクションとログのテーブルサイズが際限なく肥大化する状態を防げる。
本バージョンは7月28日リリース予定のWooCommerce 11.0にバンドルされ、すでにWordPress.orgで単独でも入手可能だ。互換性を壊す変更が複数含まれているため、拡張機能を開発している人や大規模ストアを運用している人は、4.0.0での動作検証を早めに始める必要がある。
4.0.0が狙う根本的なテーブル肥大化の抑制

Action SchedulerはWordPress管理画面での注文処理やメール送信など、WooCommerceの非同期ジョブを支えるコアライブラリだ。これまでは小さなバグフィックスが中心で、3.9.x台を刻んでいた。しかし今回、互換性を壊す複数の変更をまとめて投入するため、バージョン番号が4.0.0にジャンプした。WordPress形式のバージョン付けでは3.9.3の次は3.10ではなく4.0だから、意図的な動きといえる。
失敗アクション 無期限で保持
クリーンアップ キュー処理のついでに小分け
専用ジョブ 毎日3時に一括処理
バッチサイズ 最低250件、最大まで連続
このデモが示すように、クリーンアップの仕組みが根本から見直された。特に失敗アクションが自動削除の対象になった点と、削除処理が専用ジョブとして分離された点が、テーブル肥大化を抑える大きな柱だ。
互換性の壁を越えるメジャーバージョンアップ
4.0.0ではWordPress 6.8以上の動作要件が課せられ、WordPress 7.0との互換性も明示された。これは今後のWooCommerceエコシステムにとって、基盤環境を一段上げる布石でもある。また、後述するユニークアクションの判定変更は、同じフックでも引数が異なれば別物として生成されるようになり、既存コードの重複防止ロジックに影響を与える可能性がある。
失敗アクションの保持期間を3か月に制限

これまでAction Schedulerは、完了とキャンセルのアクションだけを削除していた。失敗ステータスのアクションは、自らフィルターで追加しない限り永久に残り続けた。多忙なストアではこれが原因でアクションテーブルとログテーブルが無制限に成長し、自力で回復できない状況に陥っていた。4.0.0では、失敗アクションが発生から3か月を超えると自動的に削除される専用のクリーンアップパスがデフォルトで有効化された。
3か月という期間は、典型的な四半期会計サイクルに合わせつつ、障害調査のための十分な猶予を残す設計だ。より厳格なデータ保持ポリシーを持つストアでは、action_scheduler_retention_period_for_failedフィルターで秒単位の期間を変更できる。あるいはaction_scheduler_enable_failed_action_cleanupに__return_falseを渡せば、4.0.0以前と同じく無期限保持に戻せる。
注目すべき点は、既にaction_scheduler_default_cleaner_statusesフィルターで失敗ステータスを追加していた場合、そちらの設定が優先されることだ。その場合は、4.0.0の新しい失敗専用パスではなく、既存のクリーンアップサイクルに統合されるため、動作が変わることはない。
クリーンアップを専用のデイリージョブに分離

旧バージョンでは、古いアクションの削除はキューの各バッチ処理にインラインで埋め込まれ、一度に少量しか処理されなかった。そのため、処理量の多いストアではクリーンアップが追いつかず、テーブルが大きくなる一方だった。4.0.0では、クリーンアップを独立したタスクとし、サイト時刻で毎日午前3時に一度だけ実行する方式に変更された。
この方式により、削除処理が通常のキュー処理のパフォーマンスに影響を与えなくなり、大規模テーブルでも遅延なく追いつけるようになった。バッチサイズはaction_scheduler_cleanup_batch_sizeフィルターで変更可能で、デフォルトの250件より少なくも多くもできる。もし従来のインライン方式に戻したい場合は、カスタムキュークリーナーを実装すれば自動的にそちらが使われるが、ほとんどのサイトではその必要はないだろう。
ユニークアクションの判定に引数が加わった

as_enqueue_async_action()やスケジュール系関数の$uniqueパラメータは、同じアクションが重複して生成されるのを防ぐためのものだ。従来はフック名とグループだけを比較していたため、引数が異なる2つのアクションでも同一とみなされ、後のほうが黙って破棄される挙動だった。これが4.0.0では、引数の内容まで含めて同一性を判定するように変更された。
この変更は互換性を壊すため、特に注意が必要だ。旧来のフックとグループだけの重複防止に依存していたコードでは、これまでよりも多くのアクションが生成されるようになる。意図しない大量のジョブがキューに積まれないよう、$uniqueを使っている箇所は必ず見直してほしい。
WooCommerceサイトへの実務的な影響と移行のポイント

4.0.0はWooCommerce 11.0のバンドルに先立って単独テストが可能だ。大規模ストアや独自の拡張機能でAction Schedulerを利用している開発者は、以下の3点を中心にステージング環境で動作検証を行うことを推奨する。
- 失敗アクションの保持ポリシー
3か月のデフォルトが自社のデータ保持要件に合致するか確認し、必要ならフィルターで調整する。 - ユニークアクションの重複防止ロジック
$unique=trueを使用している全箇所を洗い出し、引数が異なるアクションが正しく生成されるかテストする。 - クリーンアップの実行タイミング
デイリージョブへの移行により、削除がバッチ処理から外れたことで、期待していたリアルタイム性が失われていないか確認する。必要に応じてカスタムクリーナーを実装する。
開発元のWooCommerceチームはGitHubでフィードバックを募集しており、予期しない動作があれば早期に報告するよう呼びかけている。WooCommerce 11.0の正式リリースまで1か月あまり。致命的なトラブルを回避するために、今のうちに4.0.0との互換性テストを済ませておくことが賢明だ。
この記事のポイント
- Action Scheduler 4.0.0はテーブル肥大化を防ぐため、クリーンアップの仕組みを根本から見直したメジャーアップデート
- 失敗アクションがデフォルトで3か月後に自動削除されるようになり、保持期間のカスタマイズも可能
- クリーンアップが専用のデイリージョブとして実行され、キュー処理のパフォーマンスに影響しなくなった
- ユニークアクションの重複チェックに引数が含まれるようになり、既存の重複防止ロジックへの影響に注意が必要
- WooCommerce 11.0へのバンドル前に単体テストを行い、互換性の問題を早期に発見することが重要

・ 複数業界における17年間のデジタルビジネス開発経験
・ ウェブサイト開発のためのHTML、PHP、CSS、JavaScript等の実用的知識
・ 15ヶ国語対応の多言語SaaSの開発経験
・ 17年間にも及ぶ、Eコマース長期運営経験
・ 幅広い業界でのSEO最適化の豊富な経験

Node.jsが6月17日に緊急セキュリティリリース。26.x/24.x/22.xにHIGHの脆弱性修正
Node.jsプロジェクトは2026年6月17日、現行の全サポートラインを対象とする緊急セキュリティリリースを実施する。対象はバージョン26.x、24.x、22.xの3系統だ。
今回修正される脆弱性の最高深刻度は「HIGH」に分類されている。本番サーバーに直接影響しうるレベルのため、運用担当者は即日適用を検討する必要がある。
本記事では、公開された情報をもとに影響範囲と具体的なアップデート手順、放置した場合のリスクを整理する。セキュリティリリースの背景にあるプロセスや、サポート終了バージョンを依然使っているシステムへの警鐘も合わせて伝える。
今回のセキュリティリリースの概要

公開日と対象バージョン
リリースは2026年6月17日(水)またはその直後に行われる。Node.jsのセキュリティポリシーでは、深刻度が高い脆弱性が報告された場合、定例外の緊急パッチとして全アクティブなリリースラインにバックポートされる。
今回の対象は26.x系、24.x系、22.x系の3つ。いずれもNode.jsの長期サポート(LTS)または現行のメンテナンス対象ラインだ。26.xは最新の偶数系で、本記事執筆時点ではActive LTSのステータスにある。
修正される脆弱性の深刻度
Node.jsのセキュリティアドバイザリでは、脆弱性はCritical(最重要)、High(重要)、Moderate(中程度)、Low(低)の4段階で評価される。今回のリリースで修正される問題の最大深刻度は、3つのラインすべてで「HIGH」とされた。
深刻度がHIGHということは、攻撃者がリモートから比較的容易に悪用できる、あるいはサービス停止や情報漏洩につながる可能性があることを示す。具体的にどのモジュールやプロトコルが影響を受けるかは、リリース当日まで伏せられる慣行だ。
上の図はあくまで概念的な例だが、今回のパッチも同様に、OSや依存ライブラリのレイヤーではなくNode.jsランタイム自身の脆弱性に対応するものだ。
影響を受けるバージョンと深刻度の内訳

各リリースラインの深刻度
- 26.x系:修正される最も高い深刻度はHIGH
- 24.x系:修正される最も高い深刻度はHIGH
- 22.x系:修正される最も高い深刻度はHIGH
いずれもHIGHに分類されている点に注意が必要だ。これらは独立したリリースラインであり、別のコードベースに別個の修正が適用される。つまり、共通の根本問題を共有している可能性もあるが、ラインごとに異なる種類の脆弱性が含まれているケースもある。
EOLバージョンにも注意
Node.jsのセキュリティリリースでは、公式サポートが終了したバージョン(End-of-Life)にも同様の脆弱性が存在する。セキュリティパッチは提供されないため、EOLバージョンをまだ利用しているプロジェクトは早急にサポート対象のラインへ移行すべきだ。
例えば2025年4月にEOLを迎えた20.x系は、今回のセキュリティ修正の対象外だが、内部では同様の問題を抱えている可能性が高い。Node.jsのリリーススケジュールに沿った定期的なアップグレードが、システム全体の防御力を高める。
なぜこのセキュリティリリースが重要なのか

実装別のリスクと実例
Node.jsはHTTPサーバーとして単体で動くケースも多いが、リバースプロキシの背後で利用される場面が一般的だ。脆弱性の種類によっては、WAFや前段のネットワーク機器で防御しきれないケースがある。
過去のNode.js HIGHレベルのセキュリティアドバイザリでは、HTTP/2のフレーム解析の不備によるリソース枯渇や、TLSハンドシェイク時のメモリ破損などが報告されてきた。今回詳細は未公表だが、同様にネットワーク越しの攻撃が想定されると考えるのが妥当だ。
アップデートしない場合の想定被害
深刻度HIGHの脆弱性を放置すると、サービス停止(DoS)、情報漏えい、リモートコード実行のいずれかのリスクが残る。特にNode.jsは多くのWebアプリケーションやAPIサーバー、マイクロサービスの基盤として動作しているため、単一のパッチ未適用が複数システムに波及しうる。
また、パブリックなアドバイザリが公開された後は、攻撃者による実証コード(PoC)の拡散が早まる。リリース後24時間以内に対応を完了するのが、業界標準の目安だ。
推奨される対応とアップデート手順

アップデートのチェックリスト
- 稼働中のNode.jsバージョンを確認し、26.x/24.x/22.xのいずれかに該当するか調べる
- 開発環境・ステージング環境で先にアップデートし、自動テストを通過させる
- 本番環境にローリングアップデートで適用する(Blue-Greenデプロイが理想)
- 適用後にアプリケーションのログとパフォーマンスメトリクスを監視する
この流れを自動化しているチームであれば、多くの場合パイプラインに新バージョン番号を設定するだけで済む。Node.jsのマイナーアップデートは互換性を壊さない想定だが、念のため結合テストの再実行が推奨される。
本番環境での注意点
コンテナを使っているならベースイメージの更新で対応できる。Dockerfileで指定している FROM node:22-alpine のような行をリビルドすれば、自動的に最新のパッチバージョンが取り込まれる。
一方、OSのパッケージマネージャーで管理している場合は、NodeSourceなどの公式リポジトリから提供されるまでタイムラグがある場合がある。その際は nvm や fnm などのバージョンマネージャーを使って直接バイナリを切り替える方法も選択肢だ。
リリースタイミングと今後の情報収集

セキュリティパッチは2026年6月17日(水)に公開される。タイムゾーンは明示されていないが、通常はUTCの昼頃にGitHubと公式サイトで同時公開されるパターンが多い。
アップデート後も、Node.jsのセキュリティメーリングリスト(nodejs-sec)を購読しておくと、次の緊急リリースや脆弱性の詳細をいち早く受け取れる。日頃から依存する基盤ソフトウェアの情報をキャッチアップする習慣が、致命的なインシデントを防ぐ最後の砦となる。
この記事のポイント
- Node.js 26.x/24.x/22.xの3系統に緊急セキュリティリリースが公開される
- 修正される脆弱性の最高深刻度はすべてHIGH。早急なアップデートが必要
- EOLバージョンの利用者はサポート対象ラインへの移行を急ぐべき
- アップデートはステージング検証→本番ローリングデプロイの標準フローで対処可能

・ 複数業界における17年間のデジタルビジネス開発経験
・ ウェブサイト開発のためのHTML、PHP、CSS、JavaScript等の実用的知識
・ 15ヶ国語対応の多言語SaaSの開発経験
・ 17年間にも及ぶ、Eコマース長期運営経験
・ 幅広い業界でのSEO最適化の豊富な経験

WooCommerce 10.9 Beta公開、決済フローの改善と管理画面刷新の全容
WooCommerce 10.9 のベータ版が公開された。正式リリースは2026年6月23日の予定だ。今回のアップデートでは、決済フローのデータベース負荷を下げる施策と管理画面の UI 刷新、そしてコアへのメールログ機能の統合という 3 つの柱に加え、多数の実験的機能が同梱されている。
中でも決済の「離脱」を減らす設計変更は、100 を超える細かなデータベース処理の整理とともに、ストア運営者にとって直接的なパフォーマンス向上をもたらす。また、長年要望の多かったバリエーション画像ギャラリーやカラースウォッチが機能フラグとしてコアに組み込まれ、開発者向けの新 API 群も登場する。本記事では、EC サイト運営者が知っておくべき変更点を中心に、WooCommerce 10.9 の内容をわかりやすく解説する。
決済フローの最適化とデータベース負荷低減

WooCommerce では従来、ユーザーが商品をカートに入れて決済画面を開いた時点で「下書きの注文(draft order)」というレコードを作成していた。この下書きは、購入を完了しなかった訪問者でもそのままデータベースに残り、時間が経つと大量の孤立レコードとなってストアのパフォーマンスを圧迫する原因になっていた。
10.9 ではこの処理が見直され、注文確定の直前まで下書きの作成を遅延させる設計に切り替わる。具体的には、Store API が新規セッションの GET リクエストや PATCH リクエストを受けても、すぐに下書き注文を永続化しない。結果として、購入が成立しなかったユーザーによる不要なレコードが大幅に減少し、データベースへの書き込み負荷が軽減される仕組みだ。
これに付随し、決済処理の保存回数やルックアップの最適化、商品フィルタの SQL 挙動の改善、管理画面と店舗側の商品ページにおけるクエリ数の抑制も同時に行われる。全体として、特に商品数が多いストアでは、管理画面やチェックアウト時の体感スピードが段違いに変わるだろう。
上図は旧来のやり方と 10.9 の改善点を概念的に示したものだ。実際の実装では Store API と内部の注文管理の細かい連携が組み合わさり、データベースへの影響はより精密にコントロールされる。
WooCommerce管理画面のUIが刷新

店舗の管理画面にアクセスしたときに「すっきりした」と感じるようであれば、それは錯覚ではない。10.9 では WooCommerce の管理ヘッダーが WordPress のデザインシステムに合わせて洗練され、全体的な見た目が統一される。
加えて、小さな画面サイズで表示が崩れていた管理画面の各ビューには個別の修正が行われ、管理画面全体で利用されるモーダル(ポップアップ)も一貫性のあるスタイルに揃えられた。これまで各ページでちらばっていた「タスクリストのリマインダーバー」は大部分の管理画面から削除されるが、初期設定の案内自体は WooCommerce ダッシュボードやアクティビティパネルから引き続き確認できる。
この UI 調整は、一見すると小さな変更に見えるが、日常的に管理画面を操作する運営者にとっては、不要な情報を減らし、必要な操作に集中しやすくなる利点がある。パフォーマンス面でも、画面描画に使われる余分な JS や CSS が整理されているため、軽量化にもつながっている。
トランザクションメールのログ機能がコアに実装

これまで WooCommerce で送信される注文確認メールやステータス更新のメールが「届いていない」というトラブルに遭遇した場合、原因を特定するには別途メールログ用のプラグインをインストールするか、テストメールを手動で送信するしかなかった。
10.9 からは、こうしたトランザクションメールの送信状況が WooCommerce コア内で直接記録されるようになる。ログは WooCommerce → ステータス → ログ の画面から確認でき、送信結果(成功・失敗)や、利用可能な場合は失敗理由も表示される。新たにプラグインを追加する必要はない。
この機能により、店舗運営者はメール不達の調査がはるかにスムーズになる。ログには日時やトリガーとなったアクションも含まれるため、顧客から「メールが届かない」という問い合わせがあった際、迅速に状況を確認できるようになるだろう。
実験的機能の最新情報

WooCommerce 10.9 は Automattic の「Radical Speed Month」の勢いもあり、数多くの実験的・ベータ機能が盛り込まれている。いずれもオプトインまたは機能フラグで有効化するタイプだが、将来の標準機能を見据えた重要な布石だ。
Canonical WooCommerce abilities 〜商品と注文の操作を抽象化〜
WooCommerce 10.9 では、商品や注文を操作するための最初の「カノニカル(標準的)な abilities」が導入される。abilities は、REST API のエンドポイントを 1 対 1 でラップするのではなく、スキーマで定義されたビジネス操作(商品の問い合わせ、作成・更新、注文の検索、ステータス変更、注文メモの追加など)を、権限チェックやメタデータを伴って提供する仕組みだ。
これにより、WooCommerce は WordPress Abilities API や MCP、管理ツール、CLI、自動化処理、そして将来のあらゆる「エージェント」インターフェースに対して、トランスポートに依存しない共通の契約を持つことになる。最初に商品と注文の abilities が提供され、既存の WooCommerce 専用 MCP エンドポイントは猶予期間として残される。さらに、同じパターンがサブスクリプションや決済口座、配送ルール、商品アドオン、ギフトカードといった拡張機能の領域にも展開される予定だ。
商品管理エディタの移行と製品エディタ v2 の廃止予定
実験的な商品カタログエディタは 10.9 でも成熟を続けており、クラッシュリカバリ、ドロワーや URL 状態の処理改善、よりタイプを認識したクイック編集フィールド、バリエーション編集の強化などが含まれる。一方で、ブロックベースの製品エディタ(Product Editor)ベータとその拡張 API は、WooCommerce 11.0 での削除を前に非推奨となる。
拡張機能の開発者はこの API を利用しているかを今すぐ監査し、移行パスを計画する必要がある。ただし、この廃止は WooCommerce 内の商品データやコンテンツには一切の影響を及ぼさないため、商品情報そのものが消える心配はない。
バリエーション画像ギャラリーとカラースウォッチ
同じ商品の色違いやサイズ違いに対して、画像ギャラリーを切り替える「バリエーション画像ギャラリー」がネイティブ機能として WooCommerce に追加される(デフォルトではオフ)。WooCommerce → 設定 → 詳細 → 機能 の「Variation gallery」トグルから有効化できる。
さらに、ビジュアル属性とカラースウォッチも機能フラグ制御で試験的に導入される。属性の各項目(例えば「赤」「青」)に色データや画像データを持たせ、商品フィルターやバリエーションセレクターのブロックでスウォッチを表示できるようになる。ストア API のレスポンスも、ビジュアル属性が必要な場合にだけ関連フィールドを返すよう配慮されているため、既存の連携に影響は少ない。
この他にも、買い物客向けのコレクション機能(ウィッシュリストや後で買う)、ブロックベースのメールエディタのテンプレート更新検知と部分適用、在庫復活通知、顧客レビューリクエストメール、実験的なデュアル API と GraphQL 基盤など、多岐にわたるベータ機能が同時に公開されている。いずれも開発者フィードバックを受け付けながら、今後のバージョンで徐々に本格導入される見込みだ。
この記事のポイント
- WooCommerce 10.9 では、決済前の下書き注文作成が遅延され、データベース負荷が大幅に軽減される
- 管理画面のヘッダーやモーダル、タスクリストの表示が整理され、よりスッキリした UI に
- メール送信の成否を WooCommerce の管理画面内でログ確認できるようになった
- 商品と注文の操作を抽象化する abilities や、バリエーション画像ギャラリーなど実験的機能が多数追加

・ 複数業界における17年間のデジタルビジネス開発経験
・ ウェブサイト開発のためのHTML、PHP、CSS、JavaScript等の実用的知識
・ 15ヶ国語対応の多言語SaaSの開発経験
・ 17年間にも及ぶ、Eコマース長期運営経験
・ 幅広い業界でのSEO最適化の豊富な経験

VS Code 1.124が公開、AIエージェントがさらに賢く進化しマルチチャット対応
“`md — — title: “VS Code 1.124が公開。AIエージェントがさらに賢く進化しマルチチャット対応” meta_description: “VS Code 1.124が2026年6月に公開。Agentsウィンドウのマルチチャット対応やバックグラウンド送信、WSL連携の強化、統合ブラウザの改善点を詳しく解説。” tags: [“VS Code”, “アップデート”, “AI”, “開発支援”, “エージェント”, “統合ブラウザ”, “WSL”] slug: “vscode-1-124-release” scrape_method: “trafilatura” image_prompt: “Upper portion: a wide monitor screen showing the Visual Studio Code editor with the Agents window open, displaying multiple chat sessions in a grid layout, all interface text in English. The VS Code logo (an angular blue ribbon mark) prominently displayed in photorealistic 3D with subtle reflections. Lower portion: a sleek server rack with glowing blue and purple fiber optic cables in a dark data center. Composition: split-screen style with key visual elements positioned in the upper and lower portions of the frame, with a natural atmospheric transition in between, no horizontal bands or strips across the frame. 16:9 aspect ratio. If UI screens, dashboards, code editors, or admin panels appear, all text within them must be in English. If laptops or monitors appear, use ultra-thin bezel modern design. No visible year numbers on calendars, screens, or documents.” featured_text: “VS Code 1.124\nAIエージェント進化” — —
VS Code 1.124が2026年6月に公開された。今回のアップデートの中核は、AIエージェント機能「Agents」ウィンドウの大幅な機能強化だ。マルチチャットやバックグラウンド送信といったワークフローを加速させる機能が追加され、開発者の作業効率は一段と向上する。
このリリースでは、WSL環境とのシームレスな接続や、統合ブラウザのカスタマイズ性向上も同時に実現された。大規模なリファクタリングや新規開発の伴走者として、VS CodeのAI機能はより実用的な段階に入ったといえる。
本記事では、VS Code 1.124の主要な変更点を3つの観点から掘り下げ、実際の開発現場でどう役立つのかを具体的に解説する。
Agentsウィンドウのマルチチャット対応

今回のアップデートで最も注目すべきは、Agentsウィンドウにおけるマルチチャット機能の正式な導入だ。これまで1つのセッション内で完結していた対話が、複数の並列セッションとして管理できるようになった。
具体的には、ローカルセッションにおいて複数のチャットを同時に立ち上げ、それぞれ異なるタスクを進行させられる。あるチャットでコードのリファクタリングを指示している間に、別のチャットで新しい機能の設計について相談する、といった使い方が可能だ。
上の図のように、開発者はエージェントの応答を待つことなく次の指示を出せる。これにより、思考の分断が減り、作業スピードが格段に上がる。マルチタスクが前提の現代の開発フローに、AIがようやく追いついた形だ。
バックグラウンド送信で考える時間を確保
マルチチャットをさらに快適にするのが、バックグラウンド送信機能だ。新しいセッションを開始する際、Alt+Enter(macOSではCmd+Enter)を押すか、送信ボタンをAltキーを押しながらクリックすることで、そのセッションにすぐに移動せずに次のメッセージを入力できる。
これにより、複数の質問や指示を立て続けにエージェントへ送り、応答をバックグラウンドで処理させながら、自分は次のタスクの構想を練るという働き方が実現する。まさに「ながら作業」の効率を最大限に引き出す設計だ。
セッション管理のキーボード操作が充実
増えたセッションを素早く操作するためのショートカットも整備された。Ctrl+1からCtrl+9(macOSではCmd+1〜Cmd+9)で、グリッド表示されたセッションを位置で直接フォーカスできる。さらに、Ctrl+K Ctrl+W(macOSではCmd+K Cmd+W)で全セッションを一括クローズすることも可能だ。
チャット入力の履歴も、現在のセッション内にスコープが限定されるようになった。上下の矢印キーで過去のプロンプトを呼び出す際、他のセッションの履歴が混ざることがなくなり、誤操作が減る。
統合ブラウザの使い勝手が向上

VS Codeに内蔵された統合ブラウザも、今回のリリースで実用性が高まった。ツールバーのアクションを個別に表示・非表示できるようになり、自分がよく使う機能だけを並べたミニマルなUIを構築できる。
コンテキストメニューから各アクションの表示を切り替えられるため、プレビュー用途ではナビゲーション系だけ、デバッグ用途では開発者ツール系だけ、といった使い分けが容易になった。
アドレスバーでのURL履歴ナビゲーション
統合ブラウザのアドレスバーでも、上下の矢印キーで過去に訪れたURLをたどれるようになった。これはデスクトップブラウザではおなじみの操作だが、VS Code内のブラウザでも同じ感覚で履歴を遡れるのは地味に大きい。ちょっとしたAPIドキュメントの巡回作業がよりスムーズになる。
エディタの細かな改良点

AI機能やブラウザだけでなく、エディタの基礎的な部分にも手が入っている。シンプルファイルダイアログでは、新しくフォルダをその場で作成できるようになった。ファイルを保存する際、わざわざOSのファイラーを開かずとも、ダイアログ内でフォルダを作ってすぐに格納できる。
もう1つ、エディタのカスタマイズに関わる変更として、折りたたみマーカーのパターンに正規表現のフラグが使えるようになった。language-configuration.jsonで{ pattern, flags }というオブジェクト形式を受け付けるようになり、大文字小文字を区別しないマッチングなどが可能になる。大規模な設定ファイルを管理する開発者には嬉しい拡張だ。
WSL環境との連携がさらに強化

Windows Subsystem for Linux(WSL)を利用する開発者にとって、今回のアップデートは実用的な価値が大きい。AgentsウィンドウがWSL接続を正式にサポートしたことで、Windows上のVS CodeからLinux環境のコードベースに対して直接AIエージェントを操作できるようになった。
WSLとは、Windows上でLinuxの実行環境をネイティブに近い形で動かす仕組みだ。Web開発やデータサイエンスの分野では、Linuxネイティブのツールチェーンを使うためにWSLを利用するケースが増えている。今回の対応により、WSL内のプロジェクトに対しても、エージェントがコンテキストを理解した上でコード生成やリファクタリングを行える。
これまでWSL上で作業する際、AI機能を使うためにWindows側へコードをコピーするといった一手間が必要だった。その手間がなくなるだけで、日々の開発効率は確実に改善される。
この記事のポイント
- Agentsウィンドウがマルチチャットに対応し、複数のタスクを並行してエージェントに依頼できる
- バックグラウンド送信でセッションを離れずに次の指示を入力可能。思考の連続性が保たれる
- キーボードショートカットでセッションのフォーカス移動や一括クローズができるようになった
- 統合ブラウザのツールバーがカスタマイズ可能になり、URL履歴の操作も改善
- WSL環境との連携がエージェント機能にまで拡大し、クロスプラットフォーム開発がより快適に

・ 複数業界における17年間のデジタルビジネス開発経験
・ ウェブサイト開発のためのHTML、PHP、CSS、JavaScript等の実用的知識
・ 15ヶ国語対応の多言語SaaSの開発経験
・ 17年間にも及ぶ、Eコマース長期運営経験
・ 幅広い業界でのSEO最適化の豊富な経験

WooCommerce 10.9でデュアルAPI登場、PHPコードからGraphQLを自動生成
WooCommerce 10.9で、PHPコードからGraphQL APIを自動生成する「デュアルAPI」が実験的に導入された。AutomatticのRadical Speed Monthイニシアチブの一環として開発されたこの機能は、開発者がPHPクラスに属性(アトリビュート)を付与するだけで、REST APIとGraphQL APIの両方を提供できるようにするものだ。
本記事では、デュアルAPIの技術的な仕組みと、プラグイン開発者にとっての具体的なメリット、現時点での制限と注意点を詳しく解説する。PHP 8.1以上が必須となるため、サーバー環境のバージョンアップを検討している運営者にも役立つ情報をまとめた。
WooCommerceデュアルAPIの概要と狙い

デュアルAPIの3つの構成要素
WooCommerce Developer Blogの記事によれば、デュアルAPIは大きく3つのパーツで成り立っている。1つ目は、PHP属性で装飾されたプレーンなPHPクラスで表現される「コードAPI」だ。これはコマンドパターンで実行可能なクラスか、データ転送オブジェクト(DTO)として定義される。2つ目は、そのコードAPIから自動生成される「GraphQL API」。そして3つ目が、開発時にコードからGraphQLパートを生成する「ビルドスクリプト」である。
なぜGraphQL APIを自動生成するのか
従来のWooCommerce REST APIは、決められたエンドポイントから必要なデータを取得する方式だった。一方、GraphQLはクライアントが必要なフィールドだけをリクエストできるため、オーバーフェッチやアンダーフェッチを防げる。モバイルアプリやヘッドレスコマース構成との相性も良い。しかし、APIを二重にメンテナンスする手間は大きい。そこで、PHPコードを信頼できる唯一の情報源(ソースオブトゥルース)とし、GraphQL側を自動生成することで、開発効率と一貫性を両立させる狙いがある。
コードからGraphQLを自動生成する仕組み
PHPクラスに定義した属性や型情報が、GraphQLスキーマのクエリ名、引数、返却型へと自動的にマッピングされる。開発者はPHPコードだけを書けば、対応するGraphQLエンドポイントが手に入る仕組みだ。
PHP属性によるメタデータの付与
この仕組みの中核が、PHP 8.0で導入された「属性(アトリビュート)」だ。クラスやメソッド、プロパティに #[Name('coupon')] や #[Description('...')] といった形でメタデータを埋め込める。このメタデータをビルドスクリプトが読み取り、GraphQLの型定義やドキュメントを自動構築する。PHPのコードベースがそのままAPIの仕様書になるわけだ。
コマンドクラスとDTOの変換ルール
実行可能なコマンドクラスはGraphQLのクエリやミューテーションに変換される。引数には #[Description] 属性付きで説明がつき、デフォルト値やnull許容もスキーマに反映される。DTOはGraphQLのインプットタイプやアウトプットタイプになる。PHPの列挙型(enum)や #[ArrayOf('int')] のようなカスタム属性を使えば、スカラー型の配列や独自型も正確に表現できる。
ビルドスクリプトの役割
ビルドスクリプトは開発時に一度だけ実行する。WooCommerceコアに同梱されており、プラグイン開発者も自分のコードに対して実行可能だ。スクリプトがコードAPIを解析し、GraphQLスキーマをファイルとして出力する。実行時にはそのスキーマに従ってリクエストが処理されるため、本番環境で毎回コードを解析する必要はない。
プラグイン開発におけるデュアルAPIの活用方法

独自のデュアルAPIを作成する手順
WooCommerce Developer Blogの記事では、プラグイン開発者がこのインフラを再利用して独自のデュアルAPIを構築できる点が強調されている。手順はシンプルだ。まず、プラグイン内にコマンドクラスとDTOを定義し、必要な属性を付与する。次に、WooCommerceのビルドスクリプトを開発時に走らせると、GraphQLパートが自動生成される。最後に rest_api_init フックを使い、ユーティリティメソッドで任意のエンドポイントURLにGraphQL APIを登録すれば完了する。
認証・認可のカスタマイズと拡張ポイント
コアのインフラは、クラスリゾルバ(デフォルトではWooCommerceのDIコンテナ)や、認証用のプリンシパルクラス、認可用の #[RequiredCapability] 属性を提供している。これらはそのまま使うことも、独自の認証・認可ロジックに置き換えることも可能だ。例えば、外部サービスと連携するプラグインであれば、カスタムのプリンシパルクラスを差し込んでAPIキー認証を実装できる。柔軟な拡張性が意識された設計である。
現時点での制限と実験的機能の注意点

後方互換性の保証がない理由
このデュアルAPIは実験的な機能であり、明示的に有効化しない限り動作しない。WooCommerce Developer Blogの記事でも、インフラ部分とコアAPIのいずれについても、将来のリリースで後方互換性のない変更が加えられる可能性があると明言されている。特に、より徹底したテストの過程で、属性の命名規則やクラス構成に破壊的変更が入るかもしれない。本番環境への導入は、安定版となるまで控えたほうが無難だ。
コアAPIのプルーフオブコンセプト
WooCommerce 10.9に同梱されるコアAPIは、製品とクーポンをカバーする限定的なものだ。記事では、これはあくまで「プルーフオブコンセプト(概念実証)」であり、今後のバージョンでクラスやクエリが大幅に変更されるか、まったく別のものに置き換わる可能性があるとされている。現時点では、開発環境やステージング環境でのテスト利用が推奨される。
PHP 7環境の安全性とバージョンアップの必要性

PHP 8.1依存の技術的理由
デュアルAPIはPHP 8.1以上を要求する。これは、PHP属性と列挙型(enum)に依存しているためだ。属性がなければGraphQLスキーマを自動生成できず、enumがなければDTOの厳密な型表現が難しくなる。WooCommerceとしても、公式にPHP 8.1以上を推奨しており、PHP 7.4や8.0のサポートは将来的に終了する方針が示されている。
PHP 7環境での影響と注意点
WooCommerce Developer Blogの記事によると、PHP 8.1固有のコードは、この機能が無効の場合やサーバーがPHP 7.4/8.0で動作している場合には一切実行されない設計になっている。したがって、機能を誤って有効化しようとしてもエラーは発生せず、GraphQLエンドポイントが機能しないだけだ。ただし、プラグインやカスタムコードから src/Api 配下のクラスを直接呼び出すと、PHP 7環境ではエラーになるため注意が必要である。
将来のPHPバージョンサポート計画
WooCommerceは過去にPHP 7.2/7.3のサポートを段階的に終了してきた。今回のデュアルAPI導入は、PHP 8.1移行を加速させる呼び水となるだろう。WordPress 7.0がPHP 7.2/7.3のサポートを打ち切り、PHP 8互換がベータを脱したことも追い風だ。ECサイト運営者は、セキュリティ面とパフォーマンス面からも、早めのPHPバージョンアップを検討すべき局面を迎えている。
この記事のポイント
- WooCommerce 10.9で実験的デュアルAPIが導入され、PHPコードからGraphQL APIを自動生成できるようになった
- PHP属性とDTOによってコードがAPI仕様を兼ね、プラグイン開発者も独自のデュアルAPIを構築可能
- 現時点では後方互換性が保証されない実験的機能であり、本番利用は避け、テスト環境での検証が推奨される
- PHP 8.1以上が必須で、PHP 7環境では機能が無効化されるが、安全面でのリスクは低い
- PHPバージョンアップの必要性が高まっており、ECサイトの将来的な安定稼働に向けて計画的な移行が望ましい

・ 複数業界における17年間のデジタルビジネス開発経験
・ ウェブサイト開発のためのHTML、PHP、CSS、JavaScript等の実用的知識
・ 15ヶ国語対応の多言語SaaSの開発経験
・ 17年間にも及ぶ、Eコマース長期運営経験
・ 幅広い業界でのSEO最適化の豊富な経験
