PythonにおけるProtocol(ダックタイピング)とABC(抽象化)の違い