ほとんどのプログラミング言語には列挙型 (enumeration type) あるいは列挙体 (enumeration) というデータ型があり、有限集合を順序付けて定義するのに使用します。C系の言語ではキーワードenum
を使用します。
/* 軍艦の種類を表す列挙型 */ typedef enum MyWarshipType { MyWarshipType_BattleShip, /* 戦艦 */ MyWarshipType_AircraftCarrier, /* 空母 */ MyWarshipType_LightAircraftCarrier, /* 軽空母 */ MyWarshipType_HeavyCruiser, /* 重巡洋艦 */ MyWarshipType_LightCruiser, /* 軽巡洋艦 */ MyWarshipType_Destroyer, /* 駆逐艦 */ MyWarshipType_Submarine, /* 潜水艦 */ /* C99 や C++11 では末尾要素の後のコンマが許可される */ } MyWarshipType; /* 列挙型変数の例 */ MyWarshipType type = MyWarshipType_HeavyCruiser;
列挙型の各メンバーは列挙子 (enumerator) と呼ばれます。C/C++では各メンバーに整数値が割り当てられ、ユーザーコードで明示的に指定しなければ最初のメンバーの内部数値はゼロとなり、以降のメンバーは 1, 2, 3, ... のように自動的にインクリメントされた連番が割り振られます。
Javaには当初列挙型がありませんでしたが、有用性を認めたのか、Java 1.5で結局導入されました。ただしJavaの列挙型は参照型つまりclassの一種であり、そのままでは整数型と相互に変換することはできません。
C#には当然最初から列挙型があります。C#の列挙型はC/C++と相互運用しやすい値型となっていて、キャストだけで整数型と相互に変換することもできます。
- Enumeration types - C# Programming Guide | Microsoft Docs
- 列挙型 - C# プログラミング ガイド | Microsoft Docs
- enum keyword - C# Reference | Microsoft Docs
- enum キーワード - C# リファレンス | Microsoft Docs
C++ではC言語互換のenumをサポートするほか、C++11ではスコープを持つ列挙型 (scoped enum) が導入され、JavaやC#に近い記述ができるようになりました*1。
enumの発音
ところで、このenumをどう発音しますか?
もともとenumは、前述のように英語の enumeration から来ています。米国式発音では「inùːməréiʃən」、英国式発音では「injùːməréiʃən」です。もしカナで無理やり表記するとすれば、それぞれ「イヌーメレイション」「イニューメレイション」といったところでしょうか。アクセント(第1強勢)の位置は-tionの前、第4音節にあります。
また、enumerator の発音は「inúːmərèitər」もしくは「injúːmərèitər」であり、カナ表記するならば「イヌーメレイター」「イニューメレイター」といったところです。アクセントの位置は第2音節にあります。
動詞形 enumerate の発音は「inúːmərèit」もしくは「injúːmərèit」です。カナ表記するならば「イヌーメレイト」「イニューメレイト」といったところです。
したがって、enumは「inúːm」もしくは「injúːm」と発音するのが正しいと思います。カナ表記するならば「イヌーム」もしくは「イニューム」です。個人的には「イニューム」推し*2ですが、米語圏エンジニア相手の会話であれば「イヌーム」と発音するほうが伝わりやすいかもしれません。
ちなみに.NETにはIEnumerator
インターフェイスおよびIEnumerable
インターフェイスが存在しますが、自分はそれぞれ「アイ・イニューメレイター」「アイ・イニューメラブル」と発音しています。
また、Windows APIにはトップレベルウィンドウを列挙する関数EnumWindows()
が存在しますが、自分は「イニューム・ウィンドウズ」と発音しています。
たまに見聞きするのが、「イナム」とか「イーナム」とかいう発音ですが、これは正直ダサいと思います。略す前の原語を知らずに無理やり字面だけを読んでいるようで、個人的に言わせてもらうと教養を感じさせない、悪く言うと幼稚な印象さえ受けます。極めつきは「エナム」。英語が苦手な日本人らしい、ダサい発音の極致です。
ネイティブでもenumの発音に関しては諸説あり、「イナム」はともかく「イーナム」のほうはネイティブも使っている人がいるようで、誤りとまでは言えないようですが、個人的には嫌いな発音です。
というわけでenumはイニューム。異論は認め……ない。どうしても「イーナム」と発音したい人は、せめてenumの語源と、enumeration, enumerator, enumerateの正しい発音くらいは把握したうえでどうぞお好きなように。