こんにちは。まっつんこと松藤です。この間の連休にWindows XPからUbuntuに乗り換えました。細かい設定は残っていますが、概ね移行も完了し、快適な毎日を過ごしています。特に起動と終了の時間はWindowsを使っていた頃に比べると、圧倒的に早くなりました。おかげで電源を入れてから、コーヒーを淹れにいく必要がなくなりました:-)

さて前回の続きを進めましょう。筆者のOSは変わりましたが、Seasideの環境は同じZIPファイルでWindows, Linuxの両方に対応しているので、前回構築した環境をそのまま流用します。

MATSUFUJI Hideharu

今回は前回動かしたカウンタアプリケーションのソースを見てみようと思います。しかし、何を見たらいいのでしょうか?

A Walk on the Seasideには、カウンタアプリケーションを例にしたSeasideについての説明がありますので、それを参考にします。Seasideのアプリケーションは、コンポーネントと呼ばれる、ユーザインターフェイスの状態とロジックをモデル化したオブジェクトで構成されます。カウンタアプリケーションのコンポーネントクラスはWACounterクラスということなので、このクラスを見てみましょう。

wacounter.png

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:
コメント