PofEAA 7th

参加してきました。今回は発表はなしでした。

### TableDataGateway (わたなべさん) 読書会の議論でも発言させていただきましたが、TableDataGatewayは(非常に荒いレベルの)オブジェクトの設計方針について、わかりやすい指針を示しているものに過ぎないと考えます。

* 具体的な対象と照らし合わせた上での、責務の範囲 : 具体的には・・・RDBの構成要素(テーブル、カラム、複数テーブルなど)を相手にするGateway一般の中で、TableDataGatewayは、テーブル(もしくはテーブル類似のビューなど)を相手にする。責務の範囲をテーブルとする * クライアントから見た場合のインスタンス関係。もっと言えば、アイデンティティ。:具体的には・・・TableDataGatewayは1テーブルにつき1個。(テーブルの数は簡単に数えられる(苦笑)ので、インスタンスのアイデンティティも容易に理解できる)

### RowDataGateway (和田さん) あとで書きます。

### ActiveRecord(inoueさん) Railsのデモが中心。やっぱRailsすげー!

ちょっと気になったのは、Railsの実行モデル。あれだけ評価・処理実行・自動生成が走るとなると、CGIでは・・・きついよね。多分。

### 議論を聞いて。 ビジネスロジックの割り当て、データアクセスの議論が混在している印象。 ここは分けて話さないとまずいっす。

せっかくファウラーたんが、整理してくれているのだから。(わかりにくいけど)

### 角谷さんの意見に同意 わからない部分を曖昧に、抽象的に触れて流すよりも、わからない部分を明確に提示し、自分が理解できている(と思っている)部分を具体的に示すほうが良いと思う。ここはそれが許される「場」であると思います。

言い方を変えれば、せっかくなんだから燃料を投下しましょうよ。 どんなに炎上しても誰かが整理してくれるし。となるかも。

### 資料(半)公開希望。 再度資料を見て、記憶を呼び戻したいので。 懇親会で酔っ払ったので、良く思い出せないというは秘密。

### 戦果 ogijun氏が蔵書の一部を販売していたので、以下の2冊を購入。

* ユースケース実践ガイド 1500yen : 最近、プロセス屋さんの世界で next ユースケースが熱いらしいので、あらためて基礎を抑えておこうかと。 * ソフトウェアエンジニアリング基礎知識体系 600yen : なんか、書き物書くときに便利そうじゃない?たとえば・・・「IEEE xxx では、?における特性として、a) ・・・性、b) ・・・性、c) ・・・性、が求められている。本ドキュメントでは、a) ・・・性の・・・について記述する。」とか。

[…]

J2EE勉強会 第11回

いやー、内容の濃い5時間半だった。

### EJB 3.0

いやー、ついていけませんでした。正直。ぜんぜんEJB3を追っかけてないからなぁ。

### Next Generation J2EE Deployment

気になったとこだけ。

* データアクセスレイヤ?ビジネスロジックレイヤをつなぐデータ構造(モデル)としてドメインモデルを、ビジネスロジックレイヤ?ビジネスロジックレイヤをつなぐデータ構造(モデル)としてプレゼンテーションモデルを利用する。 * 誤解を恐れずにいうと、 * ドメインモデルはデータベースのテーブル構造に比較的近い構造のJavaクラスモデルとなる。 * プレゼンテーションモデルは、データベースのビューに近い構造のJavaクラスモデルとなる。 * かなり乱暴なものいいです。 * ドメインモデルとプレゼンテーションモデルの変換は、ビジネスロジックレイヤの背後にいるDxo(ダックスオー)が実行する。 * ドメインモデルの構造として、テーブル構造に比較的近い構造を使用する理由は、Persistence APIの存在があるため * ドメインモデルはJavaクラスのデータ構造に関する。PofEAAのドメインロジックパターンと混同せぬよう。後者は、ロジックの割り当てに関する。 * EJB3 or Seasar2の選択は、開発元の文化によると思われる。 * 標準化を重視するかどうか。とか。

### テスティング話

結構盛りだくさんでした。早期の資料公開希望します(笑)。

J2EE勉強会 第10回

参加させていただいた。

場所は秋葉原近くの某研究所さん(名前カードや、注意書きの配布など、キッチリした事前準備に驚きました。ありがとうございました!)でした。

内容は、髪をばっさりと夏仕様にしたひがさんによるJSF(myfaces, s2jsf)のソースコードの追い方講座と、t-wadaさんによるTDDをめぐる混乱について。

* t-wadaの日記

### JSF(myfaces, s2jsf) のソースコードの追い方講座

箇条書きで。

* myfacesの実装はところどころアイタタタな面がみられる。 * 処理の起点はfacesservletである。 * jsfのアーキテクチャはWebObjects Frameworkに酷似している。 * 画面の構成要素に対して、動的にidが付与され、idがマッチする画面の構成要素に対して処理が実行される * リクエスト-レスポンス・ループに関連する状態を管理するクラスはfacescontextである。(WebObjectsの場合、WOContext) * リクエスト-レスポンス・ループ処理は、いくつかのフェーズに分割して行なわれる。 * WOとの相違点は、validationフェーズが独立して存在すること * WOの場合、処理を実装する場所は フェーズx{Application, Session, WOComponent}の掛け算分だけあるのに対し、JSFの場合はもうちょっとシンプルな構成になっているみたい。 * JSFは適用領域をWeb/HTML/HTTPに限定していないため、内部のコンポーネントに対して直接???Request, ???Responseを見せない。見せるのはfacesContextのみ。この中にRequest類が入っているようだ。

### “Test” という言葉 (TDD話 導入編) by t-wada

後で書きます。

J2EE勉強会

参加させていただいてきた。

時間ぎりぎりだったので、自転車を必死にこいで新宿南口から会場へ向かう。 汗びっしょり。結果5分ぐらいの遅刻。スンマセンでした。

### JSF vs Struts

実際にベンダー系JSF実装(+IDE)を使用/試用されている現場の方々や、JSF実装であるmyfacesの実装と問題点について熟知されているひがさんのお話を聞けたのがとっても収穫。 ありがとうございました。

### JUnit4の胎動 なんだかかわいらしいフォントだなぁ。と余計なことは置いておき。

t-wadaさんの発表。面白かったです。 アノテーションを駆使したJunit4の特徴と、プレゼンテーションの中でちらちらと披露されたt-wadaさんのテストに対する考え方や、テストをうまくやるためのノウハウ開示がとても有益でした。 中でも、テストのカテゴリ分けの必要性、TestSuite(Junit4ではなくなる可能性もあるらしい!)の必要性と、現在Greee/Redしかないテスト結果状態を細分化する必要性について興味を持った。

テストのカテゴリわけは、テスト数が膨大となると絶対的に必要でしょうね。

TestSuiteの必要性に関して、t-wadaさんはテスト時間を短縮するために必要とのこと。 テスト時間の短縮というと味気ないな・・・・現場感覚が伝わりにくい。違う。

よりAgileに、プログラミング→テスト→プログラミング→・・・なるサイクルをより円滑に進めるために、絶対的に必要なものだというニュアンスと思っている。 そういえば、t-wadaさんは、テスト対象クラス(ファイル)のタイムスタンプを元にテスト順序を決める、(何らかの手段でテストクラスに与えた)優先度を元にテスト順序を決めるアイディアなども披露してくれた。うーん、欲しいねぇ。

テスト結果状態を細分化とは、具体的には・・・・

* @Ignoreアノテーションを付けたテストはYellowで表示される(これはJUnit4に実装されるようだ) * (なんらかの手段で、)まだテストに通らないことが明らかであることが示されたテストがfailした場合、別の色(Orange? Blue, Red, Yellow以外の何か。第4の色)で表示される

とか。個人的には「第4の色(named by t-wada?)」が欲しい。とっても欲しい。 テストは書いたけれども、failすることが明らかであるテストがRedとなると、真のfail(failしないと思っていたのに、failしてしまった!)を見つけるのが難しくなる。

あ、あと、S2TestUnitを見ておかないとなぁ。と個人的なメモ。

#### 2005/06/19:追記> t-wadaさん 「呼びかけ」にうまく反応できなくてごめんなさい。 K.Beck(?)の、「not union but intersection」の真意がよく掴めなくて・・・・。

つーか、わざわざ小難しい言い回しせんでも、「必要最小限の機能」といえばいい気がするぞ。> K.Beck

### DIの本質 (ひがさんの考える)OCPとは端的に言えば、「修正をAdd-onlyで実現するもの」と理解した。 (全ての修正をadd-onlyで実現するのが望ましいという意味ではないです。)

### S2 5.0? いろいろと面白い話を聞かせていただいた。書いていいのかよくわからないので、とりあえず。

### 飲み会 ちょっとした用事があったのと、途中合流が難ししそうだったので、欠席させていただいた。

[…]

WebObjects 5.3のライセンス情報

reBeLog ≫ WebObjects Licensing

via http://d.hatena.ne.jp/ogijun/20050608/p2

> Development is no longer supported on any other platform. > > Deployment on any platform other than Mac OS X is no longer supported.

なるほどね。Windowsでの開発もサポートされないと。

Appleも思い切ったことするなぁ。まぁ、いつかこのときがくるとは思ってたけど。正直。

WOMeeting 2005/05

Practical WebObjects 読書会のみ参加。今月はChapter10. WebObjects In A J2EE World。

シンプルなアーキテクチャでServlet対応できてしまうところに、WebObjectsのスジのよさを感じるわけである。

ただ、あいかわらずマルチスレッド関係の処理に不安が残るわけである・・・。 WWDCに行かれる方は、Chales HillさんにEOEditingContextのLock問題について質問してきてください!(どうやらWWDC@SFにて、Pratical WebObjectsの著者がセミナーをやるらしい)

XAエミュレート対象となるリソースマネージャの扱い

from S2.2.9 リリース – koichikのひとりごと > 例えば XA に対応した Oracle (Oracle が提供する XADataSource を使用する) と対応していない HSQLDB (S2 が提供する XADataSource で XA をエミュレートする) を同一のトランザクション中で更新する場合,最初に HSQLDB からコネクションを取得することで,二つの DB がどちらもコミットされるかどちらもロールバックされるかという原子性 (ACID の A) が実現できます.

なるほどーそういうことか。理解できました! ありがとうございます! koichikさん。

### 昨日の質問 昨日のJ2EE勉強会(仮)で、以下の質問をさせていただいた。(若干、わかりやすく整理しています。昨日はもっと要領を得ない質問な感じ(苦笑)でした。)

> S2JTAの枠組みの中で、XA非対応のリソースマネージャを扱う場合、XAをエミューレートするラッパ経由で扱うことになるようだが、その場合、 > XA非対応のリソースマネージャ1つがJTA配下のトランザクションに参加している場合、1フェーズコミットプロトコルを使用する > XA対応のリソースマネージャ1つの場合、通常の1フェーズコミットプロトコルを使用する > XA対応のリソースマネージャ2つ以上の場合、2フェーズコミットプロトコルを使用する >

> という理解でよいか?

なるほど、S2JTAの実装はLast Resource Commit Optimizationの機構を持っているため、 1番目、2番目の内容は正しいようだ。ただ、koichikさんの日記にかかれてあるように、

> Last […]

J2EE勉強会(仮)

J2EE勉強会(仮) – ひがやすを blog

参加してきた。

内容は、

* Seasar2のJTA実装、コネクションプール実装をソースコード中心に追っかける * JSFの特徴・アーキテクチャをPPTで説明する

でした。説明はすべてひがさん。お疲れ様でした&ありがとうございました。

[…]

ほんたったがほしいがいじんさん

仕事を終えてから、明日のズラ会に備えてファミレスでJava Transaction Processingを読んでいた。 いつもと同じように、X31と書見台:ほんたった、ポストイットがお供。 そして、本の内容や目次、不明な用語などをExcelにまとめつつ、読み進めた。

この本の対象はトランザクションという分野であるため内容が多少概念的だし、英語で書かれているから、読むのにちょっと時間がかかる。今日は無理に読み進めることはせず、JDBCとXAResouceの関係、JTAの代表的なインタフェースであるUserTransaction, TransactionManager, Transactionの関係と、UserTransactionとTransactionManagerの相違点に触れている箇所を抜粋して読んだ。 これらの位置づけを大体理解したので、明日のズラ会で不明な点、理解があいまいな点がクリアになることを期待しようかなと。

さて、本題。

自分は、よくファミレスで本を読むのだけど、そのときは、

* Thinkpad X31をたたきながら、 * 本を書見台:ほんたったに載せて、 * ポストイットを手元に置いて

という感じでやっている。結構大掛かりな感じであって、ちょっと目立つ。でも便利なので、気にしないことにしている。

当然、今日もこんな感じでやっていた。

今日は遠くから熱い視線を感じる・・・。と思ったら、遠くの席の外人さんにチェックされているようだ。 そんなに物珍しいかね? ま、気にせずに本を読んでいたのだけど、2時になったので帰宅することにした。 レジに向かう途中、その外人さんが近寄ってきて、たどたどしい日本語で・・・

Java Transaction Processing

さて、土曜日までにどこまで読めるかなー