KiSAKU
技術系約4分で読めます

そのページは何だと名乗っているか

公開

用語集の分類ページを調べていて、妙な指定に気づきました。このページは「記事」だと名乗っていました。

中身は用語が並んだ一覧です。公開日もなければ、書いた人もいません。それでも、SNSや検索エンジンに向けては「これは1本の読み物です」と伝えていました。

この記事で扱うこと

ページが自分を何だと名乗っているか、という話です。名乗りが実態とずれていた2ページと、そもそも何も名乗っていなかった4ページを直しました。

既定値をそのまま連れてきていた

SNSで共有されたときの見え方を決める指定に、type という項目があります。1本の記事なら article、そうでないページは website です。

用語集の分類ページには、こう書いてありました。

openGraph: {
  type: "article",
  title,
  description: cat.description,
}

記事ページの書き方をそのまま持ってきた形跡です。動かして確かめる対象ではないので、間違っていても画面には何も出ません。

article が意味していること

article は「公開日と書き手を持つ読み物」を指します。つまり、この指定を書いた時点で「いつ書かれたか」「誰が書いたか」があるものとして案内していることになります。

実際にはどちらも無いので、受け取る側は探しに行って見つけられません。嘘をついているというより、名乗りだけが先に立っている状態です。

同じ書き方がプライバシーポリシーにもありました。こちらも読み物ではありません。2ページとも website に直しました。

何も名乗っていないページが4つあった

ついでに構造化データを数えました。検索エンジンに「このページは何か」を直接伝える仕組みで、画面には出ません。

ページ 直す前
記事ページ BlogPosting + パンくず
ブログ一覧 無し
用語集 無し
プロフィール 無し
プライバシーポリシー 無し

記事ページだけ揃っていて、それ以外は空でした。記事を書くときに考えたことが、そのとき触っていたファイルの中で完結していたわけです。

記事用の部品を広げるか、別に作るか

足すにあたって、記事用の部品を使い回すか迷いました。

使い回そうとすると、日付の扱いで詰まります。記事には公開日があり、一覧にはありません。「日付が無いときは書かない」という枝を足すことになります。そのうち書き手についても同じ枝が必要になり、部品の中身が条件分岐で埋まっていきます。

名乗る内容が違うものは、別の部品にする

結局、一覧用に別の部品を作りました。記事は BlogPosting、一覧は CollectionPage、プロフィールは ProfilePage を名乗ります。

同じ処理をしているように見えても、言っている内容が違うものは、混ぜると条件分岐になります。分けておけば、それぞれが1つのことだけを言います。

パンくずは全ページに付けました。検索結果に出る階層表示に使われるもので、画面上の階層と一致していないと逆効果になります。実際のURLの形をそのまま写しただけです。

ドメイン名が4か所に書いてあった

作業中に、別の問題が見えました。サイトの絶対URL https://www.kisaku.site が、4つのファイルにそれぞれ書いてありました。

robots.txt を作るところ、サイトマップを作るところ、RSSを作るところ、構造化データを作るところです。共通しているのは、どれも画面に出ない場所だということでした。

ページの head に入れる相対パスは、設定してある基準URLが絶対URLへ直してくれます。直してくれないのは、この4か所のように文字列を自分で組み立てている場所だけです。

1か所にまとめて、そこから読む形にしました。ドメインを変える日に1つ書き換え忘れても、画面を見ているかぎり気づけない種類の値だからです。

今回の学び

まず、ページは自分が何であるかを名乗っているということ。画面に出ない場所で、公開日や書き手を持つ読み物だと宣言していました。表示は正しく、指定だけが実態とずれていました。動かして確かめる対象ではないので、読みに行かないかぎり分かりません。

次に、書き方をコピーすると、意味もコピーされること。記事ページの指定を持ってきたのは自然な流れですが、その中には「これは記事です」という宣言も含まれていました。形だけ借りたつもりで、中身まで一緒に来ていたわけです。

そして、条件分岐が増えそうなときは、分ける合図だと考えること。1つの部品で両方をまかなおうとすると「日付が無いとき」「書き手が無いとき」の枝が並びます。それは、そもそも別のことを言おうとしている合図でした。

← ブログ一覧へ戻る