まとめ

以上、キッチンタイマーを例題に、FreeBSD上に専用機を開発しました。

実際の環境では、ブラウザの動作仕様やCGIタイムアウトの仕様、NAT越しの場合にはNATの仕様など、 さまざまな外的要因が重なり、安定的に動作させるには環境に合わせてもう少し注意深く調整が必要になるでしょう。

また、この例ではcontrollersディレクトリにほとんどのファイルを集中配置して簡便さを優先していますが、 セキュリティーやその他の観点から、cgi-bin, htdocs, views(templates) ディレクトリなどに 分散配置することも可能です。プロジェクトの性質によって使い分けましょう。

状態遷移表による動作設計は、必ずしもここで示した例ばかりではなく、 外から見た動作は同じでもまた違った状態を使って設計することもできます。 たとえばこのキッチンタイマーでは数字が4文字まで入力できますが、 ゼロ文字入力、1文字入力…4文字入力で違うステートと見なす設計も可能です。 ただその場合状態が多くなりすぎるので、一般的にはそのような設計にはせずある程度のところでバランスをとります。 そのバランスの取り方もノウハウとなるので、経験をつみましょう。

機能向上案として、カウントダウン中に停止を押すことで一時停止を実現したり、 カウントがゼロの時に開始を押すことでカウントアップする、 すなわち簡易ストップウォッチにする事など、このままのセットでも いくつか拡張案が思いつきます。
その場合も、状態遷移図、遷移表に立ち返って再度動作設計をしてから、 実際のコードを書くことになります。
やってみてはいかがでしょうか。

Enjoy hacking.