Defartで簡単なプログラムを作る(3)

アクションを作る

sample10.png

2つの状態を作ることができたら、アクション(矢印)でそれらを結びます。どちらから初めても構わないのですが、ここでは左の状態から右の状態へとアクションを結ぶことにしましょう。

sample11.png

上の図で示したように左側の状態の黄色い四角形をクリックしてください。すると右下方向にヒゲのような線が現れます。

sample12.png

この線がアクションと呼ばれるものです。
アクションは、状態と状態との結びつきによって線の色が変化します。アクションは状態を結んでいなければならないので、ちゃんと状態同士がつながっていない時には、赤色の線で描かれます。つまり、上の図ではアクションが正しく状態に結ばれていないことを表しています。

右側の状態にアクションを結びつける

sample13.png

上の図で示した灰色の四角形をドラッグすることで、アクションを自由自在に動かすことができます。ドラッグしたまま、右側の状態のところでボタンを離してみてください。すると、下のようにアクションが右側の状態とつながるはずです。

sample14.png

これで2つの状態がアクションで結ばれました。

状態やアクションって何?

ここで、作成した2つの状態やそれを結ぶアクションについて説明しましょう。
上で作った2つの状態とアクションは、「現在の状態が左側の状態であるとき、ある条件が成立したら右側の状態に移動する(遷移する)」ことを表しています。
AIBOは常に「現在の状態」を知っています。「現在の状態」は(原則として)状態遷移図にある状態のどれか一つになります。仮にAIBOが左側の状態を「現在の状態」とみているときに「ある条件」が成立すると、アクションが実行され、右側の状態が「現在の状態」になります。右側の状態から更にアクションが伸びていれば、同様に条件によって更に別の状態へと「現在の状態」が移り変わっていきます。このようにアクションによって状態が移り変わることを「状態の遷移」といいます。
アクションには条件と行動を設定することができます。条件には、例えば「頭をなでられた」とか「右にボールを見付けた」などさまざまなものがあり、行動にも「笑顔になる」とか「右に回転する」などさまざまなものがあります。

例えば、左側の状態が「怒っている」状態で、右側の状態が「喜んでいる」状態であるとしましょう。このとき、アクションの条件を「頭をなでられた」に、行動を「笑顔になる」に設定すると、「怒っている状態のAIBOの頭をなでると、笑顔になって喜んだ状態になる」といったことが表現できるようになります。実際、そのようなプログラムを作ることもできます。

実のところ、上の状態遷移図のアクションには何の条件も行動も設定していないので何もしません。
アクションに条件や行動を設定することで、どんな振る舞いをさせることができるのか、具体的な例を通じて見ていきましょう。