はじめにこんにちは、いつの間にか3度目のACACを迎えてしまったshotです。有限オートマトンについて軽く説明した後、その実装について話していきたいと思います。用語の時点で身構えた人も、簡単に書くつもりなので適当に読んでいただければ幸いです。Wikipedia有限個の状態と遷移と動作の組み合わせからなる数学的に抽象化された「ふるまいのモデル」である。有限個の「状態」のうち1つの状態をとる。ある時点では1つの状態しかとらず、それをその時点の「現在状態」と呼ぶ。何らかのイベントや条件によってある状態から別の状態へと移行し、それを「遷移」と呼ぶ。難しそうに書かれていますが、図に表すと簡単です。例としてスイッチの有限オートマトンを考えます。遷移は「ON→OFF」、「OFF→ON」の矢印その条件(イベント)は、「スイッチを押す」ちょっといける気がしてきましたか?図が雑で見るに堪えない以外は問題ないかと思います。実装では早速、この有限オートマトンを実装してみましょう。実装方法は色々ありますが、今回はImtStateMachineというピュアC#のライブラリを用いて実装してみたいと思います。ImtStateMachineについて詳しく知りたい方はこちらのQiita記事を読むと良いと思います。いうかこの記事はこちら様の二番煎じでしかない以下、実際のプログラムです。0が「スイッチを押す」に相当する。}これら2つの内部クラス「OnState」「OffState」が、有限オートマトンの2つの状態「ON」「OFF」にそれぞれ対応しています。この0が条件「スイッチを押す」に相当する。OffState>(0);<現在の状態,遷移先の状態>(遷移条件)というように書いて遷移を定義できます。先ほどの有限オートマトンの「ON→OFF」、「OFF→ON」の矢印に対応します。条件は今回は簡単のため直接数値で表していますが、列挙型で書くと直感的で楽です。有限オートマトンとそれをプログラムで書くとどうなるか、なんとなく分かっていただけたでしょうか。ありますが、気になる方はこれらも難しくないので是非実際に動かしてみてください。ここまでお付き合いいただきありがとうございました。