あのゾンビより

プログラミング、VR、ゲームなど趣味の記録

インターネットIDを anozon (あのぞん)にした理由

はじめまして。あのぞん(anozon)です。

初記事ということで anozon という ID について書きます。

この ID に決めた理由や基準がいくつかあるので、「これからインターネットID を決めようと思ってる人」のために残しておこうと思います。

(私はネット初心者ではないです。別の ID で6年間活動していた経験を元にしてます。)

ID の決め方で重視した点

優先した順に説明します

Twitter ID が空いている

新しいIDでも一番使っていこうと思ってる SNS だから重視しました。

ドメインもチェックしましたが anozon.com だけ amazon に取られていました1。他の TDL が一つでも取れればいいかな楽観的なのでそこは妥協しました。ちなみに anozon.me を取りました。

アルファベット6文字にする

5文字以下のIDを登録できないサービスが多いから6文字にしました。

発音からID が書きやすい & IDから発音がわかりやすい

anozon → あのぞん あのぞん → anozon

と相互に変換しやすいように選びました。「shi」「si」「ra」「la」などは避けました。 知り合いの ID を絞り込みにくいことがたまにあったからです。あと表記ゆれ防止です。

プログラマブルに anozon を選んだ手順

ここからは細かい話です。 Twitter ID が空いていることを最も重視しているので手作業で 1つずつ確認するのは面倒だし少しプログラムを書きました。

もうすこしこだわり条件を追加する

上記条件だけだと候補が膨大にあります。 なので a から始まる IDをとることにしました。リストアップで上の方に出る可能性が高くなるからです。 そこでアルファベット6文字の条件があるので「ん」を入れて「a + (ひら2文字) + n 」、「あ◯◯ん」にすることにしました。

条件に合うIDをダンプする

まずひら2文字の部分は2文字のかなローマ字なのでそれを全部出力します。 正規表現だと [bcdfghjklmnpqrstvwxyz][aiueo] にマッチするものです。

github.com

python のライブラリが見つかったので python で書きました。

regex = "[bcdfghjklmnpqrstvwxyz][aiueo]"
names = sorted(list(sre_yield.AllStrings(regex)))

その中から読みやすそうな文字にしぼります(ここは手作業でやった)。

  # |--|--|--|bo|--
  # |--|--|--|do|--
  # |ga|ge|--|go|--
  # |ha|--|--|--|--
  # |ja|je|--|--|--
  # |--|ke|ki|--|ku
  # |ma|me|mi|mo|mu
  # |na|ne|ni|no|--
  # |pa|pe|pi|po|--
  # |sa|se|--|--|--
  # |ta|te|--|to|--
  # |wa|--|wi|wo|--
  # |ya|--|--|yo|yu
  # |za|ze|--|zo|--

aほげn の候補をダンプします。

  rbon = "(bo|do|ga|ge|go|ha|ja|je|ke|ki|ku|ma|me|mi|mo|mu|na|ne|ni|no|pa|pe|pi|po|sa|se|ta|te|to|wa|wi|wo|ya|yo|yu|za|ze|zo)"
  r2 = "a{rbon}{rbon}n".format(rbon=rbon)
  names = list(sre_yield.AllStrings(r2))
  print(json.dumps({"names": ",".join(names)}, indent=2))

1444件ありました。

Twitter で空いてる文字にしぼりこむ

Twitter API の説明は省きます。

users/lookup API で 100件ずつ screen_name のユーザを取得できるので 14回叩いて結果を merge しました。

f:id:anozon:20180822160247p:plain

1444件のリストから取得できたユーザの ID の集合を引いて 130 個 に絞り込めました!

これで使えるTwitter ID の絞り込みは終わりかと思ったら少し違いました。

API で取得できない凍結ユーザがまだ残っていました。

すぐにはいい方法が思いつかなかったので https://twitter.com/ユーザ名 を叩いて帰ってくるステータスコードでフィルタしました。

import names from '../../data/names-none.json'
import axios from 'axios'

const main = async () => {
    const usables = []

    for (const name of names) {
        await axios
            .get(`https://twitter.com/${name}`)
            .then(() => {})
            .catch(err => usables.push(name))
    }
    console.log(JSON.stringify(usables))
}

main()

結果以下の 26個数に絞られました。

["aboyun",
"ajepen",
"ajeyon",
"ajeyun",
"akuwon",
"aneyon",
"anozon",
"apeton",
"apewon",
"apeyun",
"apoyun",
"awimun",
"awizon",
"awojen",
"awomun",
"awopin",
"awowin",
"awozan",
"awozen",
"azebon",
"azejen",
"azepen",
"azewon",
"azeyun",
"azomun",
"azowon"]

6文字とはいえ良さげな ID は枯渇しかけてますね。

この中からは発音の良さと google 検索結果を見ながら anozon に決定しました。小文字アルファベットが上にも下にも突き出さないところも気に入っています。

他の ID は僕はいらないので、欲しい方はどうぞ使ってください。

危惧してること

エゴサ汚染

例えば「あの日見たゾンビの名前を僕達はまだ知らない」というラノベがヒットして「あのゾン」という略語がはやったらやだなーと思ってます。

スパム

amazon を偽った anozon のスパムメールTwitterでいくつか報告されてました。数は少ないので駆逐されたのかなと思います。

おわりに

ということで、anozon はちょっとこだわりを持って選んだ ID でした。大事に使っていきたいと思います。 選ぶ手順で Twitter API を叩くときに Insomunia という http クライアントアプリを使いましたが、ここはコードで書いてもっと自動化できそうですね。


  1. 大手サイトはユーザのタイポをカバーするためにリダイレクト設定するドメインをとっておく