Protocol ProtocolはElixirでポリモーフィズムを実現するための仕組み。プロトコルを使うことでどのようなデータでもやり取りできるようになる たとえば Elixirではnilとfalseだけがfalseとして扱われ、それ以外のすべてはtrueと評価されるが、アプリケーションによっては空白をfalseと評価したいケースもないだろうか?このような場合はプロトコルを使うと実現できる。 # Blankというプロトコルを定義 defprotocol Blank do @doc "Returns true if data is considered blank/empty" def blank?(data) end # プロトコルを実装していく # Integers are never blank defimpl Blank, for: Integer do def blank?(_)