 /* モータの制御クラス */
 class MotorIO{ //{{{
 
-  /* モータの状態を表す型 */
-  struct MotorState{
-    bool isMoveFoward; /* 前進するか */
-    bool isStop;       /* 停止するか */
-    bool isBrake;      /* ブレーキするか */
-  };
-  
-  /* モータの現在の状態
-     もう少し良い方法があれば書き直す */
-  MotorState motorState = {true, false, false};
+  /* 優先度は Brake > Stop > Otherewise */
+  bool isMoveFoward; /* 前進するか */
+  bool isStop;       /* 停止するか */
+  bool isBrake;      /* ブレーキするか */
 
-  /* モータの変更後の状態
-     現在と違う状態がセットされていればmotor関数が状態を変更する */
-  MotorState changedMotorState = {true, false, false};
+  void brake(){/* Brake code here... */}
+  void stop(){/* Stop code here... */}
+  void moveFoward(){/* Move Foward code here... */}
+  void moveBackward(){/* Move backward code here... */}
 
-  void motor(){
-    if(motorState.isMoveFoward != changedMotorState.isMoveFoward ||
-       motorState.isStop       != changedMotorState.isStop       ||
-       motorState.isBrake      != changedMotorState.isBrake      ){
-      motorState = changedMotorState;
-      if(motorState.isBrake){
+  public:
+    void toMoveFoward(){ /* 前進するよう状態を変更 */
+      isMoveFoward = true;
+      isStop = false;
+      isBrake = false;
+    }
+    void toMoveBackward(){ /* 後退するよう状態を変更 */
+      isMoveFoward = false;
+      isStop = false;
+      isBrake = false;
+    }
+    void toMoveStop(){ /* 停止するよう状態を変更 */
+      isStop = true;
+    }
+    void toBrake(){ /* ブレーキするよう状態を変更 */
+      isBrake = true;
+    }
+
+    void updateMotorState(){ /* モータの状態を更新 */
+       if(isBrake){
         brake();
         return;
       }
-      if(motorState.isStop){
+      if(isStop){
         stop();
         return;
       }
-      if(motorState.isMoveFoward){
+      if(isMoveFoward){
         moveFoward();
         return;
       } else {

  }

  protected:

    /* サーボを回転させる関数 */
    /* 値は0~180の間で */
    void rotateServo(const int difference){

  public:
    /* サーボモータのピンを設定する関数 */
    /* 無くても良いが、あると統一感が生まれる */
    void servoPin(const int pin){
      servo.attach(pin);
    }
}; //}}}
