メタ構文変数とは
メタ構文変数とは、
プログラミングのサンプルコードなどで使われる、意味を持たない
識別子のことです。変数や関数などの名前を自由に定義できる
プログラミングにおいて、サンプルコードで適当な名前が必要になった際に、その変数に意味があるように誤解されないように使われます。
例えば、変数名に `wikipe` といった具体的な単語を使ってしまうと、コードを読む人はその変数に何らかの意味があるのかと混乱してしまいます。そこで、`hoge` や `foo` といったメタ構文変数が利用されます。これらは
プログラマーの間で「意味のないサンプル用の名前」と認識されているため、コードの可読性を高めるのに役立ちます。また、メタ構文変数を使うことで、コードを書く側も変数名を考える手間を省くことができます。
メタ構文変数は、変数名だけでなく、クラス名や
モジュール名など、
識別子全般に使われます。さらに、整数リテラルや
人名、企業名など、
プログラミング以外の分野でも類似の概念が存在します。
メタ構文変数の例
メタ構文変数には、特定の文化圏や分野でよく使われる系統(ファミリー)があります。以下に代表的な例を挙げます。
fooとbar
英語圏で最も一般的なメタ構文変数の系統です。`foo`, `bar`, `baz`, `qux`, `quux`, `foobar` などが使われます。最初に `foo` を使い、次に `bar`, `baz` と続けて使用します。`foobar` のように2つの変数を組み合わせることはありますが、`foofoo` や `barbar` のように重ねて使うことはあまりありません。
RFC 3092(
ジョークRFC)では、`foo`, `bar`, `foobar`, `baz`, `qux`, `quux`, `corge`, `grault`, `garply`, `waldo`, `fred`, `plugh`, `xyzzy`, `thud` が挙げられています。イギリスでは、さらに `wibble`, `wobble`, `wubble`, `flob` なども使われます。
spamとham
プログラミング言語
Python では、`spam`, `ham`, `eggs` などがメタ構文変数として使われます。これは、
Python の名前が、コメディグループ「
モンティ・パイソン」に由来することにちなんでいます。
hogeとpiyo
日本でよく使われるメタ構文変数には、`hoge`(ほげ)、`fuga`(ふが)、`piyo`(ぴよ)、`hogera`(ほげら)、`hogehoge`(ほげほげ)などがあります。`hoge` が最初に使われ、次に `fuga` が使われます。`hoge` を使わずに `fuga` だけを使うことはありません。変数のバリエーションを増やすために `piyo` や `hogera` と発展していきます。
この系統では `hogehoge`, `piyopiyo` のように同じ名前を重ねて使うことが多く、`hogepiyo` のように異なる名前を組み合わせることはあまりありません。これは `foo` と `bar` の系統とは対照的です。
`hoge` は、
1970年代後半から
1980年代前半には、すでに使われていたという証言があります。
ヨーロッパのメタ構文変数
フランスでは `toto` がよく使われます。これは男性の名前「アントワーヌ」の
愛称であり、「トトの冗談」という小噺にも使われています。メタ構文変数としては、`toto` の次に `tete`, `titi`, `tutu`, `tata` などが使われます。
イタリアでは `pippo` が使われます。これも男性の名前の
愛称です。
ドイツでは `bla`, `blub` が使われ、2度目以降は `blabla` などと繰り返します。`blabla` は、ヨーロッパの多くの言語でおしゃべりを意味する言葉として使われています。
数字
サンプルプログラムで使われる整数リテラルにも、メタ構文変数のような概念が存在します。`23`, `42`, `0xDEADBEEF` などが使われます。特に `42` は、SF小説「銀河ヒッチハイク・ガイド」に登場する「生命、宇宙、そして万物についての究極の疑問の答え」に由来しています。
メタ構文変数のように、意味を持たない名前として
人名が使われることもあります。
日本語圏では、`○○太郎` や `○○花子` がよく使われます。`○○` の部分には、「日本」や「山田」といった名字が用いられます。
英語圏では、`アリス` と `ボブ` がよく使われます。これは、
物理学や
通信工学、暗号学の分野で、プロトコルなどを説明する際にエンティティの名前として使われます。
コンピュータ分野、特に
ハッカー文化では、`J. Random Hacker`、`Fred`(
原始家族フリントストーンの主人公の名前)、`Barney`(同じく主人公の名前)などが使われます。
企業・ブランド名
アニメ「
ルーニー・テューンズ」に登場する架空の企業名 `ACME` は、架空の企業やブランド名として使われることがあります。
マイクロソフトの
データベース製品のサンプルデータにも `ACME` が使われていました。
ドメイン
`example.com`、`example.net`、`example.org` は、RFC 2606 で予約されている
ドメイン名であり、ドキュメントの例として使われます。実際に登録することはできません。
また、国際化
ドメイン名のうち日本語ドメインの場合は `
ドメイン名例.JP` が例示用に予約されています。
メタ構文変数由来の固有名詞
メタ構文変数名が、そのまま固有名詞として使われることもあります。
xyzzy
`xyzzy` は、もともと英語圏のメタ構文変数ですが、テキストエディタ `Xyzzy` の名前としても使われています。
foobar2000
音楽再生ソフト `foobar2000` の名前も、メタ構文変数 `foobar` に由来します。
まとめ
メタ構文変数は、
プログラミングにおけるサンプルコード作成やドキュメント作成において、非常に便利なツールです。意味のない名前を使うことで、コードの可読性を高め、作成者の負担を減らすことができます。また、メタ構文変数は、
プログラミングだけでなく、様々な分野で類似の概念として使われています。文化圏や分野によって様々な種類があり、その背景を知ることで、さらに深く理解することができます。