私はWebアプリケーションの開発を仕事でよくやっているわりにはWebアプリケーションが嫌いななのですが、
せっかくセッションについて書くことがあったのでWebアプリケーションネタを綴っておきましょう。
C言語およびその派生言語(C++, C#, Java)では文法上、ローカル変数はブロック(つまるところ{から}までの間)内でのみ有効です。
これを変数のスコープと呼ぶわけですが、Webアプリケーションでもこのようなことができないか?と考えたのが発端でした。
つまり、セッションに格納したデータが画面フローのある位置からある位置までと定められたブロックを抜ける際に
セッションから自動的に削除されるような仕掛けが作れないか?ということです。
Webの画面フローは構造化定理に則していない
ここで大きな問題となるのは、Webにおける画面フローは構造化定理に則しているわけではないということです。
構造化定理(ベーム, ヤコピーニ 1966年)とは、
「全てのアルゴリズムは、 順次、選択、繰り返しの3つの基本制御構造を組み合わせて作ることができる」
というもので、goto文有害論の論拠のひとつとして挙げられることも多いですね。
Webにおける画面遷移はハイパーテキストでのリンクですから、整然としたフローにはならず、
あちこちにダイレクトに飛び回る無秩序なものとなってしまいます。
また、プログラムの実行に際して「今どこを実行中なのか」をあらわすプログラムカウンタ
(マシン語の用語。現在実行されているアドレスを格納するレジスタ)が単一とは限らず、
複数の並走するマルチスレッドであること、また順次処理なのか、スレッド分岐なのかはブラウザで管理され
サーバ側でとらえることが困難であることがWebの画面フローを完全に管理するフレームワークを作ることを困難にしています。
昔、このアイデアに取り憑かれ、いろいろ思索した際はフローの制御は不可能ではないかという結論でした。
興味がある方はぜひ、この難問に挑戦してみてください。
投稿日時 : 2007年10月5日 9:56