Ouobpo -5ページ目

翻訳: メッセージングアーキテクチャにおける依存性注入

 現在、EIP著者の1人Gregor Hohpe氏のブログ「Gregor's Ramblings」を、以下のGoogle Codeプロジェクトで翻訳しています。
http://code.google.com/p/gregors-ramblings-ja/
今回は、翻訳第二弾として、「Dependency Injection in Messaging Architectures(メッセージングアーキテクチャにおける依存性注入)」を翻訳しました。

 アプリケーション開発におけるDI(依存性注入)の役割と、システム間統合におけるパイプ&フィルタ型アーキテクチャの役割とを比較し、その類似性と相違点を考察しています。オブジェクト間のコラボレーションにオブジェクトへの参照を大前提とするオブジェクト指向の世界と、パイプ&フィルタ型アーキテクチャが支配するメッセージングの世界とでは、アーキテクチャ様式、つまり計算パラダイムのレベルで大きな違いがあります。

 そういったパラダイムの違いを踏まえた議論というのは、今まであまり聞くことはありませんでしたが、システム間連携が当たり前になってくるこれからのソフトウェア開発においては、もっと両者の違いを意識していく必要があると思います。

たくさんの開発者が最近、制御の反転(IoC)と依存性注入について語っている。私は、他の人が十分に説明しつくしたことを、繰り返すつもりはない。依存性注入の背景にある詳しい議論を知りたい人は、Martin Fowlerのこの記事か、Aslak HellesoyとPaul Hammant(英国の同僚ThoughtWorkerたち)によるこの投稿を参照してほしい。ここでは、皆さんが文章をたくさん読まなくて済むように、要点だけを説明しよう(私なりの解釈になるが)。オブジェクトAは、オブジェクトBのサービスを利用したいために、Bへの参照が必要だとする。普通のやり方では、Aが「new」コマンドを用いてBのインスタンスを生成する。AはBへの参照を得るので、そのメソッドを呼び出すことができる。・・・

つづきは、こちら



ギーク必聴のPodcast

 今までずっと40GBの第三世代iPodを使っていたのだが、もっと機動性が欲しくなったので、最近になってようやくiPod nanoを買った。それ以来、嬉々としてネット上でPodcastを探しては通勤の行き帰りに聴く毎日を送っている。

 技術系Podcastはいくつか見つけたのだが、その中でも一番のお気に入りは「Software Engineering Radio」というPodcastだ。
http://www.se-radio.net/

 このPodcastは、著名なエンジニアや著者との1時間くらいのインタビューを公開しているものだが、すごいのはインタビューされる人たちの布陣だ。OOやパターン、アジャイル関係の重鎮や、著名なエンジニアや言語設計者を軒並み総狩りしていて、北欧系ギークには涎モノの最強ラインナップになっている。

 現在までで86エピソードが公開されているのだが、北欧っぷりを見るためにラインナップの一部を紹介してみよう。
- エピソード3: Doug Schmidt (POSAシリーズの著者の1人)
- エピソード8: Eric EvansDDDの著者)
- エピソード11: Gregor Kiczales (アスペクト指向の提唱者でAspectJの開発者)
- エピソード20: Michael StalPOSA1POSA2の著者)
- エピソード42: Gregor HohpeEIPの著者)
- エピソード44: Brian Goetz & David Holmes (『Java並行処理プログラミング』の著者)
- エピソード47: Grady Booch (言わずと知れたUMLのスリーアミーゴの1人)
- エピソード54: Frank Buschmann (POSAシリーズの著者の1人)
- エピソード62: Martin Odersky (Scalaの言語設計者)
- エピソード64: Luke Hohmann (『Beyond Software Architecture』の著者)
- エピソード70: Gerard Meszaros (『xUnit Test Patterns』の著者)
- エピソード81: Erich Gamma (言わずと知れたGoFの1人)
- エピソード82: Juergen Hoeller (Spring開発者の1人)
- エピソード83: Jeff DeLuca (FDDの提唱者)
しかもインタビューをする側も、Michael Kircher(POSA3Remoting Patternsの著者)など北欧なチームで固めている。このラインナップを見て何も感じないとしたら、ソフトウェアエンジニアとしてはモグリかもしれない。

 残念ながらインタビューはすべて英語。英語リスニングの得意な方や、リスニングの練習をしたい方はぜひチャレンジしてみて欲しい。

 ちなみに、最新のエピソード86に登場しているDave Thomasは、皆さんのよく知っているPragmatic ProgrammersのDave Thomasとは別人なので注意。



翻訳: スターバックスは2フェーズコミットを使わない

 『Enterprise Integration Patterns』の著者の1人であり現在GooglerのGregor Hohpe氏が「Gregor's Ramblings」というブログを書いていますが、著者本人から許可をいただいたので、それを翻訳するプロジェクトを始めました。
http://code.google.com/p/gregors-ramblings-ja/

 Hohpe氏のブログは、EIPの著者であるだけに、EAIやSOAに関する最先端の面白いアイデアがたくさん書かれています。第一回目は、その中でももっとも有名な記事「Starbucks Does Not Use Two-Phase Commit(スターバックスは2フェーズコミットを使わない)」を翻訳しました。

 この記事は、Joel Spolsky編著の書籍『The Best Software Writing I』にも選ばれた記事です。非同期メッセージングが複雑に絡み合うエンタープライズ統合システムにおいて、2フェーズコミットによる厳密なトランザクション管理を行わずにシステムを設計する戦略を紹介しています。

 私自身、多くの様々なシステムをつなぎ合わせて作るSOAのようなシステムでは、WS-TxやJMS Txなどを使って従来の単独アプリケーションの設計でやるように厳密なトランザクション管理を強制するのは、現実的ではないと思っています。システム同士が密結合に絡み合ってしまい、いずれ破綻するだろうからです。この記事は、その辺りの実際的な設計方法について、色々と考えさせてくれる内容になっています。

2週間の日本旅行から帰ってきた。日本で見られる有名な景色の1つに、ありえない数のスターバックス・コーヒーショップがある。とくに、新宿と六本木がすごいことになっている。注文した「ホットココア」を待っている間に、スターバックスでどのように飲み物の注文が処理されているのかを考えてみた。スターバックスは、他のビジネスだってみんな同じだけれど、注文のスループット(処理量)を最大化することを第一に考えている。注文が多ければ多いほど、儲かるからだ。その結果、スターバックスは非同期処理をやる。・・・

つづきは、こちら



[お知らせ] オブジェクト倶楽部クリスマスイベント資料公開

 昨年12月21日のオブジェクト倶楽部クリスマスイベント2007にて、オブジェクトの広場名義で「OO厨厨トレイン」という講演をさせていただきましたが、その発表資料がようやく公開されました。

http://www.ogis-ri.co.jp/otc/hiroba/Report/oblove2007xmas/index.html

オブジェクト指向の過去・現在・未来を一望するという講演で、私の担当は最初の現代編です。オブジェクト指向の「現在」として、以下3つの話題を取り上げています。
- DI + AOP
- サービス指向アーキテクチャ(SOA)
- ドメイン駆動設計(DDD)

ObjectClub Xmas 2007



2008年への投企 (2)

 前エントリに引き続き、ソフトウェア開発に関する2008年の展望を予想する。

オープンソースESBとEIPが注目され始める
 SOAの実装プラットフォームとしてのESBについては、すでにある程度知られるようにはなっているが、商用製品が中心だったため誰もが手軽に試せる環境になかった。今年は「使える」オープンソースESBが出揃って来そうなので、より多くの人がその使いどころを実感できるようになるのではないだろうか。

 まずオープンソースESBの真打ち Mule は、これまで日本ではほとんど知られていなかったが、今年はもっと紹介されるようになると思う。さらに、今年がオープンソースESBの年になりそうな気がするのは、今年の第2四半期に Spring 開発チームから Spring Integration というESBがリリースされる予定だからだ。他にも、あまり有名ではないが Apache Camel というオープンソースESBもある。

 そして、これらESBの設計思想の基礎にあるのが、SOA時代のGoFパターンとの呼び声も高い『Enterprise Integration Patterns』だ。EIPもDDDと同じく4年以上も前の本なのだが、オープンソースESBの普及と相まって、そろそろ浸透してくるのではないかと思う。

並行プログラミングに関してもう1ネタ
 2007年は Twitter とともに、その中で使われているという並行プログラミング言語 Erlang の話題でもちきりだったが、ムーアの法則の限界からCPUの並列化・マルチコア化が避けられないトレンドの中で、今後も並行プログラミングに注目が集まっていくのは自然の成り行きだと思う。

 今年も、並行プログラミング関係で何か1つくらいは新しい話題が登場するのではないか。今年あたり、そろそろ Scala とその背景にあるアクターモデルが注目を集めるかもしれない。Scala を使った具体的なサービスが何か出て来ないだろうか。

Railsバブルには陰り、しかしRuby自体は健在
 最後の予想は Rails の話題。新年早々、Mongrel 開発者による辛辣な Rails 批判記事「Rails Is A Ghetto」が出てきて一部で非常に話題になっているが、実際に昨年あたりから Rails を次の商売道具として担ごうとする風潮が濃厚になってきたと思う。

 Rails はTPOをわきまえれば非常に優れたフレームワークだが、訳も分からず無分別に使えばかえって生産性は落ちる。今年あたり、そろそろ Rails バブルに冷や水が浴びせられるのではないか。また、Rails 以外の代替 Web フレームワーク(Merb とか?)が登場してきてもいいと思う。

 Rails が廃れたとしても、Ruby 自体は非常にいい言語なので人気は健在だと思う(そうあってほしい)。JRuby も登場して Ruby の使われ方は一元的でなくなって来ているし、DSL や BDD などWeb開発以外にも Ruby の応用例は幅広い。


手堅いものから、期待先行で実現性の薄いものまで色々な予想を取り上げたが、2008年はどんな年になるだろうか。