Skip to content

Google AdSense(収益・CPC)運用メモ

日別記事ページを中心とした AdSense の実装・設定・改善方針を記録する。

現状のコード実装

項目内容
パブリッシャーIDAppConstants::ADSENSE_PUBLISHER_IDcore_src/Constants/AppConstants.php
広告スロット(日別記事系)AppConstants::ADSENSE_SLOTS_CREATE_DAILY_ARTICLE(同一ファイル・3スロット)
日別記事ショートコード内の広告core_src/View/components/ad_sense/AdSense.phpdisplay_sequential_google_adsense_ad_for_daily_article()
描画順・呼び出し元core_src/View/shortcodes/daily_article_result_view/DailyArticleResultView.phprender()
Twig テンプレートcore_src/View/components/ad_sense/templates/adsense.twigadsense-lazy クラス。インライン push なし
遅延初期化 JScore_src/View/components/ad_sense/adsense-lazy.js — IntersectionObserver(rootMargin 300px)。push は DOM 順を維持
スタイル(予約高・unfilled)core_src/View/components/ad_sense/style/style.css.adsense-wrap--adsense-wrap-min-height。配信前・unfilled は予約高を保ったまま「広告スペース」プレースホルダー、filled 時のみ解除(Issue #2859)。日別記事は ShortCodeStylePreloader で head 先行 enqueue、表示時も AdSense.php から enqueue(二重は AssetUtil がスキップ)
ショートコード [random_adsense_ad]RandomAdSenseAdShortCode.php → A8 は A8AdDisplayService(同一リクエスト内で表示済み ID を除外)、AdSense フォールバックは display_sequential_google_adsense_ad_for_daily_article()(結果ブロック B-8 と $slot_index 共有)
テンプレート配置(考察連動)daily_article_template.twig — 前半考察直後・ホール末尾の広告は、それぞれ consideration_pre / consideration_after があるときのみ出力

同一リクエスト内の重複防止(2026-05)

  • A8: A8AdDisplayService が表示済み広告 ID を保持。未使用がなくなったらプールをリセットして再抽選(1 ページ内の枠数が有効 A8 件数を超える場合)。
  • AdSense: テンプレートの [random_adsense_ad](A8 0 件時)と日別記事結果 B-8 の両方が display_sequential_google_adsense_ad_for_daily_article() を使い、静的 $slot_index でスロットを順送り。

日別記事ブロック内の表示順(2026-05 時点)

各ホールごとに:

  1. ランキング(プレースホルダー → JS で埋め込み)
  2. 末尾データ(同上)
  3. AdSense(順次スロット割り当て・auto / フル幅レスポンシブ)
  4. ヒートマップ(シンプル表示+詳細プレースホルダー)

ヒートマップ用データがない日は、ランキング・末尾の後にのみ広告を出す(従来どおり末尾に 1 枠)。

フォーマット変更の経緯

  • 以前は順次表示経路で horizontal + full_width_responsive: false としていたが、小さい横長ユニット中心になり CPC が伸びにくい可能性があったため、auto + full_width_responsive: true に統一した。
  • 未配信(unfilled)時はかつての display: none だと予約高が消え縮み CLS になるため、Issue #2859 以降は枠を潰さず残す。当初は visibility: hidden の空枠だったが、空白の違和感を減らすため予約高を保ったまま「広告スペース」プレースホルダーを表示するよう変更した。配信判定前(data-ad-status 未付与)も同じプレースホルダーを出し、filled 時のみ解除する(:has() 非対応ブラウザでは解除ルールが効かない点に留意)。

AdSense コンソール側の設定(手動)

自動広告

  • 有効。ページトップなど Google が選んだ位置に配信される。
  • 手動ユニット(上記スロット)と併用。重複しすぎないよう、変更後はレポートでインプレッション・CTR を様子見する。

モバイルのスクロール体感・CLS 対策(Issue #2826 / #2828)

staging 実測(Device Toolbar + CPU 4x)で CLS 0.93〜0.95・URL に #google_vignette を確認した。自動広告の固定系(アンカー #google_esf / ビネット #google_vignette)は手動枠・Cocoon モバイルフッターと重なり、CLS・スクロール体感の一因になり得る。

運用方針(2026-07): アンカー/ビネットは収益の主軸のため OFF にしない(現状維持)。体感改善はコード側で行う。

  • 手動枠は IntersectionObserver で遅延 pushadsense-lazy.js、枠数は維持)
  • 日別記事の非同期セクションは可視付近まで遅延読込
  • モバイルで重い backdrop-filter 等を抑制
  • プレースホルダー高さ予約の強化(Issue #2828): ランキング/末尾/ヒートマップ簡易の min-height を staging 実測に合わせて種別分離。差し替え時は HTML をプローブ計測し親に一時 min-height を付けて高さ急変を抑える(daily_article_orchestrator_utils.js
  • 関連日プレースホルダー(Issue #2831): .relational-day-placeholdermin-height 引き上げ(640px)+ 差し替え前に CSS 先行読込と高さロック(Mail / MoveDay は対象外)
  • 日別記事テンプレ注入ショートコードの head 先行読込(Issue #2835): [MonthlyLinkByYear] / [BirthDayMachinePickUp] は本文走査に載らないため、daily_article では ShortCodeStylePreloader から Common / Accordion 込みで先行 enqueue(footer 遅延 CSS による CLS 抑制)
  • AdSense 枠の head 先行読込と予約高維持(Issue #2859): daily_article では ad_sense/index.php も先行 enqueue。.adsense-wrapmin-height を初回ペイント前に効かせ、配信前・unfilled でも枠を潰さず「広告スペース」プレースホルダーを表示する(filled 時のみ解除)
  • モバイルでは簡易ヒートマップ非表示(Issue #2828 続): max-width: 768px では簡易グリッドを出さず REST も発火しない。詳細表示ボタン経由のモーダルのみ利用可能。発見性のため詳細ヒートマップの固定高さ切り出しティーザー(台番号+差枚・Issue #2833)を詳細ボタン上に表示
  • 手動枠の枠数削減や Auto Ads フォーマット変更は、収益指標を見たうえでの別検討とする

(参考)将来、体感が許容できず収益トレードオフを取る場合のみ、AdSense 管理画面 → 広告自動広告 でアンカー/ビネットを段階的に弱める。変更後は 2〜4 週間、RPM・表示回数・CTR・実機スクロールを比較する。

低単価カテゴリのブロック(任意・慎重に)

  • メニュー: コンテンツの許可とブロック設定 → 「一般カテゴリ」など。
  • パチスロ読者にはゲーム・娯楽系広告主も親和性が高く、ブロックで入札が減り CPC が下がるリスクがあるため、ゲーム・娯楽は基本的に残す
  • サイトと無関係そうなカテゴリのみ、少しずつ試す(例: 参照・ナビゲーション、通信教育、求人・人材 — 実際のリストはコンソールで確認)。
  • 変更は 1〜2 カテゴリ単位で行い、CPC・表示回数・RPM を 2〜4 週間単位で比較する。

(コンソールでの具体操作は Google の UI に依存するため、実施したブロック内容があればこのドキュメントに追記する。)

モニタリング指標

指標見方のメモ
CPCクリック単価。ジャンル要因も大きいため、コード変更との因果は単日では判断しにくい
ページ RPM / 収益フォーマット・配置変更の総合効果の確認に向く
表示回数・CTR自動広告との兼ね合いや、レイアウト変更の副作用確認
ビューアブル率AdSense のレポートで取得できる場合は、配置変更の効果確認に有用

今後の検討メモ(コード外)

  • コンテンツ強化(設定判別・天井などキーワード)で広告マッチングを上げる(長期)。
  • 手動でページ冒頭にユニットを足す場合は、自動広告トップと競合しうるため、レポートを見てから判断する。