syghの新フラグメント置き場

プログラミングTipsやコード断片の保管場所です。お絵描きもときどき載せます。

enumの読み方・発音はイニューム

ほとんどのプログラミング言語には列挙型 (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++と相互運用しやすい値型となっていて、キャストだけで整数型と相互に変換することもできます。

C++ではC言語互換のenumをサポートするほか、C++11ではスコープを持つ列挙型 (scoped enum) が導入され、JavaC#に近い記述ができるようになりました*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の正しい発音くらいは把握したうえでどうぞお好きなように。

余談:charの発音

文字型charの発音に関しても意見が分かれるかもしれません。自分は語源の character そのまま、すなわち「kǽrəktər」=「キャラクター」と発音しています。Bjarne Stroustrupを始め、ネイティブでも字面だけを読んで「tʃɑ́ːr」=「チャー」とかいう人もいますが、これもまたダサいです。日本では「キャラ」と略す人もいるようですが、これは英語圏・米語圏では通用しないと思います。
ちなみにwchar_tは「ダブリューキャラクター・アンダーティー」もしくは「ワイドキャラクター・アンダーティー」と発音しています。

*1:このscoped enumは、もともとマイクロソフトが開発した.NET用マネージ言語C++/CLIにおいて、マネージ列挙型のために拡張された構文がベースになっています。

*2:自分の学部生の頃の恩師である助教授(当時)が「イニューム」と発音されていたので、その影響も少なからずあります。