GUIアプリケーションとステートレス

S2Swingを作り始めてからというもの、WebアプリケーションとGUIアプリケーションの開発手法の乖離の大きさを改めて実感しています。

Webアプリの定型化が容易であるのに対し、GUIアプリ開発手法のパターン化は本当に難しい。パターン化しにくいのだから、Swingのフレームワークがあまり存在しないのも当然のことです。

この両者の違いはどこから生まれてくるのか考えると、結局、HTTPのステートレス性に行き着くと思います。現在の状態を意識せず、リクエストからレスポンスへの写像だけ定めればアプリケーションを記述できることの恩恵はとても大きいです。ステートレスは、デスクトップアプリケーションを開発する上でも、1つのキーワードになり得ると思います。

Beans BindingやUrumaのバインディング機能は、ステートレスを指向した仕組みとも言えるかもしれません。モデルとUIコンポーネントの同期が保証されることで、これまでUIコンポーネント側が独自に持っていた「状態」が、実質的に消滅するからです。

S2Swingで提供予定のActionの宣言的状態記述も、アクション側に独自に状態を持たせず、状態が必要なときは毎回問い合わせるスタイルを取るわけで、その意味でステートレス指向と言えるかもしれないです。