トップスポーツチームの監督に教わる秘訣
この論文では、氏が発見した原則を要約し、その原則をいかにしてソフトウェア開発に応用するかを説明します。
作者 Moxie Zhang, 翻訳者 渡辺 裕之 投稿日 2008年7月2日 午後3時5分
2008年6月9日、経験豊かなJava開発者であるPer Olesen氏はTech PerにおいてPureMVC(リンク・英語)とCaringorm(リンク・英語)という2つのとても人気のあるFlexフレームワークを比較したブログ記事を公開した(リンク・英語)。そこではとりわけ使いやすさとそれらがGUIアーキテクチャのパターンをどのように適用しているのかについて記述されている。
デザインパターンに基づいたアプリケーション開発はここのところJava開発者にとっての頼みの綱となっている。FlexやActionScriptの開発者にとってこの習慣はJavaでの開発経験から来たものか、ActionScript/Flexのフレームワークによってもたらされたものである。Olesen氏はこの経緯について下記のように述べている。
そのようなアプリケーションの設計を助けるためにいくつかのGUIアーキテクチャに関するパターンが開発され説明されてきました。Martin Fowler氏(リンク・英語)はPresentation Model(リンク・英語)やSupervising Presenter(リンク・英語)などのとてもよく知られたパターンについていくつかの素晴らしい記述をしています。これらはMVCのようなユーザインタフェース(UI)に関する完全なアーキテクチャではありません。アーキテクチャの手引きに関する小さな部分であり、アプリケーションのロジックがいかにビューフレームワークのAPIに依存しているかについて説明しています。
続けて以下のように説明している。
PureMVCはMediator(仲裁者、調停人)(リンク・英語)と呼ばれる構造を持ちます。それはまさに字面通りのものです。Mediatorパターン(リンク・英語)で実装されたアプリケーションはビュー部分のAPIとアプリケーションのその他の部分のAPIとの間を仲裁します。これがPureMVCがMVCアーキテクチャのビュー部分をどのように実装しているのかを現すカギとなる構造であり、アプリケーションとビューの依存関係を削減し、システム全体において依存具合を下げているのです。
Olesen氏は合わせてPureMVCには実装のイディオムに関するドキュメント(PDF・英語)とベストプラクティスを含むLoginPanelという見本があると指摘する。その見本ではmediatorはビューのことを知っているが、ビューはmediatorのことを知らないということを示している。
PureMVCのドキュメントで提供されているソースコードを解析した結果、Olesen氏はこのパターンはSupervising Presenter(監督するプレゼンター)またはPassive View(受動的なビュー)として知られたパターンそのものであると考えている。これらのパターンはどちらもビューから振舞いを抽出し、ビューと関連する別のプレゼンテーション用クラスにそれを移す。この処理はどちらのパターンでも「プレゼンテーションのクラスをビューを知っているが、ビューはプレゼンテーションのクラスは知らない」ように行われる。この2つのパターンの違いはどれだけのロジックを抽出するかということである。この場合、PureMVCのmediatorはSuperVising Presenterに一番近くなる。
Cairngormフレームワークに関連してOlesen氏は以下のように述べている。
Cairngormにはmediatorやsupervising presenter、passive viewといった概念やそれに類するものは一切ありません。実際のところ、ビューコンポーネントの状態を直接モデルにデータバインディングすることを推奨していることでCairngormは多くの人に非難されています。さらに悪いことにモデルはグローバルな状態にあり、シングルトン(なクラス)を通して提供されます。
Cairngormのドキュメントと見本(入門編のコンタクトマネジメントシステムと“上級編”のCairngormストアの両方)を見るとこの考え方がより明確になります。ビューには多くのロジックと同様に多くの操作が含まれておりAutonomous View(自律的なビュー)パターンと言われる状態になっています。autonomous viewとは何でしょう?Martin Fowler氏は以下のように説明しています:画面の状態、振舞いの全てを一つのクラスに詰め込んだもの。
Olesen氏はこれはまるで“無パターン”パターンであると考える。Cairngormベースで作成されたアプリケーションに含まれるautonomous viewはモデルのグローバルなインスタンスに直接データバインドすることを推奨していると考えている。そしてそれによってビューとモデルの関心事の分離をひどい状態にしていると考えている。
最後にはOlesen氏は単に一方のフレームワークが他方に勝るとは考えていない。氏は以下のように結論付けている。
どちらのフレームワークにとってもUIパターンはほんの一部に過ぎません。しかしとても重要な一部です。mediatorがフレームワークの組み込み済みのコンセプトとなっていることで、PureMVCの備え付けの機能により多くを得ることができると論じることはできます。mediatorとnotificationを通したmediatorとの通信によってPureMVCフレームワークはうまい具合に作り上げられています。
原文はこちらです:http://www.infoq.com/news/2008/06/gui-patterns-puremvc-cairngorm
12/5 CSQ会員限定技術情報交換会にてJCP議長が標準化について語る
12/16 ~野村総合研究所が提案~ 「不況を乗り切る!効果的なIT投資を考えるセミナー」
InfoQ Japanはコンポーネントスクエアが運営しています
この記事では、私達がどのようにして大規模(240人月、10万行強)でインドとオランダの開発者も参加したスクラム・プロジェクトを成功させたのかを示しています。
Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。参加者はカンファレンスで各々の発表や、各セッションへの参加、諸外国のエンジニアとの出会い、ステージ上で DearXPを熱演などの様々な思い出を抱えて、無事日本に戻ってきました。
マイクロソフトのRobert Bellが、SilverlightとJavaを使用したインターオペラビリティのシナリオを紹介し、サンプルコードを例にとってアーキテクチャの手引きを提供します。
Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。サブミッションが選択された人、そうでない人も含めて、個々の目的意識の確認、膨大なプログラムから聞きたいセッションの選択、旅行の準備、プレゼンテーションの準備の期間を終えて、無事当日を迎えました。
筆者はアジャイルソフトウェア開発についての年に一度の国際会議であるAgile2008に初めて参加してきました。今年の日本からの参加者の数は14名にも及び、発表者は5名、受け持ったセッションは8つに及び、例年にない活躍を見せました。なぜ今年のAgile2008では、これほど多くの日本人が参加し発表に至ったのか? そのレポートをお届けします。
エスエムジーでは、Java全般を対象にしたトラブルシューティングサービス「JaTS」を提供しています。この記事では、前回に引き続き、JaTSにて蓄積したトラブル事例とその解決ノウハウの一部をお送りしている「Javaトラブルシューティングメールマガジン」(JTSMM)の総集編として、過去2ヶ月のトラブル事例と追加情報をダイジェストとして提供いたします。
この記事では、モデル駆動アプローチがうまく機能しない、または機能しなくなることによって期待した結果が実現できなくなる 8 つの理由について書きたいと思います。
No comments
返信