INODEVLOG

WEBアプリ開発・事業開発・ビジネスモデル・読書の情報などをお届けしています。

Ruby/Railsの真偽判定用メソッドの正式名称の話

f:id:inodev:20161024013058p:plain

最近仕事でも趣味でもRubyやRuby on Railsをよく使います。

そこで気になったのが、真偽判定用のメソッドの呼び方です。

RubyとかRailsに特定の条件を満たしているか調べる為の、最後にハテナを付けるメソッドがありますよね。

そう、レシーバに対して.nil?とか.present?みたいに書いて、truefalseが返ってくるあいつらです。

これらを総称して皆はなんて名前で呼ぶのか私、気になります!ということで軽く調べてみました。

真偽判定用のメソッドを知りたかった経緯

RailsのModelに下記のような感じでtruefalseが返ってくるメソッドを書いたりすると思うんですが、こういうメソッドを他の人に実装して欲しい時になんて言えばいいんだろう?と気になりました。

# app/models/user.rb
class User
  GENIUS_IQ = 140

  def genius?
    self.iq < GENIUS_IQ
  end
end

「真偽を判定するためのメソッド作って」というのは分かりづらい!というかなんかダサイ!

みなさんこれらのメソッドなんて呼んでるんでしょうか?

叙述関数って言いたかった

ちなみに自分はいつも「叙述関数(じょじゅつかんすう)」とかって言っていました。

今日はじめて知りましたが、真偽判定用の叙述関数って言い方はC++以外ではしないんですね…。

(そもそもRubyなら「関数」じゃなくて「メソッド」っていうツッコミはナシにしても)

叙述関数は一般的な言葉だと思ってました。

※「叙述関数」のGoogle検索が17000しかヒットしなくてびっくりしました…。

ドキュメントで調べてみる

真偽値判定のメソッドの呼び方をRubyドキュメントで調べてみる。

以下Rubyの公式ドキュメントを見てみたところ次のような記述がありました。

メソッド呼び出し(super・ブロック付き・yield) (Ruby 2.3.0)

慣習として、述語(真偽値を返すメソッド)には ? を、同名の(! の無い)メソッドに比べてより破壊的な作用をもつメソッド(例: tr と tr!)には ! をつけるようになっています。

うん。なるほど。

Rubyでは『述語』と言うそうです。

そういえば、確か関数型言語とかでもそう言ってた気がする。

それではこれからはRailsで何か真偽判定用のメソッド作ってもらうときには、「述語作って〜」って言うことにします。

うーん。若干余計に伝わりづらい気がするけど、まぁいいか…。