A controller for controlling a control target, the controller comprising: a PLC engine; and a machine learning engine, wherein the PLC engine comprises: a feature quantity generation unit configured to generate, from data associated with the control target, a feature quantity appropriate for detecting an abnormality in the control target; an instruction unit configured to instruct the machine learning engine to detect the abnormality; and a data compression unit configured to compress data about the feature quantity generated by the feature quantity generation unit and provide the compressed data to the machine learning engine, and the machine learning engine comprises: a machine learning unit configured to perform machine learning using the feature quantity generated by the feature quantity generation unit; and an abnormality detection unit configured to detect the abnormality in the control target based on an abnormality detection parameter (1546, 1706) determined from a learning result of the machine learning unit used for detecting the abnormality, and based on the feature quantity generated by the feature quantity generation unit, wherein the instruction unit is configured to transmit a request for detecting the abnormality to the abnormality detection unit, and the abnormality detection unit is configured to detect the abnormality without returning a response to the request to the instruction unit. a PLC engine; and a machine learning engine, wherein the PLC engine comprises: a feature quantity generation unit configured to generate, from data associated with the control target, a feature quantity appropriate for detecting an abnormality in the control target; an instruction unit configured to instruct the machine learning engine to detect the abnormality; and a data compression unit configured to compress data about the feature quantity generated by the feature quantity generation unit and provide the compressed data to the machine learning engine, and a feature quantity generation unit configured to generate, from data associated with the control target, a feature quantity appropriate for detecting an abnormality in the control target; an instruction unit configured to instruct the machine learning engine to detect the abnormality; and a data compression unit configured to compress data about the feature quantity generated by the feature quantity generation unit and provide the compressed data to the machine learning engine, and the machine learning engine comprises: a machine learning unit configured to perform machine learning using the feature quantity generated by the feature quantity generation unit; and an abnormality detection unit configured to detect the abnormality in the control target based on an abnormality detection parameter (1546, 1706) determined from a learning result of the machine learning unit used for detecting the abnormality, and based on the feature quantity generated by the feature quantity generation unit, a machine learning unit configured to perform machine learning using the feature quantity generated by the feature quantity generation unit; and an abnormality detection unit configured to detect the abnormality in the control target based on an abnormality detection parameter (1546, 1706) determined from a learning result of the machine learning unit used for detecting the abnormality, and based on the feature quantity generated by the feature quantity generation unit, wherein the instruction unit is configured to transmit a request for detecting the abnormality to the abnormality detection unit, and the abnormality detection unit is configured to detect the abnormality without returning a response to the request to the instruction unit.