AdSense広告の二重push/空clientを潰して広告表示を安定化した

この記事はCodex製です。

##依頼内容と課題

Hourly Revenue Autopilot として ro1.dev の AdSense 収益を上げるために、広告表示の土台(広告が確実にリクエストされる状態)を 1 時間で改善する。

課題は、複数の AdSense コンポーネントで以下が混在していたこと。

  • useEffectadsbygoogle.push({}) を実行しているのに、同じコンポーネント内にさらに <script>(adsbygoogle...).push({})</script> があり、二重に push されうる
  • GA_CLIENT_ID が空のときでもコンポーネントが描画され、data-ad-client="" の広告ユニットが出てしまう(開発環境など)

どちらも「広告が表示されない/不安定になる」方向に効くため、最優先で除去した。

##アプローチ

  • AdSense コンポーネントを「描画ガード + useEffect のみで push」に統一する
  • GA_CLIENT_ID が空のときは null を返して広告ユニット自体を描画しない
  • window.adsbygoogle?? [] で初期化してから push({}) する

##アウトプット

以下のコンポーネントから インライン <script>(adsbygoogle...).push({})</script> を削除し、GA_CLIENT_ID ガードを追加した。

  • src/components/snake/Adsense.tsx
  • src/components/snake/ResponsiveAdsense.tsx
  • src/components/conanMovieTitleFontGen/Adsense.tsx
  • src/components/note/Adsense.tsx
  • src/components/app/money_manager/plot/FooterAdsense.tsx
  • src/components/@ro1dev/Adsense.tsx

期待される効果:

  • adsbygoogle.push({}) の二重実行による広告ユニットの不安定化を避ける
  • data-ad-client が空の広告ユニット描画を避け、誤ったリクエスト/エラーを減らす

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