はじめに
GitHubのデフォルトアイコンはドット絵のようなアイコンですよね。
あれが何者なのか気になったので、色々と覗いてみました。
ユーザごとに違うアイコン
GitHubもそうですけど、Slackとかも初期アイコンがユーザごとに違うものってありますよね。どうやらそういうアイコンのことをIdenticonというそうです。
特に、GitHubのIdenticonについてはGitHubのブログに書かれています。
自分のアイコンを確認
現在のアイコンを確認
Identiconを見る前に、現在設定しているアイコンを見てみましょう。
現在のアイコンはhttps://github.com/<username>.png
から見ることができます。ちなみにこのアドレスからリダイレクトされるURLの最後の方に書かれている数字、または画像を保存した時の名前が自分のユーザIDとなっています。このユーザIDはあとでも見返すので、なんとなく覚えといてください。
アイコンを変更していない人はこの方法でもIdenticonを確認できます。
Identiconを確認
アイコンを自分で変更した人でもIdenticonを確認することができます。
Identiconはhttps://github.com/identicons/<username>.png
から見ることができます。
懐かしいですね。しかしこの画像よく見ると、少しおかしいです…
Identiconの謎
画像の情報をみてみると、画像サイズは420 x 420 px
のようです。なるほど。上下左右で35 px
のマージンと縦横5 x 5
のドット絵でそれぞれ70 px
であれば420 px
となります。
しかし
画像を拡大してみましょう。わかりやすく、70 px
の境界線に線を引きました。
そうです。1 px
ズレているのです。
これは5 x 5
の全てのドットで左上は35 + 70(n - 1)
の座標にあるのですが、そこから塗りつぶしの範囲が71 x 71 px
になっているのです。つまり、右と下に1 px
ずつはみ出しています。
気づいてしまった時には気になって気になって仕方なかったです。
なんでこんな仕様になっているのでしょう…
そもそもこのアイコンはどのようにしてできているか
こちらは上記にブログに少し書いてあったり、他のサイトでも紹介されていますが、ユーザID(さっきも出てきましたが自分で決めたusername
ではなくGiuHubが側が発行したユニークな番号)から生成されます。
具体的にはユーザID(僕の場合は29699789
)をMD5を用いてハッシュ値を得ます。得られた32桁(僕の場合は696f9ab9a21cf934a3bb45c2352808bf
)の先頭15桁の偶奇から塗りつぶす/つぶさないを形を決定(図参照)。
そして下7桁の内、前3桁から色相、中2桁を彩度、後2桁を輝度に割り当てることで色が決まります。
作り方をみても謎は解けませんでした…
おわりに
ほんとに71 x 71 px
の謎が気になって仕方がない。
謎すぎる…