必ず対で実行しなければならない処理がある場合は、ブロックを受け取るメソッドを定義しましょう。 振る舞いの実現に関するパターンです。 ファイルをオープンしたら最後に必ずクローズしなければいけないといった、必ず対で実行しなければならない処理を実現したい場合、最も単純な実現方法は対の処理をそれぞれ独立したメソッドとして公開することです。 class File def open ... end def close ... end end f = File.new f.open ... f.close しかし、この実現方法だと、インタフェースとして以下のような問題が残ります。 対で実行する必要があることを利用者が知らなければならない どのようなケースでも処理が対で実行されることをそれぞれの利用者が保証しなければいけない このような問題は、対の処理の間で実行したい処理をブロックとして受け取るメソッドを