【プログラミング全般】「登録する」の意でregistと書くことの是非について

はじめに

「登録する」という意味でregistと書くのがあるあるなのかは分かりませんが、色んなプロジェクトで色んな人が書いたコードを見ても、結構registが使われていました。

英語的には誤りであり、registという単語は存在しません。正しくはregisterです。ではなぜregisterではなくregistが使われているのか、そう書いた人ひとりひとりを捕まえて「あなたはなぜregiterではなくregistと書いたのですか?」とインタビューすることはできないので、勝手に推測しています。

registerではなくregistを使う理由を推測

-erが動詞っぽくないから

個人的には一番それっぽい理由だと思います。

registerはまぎれもなく動詞なのですが、-erという接尾辞が「~する人」ということを表すので、-erを抜いたregistが「登録する」ということなのだろう、と思ったのではないかということですね。まぁ分からなくはないですが、辞書引こうよ…とは思いますね。

慣習になっているから

自分たちが手をつける以前のソースコードでびっしりとregistが使われており、registerを使いたいけど統一感なくなるのも気持ち悪いので、いやいやregistを使っているパターンですね。

短い方がいいから

registerという語であることは知っているけど、registの方が短いしチーム内で意味も伝わるからregistにしているパターン。これもなくはないでしょうし、ベテランエンジニアがこんな感じで書いてたら他のメンバーも合わせざるを得ないみたいな感じになりそうです。

insert→ins、update→updみたいに省略してもある程度意味が伝わるので、わざわざregisterと書く必要はないじゃんという発想かもしれません。


おそらく上記のような理由があるのではないかと思います。

ググってみる

「登録する regist プログラマ」みたいなキーワードでググってみたところ、以下の記事がヒットしました。

「登録する」の罠: registは間違い、アクセントにも注意

registerではなんとなく動詞らしく見えないので、こういう勘違いが発生してしまうのでしょう。

「動詞っぽくないから説」を提唱されています。私もそう思います。ちょっとややこしい単語ではありますよね。

この記事へ反応する形で、次のような記事もありました。

正確さよりも意図が“素早く正確に伝わる”ことが重要 – 2011年09月05日

プログラマやSEにとって、この単語が正しい英語かなんてどうでもいいことだ。さらに発音なんてさらにどうでもいいことだ。重要なことは、この単語を見た人間(おそらく同じプログラマかSEか)が、この単語が付いた機能なりファイルなりの概要を名前から安易にかつ正確に想像できるか?という点にある。

これに関しては半分同意といいう感じです。発音に関しては個人的にはどうでもいいと思います。それは私の周りにもネイティブの英語話者がいないからかもしれないですが、コードレビューしていて「このトライアップロードメソッドは何をしているの?」みたいにカタカナ英語で言いますし双方通じています。

ネーミングから容易に処理が分かるかというのも大事な視点です。

たとえば、認証という単語はrecognitionやcertificationを使うのが妥当だと思われる。しかしrecognitionやcertificationという単語はあまり馴染みが無い。意味を調べるのに辞書を要する人間も多いだろう。さらに文字数も多すぎる。それを考慮して、俺は認証をする機能にはauthという略語(造語?)を良く使う。

これに関しても同意できます。一方、英語の細かいニュアンスの違いを命名に落とし込んであると、より良いコードだなと思うこともあります。たとえば

  • beginとstartの違い
  • deleteとremoveの違い
  • sinceとfromの違い

などがコードリーディングを助けることもあるでしょう。

例として挙げられているものでも、たとえばrecognitionだと「一度認識しているものを改めて認識する」ようなニュアンスの認証ですし(接頭辞re-が付いていますね)、certificationだと「何かを申請して、それが他の誰かに承認される」ようなニュアンスの認証、auth(authentication)だとIDとパスワードを使って認証(本人確認)するようなニュアンスの認証です1。これらのニュアンスの違いがあるのに、認証は全部authでいいや!というのはちょっとどうかと個人的には思います。

英語はやっぱり大事

そういう意味では、「正しい英語」というのはニュアンスの違いなどの理解が及ぶ範囲であれば、それは重要だと個人的には思います。ただ、registとregisterに関してはニュアンスの違いとかではなくそもそも存在しない語と存在する語の違いなので、ここでは若干違う話題ではありますが。

また、プログラミングはだいたい英語を使うため、正しい英語の重要性みたいなのを理解していないとトンチンカンなコードを書いたりします。一度directoryPassみたいな変数を見たことがあります(おそらく書きたかったのはdirectoryPath)。pathは結構頻出基礎的な単語だと思うのですが、自分より何年も長くコードを書いているような人が間違えていると、ある程度正しい英語を使うクセ付けというか、そういうのは大事だよなぁとも思います。少なくとも分からなかったらググる、あまりにも長くなりそうだったらローマ字で書くとかが「正確に伝わる」という意味ではアリだと思います。ローマ字の是非はまた議論が別れそうですが、個人的にはpathをpassと書かれるくらいならpasuと書いてもらった方が…いやpathくらい覚えてほしいな、やっぱ。

個人的にはregistだろうがregisterだろうが意味は伝わるので、既にregistが使われているプロジェクトではregistを使います。でも自分が0から作るならregisterを使います。IDEの補完機能などを使えば2文字増えようが関係ないですし、逆に2文字をケチって「あれwこの人registっていう英単語はないって知らないのかな?ぷっぷくぷーw」と思われるくらいならしっかり書きます2。まぁ思われても別にいいですけど。

結局は環境次第ということだと思います。メリットデメリットあるので、ある程度クローズドな環境であればregistでもいいんじゃない?とは思いますね。ただ、世界中に公開するようなコードを書くのであればregisterを使っていた方が無難だとは思います。少し紹介しましたが、insert→ins、update→updで伝わるのになんでregistはダメなんだ!と思われたら、中途半端に略してて気持ち悪いからだと思います。中途半端にerだけ省略しても誰も幸せにならないのでregくらいまで省略すれないいんじゃないですかね?regだったら省略しているということが明かなので。registだと若干ひっかかるというか、気持ち悪い感は否めないです。個人的に。


  1. 私の理解が正しいかはわからないので鵜呑みにしないでくださいね。 
  2. 私がregist派のみなさんをそのように思っているという訳ではないですよ。