- SlideBoom

とある
ソフトウェアアーキテクチャ設計の
抜粋版
筋道
設計パターンから導き出したソフトウェアアーキテクチャ
2013.3.16
RIAアーキテクチャ研究会 第5回セミナー
尾上 雅則
 尾上
雅則 (おのうえ まさのり)
 Microsoft
MVP for Visual C# (2012/7~2014/6)
 C#er
/ MVVMer
 フリーランス 9年 ⇒ 株式会社 gloops (2012/11~)

初会社員9ヶ月目!
 Blog
– the sea of fertility http://ugaya40.net
 Twitter
- @ugaya40
 Facebook
自己紹介
- http://facebook.com/ugaya40
1.
ソフトウェアアーキテクチャと設計 ここだけ抜粋
(補足) アキレスと亀と仕様書
2.
3.
4.
使用頻度の高い視点
1.
Presentation Domain Separation
2.
Domain Logic pattern
様々な要求と様々なアーキテクチャ
1.
Windows Phone カタログアプリ
2.
Webソーシャルゲーム
まとめ
Agenda
ソフトウェアアーキテクチャと設計
 ソフトウェアアーキテクチャという言葉の定義について、万人の合意は存
在しない
 ソフトウェア開発は、無手で挑むには多くの場合複雑すぎる行為である。
 ソフトウェアアーキテクチャとは、ソフトウェア開発という人間にとって
複雑すぎる事を整理・細分化した結果と解釈されるのがおそらく正しい。
ソフトウェアアーキテクチャって?
 「複雑すぎる事を整理する」というのは何を指すか
 そもそも複雑とは大量の複数の要素の関係が絡み合っている状態
 大きすぎる・複雑すぎるものを、人が認識しやすいように特定の視点や基
準で細かく・極力単純化されるよう切り離し、細分化された成果の組み合
わせによって元の大きすぎるもの・複雑すぎるものを表現できるようにす
る事。
 そしてそれが設計。そして設計のための1アプローチとして武器になる知
見が設計パターンです。
複雑すぎる事を整理するって?
 「複雑すぎるもののを極力単純・細分化するための知見」が設計パターン。
でもそれはどんな知見の集合なのか?
 手順?

手順だとしたら、細分化する必要がないほど小さなアプリに適用する必要がないのは
何故?

手順ではない。
設計パターンって?
設計パターンって?
サンプルコードを読んでもよくわから
ないのは何故?
これ、全部同じMVVMパターン
 MVC系
アプリケーション
Presentation
Repository
 Repository
設計パターンって?
Pattern
Presentation
設計パターンって?
Repository
 MVC系
Presentation
Repository
 Repository
Pattern
この「一刀一刀の狙い・視点」こそが
設計パターンって?
設計パターンと言われるものになるわけ
です。関心事の分離ですね。
 サンプルコードから学ぼうとすることは・・・
 こういう断片から「一刀一刀の狙い・視点」を学ぼうとすることと同じ
設計パターンって?
 同様に対象のアプリケーションが十分小さかったり単純ならば
アプリケーション
アプリケーション
「複雑すぎるものへの対処」
という設計パターンを考慮する動機そのものを失います。
設計パターンって?
 またアプリの全体像は毎回違うもので
アプリケーション
アプリケーション
アプリケーション
毎回同じ視点で関心事の分離を行えるものでもないし、
たとえ同じ視点で行ったとしても、それはアプリケーションごとに似ても似
つかぬ違う断片(コードの責務の差として現れる)になりますよね
設計パターンって?
 「複雑すぎるものを極力単純・細分化するための知見」が設計パターン。
 アプリケーションを細分化する「視点」そのものが設計パターン。
 アプリケーションに適切なアーキテクチャは毎回変わってくる
 単純・細分化する必要がないほど小さい
パターンを考慮する動機がない
or 単純なものなら、そもそも設計
サンプルコードから学ぶ事はできない。切断された断片から、一刀一刀の視
点を学ぶことなんてできやしない。
設計パターンって? - まとめ