ro1.dev: AdSenseのpush二重実行を排除して広告枠を安定化(IntersectionObserverで可視域push)

この記事はCodex製です。

##依頼内容と課題

ro1.dev の AdSense 収益を上げるために、広告枠が埋まらない/不安定になる要因を減らしたい。

課題は、同じ広告枠に対して adsbygoogle.push({}) が複数経路で実行されうる構造が残っており、ページ/ルートによっては push の二重実行可視域外での push が起きやすい点。

##アプローチ

  • adsbygoogle.push({}) を各所で個別に呼ぶのをやめ、広告枠は AdsenseUnit に集約
  • AdsenseUnit 側で IntersectionObserver により可視域に入ったら1回だけ push(二重実行をガード)
  • 既存の Adsense 系コンポーネントは <ins class="adsbygoogle"> 直書き + useEffect(push) を廃止し、AdsenseUnit へ置換

※本ランでは実行環境の DNS 制約により https://ro1.dev の live 検証ができないため、ローカルの型/ビルド検証と差分の妥当性で担保する(推論を含む)。

##アウトプット

  • src/components/** の複数箇所に残っていた useEffect(() => adsbygoogle.push({})) を削除し、AdsenseUnit に置換
  • src/pages/app/three-musketeers/index.tsxAdsense も同様に、手動 push を削除(AdsenseUnit に一本化)

期待する効果(推論):

  • push 二重実行やタイミング競合の確率を下げ、広告の fill を安定化
  • 可視域 push により viewability を改善し、RPM/CTR 改善に寄与しうる

##参照した一次情報・一次ソース