ちょっと話題の記事

コードや構成図で使う、例示のための仮名たち(メタ構文変数など)まとめ

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

よく訓練されたアップル信者、都元です。お役所で申請書等を書く時、その申請書の記入例に「日本 太郎」等の架空の名前があると思います。

このような名前は、実在の人物名ではなく仮名、しかも多くの人が「これは実際の名前ではなく、例示のための名前である」ということを理解している仮名を使うのが通例です。日本では古くから「名無しの権兵衛」という言い方も使われていますね。ちなみに、英語圏でこれにあたるのが「John Doe」だそうです。(参考:wikipedia

また、ちょっと口語的ですが「うんぬん」「かんぬん」という言葉も、上記と同じ様な役割を持った言葉ですね。地名としては「いろは町」「ほへと町」とか、「げんこつ町たぬき地区」なんていう事例もあるようです。

さらに、これはちょっと違うかもしれませんが、契約書等の法的な文書において、「甲乙丙丁」という文字を変数的に使ったりしますね。文書の頭で(以下、甲と呼ぶ)等の定義を入れて、後の文章から参照します。まさにコード(=code=規定・法典)ですね。これは十干と呼び、この先は「戊己庚辛壬癸」と続きます。

コードの世界(メタ構文変数)

さて、プログラミングの世界でも、このような目的で、コード内でよく用いられる変数名があります。これを「メタ構文変数」と呼びます。

foo, bar, baz...

世界的に有名なのは foo, bar って奴ですね。変数名やクラス名にこれらが現れた時、知っている人は「fooとはどういう意味だ?」「barとは?」等とは考えません。

ちなみにこのfoobarシリーズはRFCで規定されている、比較的由緒正しい規格です…。まぁ、ジョークRFCなんですがw (参考:RFC 3092

foo, bar, baz あたりまでは有名ですが、実は qux, quux, corge, grault, garply, waldo, fred, plugh, xyzzy, thud と続くようです。残念ながら覚えられません。

foobarシリーズの優秀なところは、無意味ながらも「順列」がきちんと利用者の間に刷り込まれている点でしょう。 foo は1番目の要素であり、 bar の前にある、ということを多くの人が想起できるのです。

hoge, fuga, piyo...

メタ構文変数の中でも特に日本で通じる(日本でしか通じない)ものに hoge, fuga, piyo なんてのもあります。その他、 hogehoge, mogera 等、その場で適当に作っては使われているようです。

これは私はあまり使わず、foobarシリーズを使う派です。前述の「順列想起」ができない、ってのも大きいかもしれません。

spam, ham, eggs...

調べて知ったんですが、Pythonの世界ではこれが使われているらしいです。へー。モンティパイソンですねえ。

aho, baka, cine...

ちょっと下品で申し訳ないですが。某友人に昔聞いたネタです。「一般的にどこでも使える」という大事なメリットが抜けておりますが、何とかメタ構文変数であることは伝わるのではないでしょうか。

下品であるリスクを冒してまでこれを使う理由は、ソートした時に分かります。 :)

暗号界・物理界...etc

暗号の世界でモデルを示すことを考えます。「ある人物Aが、ある人物Bに対して秘匿通信を行いたいとします。その時、ある人物Eがこの通信の傍受を試みています。…」的な説明を果てしなく繰り返し、拡張して行くんですね。ある程度の規模になった時「ある人物Xの役割」が頭の中で整理できなくなってきます。

というわけで、暗号の世界では、通信の当事者は AliceBob 、盗聴者のことは Eve と呼ぶのが一般的、というようなデファクトスタンダードができているようです。ある人物A → Alice、ある人物B → Bob ということですね。で、盗聴者 (eavesdropper) と頭文字が共通する Eve は盗聴者として使われている、という感じです。 (参考:アリスとボブ

ネットワーク界

ドメイン名

さて、困るのがインターネットでのドメイン名の例示です。大方の予想どおり、 foo.combar.com には所有者が居ます。 foo.bar と表現すれば、存在しないトップレベルドメインなので、実在ドメインと衝突する恐れはありません。しかし、大きなデメリットがあります。どうしてもドメイン名に見えないんですよね…。

欧米でよく用いられる架空の企業名に「ACME」 *1というものがあります。そこから acme.com というドメインが例示にしばしば用いられているのを見ます。が。 acme.com にだって所有者は居ます。ACME Laboratoriesさん、大変ですね。

しかしですよ。きちんとこのような例示目的のために予約されたドメインというのは存在します。 example.com, example.net, example.org です。例示の場合は是非これを使うようにしましょう。これらも、RFCで定められた由緒正しい仕様 *2です。(参考:RFC 6761, RFC 2606

IPアドレス

同様に、IPアドレスの例示もしたいことがありますね。ローカルIPアドレスであれば衝突の危険はありませんが、敢えてグローバルIPアドレスを例示したい時もあります。適当に 100.101.102.103 としたって、誰かが持っているものでしょう。有り得ないIPアドレスとして 300.400.500.600 等としてみても、なんと、IPアドレスに見えません。人間の目と頭って良く出来てますね。

そういった場合、以下のネットワークのIPを例示として使えます。(参考:RFC 5735

  • 192.0.2.0/24 (TEST-NET-1)
  • 198.51.100.0/24 (TEST-NET-2)
  • 203.0.113.0/24 (TEST-NET-3)

まとめ

いやー、色々あるんですね。publicなドキュメントで、実在するIPアドレスやドメインを書いてしまい、その所有者に迷惑を掛けたりしないようにしたいものです。

っていうネタを朝の通勤電車内でiPhone使って調べていたら、2駅も乗り過ごし、上野駅まで行ってしまったことをここにも告白しておきます。

脚注

  1. 日本で言えば「海山商事」的な感じですかね。
  2. しかも、ジョークではありません。