裸の物体

ネイキッドオブジェクトは、ソフトウェアエンジニアリングで使用されるアーキテクチャパターンです。以下の3つの原則によって定義されます。

  1. すべてのビジネスロジックはドメインオブジェクトにカプセル化されるべきです。この原則はネイキッドオブジェクトに特有のものではなく、カプセル化への強いコミットメントです。
  2. ユーザーインターフェースはドメインオブジェクトを直接的に表現するものでなければならず、すべてのユーザーアクションはドメインオブジェクトの作成、取得、またはメソッドの呼び出しで構成されます。この原則はネイキッドオブジェクトに特有のものではなく、オブジェクト指向ユーザーインターフェースの解釈です。

裸のオブジェクト パターンの革新的な特徴は、第 1 の原則と第 2 の原則を第 3 の原則に組み合わせることによって生まれます。

  1. ユーザーインターフェースは、ドメインオブジェクトの定義から完全に自動的に作成されるものとします。これは、リフレクションまたはソースコード生成を用いて行うことができます。

裸のオブジェクトのパターンは、リチャード・ポーソンの博士論文[ 1 ]で初めて正式に記述されました。この論文には、例えばモーフィックユーザーインターフェースなど、このパターンの先行事例やインスピレーションの調査が含まれています。

このパターンを実装した最初の完全なオープンソースフレームワークはNaked Objectsと名付けられました。 [ 2 ] 2021年にPawsonは、その後、オブジェクト指向プログラミングパラダイムの代替として、同じパターンを関数型プログラミングプログラミングパラダイムに適用し、Naked Objectsフレームワークの変種であるNaked Functionsを作成したと発表しました。[ 3 ]

利点

ポーソンの論文[ 1 ]では、このパターンには4つの利点があると主張している。

  1. 開発層が少ないため、開発サイクルが短縮されます。より従来的な設計では、開発者は3つ以上の個別の層(ドメインオブジェクト層、プレゼンテーション層、そしてこれら2層を接続するタスクまたはプロセススクリプト)を定義および実装する必要があります。(ネイキッドオブジェクトパターンをオブジェクトリレーショナルマッピングまたはオブジェクトデータベースと組み合わせると、ドメインオブジェクト定義のみからシステムのすべての層を作成できますが、これはネイキッドオブジェクトパターン自体の一部ではありません。)この論文には、同じアプリケーションの2つの異なる実装を比較するケーススタディが含まれています。1つは従来の「4層」実装に基づき、もう1つはネイキッドオブジェクトを使用しています。
  2. 俊敏性の向上とは、将来のビジネス要件の変化に合わせてアプリケーションを変更する際の容易さを指します。これは、同期を維持しなければならない開発レイヤーの数の削減に一部起因します。しかし、ユーザープレゼンテーションとドメインモデル間の1:1の対応を強制することで、より高品質なオブジェクトモデリングが促進され、結果として俊敏性が向上するという主張もあります。
  3. より強力なユーザーインターフェーススタイル。この利点は、ネイキッドオブジェクト自体ではなく、結果として得られるオブジェクト指向ユーザーインターフェース(OOUI)によるものです。ただし、ネイキッドオブジェクトの方がOOUIの構想と実装がはるかに容易になるという議論もあります。
  4. 要件分析の容易化。ここでの論点は、ネイキッドオブジェクトパターンでは、ドメインオブジェクトがユーザーと開発者の間の共通言語を形成し、この共通言語によって要件の議論プロセスが促進されるという点です。なぜなら、議論すべき他の表現が存在しないからです。開発サイクルの高速化と相まって、機能的なアプリケーションのプロトタイプをリアルタイムで作成することが可能になります。

使用

アイルランドの社会保護省(DSP)(旧称:社会家族省)は、ネイキッドオブジェクトパターンを用いた一連のエンタープライズアプリケーションを構築した。サービス提供近代化(SDM)プログラムの一環として、DSPは計画されていた新規ビジネス要件を満たすとともに、長期的に優れた俊敏性を提供するために、新しいエンタープライズアーキテクチャを設計した。ネイキッドオブジェクトパターンは、SDMアーキテクチャの重要な要素を形成する。[ 4 ] 2002年11月、DSPは児童手当の管理用の既存のシステムを置き換える新しいアプリケーションを稼働させた。これは、ネイキッドオブジェクトパターンが運用に応用された最初の例と考えられている。DSPがこの最初のアプリケーションを構築した経験、特に革新的なユーザーインターフェースに対するユーザーの反応については、Pawsonの論文[ 1 ]や、最近ではQCon London 2011でのプレゼンテーション[ 5 ]に詳しく記録されている。

DSP体験で最も印象的だった点の一つは、ネイキッドオブジェクト手法が再利用を非常に積極的に可能にしていた点です。顧客などのドメインオブジェクトを一つの「アプリケーション」用に定義してしまえば、最小限の調整と追加で他の用途にも容易に適応させることができ(実際に適応させています)、これは再利用がサイロ化されたシステムを打破する強力な手法とみなされている政府機関で、この手法が好まれる可能性を示唆しています。英国の「変革的政府」政策は、再利用が新しい政府システムの標準要件となり、既存の政府システムコンポーネントを再利用すると同時に、新しいコンポーネントを他者が利用できるようにすることを特に重視しています。この再利用はサービスという観点から捉えられることが多いですが、オブジェクトも同様に強力なアプローチとなり得ます。

DSPの当初の「ネイキッドオブジェクトアーキテクチャ」は外部の請負業者によって開発されましたが[ 6 ] 、その後、ネイキッドオブジェクトフレームワークを中心にアーキテクチャが再開発され、ネイキッドオブジェクトを使用して構築されるさらなるアプリケーションの4年間の入札要求で確認されているように、将来のアプリケーション開発の基礎となっています。[ 7 ]

他のアイデアとの関係

裸のオブジェクトのパターンは、次のような他のいくつかの分野やトレンドと関連しています。

オブジェクトストレージメカニズム

オブジェクトリレーショナルマッピングオブジェクトデータベース、そしてオブジェクトの永続性は、いずれもドメインオブジェクトの下位に従来のデータアクセス層を記述する必要性をなくすことを目的としている。これらのパターンは、ドメインオブジェクトの上位に層を記述する必要性をなくすことを目的とするネイキッドオブジェクトパターンと補完的であり、相乗効果をもたらす可能性がある。

アジャイルソフトウェア開発

ネイキッドオブジェクトは、アジャイル開発手法へのトレンドと様々な点で互換性がありますが、特に細粒度反復開発においてはその傾向が顕著です。DSPの経験(上記参照)は、おそらく世界的に見ても公共部門組織におけるアジャイルソフトウェア開発手法の最大の適用例と言えるでしょう。[ 8 ]

ドメイン駆動設計

ドメイン駆動設計とは、進化するドメイン(オブジェクト)モデルを要件探索の助けとなるメカニズムとして用いるべきであり、その逆ではないという考え方です。ネイキッドオブジェクトシステムによってユーザーインターフェースとドメインモデルが直接対応付けられるため、ドメイン駆動設計の試みが容易になり、そのメリットがより明確になります。[ 9 ]

モデル駆動型アーキテクチャ(MDA)

裸のオブジェクトはMDAの厳密な定義には当てはまらないものの、多くの点でMDAと共通の目標を共有しています。ダン・ヘイウッドは、裸のオブジェクトはこれらの目標を達成するためのより効果的なアプローチであると主張しています。[ 10 ]

安らぎのオブジェクト

ドメインオブジェクトモデルからRESTfulインターフェースを作成するための標準。RESTful Objects仕様では、インターフェースをドメインモデルに基づいて生成する必要があるとは明記されていませんが、その可能性は存在します。

参照

参考文献

  1. ^ a b cポーソン、リチャード(2004年6月)「裸の物体」(PDF)(博士論文)ダブリン大学トリニティ・カレッジ
  2. ^ネイキッドオブジェクトフレームワーク
  3. ^裸のオブジェクトから裸の関数へ
  4. ^社会家族省 - 省の機能と記録に関するガイド、 DSFAウェブサイト - 情報公開アーカイブ2012年10月19日Wayback Machine
  5. ^ケーススタディ: アイルランド政府QCon London 2011における大規模な Pure OO
  6. ^富士通、ケーススタディ:社会家族省富士通ウェブサイト 2007年11月29日アーカイブ、Wayback Machine
  7. ^社会家族省、「省のサービス提供近代化プログラムの継続的な開発」、2007年、電子入札ウェブサイト
  8. ^ Pawson, Richard; Wade, Vincent (2003). 「Agile Development Using Naked Objects」.エクストリームプログラミングとソフトウェアエンジニアリングにおけるアジャイルプロセス. XP'03. LNCS . Vol. 2675. pp.  97– 103. doi : 10.1007/3-540-44870-5_13 . ISSN 0302-9743 . 
  9. ^ Haywood, D.,ドメイン駆動設計とネイキッドオブジェクト, 2009, Pragmatic Programmers
  10. ^ Haywood, D (2004) MDA: 素晴らしいアイデアですが、残念です...