はてなユーザーIDの仕様についての備忘録

Greasemonkeyなどで調べることがあったので、まとめておきます。

サブアカウントのユーザー名は、アルファベットで始まり、アルファベットか数字で終わる3文字以上、32文字以内の半角英数字で入力してください。

サブアカウントについて - はてな

一言で説明すると、この通り。主語がサブアカウントになっていますが、メインアカウントでも同じです。ただアルファベットと数時以外でも「-」(ハイフン)「_」(アンダーバー)が使えますが。
これを正規表現で書くと

[a-zA-Z][\w-_]{1,30}[a-zA-Z0-9]

こうなりますね。

追記

b:id:Cherenkovさんから指摘をいただきました、ありがとうございます。

[a-zA-Z][\w-]{1,30}[a-zA-Z\d]

なるほどー。

もうちょっとまとめると

使える文字は

abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789-_

の64文字。いずれも半角。

3文字以上、32文字以内

これはそのまま

アルファベットの大文字と小文字は区別される

は別のユーザーとして扱われます

始めの1文字はアルファベットのみ

○ sample
× 0sample
× -sample
× _sample

最後の文字は英数字のみ

○ sample
○ sample0123
× sample-
× sample_


という。


仕様じゃないけれど

はてなユーザーIDの特徴としては、それがユーザー名として機能することが多いこと。
私の場合は id:rikuo で ハンドルネームも同じ rikuo なのでちょっと例としては向いてないですが、例えば、はてな社長の近藤淳也さんのことを、id:jkondo と呼んだり、同じくはてな伊藤直也さんを id:naoya などと呼ぶことがよく見られます。他のサービスで言えば mixi や pixiv の場合ユーザーIDは番号なため、あまりそういう傾向にないのですが、はてなでは id:〜と書くとそれでリンクされるなどの慣習からか、ユーザーIDが個人名称として使われるケースが多いです。
もしも、新たにユーザー登録をする場合はそこら辺も気をつけて、呼ばれてもいいような言葉にした方がいいでしょう。

はてなでもID名でなくハンドルネームで呼び合う習慣が定着するか?

何故上のエントリーを書いたかというと、本日公開された
Myはてなをリニューアルしました - はてなの日記 - 機能変更、お知らせなど
Myはてなをリニューアルしました - はてなダイアリー日記
のリニューアルで、ニックネームという欄が設けられました。

ここで、登録するとハンドルネームを設定することができ、またこれらの情報が今後色々なサービスで使われるようになることで、これまでユーザーIDで呼び合ってたものが変化していくのかなぁ、と思ったので。
私自身で言えば、上でも書きましたが ID名 id:rikuo ハンドル rikuo と同じですからあまり関係ないのですが、個人的に
はてブのIDコール先を見やすくするGreasemonkey

というのを作っているので、そうした文化がどうなるか?というのは気になるところです。



つまりは例えば「近藤淳也」と表記してあっても id:jkondo へリンクする機能(ニックネーム対応?)があった方がいいのか?
(で、それを技術的にどうするのか?とか)
という辺り。

マイはてな(プロフィール)に移動しやすくするBookmarklet

既にいくつかありそうですが*1

リンク先を変更する

javascript:void(function(a,h,u,l){for(i=0;i<a.length;i++){l=a[i].getAttribute(h);if(!l)continue;if(u=l.match(/^http:\/\/[\w\.]+(?:hatena.ne|hatelabo).jp\/([a-zA-Z][\w-]{1,30}[a-zA-Z0-9])\/$/)){a[i].setAttribute(h,'http://www.hatena.ne.jp/'+u[1]+'/')}}})(document.getElementsByTagName('a'),'href')

プロフィールに移動する

javascript:void(function(l,u){if(u=l.match(/^http:\/\/[\w\.]+(?:hatena.ne|hatelabo).jp\/([a-zA-Z][\w-]{1,30}[a-zA-Z0-9])\//)){location.href='http://www.hatena.ne.jp/'+u[1]+'/'}})(location.href)

*1:というか、自分自身前に作ったような気もする