概要 Swiftのprotocolには型の性質を記述する機能と、存在型として使用する機能があります。その存在型はそれ自身のprotocolに準拠しません。その理由は、スタティックメンバに関して問題が生じるからです。この記事ではそれについて解説します。 解説 protocolの2つの機能 Swiftでprotocolを定義したとき、それには大きく2つの用途があります。1つは、ある型に準拠させたり、ジェネリクスの型パラメータの制約の記述に使用する、型の性質を記述する機能です。この記事では、この機能をprotocolの機能と呼ぶことにします。もう1つは、それを型として使用する機能です。このように型として使用されたときの型のことを、存在型と呼びます。下記に例を示します。 まずプロトコルを定義します。