Upgrade to Pro — share decks privately, control downloads, hide ads and more …

A guide for "Microsoft Application Architecture...

A guide for "Microsoft Application Architecture Guide, 2nd Ed."

『アプリケーション アーキテクチャ ガイド2.0』のガイド
2011/06/25 わんくま同盟 東京勉強会 #60
http://www.wankuma.com/seminar/20110625tokyo60/

Avatar for INOMATA Kentaro

INOMATA Kentaro

June 25, 2011
Tweet

More Decks by INOMATA Kentaro

Other Decks in Technology

Transcript

  1. わんくま同盟 東京勉強会 #60 このガイドは…… • http://www.microsoft.com/japan/msdn/vstudio/20 10/solutions/architecture/ • 「このガイドは、開発者とソリューション アーキテクト

    が、十分に試行されて信頼できるアーキテクチャ、 設計原理、およびパターンを活用することによって、 マイクロソフト プラットフォームと .NET Framework で実行する効果的で高品質のアプリケーションを少 ないリスクですばやく構築できるようにすることを目 的としています。 」
  2. わんくま同盟 東京勉強会 #60 結構なボリューム • 全567ページ • はじめに • 第

    1 章: ソフトウェア アーキテクチャとは • 第 2 章: ソフトウェア アーキテクチャの基本原理 • 第 3 章: アーキテクチャのパターンとスタイル • 第 4 章: アーキテクチャと設計の手法 • 第 5 章: レイヤー型アプリケーションのガイドライン • 第 6 章: プレゼンテーション レイヤーのガイドライン • 第 7 章: ビジネス レイヤーのガイドライン • 第 8 章: データ レイヤーのガイドライン • 第 9 章: サービス レイヤーのガイドライン • 第 10 章: コンポーネントのガイドライン • 第 11 章: プレゼンテーション レイヤーのコンポーネントの設計 • 第 12 章: ビジネス レイヤーのコンポーネントの設計 • 第 13 章: ビジネス エンティティの設計 • 第 14 章: ワークフロー コンポーネントの設計 • 第 15 章: データ レイヤーのコンポーネントの設計 • 第 16 章: 品質特性 • 第 17 章: 横断的関心事 • 第 18 章: 通信とメッセージ • 第 19 章: 物理ティアと配置 • 第 20 章: アプリケーションの種類の選択 • 第 21 章: Web アプリケーションの設計 • 第 22 章: リッチ クライアント アプリケーションの設計 • 第 23 章: リッチ インターネット アプリケーションの設計 • 第 24 章: モバイル アプリケーションの設計 • 第 25 章: サービス アプリケーションの設計 • 第 26 章: ホストされているクラウド サービス • 第 27 章: Office Business Application の設計 • 第 28 章: SharePoint LOB アプリケーションの設計 • 付録 A: マイクロソフト アプリケーション プラットフォーム • 付録 B: プレゼンテーション テクノロジ • 付録 C: データ アクセス テクノロジ • 付録 D: 統合テクノロジ • 付録 E: ワークフロー テクノロジ • 付録 F: patterns & practices の Enterprise Library • 付録 G: patterns & practices パターン カタログ
  3. わんくま同盟 東京勉強会 #60 マイクロソフト パターン&プラクティス • Application Architecture for .NET:

    Designing Applications and Services (MSDN: 2002) – アプリケーション・アーキテクチャ設計入門 (@IT, 2003- 2004) • .NET のアプリケーション アーキテクチャ : アプリケーションとサー ビスの設計 (MSDN, 2004) • Microsoft Application Architecture Guide: 2nd Edition (MSDN: 2009) – アプリケーション・アーキテクチャ・ガイド2.0解説 (@IT, 2009-2010) • アプリケーション アーキテクチャ ガイド 2.0 (MSDN: 2011)
  4. わんくま同盟 東京勉強会 #60 結論 • 「答え」「正解」は書かれてない • 「具体例」「実例」は書かれてない • すべてのアプリケーションを網羅できているわけで

    はない • 開発プロセスは対象外 • あくまで「参考資料」「概要」「推奨事項」 考えの取っ掛かりとして 未経験な分野を学ぶ枠組みとして 他の開発者と対話・議論する下地として
  5. わんくま同盟 東京勉強会 #60 アジェンダ • 第 I 部 ソフトウェアのアーキテクチャと設計 •

    第Ⅱ部 設計の基礎 – その1 – その2 – その3 – その4 • 第 III 部: アプリケーションの原型 – その1 – その2 – その3 • 付録
  6. わんくま同盟 東京勉強会 #60 第 I 部 ソフトウェアのアーキテクチャと設計 • 第 1

    章: ソフトウェア アーキテクチャとは • 第 2 章: ソフトウェア アーキテクチャの基本原理 – アーキテクチャ設計(方式設計)をやったことがあって、その成果を他 人に説明したことがある人は読まなくていいです。 • 第 3 章: アーキテクチャのパターンとスタイル – 以下の言葉を知っていて、それぞれの利点をなんとなくでも説明でき る人は読まなくていいです。 クライント・サーバー型 コンポーネント指向 ドメイン駆動設計(DDD) レイヤー型アーキテクチャ メッセージバス n層・3層 オブジェクト指向 サービス指向アーキテクチャ(SOA)
  7. わんくま同盟 東京勉強会 #60 第Ⅱ部 設計の基礎 その1 • 第 4 章:

    アーキテクチャと設計の手法 – アーキテクチャ設計をやったことがない人は一度目を通すべきです。 – 「反復的な設計」をイメージできる人は読まなくていいです。 – アーキテクチャの評価手法は知っておいて損はないと思います。 • 第 5 章: レイヤー型アプリケーションのガイドライン – ガイド第1版を読んだことがある人は読まなくていいです。 – 論理3階層を説明できない人は読んだ方がいいと思います。 – 「レイヤー型構造の設計手順」はさらっと目を通しましょう。
  8. わんくま同盟 東京勉強会 #60 第Ⅱ部 設計の基礎 その2 • 第 6 章:

    プレゼンテーション レイヤーのガイドライン • 第 7 章: ビジネス レイヤーのガイドライン • 第 8 章: データ レイヤーのガイドライン • 第 9 章: サービス レイヤー※のガイドライン – 「そこに含まれる場合があるコンポーネント」は後ろで出てきます。 – 「設計に関する一般的な考慮事項」は読まなくていいです。 – 「設計に関する具体的な問題」は目を通しておく方がいいと思います 。 – 「設計手順」「テクノロジに関する考慮事項」は読まなくていいです。 – 「パフォーマンス」「セキュリティ」「配置」は読みましょう。 – 「関連する設計パターン」はおすすめですが、細かい説明は書かれて いないので、参考文献を読む必要があります。
  9. わんくま同盟 東京勉強会 #60 第Ⅱ部 設計の基礎 その3 • 第 10 章:

    コンポーネントのガイドライン – 軽く眺めておくだけでいいと思います。 – 「堅固なデザイン原理」のキーワードは教養としておさえておきましょう。 – プレゼンテーションロジックに関連するパターンの多さにくじけないようにしま しょう。 • 第 11 章: プレゼンテーション レイヤーのコンポーネントの設計 – 設計手順は、前半はそんなに参考になりませんでしたが、後半は読んでおい た方がいいと思います。 • 第 12 章: ビジネス レイヤーのコンポーネントの設計 – トランザクションのところだけ軽く読みましょう。 • 第 13 章: ビジネス エンティティの設計 – 「ドメイン駆動設計(DDD)」を端的にまとめた説明は好きです。 • 第 14 章: ワークフロー コンポーネントの設計 – WFとBizTalkと、ときどきMOSS。 • 第 15 章: データ レイヤーのコンポーネントの設計 – 実装上重要なことがまとめられています。
  10. わんくま同盟 東京勉強会 #60 第Ⅱ部 設計の基礎 その4 • 第 16 章:

    品質特性 – 非機能(機能外)要求(要件)について考えたことがある人はさらっと目を通 すだけでいいです。 – ソフトウェア品質の評価に関する国際規格(ISO 9126/14598/25000)や SQuBOKと対応が取れているわけではありません。 – おおむね 内部品質/外部品質/利用時の品質 にマップできると思います。 • 第 17 章: 横断的関心事 – 「設計に関する一般的な考慮事項」は読まなくていいです。 – 「設計に関する具体的な問題」に個々の関心事がまとめてあります。 – 個々の関心事の設計手順に書かれていることは一通り読みましょう。 – 「patterns & practicesのソリューションの資産 」と「関連情報」に、よく使われ るライブラリとフレームワークがまとめてあります。 • 第 18 章: 通信とメッセージ – 「一般的な設計ガイドライン」をよく読みましょう。 – 「メッセージベースの通信のガイドライン」は、キーワード(非同期通信と同期 通信、結合度と凝集性、データ形式、相互運用性、パフォーマンス、状態管 理)だけ拾い読みしましょう。 – 「セキュリティに関する考慮事項」は短いですが重要です。
  11. わんくま同盟 東京勉強会 #60 第 III 部: アプリケーションの原型 その1 • 第

    19 章: 物理ティアと配置 – 配置のことをあまり考えたことがない人や、 「必要なければ分散させ るな」という原則を知らない人は頭から読むべきでしょう。 – 「パフォーマンス」「信頼性」「セキュリティ」についてだけでもおすすめ です。 • 第 20 章: アプリケーションの種類の選択 – Webアプリケーション、リッチクライアントアプリケーション、RIA、モバ イルアプリケーション、サービスアプリケーションの5つについて、メリ ットとデメリット(考慮事項)が簡潔にまとめてあります。 – この章に書かれている内容は一通り説明できるようになっておくと便 利です。
  12. わんくま同盟 東京勉強会 #60 第 III 部: アプリケーションの原型 その2 • 第

    21 章: Web アプリケーションの設計 • 第 22 章: リッチ クライアント アプリケーションの設計 • 第 23 章: リッチ インターネット アプリケーションの設計 • 第 24 章: モバイル アプリケーションの設計 • 第 25 章: サービス アプリケーションの設計 – 「一般的な考慮事項」は軽く読み飛ばしていいと思います。 – 特に自分が開発に関わるタイプのアプリケーションであれば、「具体 的な問題」はよく読んでおいたほうがいいでしょう。 – ただし、「例外管理」は、どこかの章で読んでおけばいいと思います。 – その他の考慮事項は、ここまでに出てきた内容のまとめにもなってい ます。 – ただし、「テクノロジに関する考慮事項」は、そんなに参考になりませ んでした。 – 個人的に、「関連する設計パターン」が好きなのですが、このガイドだ け読んでも意味が分からないと思います。
  13. わんくま同盟 東京勉強会 #60 第 III 部: アプリケーションの原型 その3 • 第

    26 章: ホストされているクラウド サービス – Windows Azure特有の話はほとんど出てきません。ストレージサー ビスの話がちょこっと書かれているぐらい。 – 「ビッグデータ」とか「大規模並列」とか「NoSQL」といった話は全然出 てきません。「スケーラビリティ」についてもあまり書かれていません。 – 「データの分離と共有」「データのセキュリティ」「マルチテナント」あた りは、SaaSを提供する側の開発者むけの内容かもしれませんね。 • 第 27 章: Office Business Application の設計 • 第 28 章: SharePoint LOB アプリケーションの設計 – とつぜん個別テクノロジー寄りの章で、ちょっとびっくりします。 – 「一般的なOBAパターン」は参考になりますが、共通言語にできるほ ど浸透しているとは思えません。 – 28章の「設計に関する具体的な問題」は、SharePointの機能紹介み たいになっています。 – 各考慮事項にはあまりページ数が割かれていません。
  14. わんくま同盟 東京勉強会 #60 付録 • 付録 A: マイクロソフト アプリケーション プラットフォーム

    • 付録 B: プレゼンテーション テクノロジ • 付録 C: データ アクセス テクノロジ • 付録 D: 統合テクノロジ • 付録 E: ワークフロー テクノロジ – テクノロジがカテゴリー分けされてまとめてあります。 – 「データアクセスはEFがいいのか、LinqToSQLがいいのか」みたいな内容で面白いです。 – 付録Aで概要をつかみ、個別に検討したいテクノロジについての付録を追加で読むといいで しょう。 – ただし、テクノロジ説明はどんどん陳腐化していきますから、その点は注意が必要です。 • 付録 F: patterns & practices の Enterprise Library – Enterprose Libraryのまとまった紹介です。 – 各アプリケーションブロックの紹介は興味深いのですが、競合するフレームワークやライブラ リについて触れていないのは残念です。 • 付録 G: patterns & practices パターン カタログ – 本文で出てきた設計パターンの簡単な説明と、関連するMSDNページのリンクです。 – リンク先は英語が多いのですが、一部は日本語化されています。
  15. わんくま同盟 東京勉強会 #60 結論 • 「答え」「正解」は書かれてない • 「具体例」「実例」は書かれてない • すべてのアプリケーションを網羅できているわけで

    はない • 開発プロセスは対象外 • あくまで「参考資料」「概要」「推奨事項」 考えの取っ掛かりとして 未経験な分野を学ぶ枠組みとして 他の開発者と対話・議論する下地として
  16. わんくま同盟 東京勉強会 #60 と、これではミもフタもないので • ガイドを無視するのは下策。 • ガイドを重視しながら「いかにはみ出るか」が重要。 • たとえば、「MVVMパターンをどう使うか/使わないか」

    • そもそも、パターンとは「目的、前提、効果、限界、関連 パターン」がそろって価値を持つ。 • パターンとプラクティス(実践)の繰り返しで みんなで成長していきましょう。 他の開発者と対話・議論 する下地として