入力モードを整理する(3)
前回の続きです、と言いたいのですが、あれから随分と日が経ってしまったこともあり、いろいろぐちゃぐちゃこねくりまわして考えが変わった部分もあり、その経緯をまたおさらいしていくのはちょっとつらいなということもあり(そうです言い訳ですごめんなさい)、最終的にはこんな形になりました、ということでハレルのステートチャートっぽいやつを紹介します。
こういったものをコードに落とす場合には、状態遷移やパラメータなどを記述した XML などから C/C++ のコードを自動生成するのが旬なやり方です。自動生成することで単純なコーディング作業から解放され、パターンも網羅され、間違いもなくなります。もし新たな遷移が必要に(あるいは不要に)なったら、データを修正して生成し直せばいいのです。とても合理的です。
ただ、これはややもすると人間とコードの距離感が広まり、コードに手を入れるのが怖くなります。自動生成で構築した美しい秩序(あるいは、難解で醜いコードの塊)を壊すことにならないか。あるいは、再度自動生成をする必要が出てきた時に、カスタマイズした部分が上書きされてしまう問題にどう対処すればいいのか。このあたりが葛藤になります。
そこでいろいろ思うところがあり、今は「マトリョーシカ本」を購入して勉強中です。
![Practical Statecharts in C/C++: Quantum Programming for Embedded Systems Practical Statecharts in C/C++: Quantum Programming for Embedded Systems](https://images-fe.ssl-images-amazon.com/images/I/51CFnUqUx2L._SL160_.jpg)
Practical Statecharts in C/C++: Quantum Programming for Embedded Systems
- 作者: Miro Samek
- 出版社/メーカー: CRC Press
- 発売日: 2002/07
- メディア: ペーパーバック
- クリック: 3回
- この商品を含むブログ (2件) を見る
一方で、boost のテンプレートベースのアプローチによる洗練されたライブラリも魅力的に映ります。
http://boost-sandbox.sourceforge.net/libs/statechart/doc/index.html
具体的にどうするというのはまだ決まってませんが、AquaSKK の新エンジンも、シンプルで理解しやすいものを目指します。