Index: [Article Count Order] [Thread]

Date:  Fri, 18 Aug 2000 11:28:41 +0900
From:  Kenji Hiranabe <hiranabe@....jp>
Subject:  [XP-jp:00747] Re: VXP ストーリー1タスク案
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <20000818112403P.hiranabe@....jp>
In-Reply-To:  Your message of "Wed, 16 Aug 2000 18:16:25 +0900"	<20000816.165255.46640522.u90156@....jp>
References:  <20000816.165255.46640522.u90156@....jp>
Posted:  Fri, 18 Aug 2000 11:24:03 +0900
X-Mail-Count: 00747

平鍋です.

On Wed, 16 Aug 2000 18:16:25 +0900,
Yuji Yamano <u90156@....jp> said:

>> Memberというクラスはどうでしょう?1インスタンスが、1つ(1人)の
>> メンバ情報を管理します。また、案ですが、こいつにメール本文を
>> 送れば、ヘッダ情報をつけて、外に出すような役割を持たせても
>> よいかもしれません。

 > Member にメール本文を送る案は、効率と SMTP のプロトコルとの親和性を
 > 考えるといまいちだと思います。このやり方だと、

そうですね.Member クラスを作るとしても,それはデータベース
(あるいは MVC のM)として用い,直接外部とは接触を持たせない方
が良さそうです.「学会誌を送る秘書」メタファで言うと,会員に
学会誌を送る場合,秘書は実際はメンバと顔見知りでもなんでもな
く,メンバ情報を持っているだけです.送付は,郵便局が行って
くれます.

 > - Member 毎に相手先のメールサーバと MAIL FROM: 〜 DATA をしゃべる

 > か、

 > - 全 Member の情報と本文をどこかにためておいて、効率的な配送
 >   ができるように誰かがコントロールしながら SMTP をしゃべる

 > 必要があります。リストがアクティブで多数の講読者がいる場合には、
 > 効率は無視できません。

ということで,後者が良さそうです.

 > SMTP をしゃべる部分まで自前で作るのであれば、最低でも

 > ML 固有の設定を管理するクラス(ML 名とか、メンバーファイル等)
 > メール本文
 > メンバーリスト、メンバー
 > メール配送を管理するクラス
 > SMTP をしゃべるクラス

 > ぐらいが必要ではないでしょうか。

 > ストーリー1 は、sendmail のような MTA におまかせにして、先に進むのが
 > 楽かなという気もしますが。

賛成です.ということで,矢崎さんがまとめていただいた以下の案
を基本にしましょうか.少しコメントしました.

On Thu, 17 Aug 2000 13:03:16 +0900,
firo <firo@....jp> said:

 > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 > ([XP-jp:00680]を参照)

 > MTA(ex.sendmai)--->extreme-domo--->MTA(ex.sendmai)
 >        (--->はメールの流れ)

 > というわけで、上記のextreme-domoを、今回のVXPで開発
 > する。

 > つまり、

 > 1.MTA(sendmail)がメールを受け取る。

 > 2.MTAは/etc/aliasesを見て、エイリアスの判断し、該当するもの
 >   をextreme-domoの標準入力に送る。
 >      例:XP-jp: "|/usr/local/bin/extreme-domo XP-jp"

 > 3.extreme-domoはいろいろやる<---何をやるかが、ユーザ
 >   ストーリとして定義されるというわけ。

 > 4.extreme-domoはいろいろやった後のメールを、メンバーへ
 >   配送するために、再びMTAへ渡す。

ここも,標準出力を基本的には使いましょう.sendmail は,メー
ルヘッダを含めて標準入力から読むことができます.ただし,エン
ベロープの To は,sendmail に引数で渡す必要があったと思いま
す.

 > 5.MTAは/etc/aliasesを見て、エイリアスをメンバへのアドレス
 >   へと展開し、送信する。

いいえ,ここは無理があると思います.メンバの追加等で,
/etc/aliases を extreme-domo が管理するのは,他のプログラム
との兼ね合いもあり,危険でしょう.

送信宛先のリストには /etc/aliases を用いず,送信用 sendmail 
起動時に引数として渡す方がよいと思います.

 > <[XP-jp:00676]>

 > ストーリー1の「メーリングリスト(以下ML)のユーザが,ML のアドレスにメー
 > ル送
 > 信すると,ML に所属するメンバ全員に,そのメールが配信される.」タスクを
 > 考え
 > てみました。

 > タスク1:メンバーリストを読み込んで、メールアドレスのリストとして保持す
 > る。

 > タスク2:新規メールを受け取ると、メールアドレスのリストの各メールアドレ
 > スに
 > 受け取ったメールを送る。

 > タスク3:新規メールが到着したら、タスク2を起動するメカニズム。

 > タスク4:メールを送るメカニズム。

 > </[XP-jp:00676]>

 > さて、以上だとすれば、Memberクラスはいらない、というご指摘に
 > 私も賛成します。

Member クラスは自然だと思います.(バウンダリでなく,データとして)

    [extreme-domo] ---> [MemberList<<entity>>] <>----*> [Member<<entity>>]
          +----------> [Mailer<<boundary>>] ----> [sendmail<<actor>>]
                                         
というクラス構造にすることは全く問題がないように思えます.

以上