第3回地豆会議のまとめ

おひさしぶりです。今年は新型インフルエンザにかかったり、急性扁桃炎で寝込んだりと
大変なことになっていますがなんとかやっています。
Blogほったらかしはよくないですね。はい。


JiemamyProjectでは月に1回ミーティングが行われています。地豆の基本設計の話やら、
チケットや各サブプロジェクトの状況の確認などが行われます。
というほど、固い物でもなく、ゆる〜く地豆の設計理念とか基本的なお勉強会的な部分
もあります。
11/28に行われた第3回地豆会議のまとめをご紹介。


場所:グリー株式会社 会議室(いちいさん ありがとうございます)
参加者:
都元ダイスケさん/いちいさん/とのっちょ先生/えびちゃん
/happy_ryoくん/yamkazuさん/regtan


ホワイトボードの写真はid:happy_ryoがUPしているので参考にしてください。
http://picasaweb.google.com/Iwama.Ryo.0731/20091128ByEyeFi#
都元ダイスケさんの解説コメント付きです。

宣言と参照

CREATE TABLE HOGE(
   COL1 VARCHAR(10),
   COL2 VARCHAR(10),
   PRIMARY KEY COL1,
   FOREIGN KEY COL2 REFERENCES MOGE(X)
);

このSQLの識別子を上げると以下のようになります。
1行目:HOGE
2行目:COL1
3行目:COL2
4行目:COL1
5行目:COL2,MOGE,X

この時1〜3行目はHOGEはテーブルの名前、COL1、COL2はカラム名とそれぞれ識別子が何を
さしているかを宣言しています。これを識別子のdeclaration(宣言)と呼びます。
一方、4行目、5行目の識別子は主キーが2行目で定義しているCOL1であること、3行目で
宣言したCOL2の外部キーがMOGEテーブルのXカラムであることをさしています。
これをreference(参照)と呼びます。

同じ識別子がdeclarationとreferenceの2通りの解釈がされています。
それぞれで役割が異なるのでモデリングする上でも当然異なります。それぞれがdeclaration
とreferenceのどちらで使われているかを認識する必要があります。

EntityとValueObject

今回ある意味凄く盛り上がった話題。

左が長門有希のフィギュア。右が初音ミクのフィギュア。
どちらもフィギュアであって画像ではない。つまり以下の式はtrueを返すことになります。

右のフィギュア.eq(左のフィギュア)→true

でもでも、フィギュアではあるけどキャラも違うし、スケールも違う二つ。上の式はfalse
が正しいんじゃないか?という見方も出来ます。
この時何を比較しているかというと以下の式で表現することが出来ます

右のフィギュア.キャラクター名.eq(右のフィギュア.キャラクター名)→false

両方の式とも正しい式です。評価の観点が違うので結果が変わっています。

Entityの責務は、他のクラスとの識別をおこなうこと。なんであるかとかは説明しない。
ValueObjectの責務は、そのモデルを説明すること。

このことから、Entity同士を比較する際のequalsメソッドとValueObject同士を比較するequals
メソッドでは実装が異なります。Entity#equals() は、識別情報(ID)が同一であるかを判断し、
VO#equals() は「同じ説明をしているかどうか」で判断します。

この説明をするのにhappy_ryoとDIさんが同じやら、ペットボトルが出て来たりするのが地豆流w

そんなわけで

次回は次期Verに向けて各モデルのユースケースの検討などが行われる予定です。
コミッターでない方の酸化も歓迎ですので、興味のある方は地豆開発者グループに参加してみて
ください。

Twitter:@Jiemamy/#Jiemamy
GoogleGroupe:http://groups.google.co.jp/group/jiemamy-dev?hl=ja