日本語タグの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で作り直す方針にしています。