2020年8月2日日曜日

久しぶりにオートマトンを勉強した

ソフトウェア工学輪読会


という勉強会を社内でやってます。
ソフトウェア工学という本を持ち回りで読んでいくのですが、その6回目を僕が担当しました。
内容はオートマトンとソフトウェアです。

大学2年生で「オートマトンと言語処理」という講義を取って以来です。
そのときは音声と言語処理に傾いた授業で、のちに「コンパイラや正規表現でオートマトンが使われているらしい」程度の知識を得ました。

改めて勉強してみると興味深い分野です。
オートマトン(状態遷移図)を書き起こすとソフトウェアが何をするのかが具体的になります。
さらに興味深いことに、数学的に考えることが可能であるということです。様々な拡張や表現を増やしていける余地があります。

というわけで、当日の発表スライドです。


輪読会で出た話


「Web系システムの中でオートマトンが活用できる事例はありますか?」という質問がありました。
輪読回ではメルカリ アッテの例を取り上げていました。内容を要約すると「多くの状態が存在し遷移先が多岐に渡るため、テスタビリティとメンテナビリティを向上するためにオートマトンを導入した」例です。ここまでオートマトンが使われているコードを見たことがないので、理論とソフトウェアとの繋がりを身近に感じました。(高山さん、ありがとうございました)


「状態遷移図書く場面ってなんだろう?」という話もありました。
テストエンジニアリングの観点で、権限周りを状態遷移図で描くとテストしやすくなります。
下の記事を読んでいると、権限周りだけでなく画面のテストにおいても使えそうだと思いました。 (カルバートさん、ありがとうございました)


今後


「動的に変わっていく振る舞い」はオートマトンや状態遷移図で表現できることがわかりました。
輪読会で出たオートマトンを実装する話の他に、FluxやReduxのように状態を管理するフレームワークを使う例もあります。今後はこの仕組みについて実装しつつ理解したいと思いました。

0 件のコメント:

コメントを投稿