🌐

ドメインしりとり

2024/12/11に公開

ドメインしりとり

www.google.com, yahoo.co.jp, wikipedia.org ...
インターネットドメインって日常的によく見るものはなんとなく覚えるし、基本アルファベットだけだし、しりとりできるんじゃないかと思うこと、ありますよね。

今回は実在のドメインを使ってしりとりができるサイトを作成しました。
インターネット力を測るベンチマークとしてぜひお試しください!結構難しいです!

https://m-shiritori.omine.me

サイトのスクリーンショット

ルール

  • ドメインでしりとりする
  • 英字(a-z)・数字(0-9)・ハイフン(-)・ドット(.)が使用可能
  • ドメインが存在していなければアウト
    (パブリックDNSに問い合わせて確認)
  • 同じドメインは使えない
    (※www.google.comgoogle.comは異なるのでOK)
  • ドメインの難易度等(後述)からポイントを算出
  • 3回アウトで終了
  • 世界一有名なドメインwww.google.comからスタート
  • 調べるの禁止!

日本語ドメインのような国際化ドメインは使えないのと思うかもしれませんが、Punycode化(ASCII文字化)されたものを覚えていればもちろん使えます!
例:日本語.jpxn--wgv71a119e.jp

技術スタック

  • JavaScript
  • GitHub Pages
  • Public DNS
    • ドメインの存在チェック用。今回はGoogle Public DNS

一切のライブラリを使用していない脳筋プレイになっています。
可読性は低いですが、そこまで複雑なスクリプトでもないですし、依存がほぼゼロなのでいいんじゃないでしょうか。何より書いてて楽しかったのでOKです。

ステートの管理

ちょっとこだわった点としては、ステートの管理です。
ポイントや残機数、これまでのドメインなど、管理すべき状態がいくつかありますが、今回はJavaScript内に変数などで保持しているわけではなく、htmlを参照しています。例えば、残りの残機数はハートのアイコンを持つimgタグの数を数えて算出する、などです。これにより、コード内の変数の状態と表示内容が異なってしまうなどのバグが絶対に起こりません。簡単なページだからこそできることかもしれません。

ポイントの算出方法

このゲームでは、各ドメインごとにポイントを算出しゲームオーバー時に全部のポイントを足して最終的な得点にしています。
難しいドメインを使えた方がポイントが高いようにしたいので、今回は以下の観点でポイントを算出しています。

  • 文字数
    • 長ければ長いほど指数的にポイントが増えます
      • 指数的に増やしているのは、mail.comのような簡単な単語+.comなどというそれはあるだろというドメインでポイントを稼がれると面白くないからです
  • サブドメインの数
    • aaa.bbb.ccc.example.comのようにサブドメインが多いほど指数的にポイントが増えます
  • トップレベルドメイン(TLD)のランキング
    • com, net, orgはよく使われるので、その他のTLDに比べ少しポイントが落ちます。(jpドメインは日本ではよく見ますが、国別コードトップレベルドメイン(ccTLD)でポイントが変わると不公平感があるので除外。)

終わりに

作者のベストスコアは118,988点です!
挑戦の結果をXで共有して欲しいです!

118,988点の表示と入力したドメインがリストで表示されたリザルト画面

※ 打ち込んだドメインに実際にアクセスするのは、セキュリティ的におすすめしません!

GitHubで編集を提案

Discussion