先に結論 Swiftのstaticメソッド制約はちょっとしたシンプルな機能に見えるけど便利で深い Kotlin, TypeScript, Java で同じことをすると冗長で間接的なコードになってしまう TypeScriptのstaticメソッド注入は独特のテクニックで面白い 提示するJavaの実装は「T を new する」方法でもあるので参考にして Scala は間接的ではあるもののKotlinより良い形でかける SwiftはScalaの形をさらにより良くした形とみなすことができる C++はSwiftと同じ事ができるがわかりにくい書き方になってしまう 導入 Swiftはprotocolという機能で、Javaのinterfaceのように型がインスタンスメソッドをもつ事を強制する事ができます。そしてSwiftではそのメソッド制約として、インスタンスメソッドだけではなくスタティックメソッドをもつ