Architect Salon

今回は,米持氏(日本IBM),細川氏日本総研),萩原氏(MS)の3人+司会の野村氏(MS)です。
「.NET,J2EEの両立は可能か?」というテーマだったのですが,別に対決ムードとかそういうわけではなかったです(笑)とりあえず,超大雑把な要約:

  • イントロ:各自の現在の職務や興味は。
    • 米持:「ITスペシャリスト」。IBMには「アーキテクト」という職種名があるんだけど,それじゃない
    • 萩原:DataCentricApproach+OOでなんかできないか,と考えている。マルチパラダイム主義。J2EE vs .NETだなんて考えずに,もっと広い視点で考えよう。Procedual vs OO も,開発規模によって使い分けよう。
  • テクノロジー:なぜアーキテクチャが重要か?
    • 細川:J2EEは,.NETに比べて技術が多いため、整理する意味でもレイヤ分けやアーキテクチャパターンを取り込み発展していった。そこがえらいところ。パターンについては最近見直しがある。ファウラーのPresentation-Domain-DataSource アーキテクチャ。これはJ2EEや.netに絞らない、中立・抽象的なもの。
    • 米持:今日は、.net/J2EEについてやそれらの優劣ではなく,その上のAppアーキテクチャについて語る。パターンは、経験則を伝承するためのもの。結果論。アーキテクチャは、最初から理由を持って使われるはず。ものの見方、(米持用語で言うと)切断面、が重要。
    • 萩原:ファウラーは「IT技術」で切断。「関心の分離」での切断とは直交するのでどちらもあり。
    • 細川:OO(コンポーネントが得意)とDataOrientedApproach(データが得意)は使い分けないとだめ。
    • 米持:全部OOは無理(技術者も集められないし(笑))分散システムは実はDOAのほうがしっくりくると思う。
    • 米持:新しい技術をいれようとするとすぐに「メリットは?」「コストダウンは?」と聞かれる。でも、そういうもんじゃないはず。SOAもすぐに結果のでるもんじゃない。
    • 萩原:業務系はDOAがよい。割と定型的・staticな処理が多い。データの加工など。でもこれからのビジネスには動的な要素も出てくる。古いコア部分はDOA、その周りの付加価値はOOやSOAでやるのがよいのでは。
    • 米持:ファウラーのモデルは、絵はきれいだが、実装を考えると非現実的。OOの勉強には、OpenSourceのものがよい。Apache-Xercesは美しい。機能を拡張しようとするとき、拡張した部分だけのJARを所定の位置におけば実現できる。
    • 萩原:Peter CoadのArchetypes. Java Modeling in Color with UML*1. http://bdn.borland.com/coadletter/ より。航空機の予約業務モデル。色分けにきちんと意味がある。こういうものを知ることは重要。
    • 米持:IBMはredbookシリーズとしてSOAデザインパターンを紹介。SOAは実は再帰SOAかも。昔のCOBOL資産も、アダプタつければ立派なSOAになる。
    • 野村:OOの時代に比べて、コンテナの役割が違ってきてないか?IoCとか?
    • 萩原:IoCとは,Inversion of Control.コンポーネントとコンテナの関係。「コンテナがコンポーネントを呼び出す」。API的考え方と逆。WindowApp.はIoC。WindowManagerに呼ばれないと自分では何もできない。EJBIoC。コンテナにたよらないと自身では実体化すらできない。
    • 萩原:Dependancy Injection(依存性の注入):コンポーネント間の依存関係を、コンテナが面倒見る。DIの例:InterfaceInjection:Avalon、SetterInjection:SpringFramework、ConstructorInjection:PicoContainer
    • 萩原:IoC、DI:共通機能をコンテナで面倒見る際に有効。技術要素はコンテナに、みんなの関心要素(例:ビジネスロジック)はコンポーネントに。→つまり、ミドルウェアに適用すべき考え方。
    • 萩原:.netでは、IoCはあるが、DIはない。J2EEはどっちもある。これは、Javaでは複数プラットフォームの差異を隠す目的もあって発展してきた。MSはプラットフォームの面にはあまり関心がなく、機能強化とかにフォーカスしていた。
  • パーソナル:アーキテクトとして研鑽を積むために普段やることは?
    • 米持:料理はProductManagement!! 大体40分で作る。いかに早く終わらせるか。子供と自分のだけだと、材料が余る。余ったものは再利用しないといけない(笑)つくっている途中で子供が「あれ食べたい」とか言い出す。柔軟に対応しないといけない(笑)最後に、暖かいものは暖かく、うまくタイミングを合わせて出さないといけない。
    • 萩原:料理のレシピは非常に属人性が低い。比較的誰でも、その通りに作れば食える。
    • 米持:でもお菓子のレシピはたまにひどいのがある。粉をいれようとしたら「振るった粉」と書いてある。もっと早く「振る」項目を言えよ!(笑)
    • 野村:料理は、誰かに喜んでもらえるとか、次はもっと美味しくつくろうとか、モチベーションが沸くけど、ソフトにはそういうのないね。
    • 細川:やっぱり子供の要求を理解できるようにならないと。子供も客も要求を伝えるのは下手だから(笑)
  • まとめ:日本のアーキテクトが世界に打って出るためには?
    • 米持:日本で胸張れること「完成度は世界一」。innovateは苦手だけど、何か途中のものを渡されてそれを完成させるのは非常にうまい。品質、完成度は捨てずに、自身を持って。
    • 細川:もともと弁護士志望だったがこの職に。ITでも弁護士みたいに高い見識とプロ意識を持つべき。
    • 萩原:大学ではロケット工学。アーキテクトは、「より広く、技術の最高峰を見る」と考えよう。常識にとらわれるな。スポーツで体重別があるのは米国有利になるから。身長別がないのは、米国に不利になるから。米国は、必要に応じてルールを変えて勝つ。