第30回Smalltalk勉強会

当方Smalltalk素人ですが、MVCに関する議論が興味深かったので僭越ながらトゥギャらせていただきました。 http://www.smalltalk-users.jp/Home/gao-zhi/dai30kaismalltalkbenkyoukai
1
Masashi UMEZAWA @umejava

今はAnnouncementsというもっと洗練された変更伝搬の仕組みがあります。 #st_study

2011-03-30 19:33:07
Naruhiko Ogasawara @naru0ga

行かなかった(行けなかった?) #st_study のついーとが面白そうで嫉妬中……。

2011-03-30 19:33:15
Kazuki Minamitani @kaminami

コントローラが頑張るMVC。原始。モデルとビューはほとんど何もしない。拡張性低い。モデルを複数のビューから見ることができない。 #st_study

2011-03-30 19:36:24
Masashi UMEZAWA @umejava

コントローラががんばるMVCではモデルが本当になにもしない。値持っているだけ。 #st_study

2011-03-30 19:37:51
Masashi UMEZAWA @umejava

依存性伝搬もたいそうナイーブな実装であった。弱い参照がなかったので、下手をすると依存物がゾンビのように残る可能性があった #st_study

2011-03-30 19:42:41
Kazuki Minamitani @kaminami

SqueakのベースはApple Smalltalk。Apple Smalltalkは、そのプラットフォームのLisaなどが貧弱で貧弱で仕方ない環境だったので、80からクラスやメソッドが削られている。 #st_study

2011-03-30 19:42:45
Kazuki Minamitani @kaminami

手でHTMLからソースコード抜いてインデント抜かしたりしたけど、フォーマッタあったじゃないか orz #st_study

2011-03-30 19:46:44
Masashi UMEZAWA @umejava

メニュー系がクラス変数に格納されているあたりが古風なコントローラ。当時はメニュー生成のコストが馬鹿にならなかった。 #st_study

2011-03-30 19:48:20
Kazuki Minamitani @kaminami

まだ名前がついてなかった頃のTemplateMethodパターン解説。 #st_study

2011-03-30 19:49:50
Kazuki Minamitani @kaminami

Controllerが頑張り過ぎ。ModelにもViewにも手をのばす。 #st_study

2011-03-30 19:51:48
Masashi UMEZAWA @umejava

最初期のMVCは単にモデルとビューとコントローラを分けているだけだった。ブレークスルーになったのは依存性機構。 #st_study

2011-03-30 19:52:35
Kazuki Minamitani @kaminami

ModelのメソッドをControllerから明示的に叩いているので、今見ると拡張性に乏しく、役割分担がおかしい。 #st_study

2011-03-30 19:54:27
Kazuki Minamitani @kaminami

クラスサイドのexampleカテゴリのexampleメソッド。Unitテストが広まって必要性が弱まったというけど、やっぱりあった方が便利。デバッガのエントリとして。 #st_study

2011-03-30 19:57:02
Kazuki Minamitani @kaminami

大きな円と小さな円が二つでアメリカネズミ。青木氏はモロな画像を使用していたらしいが、今日の講師は少し腰が引けている :-p #st_study

2011-03-30 20:00:56
Kazuki Minamitani @kaminami

依存性を利用するMVC。Modelを複数のビューから利用できる。 #st_study

2011-03-30 20:01:58
Kazuki Minamitani @kaminami

change:の引数は変更された属性のキー。変更された関係するところだけupdate:で実際にViewを更新する。 #st_study

2011-03-30 20:04:11
Kazuki Minamitani @kaminami

Modelに状態を変更するメソッドを持たせるようにしたものの、Controllerがそれをキックするメソッドを明示的に定義している。そのため、Controllerを使い回すことができない。頑張るパターンより進歩だが、まだ足りない。 #st_study

2011-03-30 20:06:50
Masashi UMEZAWA @umejava

プラガブルMVCまでいくとついてこれない人が出てくると予想。しかしMVCの妙はここにあると思う。 #st_study

2011-03-30 20:10:29
ひろじ @kondohi

プラガブルMVCが無ければ「デザイン・パターン」も産まれたかどうか。 QT @umejava: プラガブルMVCまでいくとついてこれない人が出てくると予想。しかしMVCの妙はここにあると思う。 #st_study

2011-03-30 20:11:27
Kazuki Minamitani @kaminami

ModelもViewもControllerも、releaseメソッドで資源解放操作でイロイロ頑張っている。 #st_study

2011-03-30 20:12:53
Kazuki Minamitani @kaminami

続いて、PluggableMVC。今の主流。依存性を利用するMVCの発展版。VCがモデルから独立。MをVCに差し込んで使う。 #st_study

2011-03-30 20:15:05
Kazuki Minamitani @kaminami

Controllerにモデルのメソッドをキックするためのメソッドを定義するのではなく、メソッド名をSymbolで登録しperform:を駆使して間接的にモデルをキックする。 #st_study

2011-03-30 20:17:17
Masashi UMEZAWA @umejava

サンプルコードで遅延初期化の実装に失敗している。あるまじき。 #st_study

2011-03-30 20:21:09
Kazuki Minamitani @kaminami

フィールドは準備されていたものの、Lazy Initializationがなされていないサンプルコードが発見される。20年以上誰にも気付かれなかった? #st_study

2011-03-30 20:21:31
Masashi UMEZAWA @umejava

プラガブルメッセージとか、ユニバーサルメッセージとか、用語がかっこいいよね。 #st_study

2011-03-30 20:26:57