名前に使用出来ない記号なお話 | もっとコンピュータが好きになるblog

名前に使用出来ない記号なお話

からこんな感じのメールが来ました.

"x1+x2+x3+x4+x5"という名前のメーリングリストを作ってほしい.

結論から言えば,"+"を使っているメーリングリストは作る事は出来ません.試しにQuickMLという簡単にメーリングリストを作れるシステムを使ってテストをしてみました.そうすると上の画像のようにエラーが返ってきます.

Invalid mailing list name: <lkjhg+qwerty@quickml.com>
You can only use 0-9, a-z, A-Z, `.', `-', and `_' for mailing list name

こういう事は別にメーリングリストの名前に限った事ではなく,例えばサーバのアカウント名(ログインする時の名前)だったり,ファイル名にも使えません.(ファイル名に関しては正確には"test*test.txt"とかいうファイルを作った場合には,"test\*test.txt"という名前に自動でリネームされるので作成出来きます.)

ではなぜ使えない記号が存在するのでしょうか.なんとなく,"+"や"*"や"/"といった記号を使ったってかまわないように感じるかもしれません.しかし,僕が思うにこの問題には以下のことがあるため使えない記号が出てしまうのだと考えます.(以下の情報は正しい情報ではない事を予めお伝えしておきます.)



1.記号は修飾子として使われるので使えない
コンピュータには言語の文法定義に使われるBNF(Backus Naur Form[バッカス記法])と呼ばれるものや,正規表現と呼ばれるものなどに利用される修飾子として記号が使われる事があります.これらに関して詳しく書くのは後日に回すとして,簡単に説明すると,

a+b*

と書いてあったら,"aaabb"や"abb"や"a"などの文字列にヒットします.+がその前の文字を一回以上繰り返す,*が零回以上繰り返すという意味になりますので,先ほど述べた文字列がヒットするというわけです.この場合の"+"や"*"といった記号が当てはまります.


2.記号は区切り文字として使われるので使えない
CSV(Comma Separated Values)形式というデータの保存形式があります.簡単に言えば特定の記号を文字列の区切りして認識して保存しておく形式です.こんな感じに.

aaa,bbb,ccc

","を区切りして見れば,"aaa""bbb""ccc"という三つのデータが保存されているのがわかります.メールの@も役割的には同じです.


3.アプリケーションの仕様上,すでに使われている記号なので使えない
メールのToフィールド(宛先)に限って言えば,

名無しさん <nanashi@yahoo.con>

といった感じでかけます.これはメールヘッダのコメントに関する仕様にそった記述の仕方なのでこのように書けるのです.メールヘッダのコメントに関する仕様の中で"<"">"が使われているいるように,記号の中にはそれぞれのアプリケーションの仕様の中で既に予約されている場合があります.



実際に名前に使えそうな記号はなんなのかというと,".""-""_"の三つに限られるようにです.しかし,"."を許していないアプリケーションも多いようなので,実質"-""_"の二つが現実的に利用可能な記号という事になりそうです.

話は最初に戻って改めて考えてみると,記号は使えたしても上の人はあんな使いづらそうな名前のメーリングリスト,本気で使う気なのかと考えてしまいます.(スパム対策のため)携帯のメールアドレスはアホみたいに長くするのが通例のようになってますが,メールアドレスは出来ればわかりやすく簡潔な名前にした方がよいと僕は思ってます.

ちなみに今回覗いていったRFCの資料はこれらです.覗きたければどぞ.
- RFC822 - Standard for the format of ARPA Internet text messages
- RFC2234 - Augmented BNF for Syntax Specifications: ABNF
- RFC2822 - Internet Message Format
- RFC2919 - List-Id: A Structured Field and Namespace for the Identification of Mailing Lists