投稿者アーカイブ

Shopify×Vercel、Hydrogenフレームワークを再構築。マルチフレームワーク対応とAIエージェント導入

Shopify×Vercel、Hydrogenフレームワークを再構築。マルチフレームワーク対応とAIエージェント導入

ShopifyとVercelが、ヘッドレスコマースフレームワーク「Hydrogen」の全面的な再構築に着手した。2026年7月30日にVercel Blogが発表した内容によると、新バージョンはオープンソース化され、Next.js以外のフレームワークでも動作するランタイム非依存型へと生まれ変わる。

この刷新により、開発者は型安全なAPIクライアントやカート状態管理をワンインポートで利用でき、ストアフロントの構築が大幅に効率化される。さらに「Standard Actions」と呼ばれるエージェント型コマース機能が追加され、AIが購入支援や在庫確認などを自律的に処理する仕組みが提供される。

Hydrogenとは何か?

Hydrogenとは何か?

HydrogenはShopifyが提供するヘッドレスコマース専用のフロントエンドフレームワークだ。従来のShopifyストアはテーマで構築するが、Hydrogenを使うとReactコンポーネントで自由にカスタマイズした店舗を開発し、Shopifyのバックエンドとシームレスに連携できる。つまり「自由な画面デザイン」と「Shopifyの堅牢なバックエンド」を両立させる架け橋と言ってよい。

これまでHydrogenはNext.jsに最適化された形で展開されていたため、開発者はReact/Next.jsのエコシステムに縛られていた。NuxtやSvelteなど別のフレームワークを使う場合は、独自にAPI連携や状態管理を実装する必要があり、それが導入障壁になっていた。

何が変わるのか?

何が変わるのか?

今回の再構築では、Hydrogenの根本的な設計が刷新される。具体的には以下の3つの大きな変化がある。

従来のHydrogen(Before)
フレームワーク Next.js のみ対応
APIクライアント カスタム実装が必要
カート状態 独自の状態管理が必須
AI機能 なし
↓
新しいHydrogen(After)
フレームワーク Next.js / Nuxt / Svelte 等に対応
開発者 型安全APIクライアントをインポート 1行
開発者 カート状態管理を標準提供
AI エージェントが購入支援・在庫確認

この比較から分かる通り、新しいHydrogenではフレームワークの選択肢が広がり、面倒な共通処理はフレームワークが肩代わりしてくれる。結果として、開発者はビジネスロジックに集中できる。

オープンソース化とランタイム非依存

最大の変更点は、Hydrogenが完全オープンソースになり、ランタイムにも依存しなくなったことだ。旧バージョンは実質的にNext.jsアプリとして動作する設計だったが、新しいHydrogenは@shopify/hydrogenパッケージをブラウザ用JavaScriptで動作するように再実装し、@shopify/storefront-api-clientと共に利用する形になる。

これにより、開発者はNext.jsはもちろん、Nuxt、SvelteKit、あるいは純粋なViteアプリケーションなど、好みのフレームワーク上でHydrogenストアフロントを構築できる。Vercelの発表ブログでは「cart.query()やcart.lineItems()といったAPIをインポートするだけで、カートの操作や状態管理が完了する」と説明されており、従来のようにフレームワークごとに接着コードを書く手間が不要になる。

標準Actionsとエージェントコマース

もうひとつの目玉は「Standard Actions」の導入だ。これはAIエージェントがショッピング行動を自立支援するための統一インターフェースであり、店舗の様々な操作(検索、商品詳細の取得、カート追加、購入)をアクションとして定義する。

ユーザーが自然言語で要望を伝えると、AIエージェントが最適なアクションを選択して結果を返す。この仕組みを利用すれば、「オススメの夏用ジャケットを見せて」「先週買おうとした商品をカートに戻して」といった会話型の購買体験をストアフロントに組み込める。

STEP 1 顧客が自然言語で商品を検索・質問
↓
STEP 2 AIエージェントが意図を解析しアクションを選択
↓
STEP 3 在庫確認・カート追加・決済支援を自動実行
↓
STEP 4 結果を顧客に返す(購入完了など)

Standard Actionsは、AIモデルが商品データや在庫情報にアクセスしやすい形で提供されるため、自前で複雑なAIパイプラインを構築する必要がない。ChatGPTやClaudeといった外部AIと統合する場合も、アクション定義を合わせるだけで済む設計だ。

なぜこのパートナーシップが重要なのか

なぜこのパートナーシップが重要なのか

ShopifyとVercelの連携強化は、単なるコードのリファクタリングではない。ここには二つの大きな戦略的意義があると考えられる。

一つは「Shopifyのバックエンドをあらゆるフロントエンドから利用可能にする」という方向性だ。ヘッドレスコマース市場では、各ブランドが独自のデザインシステムや技術スタックを持つことが当たり前になってきた。Hydrogenがランタイム非依存になることで、React以外のスタックを使っている企業も無理なくShopifyに移行できるようになる。

もう一つは「AI時代のコマース体験の標準化」だ。Standard Actionsは、AIエージェントが安全かつ一貫した方法で店舗操作を行えるプロトコルを定義する。これが広く採用されれば、どんなストアフロントでも同じ仕組みでAIアシスタントを動かせるようになるため、エコシステム全体のAI対応速度が上がる。

さらに、オープンソース化によってコミュニティの貢献が期待でき、Hydrogen自体の開発スピードも加速する。プラットフォームに閉じない設計は、長期的なベンダーロックインの回避にもつながる。

実務への影響と開発スピード

実務への影響と開発スピード

Vercel Blogの記事では、ファッションブランド「Paige」の事例が紹介されている。新しいHydrogenを採用した結果、それまで数か月かかっていた新機能の開発が1週間に短縮されたという。これは単にコード量が減っただけでなく、標準化されたAPIクライアントと状態管理によって、チームが細かい実装に悩まなくなり、ビジネスロジックの試行錯誤に集中できるようになった成果だ。

中小規模のECサイト運営者にとっては、これまで「ヘッドレス」と聞くだけで専門のReactエンジニアが必要だと思われていた壁が下がる。HydrogenがNuxtやSvelteでも動くため、社内のフロントエンドチームが使い慣れたフレームワークをそのまま活かせる。さらに型安全なクライアントが用意されているため、APIの仕様変更に伴う不具合もコンパイル時に検出しやすくなる。

パフォーマンス面でも、ランタイムの最適化が進んだことで、ストアフロントの表示速度が向上する。Vercelのエッジネットワークとの組み合わせにより、世界中のユーザーに高速な体験を提供できるのも大きな強みだ。

この記事のポイント

  • Hydrogenがオープンソースかつランタイム非依存となり、Next.js以外のフレームワークでも動作する
  • 型安全なAPIクライアントとカート状態管理が標準提供され、開発効率が飛躍的に向上する
  • Standard Actionsによって、AIエージェントが自然言語でショッピングを支援する仕組みが組み込まれる
  • ファッションブランド「Paige」では開発期間が数か月から1週間に短縮された事例が報告されている
  • 中小規模のECサイトでも、ヘッドレスコマースの導入ハードルが大きく下がる
海田 洋祐
WordPress 7.1ベータ公開、ノート機能の大幅強化とCSS不要のレスポンシブ編集

WordPress 7.1ベータ公開、ノート機能の大幅強化とCSS不要のレスポンシブ編集

WordPress 7.1のベータ版が7月下旬に公開され、編集体験に大きな改善が盛り込まれた。ノート機能がチームでの共同編集に本格対応し、CSSを一行も書かずに端末ごとの見た目を調整できるようになる。正式版はWordCamp USが開催期間中の8月19日にリリースされる予定だ。

今回の目玉は「ノート機能の強化」「レスポンシブスタイリング」「ホバーやフォーカス状態の視覚編集」の3本柱である。さらに、かねてから要望の多かったタブブロックとプレイリストブロックが追加され、管理画面の使い勝手も向上する。テスト段階のため本番環境への適用は避ける必要があるが、正式版までに知っておきたいポイントを詳しく見ていこう。

ノート機能がチーム編集ツールに進化

ノート機能がチーム編集ツールに進化

WordPress 6.9で導入されたノート機能は、ブロック単位の簡素なコメント機能だった。WordPress 7.1ではそれが一変し、複数人でのフィードバックに耐える本格的なツールへと変わる。

@メンションで担当者を直接指名

ノートの入力欄で「@」を打ち込むと、サイトの共同編集者の一覧が検索候補として表示される。目的のメンバーを選択すれば、その人を指名したノートが作成される。これにより「この修正は誰に伝えればいいのか」という迷いがなくなり、チーム内でのやり取りが格段にスムーズになる。

インラインノートで誤解を減らす

これまでのノートはブロック全体に対してしか付けられなかったため、長文の中で「ここを直してほしい」と書いても具体的な箇所が伝わりにくかった。WordPress 7.1では、文章内の特定の語句や文を選択し、その部分だけにノートを付けられる。該当部分はハイライト表示されるため、どの言葉に対する指摘なのかが一目でわかる。WP Beginnerの記事でも「『この部分を言い換えてほしい』という指示が、長い段落の中のどの単語を指すのかを推測する必要がなくなった」と評価されている。

従来のノート(ブロック単位)
プロジェクトの進捗は来週のミーティングで共有する予定です。参加者のスケジュールも調整が必要です。
📝 この段落を書き直してください
→ どこが指摘対象か不明
↓
WordPress 7.1のノート(テキスト単位)
プロジェクトの進捗は来週のミーティングで共有する予定です。
@山田 日時を確定できますか?

このように、修正箇所と指示がピンポイントで結びつくため、レビューにかかる時間が劇的に短縮される。

その他の改善点

  • 同じブロックに対して複数のノートスレッドを立てられる。議題ごとに会話を分離できる
  • ノート本文に太字、斜体、コード、リンク、絵文字を使ったリッチテキストが可能
  • 長いノートは初期状態で折りたたまれ、サイドバーが散らからない

CSS不要のビジュアルスタイリングが編集画面で完結

CSS不要のビジュアルスタイリングが編集画面で完結

WordPress 7.1で最もインパクトが大きいのが、レスポンシブデザインのビジュアル操作である。これまではスマホやタブレット用の見た目を調整するには、CSSメディアクエリを手書きするか、テーマの設定に頼るしかなかった。今回のアップデートで、ブロックエディタ上でプレビューを切り替えながら、直感的にスタイルを設定できるようになる。

端末別のスタイル設定

エディタ上部のプレビュー切り替えで「デスクトップ」「タブレット」「モバイル」を選択すると、以降のブロックスタイルの操作はその画面サイズにだけ適用される。たとえばモバイル表示を選んで見出しのフォントサイズを小さくすれば、実際のスマホでの表示だけが変わる。デスクトップ表示には影響しない。

さらに、ブロック設定パネルには、現在どの画面サイズを編集中かを示す小さなバッジが表示される。意図しない画面用のスタイルを上書きしてしまうミスを防げる。エディタキャンバス自体も、プリセットの3サイズに縛られず、横幅をドラッグして任意の幅での表示をリアルタイムに確認できるようになった。テーマがtheme.jsonで独自のブレイクポイントを定義していれば、その値に合わせたプレビューも可能である。

デスクトップ表示(幅1200px想定)
見出しサンプル
広い画面ではこの大きさで快適に読める
↓
モバイル表示(幅360px想定)
見出しサンプル
モバイルではフォントを縮小し領域に収める

CSSを書く必要がなくなり、カスタマイズのハードルが大きく下がる。サイト全体に一括適用したい場合は、グローバルスタイルで設定し、変更内容を選択的にグローバルへ反映させることもできる。

ホバーやフォーカス状態も視覚的に編集

ボタンなどのブロックには新たに「状態」ドロップダウンが追加され、ホバー時やフォーカス時、アクティブ時の見た目をエディタ上で直接編集できる。背景色や枠線、テキスト色を状態ごとに変え、その場でプレビュー確認できる。これまではほんの小さな変更であっても、カスタムCSSを追加せざるを得なかったが、今後は組み込みのデザインオプションで完結する。

待望のタブブロックとプレイリストブロック

待望のタブブロックとプレイリストブロック

これまでプラグインで実装していたタブ切り替えのレイアウトが、ついにコアブロックとして導入される。また、音声ファイルをまとめて再生できるプレイリストブロックも新登場する。

タブブロック

商品の仕様、よくある質問、料金プランの比較など、情報をパネルで区切って見せたい場面で重宝する。クリックでパネルを切り替える形式で、長いページを避けたい場合に効果的だ。既存のプラグインで作成したタブは、自動的にはコアブロックに変換されないため、移行の際は手作業が必要になる点に注意しておきたい。

プレイリストブロック

複数の音声ファイルを一つのプレイヤーにまとめ、タイトルやアーティスト名、カバーアート、波形グラフィックとともに表示できる。ミュージシャンや教会、教育機関、ポッドキャスト運営者にとっては、エピソードをまとめて提供するのに理想的なブロックだ。WordPressだけで手軽に音声配信の体裁を整えられるようになる。

加えて、既存のブロックにも多くの改善が加わっている。背景グラデーションと画像の同時適用、テキストシャドウのtheme.json対応、HTMLブロック内でのブロックネストの編集、装飾画像をスクリーンリーダーに読み上げさせない設定、ショートコードのEmbedブロックへの自動変換、ColumnsやGalleryからのグリッドレイアウト変換、アイコンブロックの回転・反転・アイコンセット登録機能など、日常的な制作を後押しするアップデートが多数含まれている。

画像編集とメディア処理の刷新

画像編集とメディア処理の刷新

WordPressに組み込まれている画像編集機能が大幅に変わる。従来の狭いインライン操作から、専用のモーダルウィンドウでの本格的な編集へと進化した。

専用の画像編集モーダル

画像ブロックの「切り抜き」ボタンを押すと、フルスクリーンに近い編集画面が開く。自由トリミング、アスペクト比のプリセット、回転・反転、メタデータの編集を一か所で行える。カバーブロックにも対応しており、背景画像をその場でトリミングできる。本格的な写真編集ソフトには及ばないものの、サイト運営者が日常的に行う作業としては十分な機能を備えている。

ブラウザで画像を前処理しHEICにも対応

WordPress 7.1では、画像のリサイズや圧縮、サムネイル生成の大部分を、アップロード前にブラウザが処理する仕組みが導入される。これにより、サーバーの負荷が大幅に減り、低スペックなホスティング環境でもアップロードエラーが起きにくくなる。

さらに、iPhone標準の画像形式であるHEICをはじめ、UltraHDR、AVIF、WebPといった最新フォーマットへの対応が強化される。これまではサーバー側のImageMagickのバージョンに依存してHEICの変換が失敗することがあったが、ブラウザが変換を担うことで環境を選ばずに済むようになる。なお、ChromeとEdgeではフル機能が利用でき、Safariでは一部がサーバー処理に委ねられ、Firefoxでは従来通りサーバー側で処理される。

アップロードの堅牢性と細かな改善

アップロード中にネットワークが切断されても、キューが自動で一時停止し、再接続後に中断したところから再開される。一括アップロード時には進行状況が表示される。このほか、投稿に添付された画像を自動で引っ張ってくる動的ギャラリーモード、投稿専用の「添付画像」セクションがインサーターに追加され、メディアライブラリは自動読み込みの無限スクロールに対応する。日々のメディア管理のストレスを確実に減らす改良が詰め込まれている。

管理画面と編集体験の快適化

管理画面と編集体験の快適化

WordPress 7.1では、編集画面と管理画面の連携を改善する数々の小さな改良も施されている。

管理ツールバーが常に表示される

ブロックエディタやサイトエディタで編集しているときも、管理ツールバーが非表示にならず、画面上部に固定される。これにより、作業中でもサイトの管理メニューに素早くアクセスできる。ツールバーそのものもデザインが整理され、戻るボタンがわかりやすい山形アイコンに変更され、サイトアイコンと丸いプロフィールアバターが表示される。アイコン類も旧来のDashiconsからモダンなSVGに置き換わった。もちろん、集中執筆モードではツールバーが隠れるため、文章だけに集中したい場合も安心だ。

コマンドパレットとアイデンティティ設定の進化

コマンドパレット(Ctrl+K / Command+K)は、最近使ったコマンド、一致する候補、おすすめの3つに分類されるようになった。利用履歴はログインをまたいで保存されるため、よく使う操作に素早くたどり着ける。サイトエディタのサイドバーも、ユーザーが選んだ管理画面のカラースキームを反映するようになり、全体的な統一感が増した。

サイトのタイトル、キャッチフレーズ、ロゴ、サイトアイコンといった基本情報は「デザイン」内の「アイデンティティ」セクションにまとめられ、設定画面とテンプレートを行き来する手間がなくなった。

「あの日何を書いたか」ウィジェットとコメント親変更

ダッシュボードに新たに「On This Day」ウィジェットが追加され、過去の同じ日に公開した記事を表示してくれる。長く続けているブログにとっては、更新のネタを見つけるきっかけになる。また、コメント編集画面では「どのコメントへの返信か」を後から変更できるようになり、誤って違うスレッドにぶら下がったコメントを正しい位置に付け替えられる。対象は同一投稿内に限られるが、コメント管理の柔軟性が向上した。

見送られた機能と開発舞台裏

見送られた機能と開発舞台裏

今回のリリースには含まれなかったが、注目すべき開発項目がいくつかある。

リアルタイム共同編集は次期以降に持ち越し

Googleドキュメントのような複数人同時編集は、WordPress 7.1では搭載が見送られた。Gutenbergプラグイン上では既に動作しており、複数人が同じ投稿を同時に編集できる段階にある。しかし、コアチームは協調編集データの保存方法や、完全な機能を提供するか基盤だけを先にリリースするかといった重要な判断を続けている。コミュニティによるテストも継続中で、時期尚早な投入によるデータ消失リスクを避けるための慎重な判断と見られている。WP Beginnerの記事でも「作業内容を失う共同編集機能ほど最悪なものはない」と指摘されており、この慎重さは妥当だろう。

Unicodeメールアドレス対応も見送り

日本語などの非ラテン文字を含むメールアドレスへの対応も、ベータテスト中に課題が見つかり延期された。互換性とセキュリティの検証をコミュニティプラグインで続けた後、改めてコアへの導入を目指す方針だ。

パフォーマンスと開発者向けの内部改善

投稿エディタは常にiframe内で動作するようになり、管理画面のCSSによる表示崩れを根本的に防ぐ。ただし、旧APIで作られたブロックは影響を受ける可能性があるため、プラグイン開発者はBlock API v3への移行が推奨される。アイコンAPIが公開され、プラグインやテーマが独自のSVGアイコンセットを登録・レンダリングできるようになった。そのほか、デザインシステムの成熟や、外部サービス接続の認証方式拡充など、長期的な安定性と拡張性を見据えた改良も進められている。

この記事のポイント

  • ノート機能に@メンションとインラインノートが追加され、チームでのフィードバックが格段に正確になった
  • レスポンシブスタイリングとホバー・フォーカス状態の編集がCSS不要で行える
  • タブブロックとプレイリストブロックがコアに加わり、コンテンツ表現の幅が広がった
  • 画像編集モーダルとブラウザベースの画像処理で、メディアまわりの操作性と安定性が向上
  • 管理ツールバーの常時表示やアイデンティティ設定の集約など、管理画面の使い勝手が改善された
海田 洋祐
WordPress 7.0でAIプラグインを作る!Abilities APIとAI Client連携の実際

WordPress 7.0でAIプラグインを作る!Abilities APIとAI Client連携の実際

WordPress 7.0から導入された3つのAI関連コンポーネント、Abilities API、AI Client、そしてMCP Adapterがプラグイン開発の風景を大きく変えようとしている。これらを組み合わせると、AIが画像を解析し、自動で記事を生成するプラグインを驚くほど少ないコードで実装できる。

本記事では、実際に「Photo to Post」というプラグインの構築を通して、各APIの役割と連携方法を具体的に解説する。WordPressの管理画面から画像URLを入力するだけで、AIがビジョンで内容を理解し、下書き投稿を自動生成する流れを追いながら、新しい開発スタイルの全体像をつかんでほしい。

情報源はWordPress Developer Blogのチュートリアル「Build your first AI-Powered WordPress plugin」(2026年7月30日公開)だ。ここで示されるコードと設計思想は、今後のWordPressエコシステムにおけるAI統合の方向性を色濃く反映している。

新しいAI開発基盤の3要素

新しいAI開発基盤の3要素

WordPress 6.9以降で整備されたAbilities API、7.0で正式に取り込まれたAI Client、そしてMCP Adapterは、それぞれ独立して使えるが、組み合わせることで真価を発揮する。まずはこの3つの役割を押さえておく。

Abilities API

Abilities APIは、プラグインが提供する機能を「能力」として登録し、REST APIやAIエージェントなどが統一された方法で発見・実行できる仕組みだ。入力スキーマ、出力スキーマ、パーミッションコールバック、そして実処理を行うコールバックを定義する。これにより、従来のようにエンドポイントを個別に実装する手間が省け、一度登録した能力が管理画面・REST・MCP経由でそのまま利用可能になる。

WordPress AI Client

AI Clientは、プロバイダー(OpenAI、Anthropic、Googleなど)に依存しないPHPライブラリだ。プラグインコードはwp_ai_client_prompt()というフルーエントなビルダーでプロンプトを組み立て、テキスト生成やファイル送信を依頼するだけでよい。プロバイダーの切り替えは管理画面のConnectors API(後述)でAPIキーを設定するだけで済み、コードを一切変更する必要がない。

MCP Adapter

MCP(Model Context Protocol)は、AIエージェント(デスクトップアプリやVS Code拡張など)が外部ツールを呼び出すための標準プロトコルだ。MCP Adapterプラグインをサイトにインストールすると、登録したAbilityがMCPツールとして自動公開される。ClaudeやChatGPTなどのAIクライアントにWordPressの機能を認識させ、「この画像から投稿を作成して」と自然言語で指示するだけで、プラグインの能力が裏側で呼び出される。

REST経由
能力 describe-image
curlでエンドポイントを叩けばJSON応答が返る
↓
管理画面経由
能力 create-post-from-photo
DataFormで生成されたフォームから実行
↓
MCP経由(AIエージェント)
能力 create-post-from-photo
Claudeなどがツールとして呼び出す
■ REST ■ 管理画面 ■ MCP
同じ能力が3つの入口からシームレスに使える

上の図はAbilities APIの最大のメリットを示している。一度登録すれば、UI、REST、AIエージェントのどこからでも同一の能力を実行できる。エンドポイントごとに別の処理を書く必要はない。

プラグイン「Photo to Post」の仕組み

プラグイン「Photo to Post」の仕組み

チュートリアルで構築する「Photo to Post」は、画像URLを入力するとAIが画像の内容を解析し、その説明文をもとにブログ投稿用のタイトルと本文を生成、さらにその画像をアイキャッチに設定した下書き投稿を作成するプラグインだ。

内部では、3つのAbilityが連携している。ここで重要なのは、最後の能力が他の能力を呼び出す「能力の合成(composition)」を実践している点だ。

STEP 1 画像URLを入力、describe-imageが画像を解析し説明文を生成(AI Vision)
↓
STEP 2 説明文を元にgenerate-post-from-descriptionが投稿内容をAIで生成(テキスト生成)
↓
STEP 3 create-post-from-photoが上記2つを内部で呼び出し、投稿を作成してアイキャッチを設定

この合成パターンは、WordPressのフィルターフックやアクションフックで築かれた「小さな機能を組み合わせて大きな機能を作る」という哲学のAI時代バージョンといえる。

実装の流れを追う

実装の流れを追う

ここからはチュートリアルの主要な実装ステップを、要点を絞って解説する。すべてのコードはスタータープラグインをベースにしており、TODOコメントを置き換える形で進められる。AIプロバイダーとしてはOpenAI、Anthropic、Google Geminiなどが利用可能だ。

AIプロバイダーとの接続

WordPress 7.0では、設定メニューに「コネクター」画面が追加された。Connectors APIによって、各プラグインはAPIキーの保存場所を一元管理できる。従来はプラグインごとに設定ページでキーを管理する必要があったが、これで1箇所に集約される。

OpenAI、Anthropic、Googleの公式プロバイダープラグインをインストールし、コネクター画面でAPIキーを登録すれば、あとはAI Clientが自動的にそのプロバイダーを使う。ビジョンモデルを使う場合は、Anthropicのように画像をBase64で送る必要があるが、AI Clientが吸収するためコード上の差異はほとんど生じない。

能力の登録

Abilities APIにおける能力の登録は、wp_register_ability()関数にラベル、説明、入出力スキーマ、パーミッション、コールバックを渡すだけだ。ここで定義したスキーマが、RESTやMCP経由で能力を呼び出す際の「説明書」になる。

チュートリアルでは、describe-image(画像URL → テキスト説明)、generate-post-from-description(説明文 → 投稿タイトルと本文)、create-post-from-photo(画像URL → 下書き投稿)の3つを登録する。

従来のプラグイン開発(Before)
RESTエンドポイントをregister_rest_routeで個別定義
フロントJSでfetchを手書き
MCP対応は別途SDKが必要
↓
Abilitiesベースの開発(After)
能力を1回登録するだけでRESTも管理画面もMCPも自動対応
入出力スキーマが自己文書化
能力どうしの合成で複雑な処理もシンプルに

能力を登録したら、wp_abilities_api_initアクションにフックし、RESTで表示するためにメタ情報にshow_in_rest => trueを指定する。これだけでアプリケーションパスワードを使ったcurlで能力の一覧を取得できる。

AI Clientによる画像解析とテキスト生成

最初の能力describe-imageのコールバックでは、wp_ai_client_prompt()でプロンプトを構築し、with_text()とwith_file()で画像のデータURIを渡してgenerate_text()を呼ぶ。戻り値はWP_Errorの可能性があるため、必ずチェックする。

画像はwp_remote_get()で取得しBase64エンコードしたデータURIにして送る。これにより、URLでの画像指定を受け付けないプロバイダーでも動作する。

2つ目の能力generate-post-from-descriptionでは、AIに「画像説明文から魅力的なブログ投稿を生成し、JSONで返す」よう指示する。プロンプトには「markdownコードフェンスで囲まない」と明示するが、AIは非決定論的なため、念のためpreg_replace()でフェンスを除外し、JSON文字列の中からオブジェクトを抽出する防御的なパース処理を入れている。

能力の合成

3つ目の能力create-post-from-photoがこのプラグインの心臓部だ。ここでwp_get_ability()を使って自分自身以外の能力を取得し、execute()で実行する。最初にdescribe-imageを実行して画像説明を取得し、次にその説明を使ってgenerate-post-from-descriptionを実行、最後に得られたタイトルと本文からwp_insert_post()で下書きを作成する。

このように、能力を「LEGOブロック」のように組み合わせられることがAbilities APIの真骨頂だ。各能力は単独でテスト可能であり、後から新しい能力を追加して組み合わせることも容易である。

管理画面の拡張

スタータープラグインに付属するDataFormベースの設定画面を、実際の能力と連携させる。JavaScript側からは@wordpress/abilitiesパッケージのgetAbility()とexecuteAbility()を使い、先ほどPHPで登録したcreate-post-from-photo能力を呼び出す。

スクリプトをモジュールとして読み込み、readyプロミスでAPIが利用可能になるのを待ってから実行する。これで管理画面から画像URLを入力し「投稿を生成」ボタンを押すだけで、一連のAI処理が走り、下書きが作成される。成功すると編集画面へのリンクが表示される。

MCP対応でAIエージェントにも開放

能力の登録時にメタに'mcp' => array( 'public' => true )を追加し、MCP Adapterプラグインを有効化するだけで、その能力がMCPサーバー経由で外部AIエージェントに公開される。

例えばClaudeデスクトップアプリの設定ファイルにWordPressサイトのURLとアプリケーションパスワードを記述すれば、「この写真から投稿を作成して」と話しかけるだけで、create-post-from-photoが自動的に呼ばれる。REST、管理画面、MCPという3つの入口を同じコードで実現できるのは、Abilities APIの設計の妙だ。

実装から見える将来性

実装から見える将来性

WordPressのコアに組み込まれたこれらAIビルディングブロックは、単なる補助機能ではない。プラグイン開発のパラダイムを「単一の機能提供」から「再利用可能な能力の提供と合成」へとシフトさせる可能性を秘めている。

従来のプラグイン開発
個別のREST実装
フロントとバックエンドの密結合
MCP対応は別途開発
↓
Abilities API+AI Clientの世界
能力を登録すればREST・管理画面・MCPが即座に利用可能
AIプロバイダー非依存の設計
能力の合成で複雑な自動化も容易
■ 従来 ■ これから

さらに、Connectors APIによるAPIキーの一元管理は、複数プラグイン間の設定のばらつきを解消し、サイト管理者の負担を大きく下げる。開発者は「どのAIモデルを使うか」を気にせず、ビジネスロジックに集中できる環境が整いつつある。

注意点として、AI呼び出しには時間がかかるため、デフォルトのHTTPタイムアウトでは処理が中断される可能性がある。チュートリアルではwp_ai_client_default_request_timeoutフィルタでタイムアウトを120秒に延長する対処が示されている。このような実運用の勘所も押さえておきたい。

プラグイン開発者がこうした基盤を活用し始めれば、WordPressエコシステム全体のAIリテラシーが一気に加速する。非エンジニアでも「写真から投稿を作って」と指示するだけでコンテンツ制作が進む未来は、すぐそこまできている。

この記事のポイント

  • WordPress 7.0のAbilities API・AI Client・MCP Adapterにより、AI搭載プラグインを少ないコードで構築できる
  • 能力を1回登録すればREST・管理画面・AIエージェントの3経路で同一機能を提供可能
  • AI Clientはプロバイダー非依存で、Connectors APIがAPIキー管理を集約
  • 能力の合成で「LEGOブロック」のように複雑な自動化を実現
  • 実運用ではタイムアウト延長フィルタなど、実装上の注意点も必要
海田 洋祐
米国でオンライン販売者保護法案が提出。アカウント停止と在庫保留に30日ルール

米国でオンライン販売者保護法案が提出。アカウント停止と在庫保留に30日ルール

2026年7月21日、米国下院に「オンライン販売者の権利章典法(Online Sellers’ Bill of Rights Act of 2026)」が提出された。AmazonやWalmartといった巨大マーケットプレイスで商品を販売する事業者を、突然のアカウント停止や資金凍結から守る内容だ。

この法案が成立すれば、プラットフォーム側は販売者に対してペナルティの理由を詳細に説明し、30日以内に在庫や売上金を解放しなければならなくなる。異議申し立ての手続きも明文化される。越境ECで米国市場に進出している日本の事業者にとっても、大きな追い風となる可能性がある。

法案の概要と背景

法案の概要と背景

なぜマーケットプレイス事業者は保護を必要としているのか

AmazonやWalmartのマーケットプレイスは、小規模事業者でも数百万の顧客にリーチできる強力な販路だ。しかし、ひとたび売上が立ち始めると、そのプラットフォームへの依存度は高まる。突然のアカウント停止や資金凍結は、事業そのものを脅かしかねない。

現状では、規約違反が疑われた販売者に対し、プラットフォームは十分な説明なしにアカウントを停止し、売上金や在庫を長期間にわたって留め置くことがある。違反の詳細が分からないまま数ヶ月に及ぶ保留状態に陥り、事業をたたまざるを得なくなるケースも報告されている。

「オンライン販売者の権利章典法」の中身

下院司法委員会で審議中のこの法案(H.R. 9799)は、マーケットプレイスが販売者に対してとる執行措置に、連邦レベルでの手続きを義務付けるものだ。偽造品や不正販売の排除は引き続き認めつつ、在庫保留や支払い停止、規約変更、調査、異議申し立てに一連の基準を設ける。

主な規定

主な規定

法案は、マーケットプレイスの執行措置に対し以下の保護を提供する。いずれも「30日」という期限が大きな軸となっている。

在庫保留の制限

偽造品の疑いで在庫が倉庫に留め置かれる場合、これまでは数ヶ月単位で放置されることがあった。法案では、在庫保留と制限の期間を暦日30日以内に制限する。30日を超えて保留を続けるには、当該商品が明らかに不正であることをプラットフォーム側が証明しなければならない。

支払い保留の制限

売上金の凍結についても同様に、30日間の上限が設けられる。それを超えて資金を保持するには、違法な取引であったことを証拠によって示す必要がある。単なる疑いだけでは長期保留は認められなくなる。

ゲート製品への対応

ある商品が一度はフルフィルメントネットワークに受け入れられた後、新たに販売制限がかけられる「ゲート製品」に関する規定もある。プラットフォームが製品カテゴリに新たな制限を課す場合、販売者に対して少なくとも30日間の猶予を与え、残った在庫を販売するか、送料負担なしで返却する権利を保証する。

事前通知義務

商品掲載の適格条件やコンプライアンス要件、手数料などに実質的な変更がある場合、プラットフォームは30日前までに書面で通知しなければならない。この猶予があれば、販売者は梱包の変更や書類の準備、価格改定、在庫の移動といった対策をとれる。

異議申し立て手続きの明確化

アカウント停止やリスティングの差し止めに際して、プラットフォームは疑われる違反内容を個別具体的に通知する義務を負う。どのポリシーに違反したのか、関連する事実や資料は何か、科されるペナルティの内容、そして異議申し立ての方法と解決までの見込みスケジュールを提示しなければならない。テンプレートの定型文だけでは要件を満たさない。

現在のマーケットプレイス(Before)
アカウント停止 → 理由不明のまま → 資金・在庫凍結 → 数ヶ月放置
※販売者は情報もなく、ビジネスが停止
↓
法案成立後(After)
アカウント停止 → 30日以内に理由を通知 → 異議申し立て可能 → 資金・在庫は30日で解放
※透明性のある手続きが導入される

上図は現状と法案が求めるプロセスの違いを概念化したものだ。実際の条文では、虚偽の申告や偽造品の販売には厳しい対応が続けられる一方、正当な事業者には適正な手続きが保証される枠組みになる。

販売者にとってのメリット

販売者にとってのメリット

この法案の本質は、プラットフォームによる一方的な執行から「商業デュープロセス」を確立することにある。詐欺的な出品や危険な商品を排除する権限は維持しながら、そのプロセスに説明責任と異議申し立ての機会を組み込む。

プラットフォームの説明責任強化

個別具体的な通知義務により、販売者は「なぜ停止されたのか」を理解し、問題を速やかに是正できるようになる。テンプレートの返答ではなく、事実と根拠に基づいた対応が求められるため、曖昧な理由でビジネスが断たれるリスクが減る。

ビジネス継続性の確保

在庫や支払いの30日ルール、ゲート製品への猶予期間は、キャッシュフローと在庫回転の予測可能性を高める。突然の政策変更で売れなくなった商品があっても、少なくとも1ヶ月の対応期間が与えられるため、損失を最小限に抑えられる。

法的効果と執行

法的効果と執行

法案が成立した場合、FTC(連邦取引委員会)は施行から180日以内に規則を制定する。その規則違反は、連邦取引委員会法上の不公正な競争方法として扱われる。さらに、州の司法長官も居住者を代表して民事訴訟を起こす権限を持つ。

最も強力なのは、被害を受けた販売者が連邦裁判所に直接訴えを起こせることだ。プラットフォームの利用規約に仲裁条項があったとしても、この法律に基づく訴訟は妨げられない。勝訴した販売者は、実際の損害額の3倍の賠償と、裁判費用・相当額の弁護士費用を請求できる。単なる通知義務にとどまらず、強力な抑止力を持つ設計になっている。

法案の不確実性と課題

法案の不確実性と課題

一方で、この法案には適用範囲の曖昧さという弱点も指摘されている。保護の対象となる「第三者の販売者」は「支配的プラットフォーム」上で事業を行う企業と定義されているが、支配性を判断する売上高や取引量、ユーザー数、市場シェアといった具体的な基準は明記されていない。

AmazonとWalmartが主な標的であることは明白だが、eBayやEtsy、Poshmarkといった特化型マーケットプレイスにまで一律に適用されるかは不透明だ。FTCの規則制定で一部は明確化される可能性があるが、数値基準がないことは法廷闘争の引き金にもなりうる。

日本から海外マーケットプレイスを利用する事業者への影響

日本から海外マーケットプレイスを利用する事業者への影響

Amazon.comやWalmart.comで越境ECを行っている日本の事業者にとって、この法案が成立すれば大きな後ろ盾となる。米国内の法律である以上、適用対象はこれらのプラットフォームに限られるが、日本国内で販売する場合と異なり、海外の巨大プラットフォーム相手に身を守る手段が大幅に強化されるからだ。

また、こうした立法の動きはグローバルな潮流になる可能性もある。すでにEUではプラットフォームと販売者の関係を規律するルールが整備されつつある。日本の事業者としても、海外販路を拡大する際のリスク判断にこの法案の行方を加味しておく価値は高い。

この記事のポイント

  • 米国下院で「オンライン販売者の権利章典法」が提出され、審議中である
  • アカウント停止時の在庫・支払い保留は30日が上限となり、理由の個別通知と異議申し立て手続きが義務化される
  • ゲート製品への事後規制には30日の販売猶予か無償返却の機会が与えられる
  • 販売者は連邦裁判所に直接訴訟を起こせ、勝利すれば3倍賠償を得られる
  • 日本の越境EC事業者にも、Amazon.comなどでの販売リスクを減らす追い風となる
海田 洋祐
Nuxt 4.5.1/3.21.10セキュリティパッチ公開。サーバーRCEや認証バイパスを修正

Nuxt 4.5.1/3.21.10セキュリティパッチ公開。サーバーRCEや認証バイパスを修正

Nuxt開発チームは2026年7月27日、メジャーバージョン4系の4.5.1と3系の3.21.10をセキュリティパッチとして公開した。今回のリリースでは、深刻度が高いサーバーサイドのリモートコード実行(RCE)や認証バイパスなど、6つの脆弱性が修正されている。

Nuxtを利用しているプロジェクトはただちにアップグレードすることが推奨される。開発環境限定の脆弱性も含まれており、本番環境で影響を受けない場合でも、安全のため最新版への更新が求められる。

修正内容には、特定条件でのサーバー上での任意コード実行や、大文字を含むルートルールの認証バイパスなどが含まれている。また、キャッシュページで他ユーザーのデータが漏洩する問題(4.xのみ)や、DevTools経由のRCEも併せて修正された。

セキュリティパッチの全体像と影響範囲

セキュリティパッチの全体像と影響範囲

今回のセキュリティリリースは、Nuxt 4.xと3.xの両系統にまたがる。4.xユーザーは4.5.1へ、3.xユーザーは3.21.10へアップグレードする必要がある。修正対象の脆弱性は、サーバーサイドRCE(深刻度:高)、未承認コンポーネントの生成(中)、ルートルール認証バイパス(高)、DoS(高)、キャッシュ時のクロスユーザー情報漏洩(高、4.xのみ)、開発サーバーのパス開示(低)、DevToolsのRCE(緊急、開発時限定)の7件だ。

いずれの脆弱性も、GitHubのアドバイザリを通じて報告され、複数のセキュリティ研究者の協力によって特定された。NuxtチームはVercel、Netlify、Cloudflareの各社とも協力し、一部の脆弱性については公開前に緩和策を展開している。

サーバーサイドを狙う深刻な脆弱性

サーバーサイドを狙う深刻な脆弱性

サーバーアイランドProps経由のRCE

この脆弱性(CVE-2026-53721)は、vue.runtimeCompilerが有効になっている場合に発動する。デフォルトでは無効化されているため、大半のプロジェクトは影響を受けない。しかし、該当する設定では、サーバーコンポーネントやアイランドのPropsにtemplateキーを注入されることで、サーバー(Nitro)上で任意のコードが実行される可能性があった。

攻撃が成立するには、<component :is>やresolveDynamicComponent、h()といったVueの動的コンポーネント解決にPropsが渡る必要がある。@nuxt/uiが提供するreka-uiのasプロパティのようなパターンも該当する。実務上は、動的コンポーネントとサーバーアイランドを併用する設計で注意が必要だ。

修正前の危険なシナリオ(Before)
攻撃者 リクエストに template キーを注入
↓
サーバー(Nitro) 動的コンポーネントで任意コード実行 RCE発生
■ 攻撃成功 ■ 攻撃者 ■ Nuxtサーバープロセス
↓
修正後(After)
攻撃者 同様のリクエストを送信
↓
サーバー(Nitro) テンプレート注入をブロック 安全

このデモは、vue.runtimeCompilerが有効な場合の攻撃の流れを概念的に示している。実際には、同設定をオフにしているプロジェクトは影響を受けず、また4.5.1/3.21.10で根本的な修正が行われている。

未承認コンポーネントのインスタンス化

RCEほどではないが、こちらはvue.runtimeCompilerが無効でも影響を受ける。サーバーアイランドが宣言していないPropsを転用して、asプロパティに攻撃者が任意のHTML要素名やコンポーネント名を渡すことで、意図しない要素を生成できてしまう。

たとえば{ "as": "iframe" }のようなデータを渡されると、iframe要素が生成される可能性がある。コード実行には至らないが、予期しないDOM構造を作られてしまう点は脅威だ。Propsの宣言やinheritAttrs: falseで防ぐこともできるが、フレームワーク側での修正により、今後はこうした不正なインスタンス化はブロックされる。

認証バイパスとリソース消費攻撃

認証バイパスとリソース消費攻撃

ルートルールの認証バイパス(大文字・小文字の不一致)

NuxtではrouteRulesにappMiddlewareを指定することで認証ゲートを設けられる。しかし、ルールキーに大文字が含まれる場合、リクエストのパスとケースインセンシティブにマッチせず、認証ミドルウェアがスキップされる問題があった。

これは4.4.7/3.21.7で修正された問題(CVE-2026-51354)に起因するリグレッションだ。当時の修正が逆にこの不具合を生んだ。具体的には、pages/Admin.vueのようなファイルやrouteRules: { '/Admin': ... }のような明示的なキーで、/adminへのアクセスがルールを迂回してしまう。

今回のパッチでは、ルートルールのマッチングがVue Routerと同様にケースインセンシティブに統一された。これにより大文字小文字の混在があっても、正しくミドルウェアが適用される。もし意図的にケースセンシティブなマッチングを利用していた場合は、router.options.sensitive: trueの設定が必要だ。

修正前:大文字ルールがスキップされる(Before)
routeRules ‘/Admin’ → 認証ミドルウェア
↓
ユーザー /admin にアクセス → 認証チェックなしで表示
■ 認証バイパス ■ ルールキー
↓
修正後:ケースを問わずミドルウェア適用(After)
routeRules ‘/Admin’ → 認証ミドルウェア
↓
ユーザー /admin にアクセス → 認証チェックが正しく動作
■ 認証正常

この図は、/Adminというルールに対して/adminがアクセスされるケースを示している。修正前はルールが適用されなかったが、4.5.1/3.21.10以降はケースを問わず認証ミドルウェアが動く。

サーバーコンポーネントへのDoS攻撃

サーバーコンポーネントやアイランドのエンドポイント(/__nuxt_island)に対して、v-forに巨大なPropsを渡すなどしてサーバーをクラッシュさせるDoS攻撃が可能だった。また、巨大なリクエストボディの解析でCPUを浪費させる問題も確認されている。どちらも認証不要で実行でき、サービス停止につながる。

修正では、こうしたPropの展開やリクエストのバリデーションが強化され、攻撃が成立しないようになった。

キャッシュページにおけるクロスユーザー情報漏洩(4.x限定)

Nuxt 4.x(4.4.0以上)で、cache、swr、isrのルートルールを認証付きページに適用している場合、キャッシュされた_payload.jsonが別のユーザーに提供される可能性があった。HTML自体は正しくユーザーごとに分離されていたが、ペイロードデータのキャッシュが意図せず共有されていたのだ。

この脆弱性は3.xには存在しない。修正バージョンにアップグレードしても、既にキャッシュされている不正なペイロードは削除されないため、別途キャッシュのパージ(CDNやブラウザキャッシュのクリア)が必要になる。

開発環境限定の脆弱性

開発環境限定の脆弱性

Nuxt DevToolsのリモートコード実行(緊急)

この問題(GHSA-279x-mwfv-vcqv)は、nuxt devを実行している開発マシンに影響する。DevToolsが有効な状態で、Vite HMRソケット上で認証不要のRPCメソッドが露出しており、攻撃者が任意のコマンドを実行できる可能性があった。攻撃経路としては、同一ホスト上の別プロセス、--hostオプション使用時のLAN内の他端末、あるいは悪意あるWebサイトへの訪問が考えられる。

この脆弱性は@nuxt/devtools@3.3.1で修正されており、Nuxt本体のアップグレードに加えてロックファイルからこのバージョンが解決されることを確認する必要がある。

本番ビルドではDevToolsとHMR自体が含まれないため、この問題が本番環境に影響することは決してない。しかし、開発者が攻撃を受けるとソースコード漏洩やシステム侵害につながるため、早急な更新が推奨される。

開発サーバーのパス開示(低)

nuxi dev --hostでネットワークインターフェースにバインドしている場合に限り、Chrome DevToolsのワークスペースエンドポイントを経由して、プロジェクトの絶対パスとワークスペースUUIDがLAN上のクライアントに漏洩する問題があった。信頼できないネットワークで開発サーバーを公開している環境は注意が必要だ。

アップグレード手順と注意点

アップグレード手順と注意点

アップグレードは以下のコマンドで実行できる。ロックファイルの更新とともに、依存解決を最新化するために--dedupeオプションを付与する。

npx nuxt upgrade --dedupe

これにより、@nuxt/devtoolsも最新の3.3.1に引き上げられ、DevToolsのRCEも同時に修正される。

キャッシュ関連の脆弱性が悪用されていた場合に備え、本番環境のCDNキャッシュやブラウザキャッシュをクリアすることも推奨する。アップグレードだけでは過去にキャッシュされた不正なペイロードは消えないからだ。

また、ケースセンシティブなルートルールを意図的に使っている場合は、nuxt.config.tsでrouter.options.sensitiveを明示的に設定する必要がある点に注意してほしい。

謝辞と安全な報告体制

謝辞と安全な報告体制

これらの脆弱性は、GitHubのプライベートアドバイザリやVercel OSS Bug Bountyプログラムを通じて報告された。Nuxtチームは、問題を責任をもって開示した以下のセキュリティ研究者に謝意を表している。

  • Pig-Tail
  • sec-reex
  • DavidCarliez
  • manop55555
  • dinhvaren
  • quantumshiro
  • Saku0512
  • TazmiDev

また、サーバーRCEについては、Vercel、Netlify、Cloudflareの各社と連携し、公開前に緩和策を配備する準備が整えられた。

Nuxtのセキュリティ脆弱性を発見した場合は、GitHub Security Advisoryから非公開で報告するか、security@nuxtjs.orgへメールすることが推奨されている。

この記事のポイント

  • Nuxt 4.5.1と3.21.10は緊急度の高いセキュリティパッチであり、即時アップグレードが推奨
  • サーバーアイランド経由のRCEは特定条件でのみ発生するが、影響度は高い
  • ルートルールの大文字・小文字の不一致による認証バイパスは、4.4.7/3.21.7の修正に起因するリグレッション
  • キャッシュ時のクロスユーザー情報漏洩は4.xにのみ存在し、キャッシュの手動クリアが必要
  • DevToolsのRCEは開発環境限定だが、開発端末の侵害を防ぐためロックファイルの更新を忘れずに
海田 洋祐
WC 11.0の注文アイテム削除アクションタイミング変更と開発者対応

WC 11.0の注文アイテム削除アクションタイミング変更と開発者対応

WooCommerce 11.0.0のリリースに伴い、注文アイテム削除時のアクションフック woocommerce_removed_order_items の発火タイミングが大きく変わった。これまでは削除メソッド内で即座にデータベースからアイテムを消した直後にフックが走っていたが、今後は save() が呼ばれるタイミングまで遅延される。

この変更の本質は、注文復元フローで発生し得る「行アイテム消失」バグの修正だ。決済中断後の再開処理で、意図せず注文明細が空になる問題がこれで解消される。ただし、従来のタイミングを前提にした拡張機能やカスタムコードは、コールバックの変更が必要になる可能性がある。

この記事では、変更の背景、具体的な動作の差、そして開発者が取るべき対応策を整理する。内部的で動作確認用のフックに依存している開発者は特に注意が必要だ。

WooCommerce 11.0の注文アイテム削除フックに何が起きたのか

WooCommerce 11.0の注文アイテム削除フックに何が起きたのか

WooCommerceのコアクラス WC_Abstract_Order には、注文アイテムをまとめて削除する remove_order_items() メソッドがある。このメソッドは、チェックアウト時に注文内容を再構築する場面などで内部的に呼ばれる。

10.9系以前では、remove_order_items() が呼ばれるとすぐにデータベースから該当のアイテム行が削除され、その直後に woocommerce_removed_order_items アクションが発火していた。いわば「削除してからお知らせ」の流れだ。

11.0.0からは、アイテムのデータベース削除そのものは save() が呼ばれるまで引き延ばされる。そして woocommerce_removed_order_items アクションは、実際に削除がコミットされた直後の save_items() 内で発火するようになった。すぐに消さず、「保存のタイミングで消して知らせる」形へと変更されたわけだ。

WooCommerce 10.9以前と11.0.0の違い
WooCommerce 10.9以前(Before)
preフック remove_order_items()の中で発火
↓
DB削除 即座にアイテム行を削除
↓
postフック 削除完了直後に発火
※すべて同一のコールスタック内で実行される
↓
WooCommerce 11.0.0以降(After)
preフック remove_order_items()で発火(変更なし)
↓
メモリ上のみ削除 データベースにはまだ残っている
↓
save() 呼び出し ここで初めてDB削除が走る
↓
postフック 削除コミット後にsave_items()内で発火
※postフックはsave()のタイミングに移動、コールスタックが分離
■ preフック(woocommerce_remove_order_items) ■ postフック(woocommerce_removed_order_items)

この図のように、preフック(woocommerce_remove_order_items)の位置は変わっていない。変更されたのはpostフックのほうだけで、発火の場所が remove_order_items() の中から save_items() へと移動した。

なぜ削除の遅延が必要だったのか

なぜ削除の遅延が必要だったのか

変更の直接のきっかけは、チェックアウト時の注文再開フローで発生していたバグだ。WooCommerceの内部では、決済途中で何らかのエラーや中断が起きた場合、同じ注文データを使って再開を試みる仕組みがある。

10.9以前の処理は次のような流れだった。まず remove_order_items() で既存のアイテムをデータベースから削除し、その後に新しい内容を再構築して save() で保存する。ところが、削除と再構築の間に何らかの例外が発生したり、決済ゲートウェイが二重チェックアウトをトリガーしたりすると、新しいアイテムが書き込まれないまま保存処理に進んでしまうケースがあった。

その結果、合計金額は正しいのに注文明細が空になるという不整合が発生していた。管理者や店舗スタッフから見ると「注文はあるのに何を買ったのかわからない」状態で、商売上の大きな問題だ。

そこで11.0.0では、データベースからの削除を save() のタイミングまで遅延させる設計に変更された。これにより、再構築の途中で何か問題が起きても、直前の正しい注文内容がデータベース上に残っている。中断したら元のまま、成功したら新しい内容で上書きされる。再開フロー全体が原子的になるわけだ。

preフックの woocommerce_remove_order_items は引き続き remove_order_items() の先頭で同期的に発火する。postフックだけが「保存時に遅延」される形になる。両方のフックを組み合わせて使っているコードだけが影響を受ける可能性がある。

開発者が影響を受ける具体的なパターン

開発者が影響を受ける具体的なパターン

今回の変更は、あらゆる拡張機能に一律で影響するわけではない。影響を受けるかどうかは、フックの使い方によって明確に切り分けられる。

影響を受けるケース

次のようなコードが該当する。

  • woocommerce_removed_order_items にコールバックを追加し、その中で「アイテムはもうデータベースに存在しない」という前提で処理を行っている
  • woocommerce_remove_order_items(pre)と woocommerce_removed_order_items(post)のペアで一連の操作を挟み込んでいる
  • remove_order_items() が戻った直後に「データベースからアイテム行が消えている」と期待している

要するに、postフックが「同じコールスタック内ですぐ実行される」という暗黙の前提に依存しているコードは、動作が変わる可能性が高い。

影響を受けないケース

一方、次のような使い方をしている場合は問題ない。

  • 最終的な保存済みの注文状態だけを監視する目的でpostフックを使っている
  • コールバック内で、DB削除がコミットされた後の最終状態だけを参照している
  • WooCommerceコア自体にはこのフックの利用箇所はないため、標準機能への影響はゼロ

postフックは変わらず「データベース削除の完了後」に発火するため、単純に「削除が終わったことを検知したい」だけのコードはそのまま動く。

開発者が今すぐ取るべき具体的な対応

開発者が今すぐ取るべき具体的な対応

コールバックの動作確認と修正

影響を受ける可能性のあるコードを発見したら、まず次の3点を確認してほしい。

  1. remove_order_items() が戻った直後にデータベースのアイテム削除を前提にしている場合は、削除を期待する処理の前に明示的に $order->save() を呼ぶ
  2. preフックとpostフックをペアで使っている場合は、postフックのロジックを注文の保存後に実行するように再構成する
  3. 動作確認はWooCommerce 11.0.0以降の環境で必ず実施する

コールバックが単に「削除後の状態を見たい」だけなら、特に対応は不要だ。postフックは依然としてDB削除のコミット後に発火するため、観測できる最終状態に違いはない。

save() を明示的に呼ぶことの意味

11.0.0以降のバージョンでは、remove_order_items() を呼んだだけではデータベースへの変更は一切発生しない。あくまでオブジェクトの内部状態が変わるだけだ。データベースへの反映は後続の save() でまとめて行われる。

つまり、「アイテムが消えた状態の注文をデータベース上で確定させたい」のであれば、プログラムの流れの中で明示的に $order->save() を実行する必要がある。これは今回の変更を正しく扱う上で最も重要なポイントだ。

この変更がもたらす開発者体験への影響

この変更がもたらす開発者体験への影響

一見すると「動いていたコードが壊れるのか」と不安に思うかもしれないが、この変更の根底にはコードの安全性を高めるという明確な意図がある。削除と保存を分離することで、中途半端な状態に陥る可能性を根本から断ち切っている。

WooCommerceの内部設計に詳しい開発者であれば、データベース操作の遅延実行はむしろ現代的なパターンだと感じるだろう。トランザクション的な一貫性を重視する設計は、拡張機能の品質向上にもつながる。

影響範囲が限定的であることも安心材料だ。WooCommerceコア自身はこのフックを消費しておらず、実質的にはサードパーティ製のプラグインやテーマだけが該当する。大半のショップ運営者は特に意識することなくアップデートできる。

この記事のポイント

  • WooCommerce 11.0.0で woocommerce_removed_order_items フックの発火タイミングが save() 実行時へ変更された
  • preフックの woocommerce_remove_order_items は変わらず同期的に動作する
  • 変更の目的は注文再開時の行アイテム消失バグの修正で、削除処理を遅延させることで安全なフローを実現
  • postフックが「削除直後に走る」ことを前提にしたコードのみが影響を受ける可能性がある
  • remove_order_items() の直後にDB反映を期待するなら明示的に save() を呼ぶこと
海田 洋祐
OpenAI、推論保持とコンパクションでARC-AGI-3スコア3倍化

OpenAI、推論保持とコンパクションでARC-AGI-3スコア3倍化

OpenAIの最新モデル「GPT-5.6 Sol」が、ARC-AGI-3ベンチマークで当初のスコアを約3倍に伸ばした。わずか2つのAPI設定を切り替えただけである。単にベンチマーク成績を上げただけでなく、出力トークン量も6分の1に削減した。

GPT-5.6 Solは数学の未解決問題を証明し、ポケモンなどのゲームをクリアする実力がある。それにもかかわらず、2Dパズルゲームで構成されるARC-AGI-3では開始直後ほぼ無力に見えた。スコアはわずか7.8%である。

問題はモデルそのものではなく、評価を実行する「ハーネス(テスト環境)」の設計にあった。OpenAIが本番環境で使っている推論保持とコンパクションを適用したところ、スコアは13.3%から38.3%へと跳ね上がった。これは人間の平均スコア(48%)に大きく近づく数字である。

なぜGPT-5.6 SolはARC-AGI-3で苦戦したのか

なぜGPT-5.6 SolはARC-AGI-3で苦戦したのか

ARC-AGI-3ベンチマークの概要

ARC-AGI-3は、AIエージェントが未知の2Dゲームを探索しながらルールを推論し、自力で解く能力を測るベンチマークである。人間には直感的に分かるような簡単なパズルでも、AIにとっては説明なしに仕組みを理解するのが極めて難しい。

このベンチマークは、AIがどれだけ「学習し、推論できるか」を厳密に評価するために設計されており、特殊なツールや支援機能は一切与えられない。公式が用意するハーネスは、どのモデルでも同じ条件で比較できるよう、意図的に簡素な作りになっている。

公式ハーネスの2つの問題点

OpenAIの調査チームは、GPT-5.6 Solがゲーム内でひとつ行動するたびに「思考が真っ白に戻っている」ことに気づいた。公式ハーネスは、次の行動を起こす前に、モデルが直前に行った非公開の推論メッセージをすべて破棄していた。

一連の行動記録や簡単なメモは残るものの、その行動を導いた計画やひらめきは記憶に残らない。つまり、モデルは毎ターン、ゲームの仕組みを一から考え直さなければならなかった。

さらに、会話のコンテキストが長くなると「ローリング打ち切り」が発動し、古い行動履歴から順に削除されていく。推論が消えたうえに、過去の行動すら見えなくなるため、長期的な学習がほぼ不可能だった。この2つの設計が、GPT-5.6 Solの性能を著しく抑え込んでいたのである。

公式ハーネス(Before)
推論破棄 毎ターン思考がリセットされる
ローリング打ち切り 過去の行動履歴が失われる
スコア 13.3% (人間比で低い)
出力トークン量:大量
↓
OpenAI Responses API ハーネス(After)
推論保持 過去の思考を再利用できる
コンパクション 古い情報を要約して保持
スコア 38.3%(約3倍)
出力トークン量:約1/6に削減
■ 従来の問題点 ■ 改善後の効果

この図のように、ハーネスの設計ひとつで、同じモデルの振る舞いが大きく変わる。単純な推論保持と圧縮によって、アシスタントとしての性能が劇的に改善することをOpenAIは示した。

推論保持とコンパクションがもたらした改善

推論保持とコンパクションがもたらした改善

推論保持の効果

GPT-5.6は、ChatGPTやCodexでも使われている仕組みとして、返答やツール呼び出しの前に非公開の推論メッセージを生成する。通常、この推論は会話履歴の一部として保持される。公式ハーネスではこれが破棄されていたが、OpenAIのResponses APIを使うと、前のレスポンスIDを次に渡すだけで自動的に推論が引き継がれる。

推論が保持されると、2つの大きな変化が起きた。まず、毎回ゲームのルールを最初から解釈する必要がなくなり、1回の行動にかかる思考時間が短縮された。次に、過去の思考を思い出せるようになったことで、モデルは時間をかけて学習し、一貫した戦略を取れるようになった。

コンパクションの効果

公式ハーネスは、コンテキストが175,000文字を超えると古いメッセージを削除する「ローリング打ち切り」を採用していた。これに対し、Responses APIのコンパクションは、会話が長くなったときに内容を要約して保持する。これにより、過去の観察や行動を失うことなく、より少ないトークンで同じ情報を維持できる。

コンパクションを有効にした環境では、GPT-5.6 Solはゲーム内で学んだことを長いプレイ時間にわたって保持しやすくなり、スコアがさらに向上した。結果として、出力トークン数も大幅に削減された。

パフォーマンスの大幅向上とトークン削減

パフォーマンスの大幅向上とトークン削減

公開タスクセットにおいて、公式ハーネスでのGPT-5.6 Sol(max)のスコアは13.3%だった。推論保持とコンパクションを適用した結果、38.3%まで上昇した。これは約3倍の改善であり、出力トークンはおよそ6分の1に減少している。

スコアに用いられている「RHAE(Relative Human Action Efficiency)」は、人間のパフォーマンスを基準にした指標である。ARC-AGI-3の公式プレイヤーログから推定される人間の平均スコアは48%であり、GPT-5.6 Solはその80%近くに達した。この数字は、適切なハーネスがいかに重要かを雄弁に物語る。

実務開発者への示唆

実務開発者への示唆

Responses API の活用推奨

OpenAIは、API利用者に対して、旧来のChat Completions APIではなくResponses APIを使うこと、そして推論保持とコンパクションを有効にすることを強く推奨している。これらの設定は、ChatGPTやCodexなどのプロダクトで実際に使われている本番構成と同じである。

特に、エージェント的な挙動や長期的なタスクをAIに任せる場合、推論保持とコンパクションは必須に近い。実装上の手間は最小限であり、Responses APIを使えばレスポンスIDを引き継ぐだけで実現できる。

ベンチマーク比較の注意点

今回の事例は、ベンチマーク評価がモデル単体の能力だけでなく、API設定やハーネス設計といった目に見えない要素も測っていることを思い出させる。低いスコアが報告されても、それはモデルの本質的な限界ではなく、評価環境の不備かもしれない。

OpenAI自身、過去にも公開ベンチマークで成績が低く驚いた後に、評価ランナーが推論メッセージを捨てる汎用ハーネスを使っていたことに気づいたという経験がある。モデルを比較する際は、ChatGPTやCodexの実運用に近い設定で評価された結果を基準にすることが望ましい。

この記事のポイント

  • GPT-5.6 SolはARC-AGI-3で当初7.8%のスコアだったが、API設定変更後は38.3%まで向上
  • 推論保持を有効にすると、過去の思考を再利用でき学習効率が上がる
  • コンパクションによって古い情報を要約し、少ないトークンで文脈を維持できる
  • Responses API を用いることで、ChatGPTと同等のパフォーマンスを引き出せる
  • ベンチマーク評価にはハーネス設計が大きく影響するため注意が必要
海田 洋祐
WordPressホスティングの「セキュア」は本当か?実検証が明かした真実

WordPressホスティングの「セキュア」は本当か?実検証が明かした真実

WP Tavernのポッドキャスト「Jukebox」に、WordPressセキュリティ企業PatchstackのMaciek Palmowski氏が出演した。同氏はWordCamp Europe 2026で「Testing the promise: does secure hosting deliver?」と題した講演を行い、ホスティング会社が掲げる「セキュアホスティング」の実態を検証した結果を発表した。

テストには30の既知のプラグイン脆弱性を用い、複数の主要ホストで同一条件のペネトレーションテストを実施した。結果は衝撃的で、WordPress固有の攻撃の大半が防御をすり抜けるというものだった。ここではポッドキャストの内容を基に、テストの詳細と、そこから得られる実務への教訓を解説する。

「セキュア」の看板をどう検証したのか

「セキュア」の看板をどう検証したのか

この調査のきっかけは、Patchstackが公開したWordPressセキュリティレポートに対する、WordPress共同創設者Matt Mullenweg氏の反応だった。WP TavernのポッドキャストでPalmowski氏は、「ホスティング会社がすでに対処しているのではないか」という趣旨の問いを受けたと述べている。同社はこれに対し、感覚ではなくデータで示す必要があると判断し、実環境でのテストに踏み切った。

30の既知の脆弱性と標準化手法

テストは2段階で行われた。最初の小規模な試験で、すでに「攻撃の80%が成功する」という結果が出たため、範囲を拡大した本試験が実施された。

  • 対象: 30種類以上のプラグイン脆弱性。いずれもPatchstackのバグ報奨金プログラムを通じて報告され、攻撃手順(PoC)が確立しているもの。
  • 環境: 複数の大手ホスティング会社で、提供されているすべてのセキュリティ機能を有効化した上でテスト。
  • 脆弱性の種類: ファイルアップロード、パストラバーサル、SQLインジェクションなど、WordPressプラグインに典型的なものからEC向けまで幅広く選定。

つまり、現実に存在し、攻撃手法も公開されている脆弱性を「ホスティングがどこまで防げるか」を公平に調べたものだ。

テスト設計の要点
プラグイン選定 全PoCが揃った既知の脆弱性のみ
環境設定 各ホストの全セキュリティ機能を有効化
攻撃ベクトル 実環境でPoCを忠実に再現
検証 独立した第三者が結果を確認
※いわば「防御側に有利な設定」でもどこまで防げるかを調べた形だ

この設計により、「マーケティング上のうたい文句」と「実際の防御力」の差が浮き彫りになった。

検証結果が示すギャップ

検証結果が示すギャップ

本試験の結果、WordPressに特化した攻撃の約70〜80%がホスティングの防御を通過した。Palmowski氏は「問題があるとは思っていたが、ここまで大きいとは」と語っている。

同じセキュリティツールでも結果はバラバラ

興味深いことに、同じサードパーティ製セキュリティツール(例としてCloudflareが示唆された)を導入しているホスト間でも、防御の成否に大きな差が出た。これは「どのツールを入れるか」より「どのように設定・運用するか」の重要性を示している。

従来のWAF依存型(Before)
一般的なWebアプリケーションファイアウォール(WAF)はPHPの基本攻撃パターンには強い。しかし、WordPressのプラグイン固有の処理を理解しておらず、データベース操作やREST API経由の攻撃を見逃しやすい。
↓
WordPressアウェア型(After)
プラグインのバージョンやインストール済みテーマの情報を把握し、「今このプラグインのこの脆弱性」を狙ったリクエストをブロックする。ホスティングレベルでプラグイン構成と連動したルールが必要になる。
※同じWAF製品でも、WordPress特有のルールをどこまでチューニングしているかで結果が分かれた

この差は、設定の積極性と利便性のトレードオフにも関係する。攻撃を厳しくブロックすれば誤検知が増え、ユーザー体験を損なう可能性がある。一部のホストはユーザーへの影響を恐れて設定を緩めていると考えられる。

ホストの「その後の対応」にも差

テスト後、Patchstackは全対象ホストに結果を通知し、どの攻撃が通過したかを共有した。Palmowski氏によると、一部のホストは速やかに設定を修正し、防御力を大幅に改善した。一方で、通知後も何も手を打たなかったホストも存在したという。

「問題があること自体よりも、それを指摘された後の行動のほうが重要だ」と同氏は強調する。セキュリティに終わりはなく、発見→修正のループを回せるかどうかが本質的な強さを決める。

スイスチーズモデルと多層防御

スイスチーズモデルと多層防御

Palmowski氏は、理想的なセキュリティを「スイスチーズモデル」で説明した。どの防御層にも穴(欠陥)は存在する。重要なのは、複数の層を重ねることで、全体として穴をふさぐことだ。

第1層 ホスティングの基本防御
一般的なWAFやDDoS対策。PHPのアップロード制限など。WordPress固有の攻撃は通過しやすい。
↓
第2層 WordPressアウェアな保護
プラグインの脆弱性データベースと連動し、インストール済み環境に特化した攻撃を遮断する層。
↓
第3層 サイト運用者の対応プロセス
定期的な更新、バックアップ、インシデント発生時の連絡手順。パスワードポリシーや二要素認証も含む。
※どれか1層だけで完璧を目指すのではなく、3層すべてを機能させることが前提になる

このモデルから言えるのは、ホスティングの防御は重要な第1・第2層だが、それだけでは不十分という点だ。特に第2層の「WordPressアウェア」な保護がないホストでは、第1層だけに頼ることになり、テストのように攻撃が素通りしてしまう。

AI時代の攻撃スピードとパッチ未適用問題

AI時代の攻撃スピードとパッチ未適用問題

2026年のセキュリティ議論でAIの話題は避けられない。Palmowski氏は「攻撃の高速化」と「パッチ未適用率の高さ」の2点をリスクとして挙げた。

脆弱性公表から攻撃開始まで5時間

Patchstackの内部データによると、脆弱性が公表されてから実際に攻撃が観測されるまでの平均時間は約5時間だ。数年前はもっと長かったが、AIによる攻撃コードの自動生成がこの時間を劇的に短縮している。

「毎週の手動更新で大丈夫」というアドバイスは、2026年においてはほぼ無力だ。攻撃は日単位や週単位ではなく、時間単位で動いている。リアルタイムの防御か、少なくとも自動更新と組み合わせた仕組みが求められる。

50%の脆弱性は公表時点で未パッチ

さらに深刻なのは、発見された脆弱性の約半数が、ベンダーへの通知から30日が経過しても修正されずに公表されている事実だ。これは「とにかく更新すれば安全」という前提を崩す。更新したくてもパッチが存在しないケースが大量にあるからだ。

現実のタイムライン
STEP 1 脆弱性の発見とベンダーへの通知
→ 30日間の修正猶予
STEP 2 未修正のまま公表(ケースの約50%)
→ 平均5時間で攻撃開始
STEP 3 パッチ不在のまま攻撃が拡散
※この流れの中で、ホスティング側のWordPressアウェアな防御が有効になる

このタイムラインを見れば、「プラグイン開発者が対応してから更新すればいい」という姿勢がいかに危険かがわかる。パッチが存在しない期間こそ、ホスティングレベルでの脆弱性ブロックや仮想パッチが有効になる。

ホスティング選びで問うべき質問

ホスティング選びで問うべき質問

では、利用者や代理店はどのようにホスティングを評価すればいいのか。Palmowski氏は「WordPressに特化したセキュリティ層の有無を確認すること」が最初の一手だと述べる。

「WordPressアウェア」かどうかを見極める

営業担当者やドキュメントに「Webアプリケーションファイアウォールを備えている」とだけ書かれている場合は要注意だ。これはPHP全体に対する汎用防御であり、WordPressのプラグイン固有の脆弱性を検知できるとは限らない。

  • 具体的な質問例: 「御社のセキュリティは、WordPressの特定プラグインの脆弱性を検知・ブロックする機能がありますか?」
  • 答えられない、または「WAFで対応」とだけ返ってくる場合は、WordPressアウェアな層が存在しない可能性が高い。
  • 逆に、特定のセキュリティパートナー(Patchstack、WPScanなど)と連携していると明言できるホストは、少なくともその層を意識していると判断できる。

「すべてを守る」という表現に注意

Palmowski氏は、ホスティング会社が「セキュリティは全てお任せください。追加ツールは不要です」と断言する場合に警戒が必要だと指摘する。同氏の言葉を借りれば、「現実には、どの防御層も完璧ではない」のだ。

「『当社はこの層を担当しますが、最終的なサイト運用のセキュリティはお客様の責任です』と明言するホストのほうが、かえって誠実で信頼できる」とPalmowski氏は評価する。完璧をうたうマーケティングよりも、限界を認めつつ強みを説明する姿勢が、これからの「セキュアホスティング」には求められる。

この記事のポイント

  • 複数ホストでの実検証で、WordPress固有の攻撃の70〜80%が防御を通過していた。
  • 同じセキュリティツールでも設定や運用次第で結果が大きく異なる。
  • 「WAFがあるから安全」ではなく、WordPressのプラグイン構成を理解した層が必須。
  • 脆弱性公表から平均5時間で攻撃が始まる現状では、手動更新だけでは不十分。
  • 「スイスチーズモデル」に基づき、ホスティングの防御と自社の運用プロセスを重ねる必要がある。
海田 洋祐
クロールバジェット最適化の新ガイドライン、ECサイトが実践すべき手法

クロールバジェット最適化の新ガイドライン、ECサイトが実践すべき手法

Googleがクロールインフラストラクチャの公式ドキュメントを更新し、「クロールバジェットの最適化」に関する新たなガイドラインを公開した。ECサイト運営者にとって、この変更は商品ページのインデックス速度に直結する。クロールされなければ検索結果に表示されないからだ。

今回の更新で注目すべきは、新サイトに割り当てられる「保守的なクロールバジェット」の考え方と、304ステータスコードに関する注意喚起だ。特に304の扱いは、安易に導入すると検索順位に影響を与える可能性がある。

この記事では、Googleの新ガイドラインの要点と、ECサイトが実践すべきクロールバジェット最適化の手法を解説する。

クロールバジェットとは何か

クロールバジェットとは何か

クロールバジェットとは、Googlebotが一定期間内に特定のサイトをクロールするURLの総量を指す。インターネット上のURL数は膨大であり、Googleは各サイトに割り当てるクロール量を最適化する必要がある。この割り当てが「バジェット(予算)」と呼ばれる理由だ。

サイト構造が整理されておらず、無駄なURLが多いサイトは、クロールに時間がかかり、結果としてインデックスされるページ数が少なくなる。ECサイトの場合、商品ページがインデックスされなければ、検索経由の流入機会を失うことになる。

クロールバジェットが無駄に使われるサイト
Googlebot → 重複ページ → ソフト404 → 無駄なパラメータURL
※クロールの大半が無駄なURLに消費され、重要な商品ページまで到達できない
■ Googlebotが無駄なURLを巡回
↓
クロールバジェットが最適化されたサイト
Googlebot → 新着商品ページ → 更新されたカテゴリ → ブログ記事
※無駄なURLが除外され、重要なページだけがクロールされる
■ 重要なページを効率的に巡回

クロールバジェットを意識したサイト設計は、検索エンジンに「このサイトは効率的にクロールできる」と認識させる第一歩だ。以下、Googleの新ガイドラインに沿った具体的な施策を見ていく。

新サイトには保守的なクロールバジェットが割り当てられる

新サイトには保守的なクロールバジェットが割り当てられる

Googleの更新されたドキュメントで明確にされたのが、新規サイトに対するクロールバジェットの初期値だ。新サイトには「保守的な」バジェットが割り当てられ、サーバーに過負荷をかけずに重要なコンテンツをカバーできるよう設計されている。

段階的なコンテンツ公開が鍵

新サイトを立ち上げる際は、一度に大量のページを公開するよりも、徐々にページ数を増やす方がGooglebotの信頼を得やすい。たとえば、100商品を1日で公開するより、1日3商品ずつ約1ヶ月かけて公開する方が、クロールバジェットの観点からは有効だ。

STEP 1 新サイト公開(少数の重要ページのみ)
Googlebotがサーバー負荷を確認しながら巡回開始
↓
STEP 2 1日数商品ずつ追加公開
XMLサイトマップを更新し、Googleに変更を通知
↓
STEP 3 定期的な更新を継続
Googlebotの巡回頻度が徐々に増加
↓
STEP 4 クロールバジェットの拡大
信頼が確立され、より多くのページが巡回対象に

この段階的アプローチにより、Googlebotはサイトの更新パターンを学習し、クロールバジェットを徐々に拡大していく。XMLサイトマップの自動更新と組み合わせることで、さらに効果が高まる。

表示速度の改善がバジェットを増やす

サイトの読み込み速度が速いほど、Googlebotは効率的にクロールできる。これは以前から知られていた事実だが、今回のガイドラインでも改めて強調された。表示速度の改善は、ユーザー体験の向上だけでなく、クロールバジェットの増加にも直結する。

Googleが提供するPageSpeed InsightsやLighthouseを使って定期的にパフォーマンスを測定し、改善を続けることが重要だ。ECサイトでは、画像の最適化や不要なスクリプトの削減が特に効果的だ。

人気ページはクロール頻度が高まる

外部リンクや内部リンクを多く集めているページは、Googlebotの巡回頻度が高くなる。ECサイトの場合、トップページや主要カテゴリページ、よく参照される商品ページが該当する。内部リンク構造を最適化し、重要なページへリンクを集中させることで、クロール頻度を向上させられる。

クロール効率を下げる要因とその対策

クロール効率を下げる要因とその対策

クロールバジェットを浪費する要因はいくつかある。以下に主要なものと対策を示す。

robots.txtで不要ページをブロック

プライベートログインページ、ショッピングカート、動的に生成されるページなど、インデックス不要なページはrobots.txtのdisallowディレクティブでブロックする。これにより、Googlebotが本当に重要なページだけを巡回するよう誘導できる。

重複コンテンツの削除と統合

同じ内容のページが複数存在すると、クロールバジェットが分散される。商品バリエーション(色違い、サイズ違い)でURLが分かれている場合は、canonicalタグで正規URLを指定するか、統合を検討する。

ソフト404とリダイレクトチェーンを回避

削除されたページが200ステータスコードを返す「ソフト404」は、Googlebotが無駄なクロールを続ける原因となる。存在しないページは404または410レスポンスを返すように設定する。また、1つのページに対して複数のリダイレクトが発生する「リダイレクトチェーン」も、クロール効率を低下させるため避けるべきだ。

Search Consoleのクロール統計を活用

Google Search Consoleの「設定」→「クロール統計」レポートでは、Googlebotのクロール頻度や発生した問題を確認できる。このレポートを定期的にチェックし、クロールバジェットの消費状況を把握することが、最適化の出発点となる。

304ステータスコードの注意点

304ステータスコードの注意点

今回のガイドライン更新で追加されたのが、304(Not Modified)ステータスコードに関する推奨だ。Googleは「前回のクロールからページが変更されていない場合、304コードを返すことでGoogleにキャッシュ版の再利用を促し、サーバー帯域とリソースを節約できる」としている。

しかし、この推奨には注意が必要だ。Practical Ecommerceの記事では、Jill Kocher氏が次のような見解を示している。304コードを重要なページに使用すると、検索結果での表示順位やインデックスステータスに影響を与える可能性がある。同氏は、期限切れ商品やポリシーページなど、重要性の低いページに限定して使用することを推奨している。

304コードを重要な商品ページに使った場合のリスク
Googlebot → 304 Not Modified
※キャッシュが再利用され、実際のコンテンツ更新が検出されないおそれ
⚠ 表示順位の低下やインデックスステータスへの悪影響の可能性
■ リスクあり(重要ページには非推奨)
↓
304コードの安全な使用例
期限切れ商品 や プライバシーポリシー
※検索順位に影響しないページに限定して使用
✅ サーバーリソースの節約に貢献
■ 安全に使用可能

ECサイト運営者としては、この304コードの推奨を鵜呑みにせず、自社のSEO戦略に照らして慎重に判断する必要がある。売上に直結する商品ページやカテゴリページには適用せず、重要度の低い固定ページに限定するのが賢明だ。

この記事のポイント

  • 新サイトのクロールバジェットは「保守的」に設定されるため、段階的なコンテンツ公開が有効
  • 表示速度の改善と定期的な更新が、クロールバジェット拡大の鍵
  • robots.txtの活用、重複コンテンツの統合、ソフト404の排除で無駄なクロールを削減
  • Search Consoleのクロール統計レポートで状況を定期的にモニタリング
  • 304ステータスコードは重要ページには使用せず、影響の少ないページに限定する
海田 洋祐
WooCommerce 11.0リリース延期、致命的エラーで8月4日に再設定

WooCommerce 11.0リリース延期、致命的エラーで8月4日に再設定

WooCommerce 11.0のリリースが延期された。当初は2026年7月28日に予定されていたが、リリース候補版RC1のテスト中に致命的なエラーが発見されたため、新たなリリース日は8月4日を予定している。

WooCommerce Developer Blogが7月28日に発表した公式情報によれば、このエラーは特定の条件下で発生する新しいパフォーマンス機能に起因する。開発チームは修正を含むRC2を準備中で、7月29日から追加テストを開始する計画だ。

ECサイト運営者にとって、WooCommerceのメジャーアップデートは売上に直結する重要なイベントである。今回の延期がビジネスに与える影響と、本番環境への適用を検討する際の判断材料をまとめた。

WooCommerce 11.0リリースの経緯

WooCommerce 11.0リリースの経緯

WooCommerce 11.0は、ECプラットフォームとしての基盤を大幅に更新するメジャーリリースだ。注文処理の高速化や管理画面の応答性改善など、複数のパフォーマンス向上が含まれると見られている。

開発チームは当初の予定通り7月28日のリリースを目指してRC1(リリース候補版1)を公開したが、早期テストの段階で致命的なエラーが確認された。このエラーの重大性を考慮し、安定版の公開を1週間延期して8月4日に再設定した。

当初のリリース予定
7月28日 RC1公開 → 致命的エラー発覚 → リリース延期
※RC1テスト中に特定条件下でパフォーマンス機能が致命的エラーを引き起こした
↓
延期後のスケジュール
7月29日 RC2準備・テスト開始 → 8月4日 安定版リリース予定
※RC2での修正と事前検証を経て、安全な安定版の提供を目指す

このデモが示すように、開発チームは品質を優先し、既知の致命的な問題を修正してから安定版を届ける判断を下した。RC2での追加テストが成功すれば、当初の予定からわずか1週間の遅れでWooCommerce 11.0が利用可能になる。

致命的エラーの内容と影響範囲

WooCommerce Developer Blogの発表では、エラーの詳細な技術情報は公開されていない。しかし、いくつかの重要なポイントが判明している。

エラーの発生条件

致命的エラーは「特定の状況下」で発生する。これは、すべての店舗で必ず起こるわけではないことを意味する。おそらく、特定のプラグインやテーマとの組み合わせ、あるいは特定のサーバー設定やデータ構成がトリガーになると考えられる。

fatal error(致命的エラー)とは、PHPの実行が停止してしまう深刻なエラーのことだ。WordPressサイトでこれが発生すると、該当ページが完全に表示されなくなる。ECサイトの場合、注文処理や決済フローが停止する可能性があり、事業者にとっては売上機会の喪失に直結する。

パフォーマンス機能に起因する問題

エラーの原因は「新しいパフォーマンス機能」にある。WooCommerce 11.0では、データベースクエリの最適化やキャッシュ機構の改善など、複数のパフォーマンス向上施策が導入される予定だった。これらの新機能のいずれかが、特定の条件下で予期せぬ動作を引き起こしたと見られている。

パフォーマンス改善はECサイトにとって重要なテーマだ。ページ読み込み速度が1秒遅れるごとにコンバージョン率が7%低下するというデータもある。開発チームがパフォーマンス向上を重視するのは当然だが、その実装が安定性を損なっては本末転倒である。今回の延期は、速度と安定性のバランスを取るための慎重な判断と言える。

今後のスケジュールと事業者が取るべき対応

今後のスケジュールと事業者が取るべき対応

8月4日へ向けた開発チームの動き

開発チームは7月29日からRC2の準備と追加テストを開始する。RC2にはエラー修正が含まれ、安定版リリース前の最終検証が行われる。テストが成功すれば、8月4日にWooCommerce 11.0.0が公開される予定だ。

追加の遅延や変更があれば、WooCommerce Developer Blogを通じてアナウンスがある。本番環境への適用を検討している事業者は、このブログを注視しておくとよい。

事業者が今すべきこと

本番環境のWooCommerceをアップデートする際は、必ず事前にステージング環境でテストすることが鉄則だ。特に今回のメジャーアップデートでは、新機能と既存環境の互換性を慎重に確認する必要がある。

具体的には、以下の手順を推奨する。

  • ステージング環境を用意し、現在の本番環境を完全に複製する
  • WooCommerce 11.0.0 RC2以降をステージング環境に適用する
  • 注文処理、決済、在庫管理、メール通知など主要な機能を一通りテストする
  • 利用中のプラグインやテーマとの競合がないか確認する
  • テスト結果に問題がなければ、8月4日の安定版リリース後に本番適用を計画する

致命的エラーの具体的な条件が公開されていない現状では、すべての環境で安全とは言い切れない。RC1で発見された問題がRC2で完全に修正されるかどうかも、追加テストの結果を待つ必要がある。本番適用を急ぐよりも、安定性を優先した慎重なアプローチが賢明だ。

STEP 1 ステージング環境を構築し本番環境を複製
↓
STEP 2 WooCommerce 11.0.0 RC2以降を適用
↓
STEP 3 主要機能をテストし互換性を確認
↓
STEP 4 テスト完了後、本番環境へ安全に適用

上記のSTEPに従うことで、致命的エラーのリスクを最小限に抑えつつ、WooCommerce 11.0の新機能を安全に導入できる。特に決済フローや在庫管理は事業の中核を担う機能のため、十分なテストなしにアップデートすることは避けたい。

今回の延期が示すWooCommerce開発チームの品質姿勢

今回のリリース延期は、WooCommerce開発チームの品質に対する真摯な姿勢を示している。RC1で致命的エラーを発見した段階で、リリースを強行せずに修正と再検証を選択したことは評価に値する。

大規模なECサイトでは、致命的エラーによるダウンタイムが数時間続くだけで数百万円規模の損失が発生することもある。WooCommerceは世界で最も利用されているECプラットフォームの一つであり、その影響範囲は極めて広い。安定版の品質を確保するために1週間の延期を決断したことは、長期的に見れば利用者全体の利益になる。

事業者としては、新機能をいち早く試したい気持ちもあるだろう。しかし、ECサイトの安定稼働が最優先である。開発チームの判断を信頼し、正式リリースまで待つことが賢明だ。

この記事のポイント

  • WooCommerce 11.0のリリースが7月28日から8月4日に延期された
  • RC1テスト中に発見された致命的エラーが原因で、パフォーマンス機能に起因する
  • 開発チームはRC2の準備と追加テストを7月29日から開始する
  • 事業者は本番適用前にステージング環境でのテストを徹底すべきである
  • 品質優先の判断は長期的にEC事業者の利益となる
海田 洋祐