個人のサイドプロジェクトをSEOの実験環境として使い始めて1か月。結果はオーガニック訪問者632人でした。この数字は素直にうれしかったのですが、実際にいちばん学びが大きかったのは別の数字です。10月15日、1日の訪問者数が83人まで伸びました。しかし、そのピークの一部は人間のアクセスには見えませんでした。
当時、私は仕事で進める大きなSEO施策に向けて準備していました。理論をもう一度読むだけではなく、自分のサイトで変更を加え、データを見て、間違いから学べる環境が欲しかったのです。サイドプロジェクトなら、観察したことをすぐ本番の意思決定に結び付けずに試せます。
この違いはすぐ重要になりました。変更と同じタイミングで指標が動いても、その変更が原因だとは限りません。トラフィックの急増も、流入元を分解するまでは成長に見えます。Session Replayで不自然な挙動が見えても、それだけで原因まで分かるわけではありません。
632人のオーガニック訪問者から本当に言えること
最初の1か月で得られた632人のオーガニック訪問者は、私が確認できる事実です。一方、この数字だけを根拠に「再現可能なSEO手法を見つけた」「行った変更がすべて順位改善につながった」「この成長が今後も続く」とまでは言えません。
学習用のプロジェクトとして価値があったのは、実際の検索流入が発生し、観察できる材料ができたことでした。変更を加え、何が動いたのかを確認し、そこから次の問いを絞り込めます。各種の「ベストプラクティス」を実行すれば自動的に順位が上がる、と考えるよりずっと実践的でした。
フォントサイズの変更で学んだ「相関」と「因果」の違い
特に意外だったのは、フォントサイズの調整とパフォーマンス指標の間に相関が見えたことです。元の記事では、これを「小さなUXの違いでも順位に影響しうる」とまとめたくなりました。しかし、そこまで強く言えるデータはありません。
実際に観察したのは、フォントサイズを変更した後に関連する指標が動いた、ということです。フォントサイズだけを他の変更から切り離した対照実験はしていません。また、検索エンジンがそのCSS変更を理由に順位を変えたと示す証拠もありません。フォントサイズは改行、要素の位置、レイアウトに影響するため、レンダリングやUX関連の指標が変わる可能性はあります。ただし、私のケースで何が効いたのかは特定できていません。
同じようなSEO実験では、まず観察を記録し、説明はその後に置くほうが安全です。「変更Yの後に指標Xが動いた」はデータです。「YがXを引き起こした」は、十分な根拠がそろうまでは仮説です。
83人の日は、Webvisorを開くまでは好調に見えた
10月15日、サイトは当時の1日最高となる83人を記録しました。ここでいう83人は、必ずしもオーガニック流入83人という意味ではありません。私が見ていた1日の総トラフィックのピークです。流入元を分解すると、かなりの割合が中国からで、ダイレクトトラフィックに分類されていました。
「ダイレクト」と聞くと「URLを直接入力した人」と考えがちです。しかしYandex Metricaでは、referrerが渡されなかった場合などもダイレクトに分類されます。これはYandexの流入元に関する公式ドキュメントにも記載されています。つまり、流入元のラベルだけでは、誰がアクセスしたのか、実際にどこから来たのかまでは分かりません。
そこでYandex Webvisorで怪しいセッションを確認しました。再生画面では、ページがCSSなしで開かれているように見えました。見え方やアクセスのパターンから、私はその「ユーザー」のうちおよそ20人はボットではないかと推定しました。
CSSがないことは手掛かりであって、証拠ではない
この「約20」という数字は、今でも推定です。少なくとも大きく二つの可能性があります。
- 本当に自動化されたアクセスだった。 スクレイパーはHTMLだけを取得し、不要なCSS、画像、その他のアセットを読まないことがあります。帯域を節約するため、という説明は十分あり得ますが、私はその動機を確認できていません。
- Session Replayが実際の表示を完全には再現できていなかった。 Replayは記録データから画面を再構成します。Yandex自身も、スタイルシートの変更などによって、記録上のページが訪問者が見たものと異なる場合があるとWebvisorのトラブルシューティングで説明しています。
したがって、「WebvisorではCSSなしに見えた」は観察です。「訪問者が意図的にCSSを無効化した」は解釈です。そして「だからボットだった」は、さらに一段進んだ推論になります。私はボットの可能性が高いと感じましたが、Replayの一つの特徴だけで断定するのは危険です。
次にログで確認したいこと
こういうケースでは、視覚的なReplayよりサーバーログを重視します。疑いをより強い根拠に変えるため、私は次のような点を照合します。
- User-Agentと、同じ不自然なフィンガープリントが複数セッションで繰り返されていないか。
- IPアドレスやネットワーク帯。ただし、1つのIPが1人の人間を意味するとは限りません。
- リクエストの間隔と反復。人間と自動クローラーではアクセスパターンが大きく異なることがあります。
- HTMLだけを取得しているのか、それともCSS、JavaScript、画像などのアセットも取得しているのか。
- リクエストされたパス、HTTPステータス、referrer、繰り返される遷移パターン。
- ブラウザ、JavaScriptの有効・無効、地域、セッション時間、ランディングページなど、解析ツール側のディメンションと一致しているか。
どのシグナルも単独では決定打になりません。しかし複数を組み合わせれば、「Replayが変だった」という印象だけより、ボット仮説をかなり強く検証できます。
一番大きかったのは、順位ではなく計測についての学び
このサイドプロジェクトを始めた目的は、仕事の大きなSEO施策に入る前に実践経験を得ることでした。1か月後、価値があったのは632人のオーガニック訪問者という結果だけではありません。むしろ、不完全なデータから都合のよい物語を作るのがどれほど簡単かを実感できたことでした。
83人のピークを見て「成長した」と言うこともできました。フォントサイズ変更後の指標変化を見て「フォントサイズはランキング要因だ」と言うこともできました。CSSなしに見えるセッションをすべてボット扱いすることもできました。どれも説明としては簡単です。しかし、どれも十分に裏付けられてはいません。
今後同じような実験をするなら、より保守的な手順にします。流入元を分け、変更履歴を残し、前後比較をしてもすぐ因果関係とは決めつけず、異常はHTTPリクエストのレベルまで掘り、解析ツールにも計測上の限界があると考える、という手順です。
私にとって、この姿勢が今のところ実験の最大の収穫です。SEOは観察できるトラフィックを作ってくれました。難しいのは、そのデータが何を本当に証明しているのかを判断することです。
今も特に中国からのダイレクトトラフィックについてログを追っています。再現性のあるリクエストパターンを見つけられれば、元の疑問にもっと強い答えを出せるはずです。あの約20件は本当にボットだったのか。そして、CSSを取得しないことがそのボットの動作の一部だったのか。そこまでは、まだ確認できていません。