An internal combustion engine system equipped with an open-close timing variation mechanism constructed to vary an open-close timing of an intake valve for an internal combustion engine, the internal combustion engine system comprising: a learning instruction module configured to, upon satisfaction of an idle learning condition for learning a control amount required to idle the internal combustion engine as an idle control amount (S120, S250) or upon satisfaction of an open-close timing learning condition for learning a control amount required to set an open-close timing of the intake valve to a specific open-close timing as an open-close timing control amount, give a learning instruction to perform learning of the idle control amount and learning of the open-close timing control amount; an idle learning module configured to learn the idle control amount (S120, S250), in response to the learning instruction given by the learning instruction module; and an open-close timing learning module configured to learn the open-close timing control amount (S170, S200), in response to the learning instruction given by the learning instruction module, wherein the learning instruction module is configured to give the learning instruction, upon satisfaction of the idle learning condition, to successively perform learning of the idle control amount by the idle learning module and learning of the open-close timing control amount by the open-close timing learning module in this sequence, while being configured to give the learning instruction, upon satisfaction of the open-close timing learning condition, to successively perform learning of the open-close timing control amount by the open-close timing learning module and learning of the idle control amount by the idle learning module in this sequence, and wherein the learning instruction module is configured to perform, upon completion of the learning of the idle control amount, a control to satisfy the open-close timing learning condition, and to perform, upon completion of the learning of the open-close timing control amount, a control to satisfy the idle learning condition for reducing the total time required for completion of learning both the idle control amount and the open-close timing control amount, compared with individually learning only one of the idle control amount and the open-close timing control amount corresponding to the satisfied learning condition. a learning instruction module configured to, upon satisfaction of an idle learning condition for learning a control amount required to idle the internal combustion engine as an idle control amount (S120, S250) or upon satisfaction of an open-close timing learning condition for learning a control amount required to set an open-close timing of the intake valve to a specific open-close timing as an open-close timing control amount, give a learning instruction to perform learning of the idle control amount and learning of the open-close timing control amount; an idle learning module configured to learn the idle control amount (S120, S250), in response to the learning instruction given by the learning instruction module; and an open-close timing learning module configured to learn the open-close timing control amount (S170, S200), in response to the learning instruction given by the learning instruction module, wherein the learning instruction module is configured to give the learning instruction, upon satisfaction of the idle learning condition, to successively perform learning of the idle control amount by the idle learning module and learning of the open-close timing control amount by the open-close timing learning module in this sequence, while being configured to give the learning instruction, upon satisfaction of the open-close timing learning condition, to successively perform learning of the open-close timing control amount by the open-close timing learning module and learning of the idle control amount by the idle learning module in this sequence, and wherein the learning instruction module is configured to perform, upon completion of the learning of the idle control amount, a control to satisfy the open-close timing learning condition, and to perform, upon completion of the learning of the open-close timing control amount, a control to satisfy the idle learning condition for reducing the total time required for completion of learning both the idle control amount and the open-close timing control amount, compared with individually learning only one of the idle control amount and the open-close timing control amount corresponding to the satisfied learning condition.