プログラム中の識別子は基本的に英語で命名すればいいと思うけれど、そうも言ってられない場合もあるし、とはいえ野放図にして祝日がshukujitsuになったりsyukujitsuになったりするのは避けたい、ということがあったので各種方式を比較検討した。
結論を先に書くと、99式ローマ字の厳密翻字をベースにし、母音やナヤ行音に先行する「ん」を「n'」ではなく「nn」と書くようにしたものがよいのではないかと思う。
以下に表を示す。
行 | -a | -i | -u | -e | -o | -ya | -yu | -yo |
---|---|---|---|---|---|---|---|---|
あ | a | i | u | e | o | - | - | - |
か | ka | ki | ku | ke | ko | kya | kyu | kyo |
が | ga | gi | gu | ge | go | gya | gyu | gyo |
さ | sa | si | su | se | so | sya | syu | syo |
ざ | za | zi | zu | ze | zo | zya | zyu | zyo |
た | ta | ti | tu | te | to | tya | tyu | tyo |
だ | da | di | du | de | do | dya | dyu | dyo |
な | na | ni | nu | ne | no | nya | nyu | nyo |
は | ha | hi | hu | he | ho | hya | hyu | hyo |
ば | ba | bi | bu | be | bo | bya | byu | byo |
ぱ | pa | pi | pu | pe | po | pya | pyu | pyo |
ま | ma | mi | mu | me | mo | mya | myu | myo |
や | ya | - | yu | - | yo | - | - | - |
ら | ra | ri | ru | re | ro | rya | ryu | ryo |
わ | wa | - | - | - | wo | - | - | - |
ん | n / nn |
- | - | - | - | - | - | - |
長音 | aa | ii | uu | ee | oo | - | - | - |
下記のような特徴がある。
- 訓令式をベースにする。例えば、「し」「ち」はshi, chiではなくsi, tiとつづる
- 音声にもとづいた表記ではなく、カナ表記からの翻字方式とする。例えば、「王様」はōsamaやoosamaではなく、現代仮名遣いの「おうさま」をそのままローマ字化してousamaとつづる。三日月はmikazukiではなくmikadukiとつづる。音引き「ー」は直前の母音を繰り返すことで表記する。例えば「コンピューター」はkonpyuutaaとなる
- ■「99式」日本語のローマ字表記方式の付録A 注によれば、助詞の「は」「へ」はふつうwa, eと書くが、ha, heと書いてもかまわない、「を」や四つ仮名も、厳密に区別する必要があるときは、wo, zi, di, zu, diと書く、とのことなので、本記事ではこの厳密翻字に従って表記方式を考える
表記方式検討の前提
以下を大前提とする。
- プログラム中の識別子として使うことを目的とする
- 識別子は基本的に英語で命名し、英語への翻訳がむずかしい用語などにのみこの規則を適用する
- プログラミング言語ごとの特例を設けず、機械的に別言語での識別子に変換ができるようにする(例えば
monthlyUriage
↔︎monthly_uriage
↔︎monthly-uriage
のように) - 一般に使われているローマ字表記の慣習に従い、新たな表記法をできるかぎり発明しない
- Unicode識別子が利用可能など、対象とするプログラミング言語に仮定を置ける場合は別途検討する
上記から下記の条件が導かれる。
- ASCIIの範囲内で表記する。特に、多くのプログラミング言語で使用可能なA-Za-z0-9_の範囲に綴り字を収める
- 外来語の表記のためのつづり字は範囲外とする
- キャメルケース(CamelCase, camelCase)、スネークケース(snake_case)、ケバブケース(kebab-case)で特別な意味を持つ文字に綴り字上の意味を持たせない。すなわち、大文字小文字の別、アンダースコア、ハイフンに綴り字上の意味を持たせない。したがって、綴り字はa-z0-9の範囲に収めなければならない
方式ごとの比較
以下では、他方式(訓令式、ヘボン式、JSL方式、ワープロローマ字)との比較を行ない、他の選択肢についても検討する。
各方式の概要は下記の通り。
- 訓令式:内閣訓令及びISO 3602として標準化されている方式
- ヘボン式:日本語ローマ字表記として慣習的に広く行なわれている方式。標準化された定義はない(と思う)。本稿では英語版Wikipediaなどで使われている方式を指すことにする
- JSL方式:書籍Japanese, The Spoken Languageで使用されている方式。訓令式をベースとしており、長音を母音連続で表記するのが特徴。アクセント表記のための記法も存在するが本稿では扱わない
- 99式:社団法人日本ローマ字会が1999年に提案した方式。訓令式をベースとしており、カナ表記の翻字方式として定義されているのが特徴。長音符は母音連続で表記する。ただし、四つ仮名や助詞の「は」「へ」「を」は現代の発音に従い表記する。これらもカナ表記通りに表記する厳密翻字方式もある。本稿では厳密翻字方式について議論する
- ワープロローマ字:日本語入力等で使用される、英字キー入力からかなへの変換方式(≠表記方式)。JIS X 4063:2000として定義されていた。訓令式やヘボン式をベースにはしているが細部は異なる。本稿では必要に応じて各種日本語入力方式で使用されている方式もここに含めて言及する
Romanization of Japanese - Wikipediaも参照。
母音
方式ごとの差はなく、どの方式もaeiouを使用する。
子音・拗音
訓令式系とヘボン式系で違いがあるが、前掲の前提を満たすという点では大きな違いがないため、どちらかを好みで選択してよい。
訓令式、JSL方式、ヘボン式では四つ仮名を区別せず、ジ・ヂはzi/ji、ズ・ヅはzuで表記する。99式(厳密翻字)はカナの翻字方式であるため、ジ・ヂはzi・di、ズ・ヅはzu・duで表記する。
また、(識別子の中にはあまり現れないだろうが)助詞の「は」「へ」「を」は訓令式、JSL方式、ヘボン式ではwa, e, oで表記する。99式(厳密翻字)ではha, he, woで表記する。
相違箇所を下に示す(括弧書きは重複して掲出したもの)。
訓令式、JSL方式
行 | -a | -i | -u | -e | -o | -ya | -yu | -yo |
---|---|---|---|---|---|---|---|---|
さ | - | si | - | - | - | sya | syu | syo |
ざ | - | zi | - | - | - | zya | zyu | zyo |
た | - | ti | tu | - | - | tya | tyu | tyo |
だ | - | (zi) | (zu) | - | - | (zya) | (zyu) | (zyo) |
は | - | - | hu | - | - | - | - | - |
ヘボン式
行 | -a | -i | -u | -e | -o | -ya | -yu | -yo |
---|---|---|---|---|---|---|---|---|
さ | - | shi | - | - | - | sha | shu | sho |
ざ | - | ji | - | - | - | ja | ju | jo |
た | - | chi | tsu | - | - | cha | chu | cho |
だ | - | (ji) | (zu) | - | - | (ja) | (ju) | (jo) |
は | - | - | fu | - | - | - | - | - |
99式(厳密翻字)
行 | -a | -i | -u | -e | -o | -ya | -yu | -yo |
---|---|---|---|---|---|---|---|---|
さ | - | si | - | - | - | sya | syu | syo |
ざ | - | zi | - | - | - | zya | zyu | zyo |
た | - | ti | tu | - | - | tya | tyu | tyo |
だ | - | di | du | - | - | dya | dyu | dyo |
は | - | - | hu | - | - | - | - | - |
英単語と混ぜることを考えるとヘボン式系の方が見た目の馴染みはよさそうではある。一方で、動詞活用等によるつづり字の変化は訓令式の方が単純である。下にサ行五段活用動詞「貸す」タ行五段活用動詞「持つ」の活用表を示す。訓令式では動詞の語幹kas-, mot-は変化しないが、ヘボン式ではs/sh, t/ch/tsと末尾のつづり字が変化する(とはいえ、識別子を書く用途ではこのあたりが問題になることはあまりないだろうが)。
活用形 | 訓令式 | ヘボン式 |
---|---|---|
未然形 | kasa(nai) kaso(u) |
kasa(nai) kaso(u) |
連用形 | kasi(masu) kasi(ta) |
kashi(masu) kashi(ta) |
終止形 | kasu | kasu |
連体形 | kasu | kasu |
仮定形 | kase(ba) | kase(ba) |
命令形 | kase | kase |
活用形 | 訓令式 | ヘボン式 |
---|---|---|
未然形 | mota(nai) moto(u) |
mota(nai) moto(u) |
連用形 | moti(masu) mot(ta) |
mochi(masu) mot(ta) |
終止形 | motu | motsu |
連体形 | motu | motsu |
仮定形 | mote(ba) | mote(ba) |
命令形 | mote | mote |
促音(っ)
訓令式とヘボン式で一部違いがあるが、前掲の前提を満たすという点では大きな違いがないため、どちらかを好みで選択してよい。いずれの方式も促音直後の子音字を重ねることで促音を表記する。
- 例:活気(かっき)
- kakki
- 例:石鹸(せっけん)
- sekken
ヘボン式では促音に後続する文字がchの場合、cchではなくtchとなることのみ注意が必要。
- 例:ぼっち
- 訓令式、JSL方式:botti
- ヘボン式:botchi
撥音(ん)
訓令式、ヘボン式、99式ともに撥音はnで表記し、母音やヤ行音が後続する場合、間に'を入れることになっているが、前提からこの文字を使用することはできない。他の文字、例えば_を非曖昧化のための記号として使用すると、スネークケースの単語区切りと衝突するため、こちらも使用できない。
JSL方式では「ん」を常にマクロン付きのn̄でつづるが、これはASCII範囲外となるため採用できない。
国際音声記号のɴとの類似から「ん」を常に大文字Nでつづることも考えられるが、キャメルケースの単語区切りと衝突するため採用できない。
記号を使わず常にnとし曖昧さを受け容れるのも一法だが、回避策が存在するのであれば避けたいところである。
などとあれこれあるが、撥音に母音やナヤ行音が後続する場合はワープロローマ字のnnを採用するのがよいと思う。各方式の比較は下記の通り(ここの語例では訓令式、ヘボン式の違いは長音のための記号のみなので、表記は訓令式で代表する)。
語 | 訓令式 ヘボン式 |
99式 | JSL方式 | ワープロ ローマ字 |
備考 |
---|---|---|---|---|---|
簡易 (かんい) |
kan'i | kan'i | kan̄i | kanni | 撥音+母音 |
陥入 (かんにゅう) |
kannyû | kannyuu | kan̄nyuu | kannnyuu | 撥音+ナ行音 |
勧誘 (かんゆう) |
kan'yû | kan'yuu | kan̄yuu | kannyuu | 撥音+ヤ行音 |
感化 (かんか) |
kanka | kanka | kan̄ka | kanka | 撥音+その他 |
この場合、曖昧さがなければnはひとつで綴る(上表のその他。表記上の特例を減らすためにこれも常にnnとしてもよいかもしれない)。
- 例:選択(せんたく)
- sentaku
旧ヘボン式では、撥音にバ・パ・マ行音が後続する場合、撥音をmで表記する規則があるが、複合語の扱いが明確でないため、この規則を採用する必要はないと思う。
- 例:新聞(しんぶん)
- 旧ヘボン式:shimbun
- 修正ヘボン式:shinbun
- 例:新前橋(しんまえばし)
- 旧ヘボン式:shim-maebashi? shin-maebashi?
- 修正ヘボン式:shin-maebashi
長音
訓令式のサーカムフレックス、ヘボン式のマクロンを使用する長音表記は、ASCIIの範囲内で表記するという前提に反するため、これらの方式を採用することはできない。
- 例:長音(ちょうおん)
- 訓令式:tyôon
- ヘボン式:chōon
人名表記などで見られる、hを後置する方式は区切り文字が必要になるケースがあるため採用できない。
- 例:長音(ちょうおん)
- h後置式:choh'on
JSL方式の母音字をならべる方式は選択肢のひとつになるだろう。この方式は内閣訓示のそえがきでも紹介されている。
- 例:長音(ちょうおん)
- JSL方式:tyooon
99式はカナからの翻字を基本とし、外来語等で長音符(ー)が必要な場合はJSL方式と同様に母音字を並べる。こちらもASCIIの範囲内で区切り文字なしで表記できるので選択肢のひとつになる。
- 例:長音(ちょうおん)
- 99式:tyouon
- 例:ワープロ
- 99式:waapuro
このほか、訓令式、ヘボン式では、イ段長音はîではなくiiと表記する、訓令式、ヘボン式、JSL方式ではエイの音はê(ee)ではなくeiと表記する、オ段長音のオウとオオが同じ綴りになる、JSL方式では呼応/好悪がどちらもkoooとなるといった曖昧さの生じるケースが存在する、等々も注意が必要である(ここの語例では訓令式、ヘボン式の違いは長音のための記号のみなので、表記は訓令式で代表する)。
語 | 訓令式 ヘボン式 | JSL方式 | 99式 |
---|---|---|---|
かあさま | kâsama | kaasama | |
にいさま | niisama | ||
くうき | kûki | kuuki | |
ねえさま | nêsama | neesama | |
とけい | tokei | ||
とうさま | tôsama | toosama | tousama |
こおう(呼応) | koô | kooo | koou |
こうお(好悪) | kôo | kooo | kouo |
こうう(降雨) | kôu | koou | kouu |
おおいた | ôita | ooita |
これ以外の表記法として、英語のようにヘボン式のマクロンを無表記にすることも考えられるが、既に定着しているものはともかく、わざわざ語の衝突を増やす必要はないと思う。ワープロローマ字の -
による長音符表記も字種の制限で採用できない。
まとめ
以上をまとめると下表のようになる。○は前掲の前提を満たすことを示し、×は前提を満たさないことを示す。*1等は前提を満たすが、現代仮名遣いとは異なる書き分けが存在することを示す。
方式 | 母音 | 子音 | 促音 (っ) |
撥音 (ん) |
長音 | |
---|---|---|---|---|---|---|
正書法 | 訓令式 | ○ | *1 | ○ | × | × |
ヘボン式 | ○ | *1 *2 | *3 | × | × | |
JSL方式 | ○ | *1 | ○ | × | *4 *5 | |
翻字法 | 99式(厳密翻字) | ○ | ○ | ○ | × | *5 |
ワープロローマ字 | ○ | ○ | ○ | *6 | × |
- *1:四つ仮名を区別しない。助詞の「は」「へ」「を」を発音通りwa, e, oと表記する
- *2:行によって子音や拗音表記を使い分ける(シ、ジ、チ、ツ、フの子音字や、拗音の-y-, -h-使い分け)
- *3:ch-の場合のみ子音連続ではなくtch-で促音を表記する
- *4:オ段長音のオオとオウをどちらもooで表記する
- *5:長音符を母音字で表記する
- *6:撥音を文脈に応じてnまたはnnで書き分ける
方式を大別すると、ローマ字による日本語表記を定める正書法と、現代仮名遣い等の既存の正書法をローマ字表記に変換する翻字法に分けられる。
現代仮名遣いを知っている人が学習コストをかけずに使うのであれば、最初に述べた通り、翻字法の99式+ワープロローマ字撥音表記が手頃かと思う。正書法系統にするのであれば、JSL方式+ワープロローマ字撥音表記。ヘボン式に寄せる場合は、翻字法であれば99式の子音部分をヘボン式風にする(ヂ・ヅのつづり方は要検討)、正書法であればヘボン式の長音表記をJSL方式に置き換えるといったバリエーションも考えられるが、当初の「新たな表記法をできるかぎり発明しない」といった前提からは外れていってしまう。
おまけ
Q. 東京をTokyoじゃなくてToukyouとかTookyooって書くのは気持ち悪くない?
A. 英語表記でTokyoと書きましょう。
関連記事
-
プログラマーが知っておくべきローマ字の基礎知識 - Qiita
- 本記事と同様に識別子に使うローマ字表記法を検討し、訓令式、母音連続による長音表記、撥音の記号は省略、という結論に至っている。本記事の表現でいうと、JSL方式をベースに撥音は常にnといった方式
参考
- 99式つづりについて / 公益社団法人 日本ローマ字会 (Wayback Machine):概要版
- ■「99式」日本語のローマ字表記方式:詳細版
- 文化庁 | 国語施策・日本語教育 | 国語施策情報 | 内閣告示・内閣訓令 | ローマ字のつづり方
- Japanese, The Spoken Language:Additional Materialsから表記法等を説明したIntroductionのPDFをダウンロード可能