🔰

日本人を悩ます複数形問題

2022/12/11に公開
2

はじめに

これまで s の有無でわりと時間を無駄にしてきた。コードを書く上でストレスにもなっている。そういうのを集めた。

exist と exists

Ruby は File#exist? なので自然な感じはする。File.exists? も用意されていたが非推奨になったのち最近では File.exist? だけになった。これで exist と exists が混合する気持ち悪さから開放される。

一方、英語圏では exists がやたら使われる。exists(user) のようなコードを見かけるたびに user は単数形なのにと疑問が沸く。翻訳すると exist は存在で exists は存在するらしい。複数形の s ではない? (ますます混乱)

start_with と starts_with

これも Ruby だと start_with? でわかりやすいのだが、

  • Python → startswith[1]
  • Rust → starts_with
  • ググるとだいたい starts_with 系
  • ActiveSupport → すでに start_with? があるにもかかわらず starts_with? にエイリアス
    • もともと ActiveSupport が先だとはいえ

といったように starts が多い。start って動詞なのに複数形にしていいのだろうか?

また複数形問題とは関係ないけど論理型を返すならプレフィクス is_ をつけてほしい。starts_with だけじゃわからない。

end_with と ends_with

同上

result と results

articles や items と書いてあって配列でなかったことはないが results の場合配列かどうか怪しい。主観として多めというだけで results の型は予想がつかない。いや、多めですらない場合もある。ただの小さな文字列だったりする。自分でこの単語を使いそうになったときはどっちが適切なのか永遠と悩んで先に進めなくなるので使わないことにしている。

state と status

だいたい同上

equal と equals

例えば assert_equals と assert_equal の何が違うのか。assert_equals(1, 1) のどこに複数形の要素があるのだろうか?

util と utils

英語圏ではなんでもかんでも複数形にしたがるはずがこれは逆になっている。node.js の組み込みメソッドがブラウザ上でも使える util パッケージは単数形になっている。

一方 Ruby の FileUtils は複数形になっている。英語圏では utility が money と同様に、複数なのはあたりまえなので常に単数形とする説を仮定したが、そのような言及はどこにも見つからなかったので結局基準はわからない。

strip と trim

もう複数形問題と関係なくなっちゃってるけど Ruby の strip に相当する機能が英語圏ではかたくなに trim になっている。Ruby のメソッド軍を参考にしているように見えなくもない他言語のライブラリでも strip は trim になっていた。でも Python は strip っていう。Ruby の strip は Python からとった?

脚注
  1. 単語と単語を繋げるんじゃない(小声) ↩︎

Discussion

Ryo HirayamaRyo Hirayama

existsとかstartsのsは三単現のsですね
真偽値を返す場合必ずisを前につけるというのは英語的には自然じゃない場面が多いです。
1.is_number()は英文にすると”1 is a number?”で意味が通ります。
同じようにexistsstarts、他にはhasといったプレフィックスも英文に直してみると自然になるようになっています。
また、sをつけるのは冗長に思われるかもしれませんが、もしsをつけない形で統一するなら、is_numberbe_numberにするべきです。

utilityは手元の辞書で調べると複数形になるのが普通のようです。私の勘ですがはutilsはutilitiesの略であり、utilはutility moduleの略だと思ってます。

stripとtrimについても辞書を引いてみると全然違う単語ということがわかりました。
stripは何かから衣服や皮などを剥がすニュアンスが強く、
trimは何かについて余分なところを切り取るという意味合いが強いです。
文字列における余分なもの(空白など)を皮のように連想したのがstripだと言えるかもしれません。trimは特に連想なくそのままの意味です。

megetonmegeton

三単現……? (急いでぐぐる)
動詞の s は複数形と関係なかったんですね
もやもやが少し晴れました
他にも有用な情報ありがとうございます