LoginSignup
1
1

プログラム中の識別子は基本的に英語で命名すればいいと思うけれど、そうも言ってられない場合もあるし、とはいえ野放図にして祝日が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方式)との比較を行ない、他の選択肢についても検討する。

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 zu - - 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 zu - - 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 zu - - zya zyu zyo
- ti tu - - tya tyu tyo
- di du - - dya dyu dyo
- - hu - - - - -

促音(っ)

訓令式とヘボン式で一部違いがあるが、前掲の前提を満たすという点では大きな違いがないため、どちらかを好みで選択してよい。いずれの方式も促音直後の子音字を重ねることで促音を表記する。

  • 例:活気(かっき)
    • kakki
  • 例:石鹸(せっけん)
    • sekken

ヘボン式では促音に後続する文字がchの場合、cchではなくtchとなることのみ注意が必要。

  • 例:ぼっち
    • 訓令式、JSL方式:botti
    • ヘボン式:botchi

撥音(ん)

訓令式、ヘボン式、99式ともに撥音はnで表記し、ナヤ行音が後続する場合、間に'を入れることになっているが、前提からこの文字を使用することはできない。他の文字、例えば_を非曖昧化のための記号として使用すると、スネークケースの単語区切りと衝突するため、こちらも使用できない。

JSL方式では「ん」を常にマクロン付きのn̄でつづるが、これはASCII範囲外となるため採用できない。

  • 例:みなさん
    • 訓令式、ヘボン式、99式:minasan
    • JSL方式:minasan̄

「ん」を常に大文字Nでつづることも考えられるが、キャメルケースの単語区切りと衝突するため採用できない。

記号を使わず常にnとし曖昧さを受け容れるのも一法だが、可能であれば避けたいところ。

などとあれこれあるが、撥音にナヤ行音が後続する場合はワープロローマ字のnnを採用するのがよいと思う。

  • 例:案内(あんない)
    • 訓令式、ヘボン式、99式:an'nai
    • JSL方式:an̄nai
    • ワープロローマ字:annnai

この場合、曖昧さがなければ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方式と同様に母音字を並べる。

  • 例:長音(ちょうおん)
    • 99式:tyouon
  • 例:ワープロ
    • 99式:waapuro

このほか、訓令式、ヘボン式、JSL方式では、イ段長音はīではなくiiと表記する、エイの音はēではなくeiと表記する、オ段長音のオウとオオが同じ綴りになる、といった部分も注意が必要である(ここの語例では訓令式、ヘボン式の違いは長音のための記号のみなので、表記はヘボン式で代表する)。

訓令式
ヘボン式
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と書きましょう。

関連記事

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1