こんにちは、非エンジニアのRyoです。
今回は、自分が作ったWebPコンバーターツールにGoogle AdSenseの広告を設置しようとして、マジで大変だった体験を書いてみます。
正直、最初は「広告コードをコピペするだけだろ?」って思ってたんですけど、これが全然そんな簡単じゃなくて…。エラーが出まくって、何度も諦めかけました。
でも、最終的には成功したので、同じように悩んでいる非エンジニアの方の参考になればと思って、詳しく書いてみますね。
そもそもWebPコンバーターって何?
まず、今回の話の前提として、WebPコンバーターについて説明させてください。
WebPというのは、Googleが開発した画像ファイル形式で、JPEGやPNGよりもファイルサイズが小さくなるんです。つまり、同じ画質でも軽い画像が作れるってことですね。
僕が作ったWebPコンバーターは、ブラウザ上で画像をドラッグ&ドロップするだけで、簡単にWebP形式に変換できるツールです。
このツールが意外と好評で、アクセス数も増えてきたので、「せっかくだから広告収入も得られないかな?」と思ったのが今回の話の始まりです。
Google AdSenseって何?
Google AdSenseは、Googleが提供している広告サービスです。簡単に言うと、自分のサイトに広告を貼って、その広告がクリックされたり表示されたりすると収入が得られる仕組みです。
非エンジニアの僕からすると、最初は「広告コードを貼るだけ」だと思ってました。でも、これが全然そんな簡単じゃなかったんですよね…。
最初の挑戦:広告コードをコピペしてみた
まず、AdSenseのダッシュボードから広告コードを取得しました。こんな感じのコードです:
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-6508744207193174"
data-ad-slot="5800097298"
data-ad-format="auto"
data-full-width-responsive="true"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
「よし、これをHTMLファイルに貼り付ければOKだろ!」と思って、WebPコンバーターのHTMLファイルに貼り付けてみました。
最初のエラー:Matched Contentの謎エラー
ところが、すぐにエラーが出ました。
TagError: adsbygoogle.push() error: Invalid responsive width from Matched Content slot 6254638262: 0.
Please ensure to put this Matched Content slot into a non-zero width div container.
このエラーメッセージを見たとき、「マジで何言ってるかわからん…」って思いました。
エラーの意味を調べてみた
エラーメッセージを分解してみると:
- Matched Content: 関連記事を表示する広告タイプ
- Invalid responsive width: レスポンシブ幅が無効
- width: 0: 幅が0になっている
- non-zero width div container: 幅が0でないdivコンテナが必要
つまり、広告を表示するためのコンテナの幅が0になっちゃってるってことですね。
なぜ幅が0になったのか?
調べてみると、僕のWebPコンバーターでは、ドラッグ&ドロップエリアが最初は非表示になっていて、ユーザーが操作すると表示される仕組みになっていました。
広告をそのエリアに設置したので、最初は非表示(幅0)の状態で広告が読み込まれて、エラーが発生したというわけです。
対処法1:広告タイプを変更してみた
最初に使っていたのは「Matched Content」という広告タイプでした。これは関連記事を表示する広告で、autorelaxed形式と呼ばれています。
エラーの原因が分かったので、より安定した「ディスプレイ広告(auto)」に変更してみました。
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-6508744207193174"
data-ad-slot="5800097298"
data-ad-format="auto"
data-full-width-responsive="true"></ins>
対処法2:広告の配置場所を変更
でも、まだ問題が残っていました。広告コードがメインコンテンツエリア内にあると、ドラッグ&ドロップ機能に干渉してしまうんです。
ドラッグ&ドロップ機能が壊れた
広告を設置した後、WebPコンバーターのドラッグ&ドロップ機能が正常に動作しなくなりました。画像をドラッグしても反応しない状態になってしまったんです。
「マジかよ…広告のために基本機能が壊れるなんて…」って思いました。
解決策:ページ下部に移動
調べてみると、広告コードがJavaScriptの動作を妨げている可能性があることが分かりました。
そこで、広告をページの下部(main-areaの外)に移動してみました。これで、メイン機能に干渉することなく広告を表示できるはずです。
対処法3:視覚的デバッグで問題を特定
広告が表示されない問題が続いたので、今度は視覚的にデバッグしてみました。
赤枠と緑背景で位置確認
広告エリアを視覚的に確認するために、こんなコードを追加しました:
<div style="background: rgba(255,0,0,0.1); border: 1px dashed #ff0000;">
<p>広告エリア(テスト表示)</p>
<ins class="adsbygoogle" style="background: rgba(0,255,0,0.1);">
</div>
- 赤枠: 広告コンテナの位置を確認
- 緑背景: 広告スロットの位置を確認
これで、広告が正しい位置に配置されているかどうかが一目で分かるようになりました。
JavaScriptコンソールでデバッグ
ブラウザの開発者ツール(F12キー)を開いて、JavaScriptコンソールでAdSenseの動作を確認しました:
console.log('AdSense script loaded:', !!window.adsbygoogle);
console.log('AdSense array length:', (window.adsbygoogle || []).length);
try {
(adsbygoogle = window.adsbygoogle || []).push({});
console.log('AdSense push successful');
} catch(e) {
console.error('AdSense push error:', e);
}
これで、AdSenseスクリプトが正常に読み込まれているか、広告の初期化が成功しているかを確認できました。
対処法4:既存の動作確認済み広告ユニットでテスト
新しい広告ユニットで問題が続いたので、今度は既に動作確認済みの広告ユニットを使ってテストしてみました。
問題の切り分け
新しい広告ユニットで問題が起きる場合、以下のどちらが原因か分からないんです:
- コードの問題: HTMLやJavaScriptの実装に問題がある
- 広告ユニットの問題: AdSense側の設定に問題がある
既存の動作確認済みユニットを使うことで、コードに問題があるのか、それとも新しい広告ユニットの設定に問題があるのかを切り分けることができました。
対処法5:テスト広告の活用
本番の広告が表示されない場合、テスト広告を使って動作確認ができます:
<ins class="adsbygoogle" data-ad-test="on">
data-ad-test="on"
を追加することで、本番広告の配信状況に関係なくテストができます。
ただし、テスト広告の表示率は不安定で、10回に1回程度しか表示されないので、何度もリロードして確認する必要があります。
AdSenseの仕組みについて学んだこと
この過程で、AdSenseについて色々と学びました。
1. 広告の品切れ(在庫切れ)
コードは正常でも広告が表示されない場合があります。これは、AdSenseが適切な広告を見つけられない「品切れ」状態です。
2. 新規広告ユニットの表示遅延
新しい広告ユニットを作成した場合、表示開始までに6-24時間かかることがあります。AdSenseダッシュボードで「アクティブ」状態になっているか確認する必要があります。
3. 広告表示率の変動
広告の表示率は、ユーザーの地域、デバイス、閲覧履歴などによって変動します。同じユーザーが連続でリロードすると、表示率が低下することもあります。
最終的な成功要因
試行錯誤の末、最終的に成功した要因をまとめてみます:
1. 適切な配置場所
広告をページ下部の安全な位置に配置することで、メイン機能に干渉することなく表示できるようになりました。
2. 視覚的デバッグ
赤枠と緑背景を使った視覚的デバッグにより、問題箇所を早期に特定できました。
3. 段階的な問題切り分け
コードの問題、設定の問題、AdSense仕様の問題を順番に確認することで、効率的に問題を解決できました。
4. 運用中広告ユニットの活用
新規ではなく、実績のある広告ユニットを使用することで、安定した表示を実現できました。
5. 重要パラメータの保持
min-height
やpadding
など、表示に必要な設定を適切に維持しました。
最終的な成功したコード
最終的に成功した広告コードはこちらです:
<div style="max-width: 650px; width: 100%; margin: 40px auto 20px auto; padding: 20px; text-align: center;">
<ins class="adsbygoogle"
style="display:block; min-height: 100px;"
data-ad-client="ca-pub-6508744207193174"
data-ad-slot="5800097298"
data-ad-format="auto"
data-full-width-responsive="true"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
</div>
重要なポイント
min-height: 100px
: 広告スロットの最小高さを確保padding: 20px
: コンテナに適切な余白を設定data-ad-format="auto"
: レスポンシブ対応- 安定した運用中の広告ユニット使用: 新規ではなく実績のあるユニット
推奨デバッグフロー
今回の経験を基に、AdSense広告設置時の推奨デバッグフローをまとめてみました:
1. HTMLコード確認
基本的な設置ミスがないか確認します。タグの閉じ忘れや、属性の記述ミスなどがないかチェックしましょう。
2. 視覚的デバッグ
赤枠・緑背景で配置を確認します。広告が正しい位置に配置されているか、コンテナのサイズは適切かを確認しましょう。
3. JavaScriptコンソール
AdSenseスクリプトの読み込み確認をします。エラーメッセージが出ていないか、スクリプトが正常に動作しているかを確認しましょう。
4. 既存広告ユニットテスト
動作確認済みの広告ユニットで動作検証をします。新しいユニットで問題が起きる場合、既存のユニットでテストしてみましょう。
5. テスト広告
data-ad-test="on"
での表示テストをします。本番広告の配信状況に関係なくテストができます。
6. 時間を置いて再確認
新規ユニットの場合は24時間待機します。AdSenseの承認や配信開始には時間がかかることがあります。
7. 本番用クリーンアップ
デバッグコードを削除して最適化します。テスト用のコードは本番環境では削除しましょう。
まとめ:非エンジニアでもできる!
正直、最初は「エンジニアじゃないから無理かも…」って思ってました。でも、今回の経験で分かったのは、非エンジニアでも、適切な手順とデバッグ手法を使えば、AdSense広告の設置は可能だということです。
重要なのは段階的なアプローチ
一気に解決しようとするのではなく、問題を小さく分けて、一つずつ解決していくことが大切です。
デバッグツールを活用
視覚的デバッグやJavaScriptコンソールなど、ブラウザの開発者ツールを活用することで、問題の特定が格段に楽になります。
諦めない心
何度もエラーが出て諦めかけましたが、最終的には成功しました。非エンジニアだからといって諦める必要はありません。
実際のWebPコンバーター
今回広告を設置したWebPコンバーターは、実際に使える状態になっています:
画像をドラッグ&ドロップするだけで、簡単にWebP形式に変換できます。ぜひ使ってみてください!
最後に
非エンジニアの僕でも、試行錯誤の末にAdSense広告の設置に成功できました。同じように悩んでいる非エンジニアの方の参考になれば嬉しいです。
技術的な知識がなくても、適切な手順とデバッグ手法を使えば、多くのことは実現できます。諦めずに挑戦してみてください!