🔰

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

2022/12/10に公開約1,400字2件のコメント

ただの愚痴です

exists と exist

  • 英語圏では exists がやたら使われる
  • exists(user) のようなコードを見かけるたびに user は単数形なのにと疑問が沸く
  • 一方 Ruby の Pathname#exist? では単数形なので自然な感じはする
  • そういや File.exists? は非推奨になり最近では単数形の File.exist? だけになったらしい
  • 翻訳すると exist は存在で exists は存在するらしい
    • 複数形の s じゃない??? (ますます混乱)

starts_with と start_with

  • Python → startswith
  • Rust → starts_with
  • ググるとだいたい starts_with 系
  • Ruby → start_with?
  • ActiveSupport → すでに start_with? があるにもかかわらず starts_with? にエイリアス
    • もともと ActiveSupport が先だとはいえ
  • start って動詞なのに複数形にしていいの?
  • 複数形問題とは関係ないけど論理型を返すならプレフィクス is_ をつけてほしい。starts_with だけじゃわからん

ends_with と end_with

上と同じ

results と result

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

equals と equal

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

utils と util

  • 英語圏ではなんでもかんでも複数形にしたがるはずがこれは逆
  • node.js の組み込みメソッドがブラウザ上でも使える util パッケージは単数形になっている
  • 一方 Ruby の FileUtils は複数形になっている
  • 英語圏では utility が money と同様に、複数なのはあたりまえなので常に単数形とする説を仮定し、ググってみたがそのような言及は見つからなかったので結局基準はわからないまま

trim と strip

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

Discussion

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は特に連想なくそのままの意味です。

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

ログインするとコメントできます