
GiveWPアップデート後にStripeの寄付が完了しない原因と直し方
Stripeの決済は成功しているのにGiveWPで寄付が「完了」にならない。管理画面に寄付データが作成されず、Webhookだけが延々と失敗し続ける。この症状は、GiveWP 4.16のアップデート後にStripeから送られてくるWebhookの中身が空(null)になっていることが原因だ。PHPの致命的エラー「array_keys(): Argument #1 ($array) must be of type array, null given」が記録されているならなおさらで、GiveWPがイベントデータを正しく読み取れていない。
対処の核心はGiveWPとStripeの接続を完全に再確立し、Webhookの登録から正しくやり直すことにある。加えて、サーバー側のキャッシュがWebhookの受信を阻害しているケースも多いため、キャッシュの全削除とWebhookエンドポイントの除外設定が必要だ。
なぜStripeの決済は成功するのにGiveWPの寄付は未完了になるのか

この問題のややこしい点は、Stripe上では決済が正常に完了して見えることだ。PaymentIntentのステータスは「succeeded」になり、クレジットカードの引き落としも問題なく行われる。しかしGiveWP側では寄付レコードが作成されず、寄付者にも完了メールが届かない。
仕組みをたどると、GiveWPは次の流れで寄付を確定させている。
この流れのうち、手順③の段階でコケているのが今回の症状だ。StripeからのWebhookはGiveWPのエンドポイントに届いているのに、GiveWPがその中身を処理できない。結果として手順④に進めず、寄付は永遠に「処理中」のまま取り残される。
「array_keys null given」エラーが示す根本原因

GiveWPのデバッグログに次のような致命的エラーが記録されている場合、原因の特定はかなり絞り込める。
Uncaught TypeError: array_keys(): Argument #1 ($array) must be of type array, null given
in vendor/stripe/stripe-php/lib/StripeObject.phpこのエラーは、GiveWPがStripeの公式PHPライブラリ(stripe-php)を使ってWebhookイベントのデータを読み取ろうとしたとき、肝心のイベントオブジェクトの中身がnullになっていることを意味する。本来なら配列として渡されるべきデータが空っぽなのだ。
なぜデータが空になるのか。主な原因は次の3つに集約される。
- GiveWPのアップデートで内部のWebhook処理ロジックが変わり、既存の接続設定との整合性が崩れた
- サーバーレベルのキャッシュ(LiteSpeedやホスティング側のキャッシュ)がWebhookリクエストを変形させている
- StripeダッシュボードのWebhook設定とGiveWPが自動管理する署名シークレットとの間にずれが生じている
4.16より前のバージョンではWebhookのデータ取得方法が異なっていた可能性があり、アップデートによって従来の接続状態に不整合が発生したと見るのが自然だ。事実、GiveWP 4.16がリリースされる直前の6月23日までは正常に動作していたという報告は、この仮説を裏付けている。
GiveWPとStripeの接続を完全に再確立する手順

部分的な修正では直らない。GiveWPとStripeの間の信頼関係をゼロから組み直すつもりで、以下の手順を上から順に実行する。
GiveWP管理画面でのStripe接続解除と再接続の落とし穴
接続解除ボタンを押しても、内部的に完全にクリーンアップされるとは限らない。GiveWPは接続情報をデータベースのoptionsテーブルに保存しているため、万が一解除がうまくいかない場合は、データベースを直接確認する方法も検討する。
再接続時は必ず本番モードで認証を通すこと。テストモードで接続したあとに本番モードに切り替えても、Webhookエンドポイントはテスト用のものが残ったままになり、本番決済のWebhookが正しく処理されない原因になる。
Stripe Webhookエンドポイントに必要なイベントを確認する
GiveWPが自動登録するWebhookには、以下の8つのイベントが最低限有効になっている必要がある。Stripeダッシュボードでエンドポイントを開き、「受信イベント」欄を目視で確認する。
- charge.refunded(返金処理)
- checkout.session.completed(チェックアウトセッション完了)
- customer.subscription.created(定期寄付の作成)
- customer.subscription.deleted(定期寄付の削除)
- invoice.payment_failed(請求書の支払い失敗)
- invoice.payment_succeeded(請求書の支払い成功)
- payment_intent.payment_failed(支払い意図の失敗)
- payment_intent.succeeded(支払い意図の成功)
いずれかが欠けている場合は手動で追加する。GiveWPがイベントを自動追加する仕様はバージョンによって変わるため、再接続後に必ず確認する習慣をつけるとよい。
キャッシュがWebhookを壊す仕組みと確実な対処

Webhookはサーバー間のHTTP POSTリクエストだ。ところが一部のキャッシュプラグインやホスティング側のキャッシュ機構は、このPOSTリクエストに対して予期せぬ挙動を示す。具体的には、リクエストボディを空にしたり、ヘッダー情報を削除したり、レスポンスをキャッシュしてしまったりする。
GiveWPが正しく署名を検証し、イベントデータを読み取るためには、StripeからのPOSTリクエストが一切加工されずに届かなければならない。次の対応を必ず実施する。
LiteSpeedキャッシュが原因のケース
LiteSpeedサーバー環境では、LiteSpeed Cacheプラグインの設定画面から「キャッシュ」→「除外」タブを開き、「URLの除外」にGiveWPのWebhookエンドポイントパスを追加する。具体的には「give-listener=stripe」を含むURLパターンを指定する。正規表現が使える場合は次のように記述する。
give-listener=stripeまた、LiteSpeedの「オブジェクトキャッシュ」や「ブラウザキャッシュ」も合わせて無効化した状態でテストすることを推奨する。テストが終わったら再度有効化しても問題はないが、少なくともWebhookエンドポイントだけは常にキャッシュの対象外にしておく。
ホスティング側のキャッシュが原因のケース
一部の共用サーバーやマネージドホスティングでは、サーバーレベルでリバースプロキシキャッシュが動作している。管理パネルからキャッシュを手動でクリアしたあと、一時的にキャッシュ機能を停止してWebhookが正常に処理されるかテストする。
恒常的な解決策としては、ホスティングのサポートに依頼して「https://example.com/?give-listener=stripe」をキャッシュの除外リストに追加してもらう必要がある。
署名シークレットの誤設定が引き起こす症状と修正

GiveWP 4.16以降、署名シークレットの管理方法が変わり、手動での設定が不要になった。GiveWPがStripeに接続する際、自動的にWebhookエンドポイントを作成し、署名シークレットもGiveWP内部で管理する。そのため、Stripeダッシュボードから取得した署名シークレットをGiveWPの設定画面に入力する欄は存在しない。
もし過去に手動でWebhookを作成し、その署名シークレットを何らかの方法でGiveWPに設定していた場合、バージョンアップ後にその情報が無視されるか、あるいは競合を起こす可能性がある。そのため、手順としては次のように徹底する。
- Stripeダッシュボードから古いWebhookをすべて削除する(手動で作成したものも含む)
- GiveWP管理画面でStripeとの接続を完全に解除する
- GiveWP管理画面でStripeに再接続する(このとき新しいWebhookと署名シークレットが自動作成される)
署名シークレットに関するエラーがStripeダッシュボードに表示されている場合、ほぼ間違いなく新旧のWebhookが混在しているか、手動設定の名残が残っている。上記の手順で完全にリセットすれば、署名検証エラーは解消する。
それでも直らないときの最終確認リスト

上記の手順をすべて実行しても症状が改善しない場合、以下のポイントを順に再チェックする。
よくある質問
GiveWPを最新版に更新したあとにStripeのWebhookが失敗し始めた。ロールバックするべきか
ロールバックは推奨しない。4.16系にはWebhook処理まわりの重要な変更が含まれており、古いバージョンに戻すと将来的にStripe APIの更新に追随できず、より深刻な不具合を引き起こす。まずは本記事の再接続手順を試し、それでも解決しない場合はGiveWPのサポートにシステムレポートを送って調査を依頼するほうが安全だ。
StripeのダッシュボードでWebhookが「失敗」と表示されるが、GiveWP側にエラーログが出ない
GiveWPのデバッグモードが有効になっていない可能性が高い。「寄付」→「設定」→「詳細」→「デバッグモード」を有効にすると、Webhook処理のエラーログが記録されるようになる。ログは「寄付」→「ツール」→「ログ」で確認できる。
再接続してもWebhookがStripeダッシュボードに自動作成されない
GiveWPの接続プロセスの中で、WordPressのREST APIが正しく動作していない可能性がある。パーマリンク設定を「基本」以外に変更して保存し直す。また、セキュリティプラグインがREST APIを制限していないか確認する。
WebhookエンドポイントのURLは手動で変更してもよいか
原則として不要であり、変更すべきではない。GiveWPが自動生成するエンドポイントURLは「https://(サイトURL)/?give-listener=stripe」で固定されており、これをStripeに正しく登録している。URLを手動で変更すると、署名の不一致が発生してすべてのWebhookが失敗する。
GiveWPのシステムレポートはどこで確認できるか
WordPress管理画面の「寄付」→「ツール」→「システム情報」タブを開き、「システムレポートを取得」ボタンをクリックすると、サーバー環境やGiveWPの設定情報がテキスト形式で表示される。サポートに問い合わせる際はこのレポートを添付するとスムーズに調査が進む。
この記事のポイント
- Stripe決済成功後に寄付が未完了になるのは、Webhook処理の段階でGiveWPがイベントデータを読み取れていないから
- 致命的エラー「array_keys null given」はWebhookの中身が空であることを示す決定的な手がかり
- GiveWPとStripeの接続解除からWebhook全削除、再接続までを一気に行い、署名シークレットを完全に再生成する
- LiteSpeedやホスティングのキャッシュからWebhookエンドポイントを除外し、POSTリクエストが加工されないようにする
- 署名シークレットはGiveWPが自動管理するため、手動設定は不要であり、むしろ競合の原因になる

・ Reddit、Stack Overflow、WordPress.org フォーラムを日々巡回し、現場の悩みを拾い上げて記事化
・ WordPress、WooCommerce、Next.js などモダンWeb制作領域のトラブルシューティングが専門
・ 「検索しても答えが見つからなかった」を一つでも減らすことが目標
・ エラーメッセージから根本原因にたどり着く粘り強い調査が得意
・ 初心者がつまずきやすい箇所を先回りで解決する記事作りを心がけている

AWS Graviton5搭載EC2 C9gインスタンスが一般提供開始
計算負荷の高いワークロードを扱う企業にとって、「もう少しだけ処理が速ければ」という場面は多い。AWSが6月30日に発表したEC2 C9g/C9gdインスタンスは、その不満を根本から解決する新世代の計算特化型インスタンスだ。Graviton5プロセッサの投入により、前世代からvCPUあたり最大25%の性能向上を実現した。今回の発表で特に注目すべきは、クラウド最速級となるDDR5-8800MT/sメモリの採用と、正式検証済みのハイパーバイザー分離エンジン「Nitro Isolation Engine」の搭載だ。本記事では、CPU負荷の高いバッチ処理や動画エンコーディングを中心に、新しいインスタンスがどのような場面で威力を発揮するのかを詳しく解説する。
C9g/C9gdインスタンスの位置づけを見極める

AWSのEC2には多様なインスタンスファミリーが存在する。頭文字の「C」はCompute Optimized(計算最適化)を意味し、他のメモリ最適化(Rシリーズ)やストレージ最適化(Iシリーズ)とは設計思想が異なる。計算最適化インスタンスは、vCPUあたりの演算性能を最大化することに特化している。リアルタイム分析、機械学習の推論、動画エンコーディングなど、1秒でも短く計算を終えたい処理に適している。
今回発表されたC9g/C9gdは、2024年秋に登場したGraviton4搭載C8gの後継にあたる。AWS GravitonシリーズはArmベースの独自プロセッサで、x86系のIntel XeonやAMD EPYCと比較して、コストパフォーマンスに優れる点が強みだ。C9gの「g」はGravitonを示し、末尾に「d」がつくC9gdはNVMe SSDによる高速なローカルストレージを内蔵する。
Graviton5プロセッサの進化点を知る
Graviton5の最大の改良点は、メモリ帯域幅の拡張とレイテンシの低減にある。C9gインスタンスはDDR5-8800MT/sのDIMMを採用し、これは現在クラウド上で提供されているプロセッサインスタンスの中で最速のメモリ速度だ。数字だけでは実感しにくいが、これはメモリとCPU間のデータ転送速度が秒間8800メガトランスファー(MT/s)ということを意味する。前世代のC8gがDDR5-5600MT/sだったため、実に57%もの速度向上にあたる。
さらに、CPUのL3キャッシュ容量が5倍に拡張された。キャッシュはCPUとメインメモリの間に位置する超高速なデータ置き場で、容量が大きいほどメモリアクセスの待ち時間を減らせる。AWS News Blogの著者Seb氏によると、これらの改善により、インメモリ分析のスループット向上や、より応答性の高いエージェント型AIループが期待できるという。
ネットワーク面でも強化が施されている。パケット処理性能はGraviton4ベースのインスタンスと比較して最大3倍に向上し、インスタンスサイズ全体の平均でネットワーク帯域が約15%、EBS帯域が約20%増加した。
C9g/C9gdの主要スペック詳細と設計思想

スペック表を見ると、C9g/C9gdは最小のmedium(1vCPU/2GBメモリ)から、最大のmetal-48xl(192vCPU/384GBメモリ)まで11サイズで展開される。48xlargeではネットワーク帯域が100Gbps、EBS帯域が72Gbpsに達し、これは前世代の2倍にあたる。大規模な分散処理やリアルタイム分析基盤において、ネットワークがボトルネックになる状況を回避しやすくなるだろう。
C9gdシリーズには、ローカルのNVMe SSDストレージが追加される。容量は最小のmediumで59GB、最大の48xlargeでは3台合計で11,400GB(3×3,800GB)に達する。NVMe SSDはEBSよりもレイテンシが低いため、以下のような用途に適している。
- HPCシミュレーションのスクラッチスペース(一時的な作業領域)
- 機械学習推論の一時キャッシュ
- アドサーバーのローカルバッファ
ストレージ性能も向上しており、ローカルストレージのパフォーマンスは前世代比で約30%向上した。NVMe経由の詳細なI/Oパフォーマンス統計はCloudWatchやnvme-cli経由で取得可能で、I/Oサイズ別のレイテンシヒストグラムが1秒単位で確認できる。この機能は追加料金なしで利用できる。
Instance Bandwidth Configurationの実用性を測る
C9g/C9gdには、Instance Bandwidth Configuration(IBC)と呼ばれる帯域調整機能が搭載されている。これは、EBSとVPCネットワークの帯域配分を最大25%の範囲で調整できる仕組みだ。例えば、データベースやキャッシュ用途でEBSの帯域を優先したい場合、ネットワーク側を絞ってEBS側に割り当てを寄せることが可能になる。逆に、ネットワーク集約型の分散処理ではVPC側を優先すればよい。固定的な割り当てに縛られない柔軟性は、実運用のチューニングで大きな武器になる。
C9gとC9gdの使い分けフローを整理する
C9gとC9gdはスペックが似ているため、どちらを選ぶべきか迷う場面があるだろう。選択の決め手は「ローカルのNVMe SSDが必要かどうか」に尽きる。AWS News Blogでは、C9gを「バッチジョブ、動画エンコードパイプライン、分散分析」向け、C9gdを「HPCシミュレーションのスクラッチスペース、ML推論の一時キャッシュ、アドサーバーのローカルバッファ」向けとしている。EBSで十分な永続ストレージが足りるならC9g、一時的でも高速なローカルストレージが不可欠ならC9gdを選べばよい。
Graviton5がもたらすエージェント型AIへの適性を読み解く

AWS News Blogの発表では、C9gのワークロード例として「エージェント型AI(agentic AI)」が明記されている。エージェント型AIとは、単なる質問応答を超えて、コードを実行し、複数ステップのタスクを自律的に組み立てて完了させるAIシステムを指す。OpenAIのOperatorやAnthropicのComputer Useが代表例だ。
この種のワークロードでは、大規模言語モデル(LLM)の推論そのものに加えて、Pythonコードの実行、API呼び出し、結果の検証といったCPUバウンドな処理が連続的に発生する。Graviton5のコア数向上と大容量キャッシュは、こうした「思考と行動のループ」を高速化する土台となる。AWSの著者Seb氏によれば、アプリケーションがデータを待つ時間を削減し、結果的にエージェントループの応答性が高まるとのことだ。
AI推論といえばGPUの印象が強いが、実際には前処理、後処理、オーケストレーションの多くがCPU上で動く。ArmベースのGraviton5は、これらの処理を低コストでさばける点が実務的な魅力となる。
Nitro Isolation Engineのセキュリティ強化を理解する

C9g/C9gdは、計算最適化インスタンスとして初めて「Nitro Isolation Engine」を搭載した。これはAWS Nitro Systemの拡張機能で、仮想マシン間のメモリ空間、CPUレジスタ状態、I/Oデバイスへのアクセスを数学的正確さで強制的に分離する仕組みだ。
通常、ハイパーバイザーによる分離はソフトウェアの実装品質に依存する部分があるが、Nitro Isolation Engineは形式検証(formal verification)と呼ばれる数学的手法を用いて分離の正しさを証明している。形式検証とは、仕様を数理論理で記述し、実装がその仕様を厳密に満たすことを機械的に検証する手法だ。テストのように「見つかったバグがない」ではなく、「特定の前提条件下でバグが存在し得ない」ことを保証する。
AWSは2025年にこの技術を発表した際、ハイパーバイザーの分離を形式検証する取り組みについてホワイトペーパーを公開している。今回のC9g/C9gdで初めて、計算最適化インスタンスに実装されたことになる。
セキュリティ要件の厳しい金融サービスや医療データの分析をEC2上で行うケースでは、この正式検証済みの分離機構はインフラ選定の重要な判断材料になる。ソフトウェアレベルではなく、ハードウェア支援と形式検証の組み合わせで隔離を実現している点は、AWSの設計思想として特筆に値する。
利用可能リージョンと料金モデルを確認する

2026年6月30日時点で、C9g/C9gdは米国東部(オハイオ、バージニア北部)、米国西部(オレゴン)、欧州(フランクフルト)の4リージョンで利用可能だ。AWSは追加リージョンへの展開も予定している。
料金モデルはSavings Plans、オンデマンド、スポットインスタンス、Dedicated Instances、Dedicated Hostsに対応する。常時稼働させるワークロードではSavings Plans、短期的なバッチ処理ではスポットインスタンスと使い分けられる。EBSボリュームは仮想インスタンス1台あたり最大128個までアタッチ可能で、大規模データの処理でもストレージ不足に悩むことは少ない。
インスタンスの起動はAWSマネジメントコンソール、AWS CLI、AWS SDKのいずれからでも可能だ。GravitonはArmアーキテクチャのため、AMIやコンテナイメージはArm向けにビルドされたものを選ぶ必要がある。公式のAmazon Linux 2023やUbuntuのArm版AMIはすでに提供されているため、新規導入時の障壁は低い。
この記事のポイント
- C9g/C9gdはGraviton5搭載の計算最適化インスタンス、vCPUあたり25%の性能向上を達成
- DDR5-8800MT/sメモリと5倍のL3キャッシュにより、メモリ待ち時間を大幅に削減
- 48xlargeでは100Gbpsネットワーク帯域と72GbpsのEBS帯域、前世代比2倍に拡張
- Nitro Isolation Engine搭載、形式検証による仮想マシン分離を実現
- エージェント型AIやHPC、動画エンコードなどCPU負荷の高い処理に最適

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

404ページがホームページのキャッシュとして表示される原因と修正方法
ページキャッシュを有効にしたプラグインで、存在しないはずの404ページにアクセスするとホームページの内容がそのまま表示されてしまう不具合は、該当プラグインのバージョン2.5.0で修正された。管理画面からプラグインを最新版に更新し、キャッシュを全削除すれば解決する。
なぜ404ページがホームページのキャッシュになるのか

ページキャッシュの仕組みは、最初の訪問者がサイトにアクセスしたタイミングで、その時点のHTML出力をまるごと静的ファイルとして保存する。以降の訪問者には、WordPress本体やデータベースを毎回通さず、この静的ファイルを返すことで表示速度を大幅に上げている。
正常な動作では、訪問者が存在しないURL(いわゆる404ページ)を開いた場合、プラグインはWordPressが「これは404だ」と判定した結果をそのままキャッシュする。もしくは、404ページはそもそもキャッシュの対象から外す設計になっている。しかし今回の事象では、404ページにアクセスした際にWordPressの判定をスキップして、誤ってホームページのキャッシュを返してしまう欠陥がキャッシュ生成処理に含まれていた。
内部の動きを想像で補うと、リクエストが404だとわかった段階でキャッシュを生成せずにスルーすべきところ、テーマやプラグインがフックする前に「URLに対応するキャッシュがないからホームページのキャッシュで代用する」ような分岐に入ってしまっていた可能性が高い。結果として、アドレスバーには存在しないURLが表示されたまま、画面だけホームページのレイアウトという状態が発生する。
プラグインをアップデートしてキャッシュを削除する手順

アップデートしても直らない場合の追加確認
バージョン2.5.0に更新しキャッシュを全削除したあとも問題が再発するなら、以下の点を順に調べる。
- プラグインのキャッシュとは別に、サーバー側のVarnishキャッシュやCDNキャッシュが残っていないか
- 子テーマのfunctions.phpに古いキャッシュ制御コードが残っていないか
- プラグインの設定で「404ページをキャッシュしない」などの該当オプションが無効になっていないか
アップデート前の一時的な回避策

何らかの事情ですぐにプラグインを最新版にできない場合、手元のfunctions.phpにキャッシュ除外用の定数やフックを追加して、404ページをキャッシュ対象から外す一時しのぎが使える。ただしこれはあくまで応急処置であり、根本対応としては必ずアップデートが必要だ。
// 404ページがキャッシュされないようにする一時的な回避策
add_action( 'template_redirect', function() {
if ( is_404() ) {
if ( ! defined( 'DONOTCACHEPAGE' ) ) {
define( 'DONOTCACHEPAGE', true );
}
}
});上記のコードは、WordPressが「このリクエストは404だ」と判定した直後にDONOTCACHEPAGE定数を定義し、該当プラグインのキャッシュ生成を抑止する。テーマのfunctions.phpの末尾、またはCode Snippets系のプラグインで追加する。追加後に改めてキャッシュを全削除すれば、404ページがキャッシュされることを防げる。
ただし定数名はプラグイン固有のものであり、ほかのキャッシュプラグインでも同じ定数が使えるとは限らない。あくまで該当プラグインの一時回避策としてとらえる必要がある。
よくある質問
404ページのキャッシュ問題は特定のテーマが原因になることもあるのか
テーマが独自の404テンプレートを用意している場合でも、基本的には今回のようなバグはプラグインのキャッシュ生成処理に起因する。ただし、テーマが404のときに誤ってホームページと同じクエリを走らせる設計だと、間接的に似た挙動になるケースがありうるため、プラグイン側の問題解決後も念のためテーマの404.phpを確認しておくと安心だ。
キャッシュを削除したのに404ページでホームページが表示され続けるのはなぜか
プラグイン自体のキャッシュだけでなく、ブラウザキャッシュやサーバーレベルのキャッシュ(Varnishやnginx fastcgi cache)、CDNのキャッシュが残っていることが多い。一度シークレットウィンドウでアクセスし、それでも同じならCDNの管理画面からもキャッシュ削除を試す。ホスティングによっては専用のキャッシュクリアボタンが用意されているので確認する。
アップデート後に404表示が直ったが、今後のために404ページをキャッシュさせない設定は必要か
プラグインが正常に404を区別できるようになれば、404ページがキャッシュされることはなくなるため、追加の設定は原則不要だ。むしろ手動で除外設定を重ねると、あとで別の不具合を引き起こす可能性がある。修正が確認できたら、一時回避用のコードは削除しておくほうがよい。
この記事のポイント
- 404ページがホームページで表示される問題は、該当プラグインのバージョン2.5.0で修正済み
- 修正後は管理画面からプラグインを更新し、キャッシュをすべて削除すれば解決する
- 即時更新が難しい場合はfunctions.phpにキャッシュ除外の定数を仕込むことで一時回避できる
- サーバーやCDNの多段キャッシュが残っていると再発に見えるため、あわせて削除する

・ Reddit、Stack Overflow、WordPress.org フォーラムを日々巡回し、現場の悩みを拾い上げて記事化
・ WordPress、WooCommerce、Next.js などモダンWeb制作領域のトラブルシューティングが専門
・ 「検索しても答えが見つからなかった」を一つでも減らすことが目標
・ エラーメッセージから根本原因にたどり着く粘り強い調査が得意
・ 初心者がつまずきやすい箇所を先回りで解決する記事作りを心がけている

Prisma Compute vs Vercel、料金比較でわかるコスト差の全容
TypeScriptアプリのホスティング先を選ぶとき、Prisma ComputeとVercelが候補に挙がる。両者とも従量課金でゼロスケールするため、アイドル時のコストはかからない。だが料金単価と課金項目の設計思想が異なり、同じ負荷でも請求額に2倍以上の開きが出るケースがある。Prisma Computeはパブリックベータ中で現在無料、ここで示す料金は将来の本番適用が予定されている参考値だ。
本記事ではPrisma Blogが2026年7月1日に公開した料金比較をもとに、各メーターの単価差、20Mリクエストの実ワークロード試算、そしてなぜ同じ負荷で請求が変わるのかを掘り下げる。Vercelの価格にまつわる開発者の声も紹介し、自社のアプリに当てはめるときの判断材料を提供する。
料金体系の基本比較

両サービスともリクエスト数、メモリ消費、CPU時間、外向き帯域を課金対象とするが、単価には明確な差がある。Prisma Computeの価格はベータ版後の予定値であり、変更の可能性がある点に注意が必要だ。
リクエスト単価ではVercelが優位だが、サーバーワークの大半を占めるメモリとCPU、そして帯域ではPrisma Computeが大幅に低い単価を提示している。さらに開発者シートやエッジリクエストといったワークフローコストがPrismaには存在しない点が、後々の請求に大きく響く。
実ワークロードでのコスト試算

月間2000万リクエスト、常時2GBメモリ使用、実CPU 300vCPU時間、外向きトラフィック2TB、開発者1名という条件で両者を比較する。Vercel Proには1TBの帯域無料枠が含まれる点を織り込んだ試算だ。
メモリ (1460 GB時) $8.76
CPU (300時間) $19.20
外向き帯域 (2TB) $50.00
シート (1名) $0.00
合計 ~$98
メモリ (1460 GB時) $15.48
CPU (300時間) $38.40
外向き帯域 (2TB中1TB無料扱い) $150.00
シート (1名) $20.00
合計 ~$236
この試算ではエッジリクエストを除外し、開発者1名で固定している。実際にはチーム人数が増えるほどVercelのシート料金が積み上がり、格差はさらに拡大する。一方で外向き帯域がごく小さく、リクエスト単価の差が支配的になるシナリオでは両者の総額は接近する。
料金差を生む構造的要因

なぜ同じ負荷でこれほどの差がつくのか。理由は課金モデルの設計思想とアーキテクチャの2軸に集約される。
ワークとワークフローの分離
ホスティング料金は「アプリが稼働中に行う実作業(ワーク)」と「デプロイやプレビューなど開発プロセス(ワークフロー)」に分けられる。Prisma Computeはリクエスト、メモリ、CPU、帯域というワークのみに課金し、開発者シートやエッジリクエストといったワークフロー項目は一切請求しない。Vercelはワークに加え、シート料金とエッジリクエストをワークフローとして課金する。
Prisma Compute 課金
Vercel 課金
Prisma Compute 無料
Vercel 課金
Prisma Blogの著者Martin Janse van Rensburg氏は、AIエージェントがコードの変更→テスト→プレビューを繰り返す開発スタイルでは、Vercelのワークフロー課金が急速に膨らむリスクを指摘している。一方PrismaではデプロイのたびにイミュータブルなバージョンとプレビューURLが作られるが、それらに追加料金は発生しない。
データベース隣接配置によるエグレス抑制
Prisma Computeのアーキテクチャ上の特徴として、Prisma Postgresと同じインフラ上で動作する点が挙げられる。通常、アプリケーションサーバーとデータベースが別ベンダーや別リージョンにある場合、両者間の通信が外向き帯域として課金対象になる。Prisma Computeはデータベースとの通信が同一基盤内で完結するため、こうした隠れエグレスコストが発生しない。
アプリ-DB間通信が外向き帯域として課金
同一基盤内で通信が完結。エグレスコストなし
データベースとの通信量が多いアプリほど、この差は請求額に明確に現れる。大量のクエリを発行するAPIサーバーなどでは、Vercel+外部DB構成のエグレス費用が無視できなくなる。
開発者の声と注意点

VercelのFluid Computeは適合するワークロードでは大幅な削減効果を発揮する。リンク短縮サービスdub.coの創業者Steven Tey氏は、Xで「Vercelの利用タブが壊れたのかと思った」と述べ、Fluid有効化後に請求が50%減少したと報告している。
しかし、一部の開発者からは予想外の料金跳ね上がりに関する声も上がっている。Redditのr/nextjsスレッドでは、あるCTOがフロントエンドのみのNext.jsアプリの月額請求が「100ドル未満から800ドル超」に急増し、Cloudflare Workersへ移行後は「同じトラフィックで20ドル未満」になったと述べた。同スレッドでは「Vercelのフロントエンドは素晴らしく安いが、バックエンドは高すぎる」という見方や、Deployment Protection Exceptionsで150ドル請求された事例も共有されている。
Fluid Computeを有効化 → 請求が50%減少
フロントエンドのみのNext.jsアプリ → 月$100未満→$800超に急増
Cloudflare Workers移行後 → 同トラフィックで$20未満
Prisma Computeはパブリックベータの段階であり、実際の課金が始まっていないため、利用者からの本格的なフィードバックはまだない。Prisma Blogの著者は、フィードバックが集まり次第、この比較記事を更新する意向を示している。
この記事のポイント
- Vercelはリクエスト単価で優位だが、メモリ、CPU、帯域ではPrisma Computeが大幅に安い予定価格を提示している
- 月間2000万リクエストの試算ではPrisma Computeが約98ドル、Vercel Proが約236ドルと2.4倍の開きがあった
- 請求差の主因はワークフロー課金(シート料金、エッジリクエスト)とデータベース隣接によるエグレス抑制
- VercelのFluid Computeは適切なワークロードで削減効果を発揮する一方、トラフィックに比例しない請求急増の事例も報告されている
- Prisma Computeはまだベータ版であり、本番利用のフィードバックを踏まえた判断が今後必要になる

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

Elementorエディターが重い原因と4,400個のコンテナを減らす方法
Elementor エディターが極端に重くなる最大の要因は、ページあたりのコンテナ数が過剰に積み上がっていることだ。4,400 個という数字は Elementor の実用的な上限を大きく超えており、まずはコンテナ構造の見直しと不要なネストの解除から手を付ける。
Elementor エディターが極端に重くなる根本原因は何か

Elementor のエディターは、ページを開くたびに全ウィジェットとコンテナのデータを JSON 形式で読み込み、DOM ツリーをブラウザ上に再構築する仕組みになっている。この処理は要素数に対して指数的に負荷が増えるため、数千単位のコンテナが存在するとエディターの起動そのものが数分単位で遅延する。
とくに深刻なのが、コンテナの深いネスト(入れ子)だ。親コンテナの中に子コンテナ、さらに孫コンテナと階層が深くなるほど、エディター側でのレンダリング計算量が跳ね上がる。4,400 個のコンテナのうち、3 階層以上ネストされたものが多い場合は、構造の平坦化だけでエディターの応答速度が大きく変わる。
もうひとつ見落としがちなのが、ACF(Advanced Custom Fields)の動的データ呼び出しだ。ACF フィールドを Elementor の動的タグで大量に埋め込んでいる場合、エディター読み込み時にすべてのフィールド値がデータベースから取得される。フィールド数が多いほど、このクエリ負荷がエディターの起動時間を押し上げる。
フロントエンドが高速なのは、Elementor が静的 CSS とキャッシュを生成しているからだ。エディター側はその生成前の「生の状態」を扱うため、まったく別のパフォーマンス特性になる。
4,400 個のコンテナは異常な数値なのか

はっきり言えば、異常に多い。Elementor の公式ドキュメントに明示的な上限はないが、実務上の目安として 1 ページあたりのコンテナ数は 200〜500 個に抑えるのが望ましい。4,400 個はその 10 倍近く、エディターがまともに動かなくなるのも当然の数字だ。
100 ページあるサイトで合計 4,400 コンテナであれば 1 ページ平均 44 個だが、質問者のケースでは特定の巨大ページにコンテナが集中している可能性が高い。エディターの遅さは「サイト全体のコンテナ総数」ではなく「開こうとしているページのコンテナ数」に依存する点を押さえておく。
エディター速度を改善する具体的な手順

まずは Elementor の「実験」機能とパフォーマンス設定を最適化する
Elementor の管理画面「Elementor → 設定 → 実験」には、エディターのパフォーマンスに直結する項目がいくつかある。「インライン Font Awesome アイコン」を無効化し、「DOM の出力を最適化」を有効にする。さらに「設定 → 詳細設定」で「エディターローダーの改善」を有効化すると、エディターの初期読み込みが軽くなる。
ページのコンテナ構造を平坦化する
もっとも効果が大きいのがこれだ。深くネストされたコンテナを 1〜2 階層に減らすだけで、エディターの DOM 構築コストが劇的に下がる。以下の手順で進める。
たとえば「セクション > カラム > カラム > テキスト」という 4 階層のネストは、CSS グリッドを使えば「セクション > テキスト」の 2 階層にまとめられる。この平坦化だけでコンテナ数を 30〜50% 削減できるケースが多い。
ACF 動的タグの使用を見直す
ACF の動的タグは便利だが、1 ページに数十個も埋め込むとエディター読み込み時のデータベースクエリが無視できなくなる。とくにリピーターフィールドやフレキシブルコンテンツを多用している場合は要注意だ。可能であれば、動的タグの代わりにショートコードで一括取得する方式に切り替えるか、ACF の `get_field()` をテーマ側で処理してから Elementor に渡す設計を検討する。
サーバー側のチューニングを確認する
WP Engine のようなマネージドホストであっても、PHP のメモリ制限や実行時間の設定は確認しておく。`wp-config.php` に以下の定数を追加または修正する。
define( 'WP_MEMORY_LIMIT', '512M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );
set_time_limit( 300 );WP Engine の場合はユーザーポータルから PHP の `max_execution_time` と `memory_limit` を確認できる。数値が十分でも、サーバー側のオブジェクトキャッシュ(Redis)が正しく動作しているかも合わせて確認する。
不要なプラグインのスクリプトをエディター画面から除外する
一部のプラグインは、エディター画面であっても独自の CSS や JavaScript を読み込む。16 個のプラグインがアクティブな状態なら、そのうち 2〜3 個がエディターの応答を悪化させている可能性がある。プラグイン「Query Monitor」を一時的に有効化し、エディター画面でどのスクリプトが重いかをプロファイリングする。
問題のスクリプトを特定したら、`functions.php` に以下のようなコードを追加してエディター画面でのみ読み込みを停止する。
add_action( 'admin_enqueue_scripts', function( $hook ) {
if ( 'post.php' !== $hook && 'post-new.php' !== $hook ) {
return;
}
wp_dequeue_style( 'problem-plugin-style' );
wp_dequeue_script( 'problem-plugin-script' );
}, 100 );再構築せずに長期的な安定性を確保する設計の考え方

根本的には、Elementor は「ビジュアルビルダー」であり、数千単位の要素をリアルタイムで操作するようには設計されていない。この規模のサイトでは、ページを「Elementor で編集する領域」と「テーマやプラグインで自動生成する領域」に明確に分ける設計が有効だ。
ニュース記事や個別投稿の一覧表示、ACF の繰り返しフィールドによるコンテンツ部分は、Elementor の「ループグリッド」ウィジェットやテーマテンプレートで処理し、編集者が直接触るコンテナ数を最小限に抑える。この切り分けができれば、エディターの負荷は大幅に下がり、コンテンツ更新の速度も実用的な水準に戻る。
よくある質問
コンテナ数を減らすとデザインが崩れるのでは?
CSS グリッドやフレックスボックスを適切に使えば、ネストを減らしても見た目は維持できる。むしろ不要なラッパーを外すことで CSS の特異性が下がり、スタイルの管理がしやすくなる利点もある。作業前に必ずページを複製し、ステージング環境で検証してから本番に適用する。
ACF の動的タグをやめると運用が面倒にならないか?
ショートコード化やテーマ側での処理に切り替えると、たしかにエディター上のビジュアルプレビューは失われる。しかし、エディターが実用的な速度で動くことと引き換えにすれば、運用全体のストレスは大幅に減る。プレビューはフロントエンドで確認する運用に切り替えればよい。
Elementor 以外のビルダーに移行すべきか?
即座の移行は現実的ではないが、長期的には検討に値する。ネイティブのブロックエディター(Gutenberg)は DOM 構造が比較的平坦で、同規模のサイトでもエディターの動作は軽快だ。まずは新規ページからブロックエディターを試し、既存ページは優先度の高いものから徐々に移行する段階的アプローチが安全だ。
PHP 8.4 との相性問題はあるか?
PHP 8.4 は比較的新しく、一部のプラグインで非推奨警告や互換性の問題が出ることがある。Elementor 本体は 8.4 に対応しているが、ACF や他のプラグインが完全対応していない可能性もある。PHP のエラーログを確認し、Deprecated や Warning が頻出しているようなら PHP 8.2 や 8.3 へのバージョンダウンも一時的な回避策となる。
キャッシュ系プラグインはエディター速度に影響するか?
ページキャッシュや CSS 最適化系のプラグインはフロントエンドには有効だが、エディター画面の速度にはほぼ影響しない。むしろ CSS の最適化処理がエディター保存時に走る設定になっていると、保存がさらに遅くなる場合がある。エディター編集中は CSS 最適化をオフにできるプラグインを選ぶか、保存時のフックを一時的に無効化する。
この記事のポイント
- エディターの遅延はコンテナ数とネストの深さが最大の要因
- 4,400 個のコンテナは実用上限を大幅に超過しており、平坦化で 30〜50% 削減を目指す
- ACF 動的タグの大量使用はエディター起動時の DB 負荷を高める
- プラグイン「Query Monitor」でエディター画面のボトルネックを特定できる
- 長期的には、動的コンテンツをテーマ側に寄せて Elementor の編集負荷を下げる設計が有効

・ Reddit、Stack Overflow、WordPress.org フォーラムを日々巡回し、現場の悩みを拾い上げて記事化
・ WordPress、WooCommerce、Next.js などモダンWeb制作領域のトラブルシューティングが専門
・ 「検索しても答えが見つからなかった」を一つでも減らすことが目標
・ エラーメッセージから根本原因にたどり着く粘り強い調査が得意
・ 初心者がつまずきやすい箇所を先回りで解決する記事作りを心がけている

大文字見出しがコンバージョンを下げる、CROプロが警告
ランディングページの見出しをすべて大文字にすることは、視覚的なインパクトを与える常套手段と思われている。しかし、CRO(コンバージョン率最適化)の専門家Nate Lagos氏は、それが逆効果になる可能性を指摘する。実際のA/Bテストでは、大文字をやめて各単語の先頭だけ大文字にしたところ、コンバージョン率が25%も向上した事例が報告されている。
これは、多くのECサイト担当者が見過ごしがちな落とし穴だ。本記事では、Practical EcommerceのポッドキャストでLagos氏が語ったテスト結果と、ボトムズアップアプローチに基づくCRO戦略の核心を解説する。
大文字見出しがコンバージョンを下げる意外な事実

Lagos氏が実践するCROは「ボトムズアップテスト」と呼ばれる。購入ボタンや商品説明文といった、コンバージョンに直結する部分からコピーを検証していく手法だ。トップページや認知向けの広告文よりも、まず「買うか離脱するか」の瀬戸際にある箇所を最適化する。
このアプローチの過程で浮かび上がったのが、大文字見出しの問題だ。Lagos氏はX(旧Twitter)で読んだアイデアをきっかけに、あるクライアントのランディングページでテストを実施した。それまですべて大文字だった見出しを、各単語の先頭だけ大文字にするパターンに変更したところ、驚くべき結果が出た。
25%のコンバージョン向上を実現したA/Bテスト
テスト結果は明確だった。大文字をやめたランディングページでは、コンバージョン率が25%向上した。しかも、CPA(顧客獲得単価)も低下した。トラフィックの多いページだったため、この変化はビジネスにとって大きなインパクトをもたらした。
Lagos氏によれば、これは「可読性」の問題だ。大文字だけのテキストは、単語の形状が均一になり、脳が素早く認識しにくくなる。結果として、ユーザーは読む前に離脱してしまう。見出しのフォントサイズを小さくした場合にも同様の傾向が見られ、読みやすさが購買行動に直結することが浮き彫りになった。
ボタンテキストへの応用は未検証
ただし、Lagos氏はボタンに大文字を使うことの影響まではテストしていない。CTAボタンでは大文字が効果的なケースもあるかもしれない。今回の発見は、あくまで見出しや本文レベルのテキストブロックに限定したものだ。サイトのコピーを最適化する際は、見出しから着手するのが良いだろう。
ボトムズアップアプローチの実践

Lagos氏が提唱するボトムズアップテストは、従来の広告戦略の考え方をひっくり返す。多くのマーケターは、まず認知獲得のためのトップファネルから手を付ける。しかし、購入から遠い場所にあるメッセージは、実際の購買動機とは無関係なケースが多い。だからこそ、まずは購入ボタンの近くから最適化するのだ。
購入ボタン直近のコピーを最適化する
具体的には、商品詳細ページの見出し、説明文、価格表示、そしてCTAボタンの周辺テキストをテストする。Lagos氏はOriginal Grain在籍時代、この手法で5年間にわたり収益をほぼ5倍に伸ばした実績を持つ。腕時計という「実用性が低い」商材でこれだけの成果を出せたのは、買い手の感情に響くコピーを突き詰めたからだ。
このプロセスを経ることで、「顧客が本当に求めているもの」が明確になる。腕時計の例では、時刻を知るためではなく「地位や達成感の象徴」としての価値が見えてきた。こうした深層心理を突いたコピーが、結果的にコンバージョン率や平均注文単価を押し上げた。
市場飽和を打破するターゲット拡大戦略

コアオーディエンスへのリーチが頭打ちになったブランドが次に取るべき打ち手は、商品を軸にしたターゲットの拡大だ。Lagos氏は「常に『他に誰に売れるか』を問い続けろ」と語る。
男性向け商品を女性に売る方法
Original Grainでの実例が示唆に富む。当初、同ブランドは男性向けにメッセージを打っていた。しかし、顧客データを分析したところ、実は約半数の購入者が女性だった。そこでLagos氏は女性向けのコピーライティングに注力し、最終的に顧客の80%を女性が占めるまでに至った。
成功の鍵は「ギフト需要」の掘り起こしだった。Practical EcommerceのインタビューでLagos氏が明かしたところによると、女性顧客は「夫やボーイフレンドへの感謝を示したい」という動機で腕時計を購入していた。特に父の日やクリスマス前の30〜45日間は、ギフト向けのメッセージに全面切り替え、年間を通じてはメインサイトを男性向けに戻すという柔軟な運用を行った。
女性向けマーケティングを成功させる鉄則
Lagos氏が強調するのは「女性の顧客を理解するには女性を雇え」というシンプルな原則だ。彼自身、コピーライターのSarah Levinger氏を迎え入れ、女性視点のメッセージ構築を一から学んだ。自社にない視点を取り入れることは、新しい市場を開拓するための最短ルートになり得る。
この事例は、商品そのものを変えずに、メッセージの受け手を変えるだけで大きな成長が可能なことを示している。自社のデータを見直し、思いがけない顧客層がいないかを探る価値は大きい。
CROテストを成功に導くツールと手法

Lagos氏がA/Bテストの実施に用いているのは、Intelligemsというツールだ。テストの信頼性を担保するため、統計的有意性は「対照群に勝つ確率が80%以上」を基準にしている。サイト訪問者数が数万から数十万、注文数が数千件に達するボリュームでなければ、意味のある結果は得られない。
ヒートマップで読者の行動を可視化
テストすべき箇所を特定するには、ヒートマップツールが有効だ。ユーザーが実際にどこを読んでいるのか、どこで離脱しているのかを可視化することで、コピー改善のインパクトが大きいエリアを見極められる。Lagos氏の経験では、ランディングページや商品ページの冒頭ブロックが最もレバレッジの効く領域だという。
A/Bテストは一度きりではなく、継続的な反復が前提となる。小さな改善を積み重ねることで、CVRやAOV(平均注文単価)、RPV(訪問単価)といった重要指標を持続的に押し上げていく。大文字見出しの回避は、その第一歩として取り組みやすい改善策と言えるだろう。
この記事のポイント
- ランディングページの大文字見出しをやめ、各単語の先頭だけ大文字にすることでCVRが25%向上した事例がある
- ボトムズアップテストでは、購入ボタン近くのコピーから最適化し、購買動機を明確にする
- A/BテストはIntelligems等のツールを用い、統計的有意性を確保できる十分なボリュームで実施する
- ターゲット拡大では、女性へのギフト訴求が男性向けブランドの顧客基盤を劇的に変える可能性がある
- 改善は継続的な反復が鍵。大文字見出しの見直しは、今日から始められる施策の一つだ

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

OptinMonsterやTrustPulseが原因でWordPressが乗っ取られた時の対処
特定のプラグインをインストールしていた WordPress サイトで、管理者アカウントが勝手に作られたり、マルウェアを仕込まれる被害が広がっている。無効化した状態でも影響を受けるため、すぐにユーザー一覧とプラグインフォルダを確認しなければならない。
なぜ無効化したプラグインで侵入されたのか

被害報告が相次いでいるのは、OptinMonster、TrustPulse、PushEngage という 3 つのプラグインだ。いずれも単体で配布されているほか、MonsterInsights Pro にバンドル(同梱)されて提供されている。注目すべきは、有効化していなくてもプラグインとして存在するだけで攻撃対象になった点だ。WordPress はプラグインを無効化しても、ファイル自体はサーバー上に残る。攻撃者はそのファイルに含まれる脆弱性を利用して外部からコードを実行し、管理者アカウントの新規作成や Cloudflare/ClearFake マルウェアの設置を行った。
無料版の Wordfence では検知できなかったケースが確認されている。シグネチャ(攻撃パターン)が更新されるまでの時間差や、攻撃手法が亜種に変化していたことが原因とみられる。そのため、目視での確認が不可欠だ。
このデモは、プラグインファイルが放置された状態から攻撃者が侵入し、追加の不正な要素を仕込む流れを示している。
自分のサイトが影響を受けているか確認する手順

管理者アカウントの一覧を調べる
WordPress 管理画面の「ユーザー」→「すべてのユーザー」を開き、覚えのない管理者権限のアカウントが追加されていないかを確認する。アカウント名やメールアドレスに覚えがないもの、登録日時が直近のものがあれば要注意だ。
プラグインフォルダに不審な PHP ファイルがないか調べる
FTP ソフトやレンタルサーバーのファイルマネージャーで /wp-content/plugins/ 以下を開く。特に OptinMonster、TrustPulse、PushEngage のフォルダ内に、本来あるはずのない名前の PHP ファイルや、暗号化されたような文字列が書かれたファイルがないかを確認する。
プラグインをすでに削除してしまった場合でも、/wp-content/ 直下や /wp-includes/、テーマフォルダ内に不審な PHP ファイルが残っていないか、更新日時が最近のものに心当たりがないかを見ておくとよい。
管理者アカウントとファイルの両面から、侵入の痕跡を短時間で洗い出す手順を示している。
不正アクセスが発覚した場合の緊急対応

不正な管理者アカウントを即座に削除する
覚えのない管理者アカウントを見つけたら、すぐにそのユーザーを削除する。削除時に「すべての投稿を帰属させる」選択肢が出るが、攻撃者が作成した投稿や固定ページがなければそのまま削除してよい。念のため、削除前にゴミ箱や下書きに不審なコンテンツがないかも確認しておく。
不正ファイルを削除し、該当プラグインを完全に除去する
不審な PHP ファイルは必ずバックアップを取った上で削除する。OptinMonster、TrustPulse、PushEngage のいずれかがインストールされているなら、今後も脆弱性が残る可能性を考え、プラグイン自体を完全に削除するのが安全だ。同梱元の MonsterInsights Pro を利用している場合も、これらのアドオンが自動でインストールされていないか確認する。
サイト全体のマルウェアスキャンを実施する
Wordfence や Sucuri などのセキュリティプラグインで手動の詳細スキャンを実行する。無料版の自動スキャンだけでは検知漏れが起こる可能性があるため、手動でフルスキャンをかける。Sucuri のサイトチェック(外部スキャナ)を併用すると、サーバー内部からは見えにくい改ざんも検出しやすくなる。
再発防止と今後のセキュリティ対策

使用していないプラグインやテーマは「無効化」ではなく「削除」する
WordPress では、プラグインを無効化してもファイルはサーバー上に残り続ける。今回の事例が示すように、無効状態でもファイルが存在するだけで攻撃の足場になる。今後は使わないと判断したプラグインやテーマは、面倒でも完全に削除する習慣をつけるのが鉄則だ。
プラグインの更新を常に最新に保ち、導入元を精査する
公式リポジトリ外のプラグインや、長期間更新が止まっているものはリスクが高い。どうしても必要な場合を除き、信頼できる提供元のものだけを使う。自動更新を有効にしておくと、脆弱性が公表された直後の修正パッチを適用しやすくなる。
定期的な管理者アカウントとファイルの監査を組み込む
月に一度は「ユーザー一覧」を開き、見慣れないアカウントがないかを目視点検する。あわせて、サーバーのファイル更新日時を確認し、心当たりのないタイミングで変更されたファイルがないかをチェックする。人が目で見る作業は、自動ツールの検知漏れを補う最後の砦になる。
よくある質問
無効化していてもなぜハッキングされたのか
無効化はあくまでプラグインの動作を止めるだけで、ファイルはそのままサーバーに残る。今回の攻撃はファイルの存在を前提に外部から直接コードを実行する手法だったため、有効か無効かは関係なく被害が発生した。
Wordfence が入っていれば安心なのか
今回の事案では、無料版 Wordfence で検知できなかった例がある。セキュリティプラグインに過度な期待をせず、定期的な手動確認と不要なファイルの削除を組み合わせることが欠かせない。
MonsterInsights を使っているが該当プラグインは入れていない
MonsterInsights Pro の一部バージョンでは、これらのプラグインが同梱されて自動インストールされる場合がある。プラグイン一覧を開き、OptinMonster、TrustPulse、PushEngage が存在しないか今一度確認してほしい。
すでに削除したが、まだ不安が残る場合の最終確認方法は
レンタルサーバーの管理画面で最近のアクセスログを確認し、不審な IP アドレスや POST リクエストがないかを調べる。データベースの wp_users テーブルと wp_usermeta テーブルを直接 SQL で確認し、管理者権限(wp_capabilities に administrator を含む)のユーザーに不明なものがないかを調べる方法も有効だ。
この記事のポイント
- OptinMonster、TrustPulse、PushEngage は無効化でも攻撃対象になる
- 管理者一覧とプラグインフォルダをすぐに目視確認する
- 不正アカウントと不審ファイルは即座に削除する
- 今後は使わないプラグインを無効化で放置せず完全削除する
- セキュリティプラグインだけに頼らず定期手動監査を組み込む

・ Reddit、Stack Overflow、WordPress.org フォーラムを日々巡回し、現場の悩みを拾い上げて記事化
・ WordPress、WooCommerce、Next.js などモダンWeb制作領域のトラブルシューティングが専門
・ 「検索しても答えが見つからなかった」を一つでも減らすことが目標
・ エラーメッセージから根本原因にたどり着く粘り強い調査が得意
・ 初心者がつまずきやすい箇所を先回りで解決する記事作りを心がけている

Google、悪質な住宅用プロキシネットワークNetNutを継続的に破壊
NetNutとは何か、住宅用プロキシの仕組み

今回Googleが措置を取ったNetNut(別名Popa)は、世界最大級の住宅用プロキシネットワークだ。住宅用プロキシとは、一般家庭が契約するISP(インターネットサービスプロバイダ)のIPアドレスを経由してトラフィックを中継する仕組みである。大規模なボットネットによって実現され、NetNutは少なくとも200万台のデバイスを出口ノードとして抱えていたと見られている。
住宅用プロキシの大きな特徴は、一見すると正当な住宅回線からの通信に見える点だ。攻撃者はこの特性を悪用し、実際の位置や身元を隠蔽する。データセンター経由のプロキシとは異なり、ブラックリストに載りにくいため、アカウント不正アクセスやパスワードスプレー攻撃などに利用される。
■ 家庭のデバイスが踏み台にされる
Google Threat Intelligence Group(GTIG)の推計によると、NetNutには世界で200万台以上のデバイスが接続されていた。このボットネットは主にスマートテレビやストリーミングボックスなど、家庭に常時設置されるデバイスに潜むSDKを通じて構築される。KrebsOnSecurityの報道やGoogle自身の調査により、NetNutがこうしたデバイスを悪用してプロキシネットワークを肥大化させていた実態が明らかになっている。
Googleが取った具体的な対策とその効果

Googleは2026年7月2日、FBIやLumenなどのパートナーと連携し、NetNutの運営基盤に対して以下の施策を実施した。
Googleアカウントとサービスの無効化
NetNutがマルウェアのC2(コマンド&コントロール)に使用していたGoogleアカウントと関連サービスを、利用規約違反として無効化した。これにより、攻撃者がボットネットを制御する主要な通信路が遮断された。
技術情報の共有とエコシステム全体への働きかけ
NetNutが利用していたSDKやバックエンドのC2インフラに関する技術情報を、プラットフォーム事業者や法執行機関、研究機関と共有した。この情報に基づき、各組織が同様のネットワークを監視・遮断できるようになり、より広範な防御が可能になった。
Google Play Protectによる自動防御
Androidの組み込みセキュリティ機能であるGoogle Play Protectが、NetNutのSDKを組み込んだアプリを検出し、ユーザーに警告を発するとともに自動で無効化する措置を取った。今後も新たなインストール試行に対して保護を継続する。これによって、一般ユーザーが意図せずボットネットの一部になるリスクが大幅に低減された。
これらの連携措置により、NetNutのプロキシネットワークから数百万台のデバイスが切り離され、可用性が著しく低下した。NetNutにはホワイトラベル(再販)プログラムも存在し、多くの有名住宅用プロキシブランドが実態としてNetNutのボットネットを利用していたことが分かっている。そのため、今回の措置はプロキシ業界全体に波及効果をもたらすと見られている。
ただしGTIGは、過去のIPIDEAネットワークの事例から、個別のネットワークが一見復元力を持つように見えることもあると指摘している。プロキシ事業者は自前のボットネットが弱体化すると競合からキャパシティを購入し、事実上の再販業者に転じる傾向がある。持続的な抑止には、複数の相互接続されたネットワークを同時に標的とするスケールした取り組みが不可欠だ。
なぜ住宅用プロキシがここまで危険なのか

NetNutのような住宅用プロキシは、攻撃者にとって理想的な隠れ蓑になる。2026年6月の1週間だけでも、GTIGはNetNutの出口ノードを疑われるIPから316もの異なる脅威クラスタを観測した。これにはサイバー犯罪グループだけでなく、国家支援が疑われるスパイ活動グループも含まれていた。
デバイス所有者への直接的な被害
感染したデバイスが出口ノードになると、その家庭のIPアドレスから不正な通信が行われる。最悪の場合、同じホームネットワーク内の他のプライベートデバイスにもアクセスされ、外部の脅威に晒される。ユーザーが気付かないうちに自宅の回線が犯罪に利用され、プロバイダからフラグを立てられ通信を制限されるなどの二次被害も発生する。
大規模DDoS攻撃の踏み台としての利用
SynthientやSpur、Nokia Deepfieldなどの公開レポートによれば、NetNutのインフラはMirai亜種などのDDoSボットネットにデバイスを感染させる経路としても使われていた。住宅用プロキシは単なる匿名化ツールにとどまらず、より破壊的なサイバー攻撃の温床になっている。
正規の住宅IPに見えるため、ログイン試行のブロックを回避
出口ノード化したデバイス経由で同一LAN内の機器にアクセス
多数の住宅デバイスから一斉にトラフィックを送り標的を圧迫
ISPに不正通信として検知され、正規の通信がブロックされる可能性
こうしたリスクは、一般消費者のデバイスが知らぬ間に犯罪インフラの一部と化す構造的な問題だ。「無料VPN」や「帯域を共有するだけで報酬」といった甘い言葉でインストールを促すアプリが、実は住宅用プロキシのSDKを仕込んでいるケースが後を絶たない。
一般消費者が今すぐ取るべき3つの対策

NetNutのような脅威から自分や家族のデバイスを守るために、以下の点に注意したい。
「未使用の帯域を共有する」アプリを警戒する
「帯域を貸すだけで収入が得られる」とうたうアプリは、悪質なプロキシネットワークへの参加を促す典型的な手口だ。こうしたソフトウェアは、意図せず自宅のIPを犯罪者に貸し出す結果になる。Googleは公式アプリストアの利用と、サードパーティVPNやプロキシの権限を厳格に確認するよう呼びかけている。
Google Play Protectを有効に保つ
Androidスマートフォンやテレビデバイスでは、Play Protectが自動的にNetNut関連の不正アプリを検出・無効化する。設定から保護機能が有効になっているか確認することが第一歩だ。Play Protect認証を受けていないデバイスは、セットトップボックスなどでも注意が必要だ。
信頼できるメーカーのデバイスを選ぶ
特にスマートテレビやストリーミング端末を購入する際は、公式のAndroid TV OSを搭載し、Play Protect認証を受けているかどうかを確認すべきだ。Android TVの公式サイトではパートナーメーカーの最新リストが公開されており、購入前のチェックに役立つ。
今後の展望と持続的な対策の必要性

今回のNetNut無効化は、2026年1月のIPIDEAネットワーク対策に続くGoogleの断固たる意思表示だ。しかし住宅用プロキシ業界は急速に拡大しており、単発の措置だけでは長期的な解決にならない。事業者同士がボットネットを再販し合う流動的なエコシステムでは、1つのネットワークを潰しても別のネットワークがカバーする。
GTIGも認めるように、持続的な抑止には複数の主要プロバイダのインフラを同時に標的とし、モバイルプラットフォーム、ISP、テクノロジー企業が継続的に情報を共有し、悪意あるC2サーバーをブロックする取り組みが必要だ。Googleは「業界全体の協調努力なくして根本的な解決は難しい」との立場を明確にしている。
我々一般消費者も、知らぬ間にサイバー攻撃の一端を担わされないよう、デバイスの購入元とアプリの権限に対して常に敏感でありたい。技術的な防御だけでなく、ユーザーリテラシーの向上が、悪質な住宅用プロキシの成長を鈍化させる最後の砦になる。
■ 技術的対策の要(プラットフォーム)
■ 法執行・インフラレベルでの遮断
Googleはこの発表の中で、同様の取り組みを加速させる意向を示しており、今後の脅威インテリジェンス共有の枠組みがさらに重要になるだろう。
この記事のポイント
- GoogleがNetNut(Popa)と呼ばれる世界最大級の住宅用プロキシネットワークをFBIなどと協力して無効化
- アカウント無効、SDK情報共有、Play Protectによる自動防御で数百万台のデバイスをネットワークから切り離し
- 住宅用プロキシは一般家庭のデバイスを踏み台にし、アカウント乗っ取りやDDoS攻撃の温床に
- 消費者は「未使用帯域の共有」アプリを避け、Play Protectの有効化や信頼できるデバイス選びが重要
- 業界全体での継続的な情報共有と協調した遮断が、長期的な対策には不可欠

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

Amazon EKSにKubernetesロールバック機能、アップグレードの不安を解消
Amazon EKSにKubernetesバージョンロールバック機能が導入された。クラスタのバージョンアップグレードはこれまで戻り道のない一方通行だったが、今回の機能により最大7日間であれば以前のバージョンに巻き戻せる。AWSのDonnie Prakoso氏とChanny Yun氏が2026年7月1日付のAWS News Blogで発表した内容だ。
KubernetesコミュニティではKEP-4330に基づくエミュレートバージョンでロールバックを緩和する動きが進んでいる。しかしEKSのロールバックはエミュレーションではなく、本番環境で事前に検証済みの状態へ完全に戻る点が異なる。クラスタ管理者にとってはアップグレード作業の心理的ハードルを大幅に下げる機能だ。
本記事では、この新機能の仕組みや利用手順、EKS Auto Modeでの挙動の違いを中心に、運用現場へのインパクトを具体的に整理する。
Kubernetesバージョンロールバックの概要

この図はアップグレード失敗時の対応の違いを示している。従来はクラスタ再構築が必要だったが、新機能では「元に戻す」操作が可能になった。
ロールバックが求められてきた背景
Kubernetesは年に3回のマイナーバージョンアップがリリースされる。多数のクラスタを抱える組織、とりわけ金融や医療など規制の厳しい業界では、アップグレードに数か月単位の準備期間を設ける例も珍しくない。問題発生時に復旧できる確証がなければ、アップグレードそのものを先送りする判断になりやすい。
この結果、クラスタは古いバージョンに留まり、セキュリティパッチが未適用のまま延長サポート期間に突入するケースが増えていた。ロールバック機能はこうした「アップグレード恐怖症」を解消する安全装置として位置づけられる。
エミュレートバージョンとの違い
KEP-4330で提案されているエミュレートバージョンは、クラスタを移行用の中間状態に置くアプローチだ。対してEKSのロールバックは、実際に本番で稼働していた検証済みの状態へ戻る。エミュレーションではないため、ロールバック後の動作は以前のバージョンそのものになる。運用チームにとっては「テスト環境で確認済みの状態」に復帰できる点が安心材料だ。
基本的な制約と料金
ロールバック可能な期間はアップグレード後7日間である。バージョンは1つ前のマイナーバージョンのみ戻せる。たとえば1.34から1.35にアップグレードした場合、戻り先は1.34だ。1.33へ一気に下げることはできない。
料金はロールバック機能そのものに追加コストは発生しない。標準のEKS料金とコンピューティングコストのみで利用できる。全商用AWSリージョンで本日から提供開始されている。
ロールバックの実践的な利用手順

AWSのブログでは、Donnie Prakoso氏が実際にEKSコンソールからロールバックを試した手順が紹介されている。ここではその流れを整理しつつ、運用現場で意識すべきポイントを補足する。
この手順は標準的なアップグレード操作と大きく変わらない。所要時間は制御プレーンのロールバックが約20分で、通常のアップグレードと同程度だ。
ロールバックインサイトによる事前評価
EKSはロールバック実行前に、クラスタインサイト機能を使ってロールバックの準備状況を自動評価する。ノードのバージョン互換性やアドオン依存関係に問題があれば事前にフラグが立つ仕組みだ。事前評価をスキップして強制的にロールバックを進めたい場合は、--forceフラグが用意されている。
トラブルシューティング中の緊急時にはこの強制実行が有効だが、通常はインサイトの結果を確認してから進めるのが安全だ。互換性の警告を見落とすと、ロールバック後に別の問題が顕在化するリスクがある。
制御プレーンとノードのロールバック
制御プレーンのロールバックはすべてのEKSクラスタで利用できる。一方、ノードのロールバックはEKS Auto Modeを利用しているクラスタが対象となる。自分でノードを管理している構成では、制御プレーンだけがロールバックされ、ノード側は別途対応が必要になる点に注意したい。
EKS Auto ModeでのロールバックとキャンセルAPI

EKS Auto Modeはコンピューティング、ネットワーク、ストレージ管理を自動化するフルマネージドオプションだ。このモードでは制御プレーンと管理ノードの両方をロールバックする必要があり、ノードのロールバックはPod Disruption Budget(PDB)を尊重しながら進むため、設定によっては時間がかかる。
Auto Modeでは制御プレーンとノードが連動してロールバックされる。キャンセルAPIを使えば、所要時間が長すぎる場合に中断して戦略を練り直せる。
PDBを尊重する設計の意図
EKSはロールバック中にデフォルトでPDBをバイパスしない。ワークロードの安定性を最優先する設計思想だ。ノードの切り戻し中にPodが過剰に停止すると、アプリケーションの可用性が損なわれるからである。
ロールバックを急ぎたい場合は、運用者が自らPDBを修正または削除することで高速化できる。システムが一方的にPDBを無視しないため、安全性とスピードのバランスを利用者側でコントロールできる仕組みになっている。
キャンセルAPIの実用シナリオ
キャンセルAPIはノードロールバックの進行中に中断を指示できる機能だ。次のような状況で役立つ。ロールバックにかかる時間が想定以上に長く、ビジネスへの影響が懸念される場合。あるいはロールバック以外の代替手段(特定ノードだけの切り戻しなど)の方が適切と判断した場合だ。
中断後はPDBの調整やロールバック戦略の見直しを行い、再度実行するか別の手段を選ぶかを決められる。この柔軟性は、大規模クラスタを運用するチームにとって重要なセーフティネットになる。
運用現場へのインパクトと今後の展望

ロールバック機能の登場は、Kubernetes運用の前提を変える可能性がある。これまでは「アップグレードの前に数週間の検証期間を設けるのが常識」だったが、ロールバックが可能になったことで「まず上げてみて、問題があれば戻す」というアプローチが現実的になる。
アップグレードサイクルの短縮
Kubernetesのマイナーバージョンアップは年3回のペースで進む。これに追従するには、アップグレードサイクルを四半期以内に収める必要がある。ロールバック機能によって心理的ハードルが下がれば、検証期間を短縮しつつ最新バージョンへの追随速度を上げられる。
規制業界でも「7日間の戻し窓口がある」という事実が監査対応やリスク評価でプラスに働く可能性がある。セキュリティパッチの適用遅延リスクを低減する効果も見込めるだろう。
注意すべき制約
ロールバックは万能ではない。7日間の期間制限を過ぎると元に戻せないため、アップグレード後の監視と問題検知の仕組みは引き続き重要だ。またノードを自前管理している構成ではノードロールバックが自動化されないため、制御プレーンのみの切り戻しでは不十分なケースも想定される。
ロールバックインサイトが示す警告を無視して強制実行した場合、アドオンの互換性問題などが残る可能性もある。事前チェックを飛ばすのはあくまで緊急時の手段と心得たい。
この記事のポイント
- EKSの新機能「バージョンロールバック」はアップグレード後7日間、1つ前のマイナーバージョンに戻せる
- 制御プレーンのロールバックは全EKSクラスタ、ノードロールバックはAuto Modeクラスタが対象
- ロールバックインサイトで互換性リスクを事前評価し、
--forceでスキップも可能 - PDBを尊重する設計でワークロードの安定性を維持しつつ、キャンセルAPIで中断も選べる
- 追加料金は不要で全商用リージョンで提供開始。アップグレードサイクル短縮の追い風になる

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





