2004-04-10(Sat) [長年日記]
■1 Seasarのからさわぎ
昼の部のみ参加。私じしんはIoCDependency Injectionコンテナの概念と、簡単な使い方ぐらいは理解しているつもりだが、S2を触った経験はナシ。
artonさん——そう、遂にあのartonさんと相見えることができたのだ。自分が喫煙者でよかった。そして、自分のことを認識してもらえたよ。無謀でも翻訳してよかった——も仰っていたが、実務の匂いがプンプンするイベントで、濃密で有意義な時間を過ごせた。「道具だけでは何も変わらない。今後は設計やプロセスについての事例やパターンを集めていきたい(要旨)」というはぶさんの言葉が頼もしかった。次回以降も期待age。
以下、会場では時間と度胸が足りずに質問できなかった(内容もトリヴィアルだし)ことが3点あるので書きつけておく:
「Type4」
個人的にはひがさんが日記で言及されていた頃からの謎だった。それが今回のまさたかさんのIoCチュートリアルでようやく理解できた。Seasar独自の機能だというのも印象的。しかし、だからこそ、引っかかることがひとつ。
資料の記述(8ページ)では:
- Type4
- コンポーネントメソッドによる初期化
と書かれていたが、ここで「コンポーネント」という一般的/ 包括的な名前を出さないほうが良いと思う(セッターだってコンポーネントのメソッドだ)。インジェクションの名前による分類(ファウラーによる)ではそれぞれ:
- Type1: インタフェース・インジェクション
- Type2: セッター・インジェクション
- Type3: コンストラクタ・インジェクション
とJava系技術者ならすぐに理解できるであろうJavaの基本的/具体的な術語を利用した名前がつけられている。S2独自のType4も可能ならそれに倣ったJavaの基本的/具体的な術語による名前をつけたほうがわかりやすいと思うのだが、どうか。
私の理解した範囲でだと:
- Type4: リフレクショナル・インジェクション、あるいは任意メソッド・インジェクション
なのだが——これがわかりやすいかと問われると返答に窮する。日本滞在中のファウラーたんに誰かがSeasarのType4を説明して命名してもらうというのはどうだろう。
分割したXMLファイルのinclude
これまたIoCチュートリアルの資料から。資料の記述(26ページ)では:
<?xml version="1.0" encoding="UTF-8"?>
<components namescape="car">
<include path="tutorial/org/seaser/console/other.xml" />
<component name="paintedCar">
....
</component>
</components>
となっていて、other.xmlでは名前空間"other"が定義されている。ここで、includeはcomponents(名前空間"car"を定義している)の子要素として記述されている。なので私には名前空間はネストしているように見えた(car:otherかな、と)。しかし、コードのサンプルを見ると名前空間は"car:"と"other:"。ネストはしないようだ。
<追記 date='2004-04-11 21:26:45'>正当なXML分割とインクルードは「コンポーネント定義の分割とインクルード」と「名前空間」を参照すると上の私の疑問は氷解。sugaさんのツッコミに感謝。書いてみてよかった。</追記>
ならば:
car.xml
<?xml version="1.0" encoding="UTF-8"?>
<components namescape="car">
<component name="paintedCar">
....
</component>
</components>
seasar-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<components>
<include path="tutorial/org/seaser/console/car.xml" />
<include path="tutorial/org/seaser/console/other.xml" />
<conponent name="rootNameSpaceComponent">
....
</component>
</components>
と書いたほうが(書けたほうが)直感的だと思うのだが、どうだろう(ツッコミを受けて修正。これで大丈夫かしら?……XMLのことをよくわかってないのが丸わかりだが)蛇足ながら付け加えておくと、個人的には名前空間のネストはサポートされてもされなくて良いと思う。
以上2点はS2の実態と現状を知らないので頓珍漢なこと書いているかもしれないけれど、いち聴講者の感想まで。
英語ドキュメントの整備
プロモーションの観点からも、Seasarも英語ドキュメントを整備したほうが良いと思う。これだけ日本人開発者を集められる素敵なプロダクトならば、なおのこと、英語ドキュメントは重要だと思う。といっても、ひがさん御自ら書くべきである、という主張ではない。
たとえばRubyで感慨深いのは、海の向こうに渡ってGroovyに影響を与えてJava開発者の手にやってきたということ。そんなことがSeasarでも起こると面白いな、と思った。
——とここまで書いていて、日本語のドキュメントはまさたかさんが作業されるようで、英語も視野に入れてらっしゃるようだ。期待したい。
雑感
ほんと、Dependency Injectionという命名におけるFowlerタンの敗因は「Dependency Injectionが省略表記できない」ことだと思う。
リーン開発の現場 カンバンによる大規模プロジェクトの運営(Henrik Kniberg/角谷 信太郎/市谷 聡啓/藤原 大)
『なるほどUnixプロセス ― Rubyで学ぶUnixの基礎』
SCRUM BOOT CAMP THE BOOK(西村 直人/永瀬 美穂/吉羽 龍太郎)
実践テスト駆動開発 テストに導かれてオブジェクト指向ソフトウェアを育てる(Steve Freeman/Nat Pryce/和智 右桂/高木 正弘)
The RSpec Book (Professional Ruby Series)(David Chelimsky/Dave Astels/Zach Dennis/角谷 信太郎/豊田 祐司/株式会社クイープ)
アジャイルサムライ−達人開発者への道−(Jonathan Rasmusson/西村 直人/角谷 信太郎/近藤 修平/角掛 拓未)
アジャイルな見積りと計画づくり ~価値あるソフトウェアを育てる概念と技法~(Mike Cohn/マイク コーン/安井 力/角谷 信太郎)
インターフェイス指向設計 ―アジャイル手法によるオブジェクト指向設計の実践(Ken Pugh/角谷 信太郎(監訳)/児島 修)
アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣(Venkat Subramaniam/Andy Hunt/木下 史彦/角谷 信太郎)
JavaからRubyへ ―マネージャのための実践移行ガイド(Bruce A. Tate/角谷 信太郎)










>分割したXMLファイルのinclude<br>その例では、XMLのルート要素が複数になってしまうのでは...
あ、なるほど。
>名前空間はネストしているように見えた<br>http://homepage3.nifty.com/seasar/IoCContainer.html#IncludeByXml<br>これを読んで私は include するだけの XML ファイルを作るのだと解釈しました。説明のためにああいう書き方をしたのだったと思います。<br># たしか質疑応答のときにまさたかさんもそうおっしゃっていたような気がします。
ご指摘多謝です。あのPPT、再度Q&Aを受けてまとめなおしますので、さくっと反映させておきます。直し後も命名センスはご容赦ください。なんとかファウラーっぽく名づけしておきます。
ひえー。修正していただけるとは恐縮です。