A motion control program for execution by a computer for performing motion control of a plurality of control target devices, the computer having a non-real-time OS and a real-time OS installed thereon, wherein the motion control program causes the computer to function as: a reception unit operating on the non-real-time OS; a queue generation unit operating on the real-time OS; a control unit operating on the real-time OS; and a plurality of communication module units operating on the real-time OS; wherein the reception unit gives a second instruction, when receiving a first instruction to reserve a memory area for a FIFO queue from a user-created program for controlling the plurality of control target devices, wherein the first instruction includes an indication of a first identifier corresponding to the FIFO queue to be created, and wherein the second instruction is an instruction to the queue generation unit to reserve the memory area for the FIFO queue corresponding to the first identifier; the queue generation unit reserves, when receiving the second instruction from the reception unit, the memory area for the FIFO queue corresponding to the first identifier in a memory area on the real-time OS; the reception unit receives a control command indicating an operation that should be performed by each of the plurality of control target devices over a plurality of motion control cycles and a second identifier indicating a FIFO queue in which the control command is to be queued, from the user-created program, and notifies the control unit, via the FIFO queue corresponding to the second identifier, of control command information indicating a content of the received control command; the control unit generates a respective interpolation command for each of the control target devices repeatedly for each of the motion control cycles based on the control command information notified from the reception unit, each interpolation command indicating to a respective control target device of the plurality of control target devices an operation that should be executed for each of the motion control cycles, and stores the generated interpolation commands in a plurality of respective memory areas of the memory area on the real-time OS which are reserved for each of the control target devices; and the communication module units each obtain a respective interpolation command from a respective memory area reserved for a respective control target device of the plurality of control target devices, convert the obtained interpolation command from a predetermined signal format which can be recognized by the control unit into a signal format with a communication interface standard which can be recognized by the respective control target device, and transmit the converted interpolation command. a reception unit operating on the non-real-time OS; a queue generation unit operating on the real-time OS; a control unit operating on the real-time OS; and a plurality of communication module units operating on the real-time OS; wherein the reception unit gives a second instruction, when receiving a first instruction to reserve a memory area for a FIFO queue from a user-created program for controlling the plurality of control target devices, wherein the first instruction includes an indication of a first identifier corresponding to the FIFO queue to be created, and wherein the second instruction is an instruction to the queue generation unit to reserve the memory area for the FIFO queue corresponding to the first identifier; the queue generation unit reserves, when receiving the second instruction from the reception unit, the memory area for the FIFO queue corresponding to the first identifier in a memory area on the real-time OS; the reception unit receives a control command indicating an operation that should be performed by each of the plurality of control target devices over a plurality of motion control cycles and a second identifier indicating a FIFO queue in which the control command is to be queued, from the user-created program, and notifies the control unit, via the FIFO queue corresponding to the second identifier, of control command information indicating a content of the received control command; the control unit generates a respective interpolation command for each of the control target devices repeatedly for each of the motion control cycles based on the control command information notified from the reception unit, each interpolation command indicating to a respective control target device of the plurality of control target devices an operation that should be executed for each of the motion control cycles, and stores the generated interpolation commands in a plurality of respective memory areas of the memory area on the real-time OS which are reserved for each of the control target devices; and the communication module units each obtain a respective interpolation command from a respective memory area reserved for a respective control target device of the plurality of control target devices, convert the obtained interpolation command from a predetermined signal format which can be recognized by the control unit into a signal format with a communication interface standard which can be recognized by the respective control target device, and transmit the converted interpolation command.