メタ構文変数
テンプレート:出典の明記 メタ構文変数(メタこうぶんへんすう、metasyntactic variable)はプログラミング言語の記述で使われる識別子の一種。サンプルプログラムなどで意味のない名前が必要な場合に利用される、「意味のない名前」であることが広く知られた識別子のことである。
目次
概要
プログラミング言語では識別子(変数や関数などの名前のこと)を自由に定義できるが、サンプルプログラムなどでまったく意味の無い変数に適当な名前がなく困ってしまうことがある。しかしどんな名前でも構わないからといって「wikipe」などとつけると、そのプログラムを見た他の人はその変数に何の意味があるのかと悩むことになる。そのようなときに、「abcd」や「hoge」(ほげ)をはじめとするメタ構文変数を利用する。メタ構文変数はプログラマの間でサンプル用の意味が無い変数名であることが認知されているので無用な混乱が避けられるほか、書く側も苦労して名前をひねりだす必要がなくなる。
厳密には変数名ではない識別子(特定言語におけるクラス名やモジュール名など)についてhoge等が使われた場合でも「メタ構文変数」と呼ぶ。 また整数リテラルや 一般文書の人名記載例等、明らかに識別子でないものや、プログラミングに限定されない分野で用いられる類似概念も含めて「メタ構文変数」と呼ばれることもある。
メタ構文変数の例
識別子
狭義のメタ構文変数。
メタ構文変数には系統(ファミリー)があり、ひとつの文脈ではひとつのファミリーの変数群を利用することが多い。メタ構文文法の系統は、特定言語圏や特定分野などの一部の文化圏に限定される場合も多い。したがって、各国語が独自のメタ構文変数を導入していることも多い(英語版を参照)。
fooとbar
テンプレート:Main 英語圏由来として、ひろく使用されているものに、foo、bar の系統がある。これは「foo」「bar」「baz」「qux」「quux」「foobar」などを使うもので、まずfooを使い、ふたつめ以降、bar、baz…、と使う。foobarといった掛け合わせ名は作るが、foofoo、barbarなどの重ね合わせ名は見られない。
spamとham
プログラミング言語Pythonでは、メタ構文変数に spam, ham, eggs などを使う。これは Python という名前自体が、モンティ・パイソンにちなんで名付けられたことにちなむ。spamとモンティ・パイソンの関係についての詳細はモンティ・パイソンとスパムにある。
hogeとpiyo
日本のみで使用されるメタ構文変数として「hoge(ほげ)」「piyo(ぴよ)」「fuga(ふが)」「hogera(ほげら)」「hogehoge(ほげほげ)」などがある。
この系統のメタ構文変数は、まずhogeを使い、piyoはhogeを使用したあとの2つ目のメタ構文変数として使われる。hogeを使用せずにpiyoだけ使用されることはまずない。 同様に変数のバリエーションを増やすため、fugaやhogeraと発展していく。
メタ構文変数はしばしば名前を重ねたり、2つのメタ構文変数名を繋げたりして名称のバリエーションを作るが、hoge系統では hogehoge、piyopiyoなどの重ね合わせ名のバリエーションがほとんどであり、hogepiyoといった掛け合わせ名はあまり見られない。これはfoo、bar系統とは対照的である。
hogeの起源は定かではないが、1980年代の前半ごろから使われ始めたという説がある[1]。
数字
サンプルプログラムに使われる無意味な整数リテラルにも同様の概念が存在し、「23」や「42」などが用いられる。「42」は生命、宇宙、そして万物についての究極の疑問の答えに由来する。
人名
プログラミングに限定されず広く利用されるメタ構文変数的な概念に人名がある。
日本語圏では「○○太郎」「○○花子」などが使われる。○○の部分には、記入を促す団体名をもじった名字や「日本」「山田」等が用いられることが多い。
英語圏ではアリスとボブがあり、日本語でも「アリス」や「ボブ」として使われることがある。物理学や通信工学あるいは暗号学で、プロトコル等を解説するときにエンティティの名前として使われる。コンピュータ分野、特にハッカー文化においては、「J. Random Hacker」、「Fred」(原始家族フリントストーンの主人公の名で、J. Random Hackerのいとこであるとされる)、「Barney」(これも原始家族フリントストーンの主人公の名) が好んで用いられる。
メタ構文変数由来の固有名詞
メタ構文変数名が固有名詞となることがある。
xyzzy
xyzzy(エックス・ワイ・ズィズィーまたはズィズィー)は、もともと英語圏のメタ構文変数だが、テキストエディタxyzzy(読みかた不定)として固有名詞としても使われている。
foobar2000
foobar2000の名前も同じく英語圏のメタ構文変数であるfoobarに由来する。
脚注
関連項目
外部リンク
- ほげを考えるページ(消滅したページの転載)
- RFC3092
- RFC3092(日本語訳)