今回は前回動かしたカウンタアプリケーションのソースを見てみようと思います。しかし、何を見たらいいのでしょうか?
A Walk on the Seasideには、カウンタアプリケーションを例にしたSeasideについての説明がありますので、それを参考にします。Seasideのアプリケーションは、コンポーネントと呼ばれる、ユーザインターフェイスの状態とロジックをモデル化したオブジェクトで構成されます。カウンタアプリケーションのコンポーネントクラスはWACounterクラスということなので、このクラスを見てみましょう。
states, actionsなどPiece Frameworkでもよく目にする単語が出てきます。実際のカウンタの動きに合わせて、順番に見ていきます。まずはinitializeメソッドによってcount変数が初期化されます。
initialize
super initialize.
self count: 0
次にSeasideによってrenderContentOnメソッドが呼び出されます。
renderContentOn: html
html heading: count.
html anchor
callback: [ self increase ];
with: '++'.
html space.
html anchor
callback: [ self decrease ];
with: '--'
++, --をそれぞれクリックするとincrease, decreaseメソッドが実行されます。
increase
count := count + 1
decrease
count := count - 1
increase, decreaseメソッドではcountの値がそれぞれインクリメント、デクリメントされます。
Kahuaもそうでしたが、SeasideもHTMLの元ネタをDSL(内部DSL)として表現しています。実は2年ほど前に一度だけSeasideを見たことがありました。DSLという言葉すら知らなかった当時、どうしてHTMLをHTMLとして書かないのか不思議に思っていました。
最近になって、ようやくこのような表現を用いる利点を理解できるようになりました。セッションの管理と同じく、Webアプリケーション開発においてHTMLを書くということは本質ではないということです。これは開発だけではなく、HTMLデザインにおいても同じことが言えると思います。Webサイトデザイナの最も重要な仕事はWebサイトのデザインを行うことであって、HTMLを書くことではないはずです。
乱暴な言い方をしてしまえば、フレームワークにとって重要なことは、開発者がどれだけ本質的な開発に注力できる環境を提供できるかということであって、MVCとかハリウッドの原則なんていうことは枝葉なんです:-p
今回カウンタアプリケーションを一通り見たことで、ユーザ登録アプリケーションをどう作ればいいかぼんやりと見えてきました。次回はユーザ登録アプリケーションの作成に取り組みます。
参考文献
トラックバック(0)
- このブログ記事のトラックバックURL:
