ケイバぶ開発日誌3 – ケイバぶのパーマリンクへのこだわり①

ケイバぶ開発日誌

ケイバぶは、データベースサイトとして、各競走馬のページがありますが、その競走馬ページのパーマリンクは、実はこだわっています。

名牝アーモンドアイの競走馬ページを例に挙げてみます。ちなみに各競馬情報サイトの場合だと、

https://db.netkeiba.com/horse/2015104961/ (netkeiba)
https://www.jbis.or.jp/horse/0001203363/ (JBIS)

無機質ですね。パーマリンクからどの馬のページかは伺い知れません。
一方、ケイバぶのアーモンドアイページは

https://keibabu.com/horse/2015/almond-eye/

です。つまり、https://keibabu.com/horse/生年/馬名、というルールに則ったパーマリンクになっています。パーマリンクから、アーモンドアイのページだと一目瞭然です。

競馬のデータベースサイトを作るのであれば、競走馬ページのパーマリンクは、無機質な英数字の羅列ではなく、きちんと馬名と生年を盛り込もうと思っていたので、それを実現した次第です。

実はこのパーマリンクをWordPressで実現しようとすると、めちゃくちゃ大変です。デフォルトの状態では実現できません。

え?パーマリンク設定で一発じゃない?簡単じゃない?、と思った人は、WordPressに詳しいけれど、競馬には詳しくない人です。

WordPressの「設定」のパーマリンクで「%year%/%postname%」と設定すると、https://keibabu.com/horse/生年/馬名、というパーマリンクは簡単に実現しそうな気がします。

ただし落とし穴がひとつ。馬名はひとつではありません。活躍馬や有名馬の場合は、永久欠番よろしく、その後に産まれた馬には、その馬名を付けることはできません。一方、活躍せずに引退した馬の馬名は使い回すことができるのです。そのため同名馬は決してイレギュラーな存在ではありません。

たとえば2015年生まれのGI9勝馬アーモンドアイは、1985年にも同名馬がいます。この馬があまり活躍しなかったので、アーモンドアイは、アーモンドアイという名前を付けることができたのです。GI9勝したアーモンドアイは二代目なのです(一代目とは血統の繋がりはありませんが)。ただ、二代目アーモンドアイは活躍したので、以後アーモンドアイという馬名は付けることができません。

このように、同名馬は割とゴロゴロいます。ここでWordPressの投稿ページのスラッグのルール、「同じスラッグは付けられない」がネックになります。先程のアーモンドアイの例でいえば、初代アーモンドアイのページスラッグに「almond-eye」と付けると、二代目アーモンドアイのページスラッグでは「almond-eye-2」と勝手に連番が振られてしまいます。

これならこれでいいんじゃない?、と思われるかもしれませんが、また問題が起こります。たしかに日本国内において同時期に馬名の重複はありません。同名馬であっても何年か間隔が空いているので、同名馬同士が同じレースで走るなんてことは起こり得ないのです。

ところが世界規模で見渡した時に、同時期に同名馬が世界のどこかに存在することがあり、そして運の悪いことにその馬が日本に輸入されてきて、その結果、同時期に同名馬が存在することがまま起こります。

たとえばアメリカのアルデバランという馬が日本に種牡馬として輸入されることになりましたが、その時期日本にもアルデバランという別の馬がいたのです。そこで輸入してきた方のアルデバランは、アルデバランIIとして区別されることになりました。

ちなみにアルデバランは過去に3頭いるので、アルデバランIIのページを作ると、WordPressのデフォルトのパーマリンク設定では「Aldebaran-2-2」となるはずです(未検証)。もう何がなにやらです。

スラッグ上だけの話なのでそこまで致命的ではないのですが、やはり正規の馬名として数字が入っているスラッグと、スラッグの重複によって数字が入ったスラッグが混在しているのは、美しくないと感じてしまったので、投稿ページで競走馬ページを作るのは断念しました。(結局、紆余曲折を経て投稿ページで作ることにはなりますが)

投稿ページでダメなら、固定ページではどうかとやってみました。
固定ページでは重複したスラッグを付けることができるので、うまくいきそうです。(固定ページの致命的な仕様的な問題があってうまくいかないのですが)
長くなりましたので、固定ページ編は次回でお届けします。

次回、「苦闘!固定ページで理想のパーマリンク探し」にフェードイン!

コメント

タイトルとURLをコピーしました