日本語タグのURLをやめた理由:65個中50個が1記事だった


サイトを一般公開した2日後の8月10日の夜、タグ別のページを全部消しました。きっかけは、記事の下に並んでいたタグを押したときにアドレスバーへ出た /tags/MA%E3%83%84%E3%83%BC%E3%83%AB/ という文字列です。日本語のタグ「MAツール」を、そのままURLにしていました。見た目が気に入らない、というだけの理由で消すのは乱暴な気もして、少し調べ、少し数えてから消すことにしたのです。すると、消す理由は最初に思っていたのとは別のところにありました。その順番で書きます。

タグページをやめた理由はSEOではなく、URLの見た目と、65タグ中50タグが記事1本しかない薄さでした。

何を消したか

先に、変更の中身を具体的に。消したのは3か所です。

場所変更前変更後
/tags/[タグ名]/タグごとに記事一覧ページを生成(65ページ)ページごと削除
トップページ「話題から探す」として上位15タグを表示削除
記事の末尾タグをリンクとして表示リンクなしのラベルに変更

記事側の変更は1行です。

- <a href={`/tags/${encodeURIComponent(tag)}/`}># {tag}</a>
+ <span># {tag}</span>

タグそのものは各記事のfrontmatterに残しました。記事ページの構造化データ(JSON-LDの keywords)と、アクセス解析に送る記事情報で使っているからです。読者に見えるページとしてのタグは消し、データとしてのタグは残す。この線引きが、あとで書く「復活させるなら」の伏線になります。

きっかけはURLの%の列

encodeURIComponent は、URLに使えない文字を %E3%83%84 のような形に変換するJavaScriptの関数です※1。日本語をURLに入れるなら、この変換は避けられません。アドレスバーの上では、ブラウザが元の日本語に戻して見せてくれることが多いのですが、コピーして別の場所へ貼ると、%の列がそのまま現れる場面があります。「MAツール」の5文字が MA%E3%83%84%E3%83%BC%E3%83%AB の29文字になる。それを見て、正直に言えば「格好が悪い」と思いました。

ただ、格好が悪いのは自分の感想であって、読者や検索エンジンの都合ではありません。それで消す前に、Googleが日本語のURLをどう扱っているのかを確認しました。

調べたら、Googleは日本語URLを止めていなかった

Google検索セントラルの「URL構造のベストプラクティス」には、はっきりこう書いてあります。オーディエンスの言語にある単語をURLに使うこと。オーディエンスが日本語で検索しているなら、URLに日本語の単語を使ってよい※2。同じページには、ASCII以外の文字はパーセントエンコードを行う必要がある、ともあります※2。つまり、このブログがやっていた「日本語タグをそのままエンコードしてURLにする」は、Googleの案内どおりの実装でした。

SEOを理由に消すことは、できません。それに、このタグページはもともと検索結果に出さない設定(noindex)にしていました。noindexは、そのページを検索結果に表示しないようGoogleに伝える指定です※3。最初から検索向けではなく、読者がサイト内で関連記事をたどるための、回遊用のページだったのです。

では、回遊用のページとしては役に立っていたのか。それを確かめるために、数えました。

数えたら、65タグ中50タグが1記事だった

削除する直前の時点で、公開済みの記事は25本、付いていたタグは重複を除いて65個でした。タグごとに記事が何本あるかを数えると、こうなります。

そのタグを持つ記事の数タグの数
1本50
2本9
3本2
4本1
5本1
6本1
8本1

65個のうち50個、77%のタグは記事を1本しか持っていませんでした。そのタグページを開くと、いま読んでいた記事のカードが1枚だけ出ます。「関連記事をたどる」という目的は、50ページでは最初から果たせていなかった。残り15個にしても、3本以上あるタグは6個しかありません。

こうなった原因は、記事を書くたびにその記事のためのタグを付けていたことです。25本の記事に65個のタグ。1本あたり2.6個の新しいタグを、統一するルールもなしに増やしていました。タグは「集める」ためのものなのに、使い方が「説明する」ためのラベルになっていた。それなら、記事の末尾に文字として置いておけば足ります。

ここまで数えて、判断が変わりました。URLの見た目は入口にすぎず、消す本当の理由は「ページとして中身がない」ことでした。%の列が気にならなかったとしても、消すべきページだったと思います。

復活させるなら

タグページそのものが悪いわけではないので、条件を書き残しておきます。

  • タグに英数字のスラッグを持たせ、URLは /tags/ma-tool/ のような形にする。Googleのガイドは、URLの単語をハイフンで区切ることを勧めています※2
  • 65個を10〜15個に統廃合する。記事を「集める」単位になるものだけ残す
  • 記事が5本以上集まったタグだけページを作る。それまでは今と同じ、リンクなしのラベルのまま

Astroでは、getStaticPaths でタグの一覧からページを生成しているので※4、スラッグを持たせる変更は難しくありません。難しいのは統廃合のほうで、これは記事が増えてからやります。

最後に、消したあとの話をひとつ。Search Consoleを見ると、8月18日の時点で「noindexタグによって除外されました」というページが21件残っています。大半は、消したタグページをGoogleが読みに来ていた跡です。noindexでも、リンクがあればクローラーは来ます。ページを消しても、その記録はしばらく残る。65ページを2日で消した判断は正しかったと思っていますが、最初から作らなければ、この21件もありませんでした。

参考文献・出典

※1 : 「encodeURIComponent() - JavaScript | MDN」 |MDN Web Docs https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent

※2 : 「Google 検索における URL 構造のベスト プラクティス」 |Google 検索セントラル https://developers.google.com/search/docs/crawling-indexing/url-structure?hl=ja

※3 : 「noindex を使用してコンテンツをインデックスから除外する」 |Google 検索セントラル https://developers.google.com/search/docs/crawling-indexing/block-indexing?hl=ja

※4 : 「Routing」 |Astro Docs https://docs.astro.build/ja/guides/routing/

よくある質問

日本語のURLはSEOに不利ですか?

Google検索セントラルのURL構造のガイドは、オーディエンスが日本語で検索するなら日本語の単語をURLに使ってよいとしていて、日本語だから不利とは書いていません。ASCII以外の文字はパーセントエンコードが必要ですが、それはブラウザやフレームワークが自動で行います。このブログがタグページをやめたのはSEOではなく、URLの見た目と、タグページの中身の薄さが理由でした。

ブログにタグページは必要ですか?

タグに複数の記事が集まって初めて、読者が関連記事をたどる役に立ちます。このブログでは65タグのうち50タグが記事1本しか持っておらず、タグページを開いても同じ記事のカードが1枚出るだけでした。その状態なら無いほうがましだと判断して削除し、5本以上集まるタグができたら英数字のURLで作り直す方針にしています。