とあるアプリの設計進化

15

Upload: yone64

Post on 30-Jun-2015

1.410 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: とあるアプリの設計進化
Page 2: とあるアプリの設計進化

WinRTの話はありません

この物語はフィクションです。◦登場するアプリケーションは実際には存在しません。

お断り

Page 3: とあるアプリの設計進化

業務パッケージ◦会計とかで、いろいろ分析するアプリケーション

背景

Page 4: とあるアプリの設計進化

メリット◦圧倒的なシェア。

ほぼすべての業務 PCにインストールされている◦お手軽 VBA◦超強力な分析関数

デメリット◦最大 65536行(件)◦フィルタリングも貧弱◦超自由な入力

ぱっと見でわかりやすい UIは作りにくい◦基本一人でしか使えない

始まりはいつも Excel

Page 5: とあるアプリの設計進化

メリット◦共有フォルダさえあれば、複数人で使用可能

サーバを立てる必要が無い◦ Accessがない環境でも、 Runtimeのみの配布が可能◦ Excelとの連係も比較的容易◦やっぱりお手軽 VBA◦帳票ツールとしても

デメリット◦ VBAなので、出来ることが限られる◦実行速度がイマイチ

そして Accessへ

Page 6: とあるアプリの設計進化

メリット◦本格的なアプリケーション作成 (?)◦豊富サードパーティ製コンポーネント◦ Office連携等が楽◦ VBAからの移行も用意

デメリット◦似非オブジェクト指向◦弱い型付け

遅延バインディング、 Variant型◦継ぎ足し作られてきた秘伝のソース

気付けばそこに VB6

Page 7: とあるアプリの設計進化

環境によって選択構成図 (VB6)

SQL Server

MDB(Access)

・・・・

VB6 実行ファイル

Access 一覧系帳票用

Excel 分析計算用単票系帳票用

DB MDB( Access)SQL Server

Page 8: とあるアプリの設計進化

顧客要求の多様化◦分析結果の経年変化 /細かい単位での分析 /将来予測

実行環境の多様化◦ OS/Office◦ Multi DBMS

使用者の多様化◦会計・事務・営業

安易なカスタマイズ

蓄積する複雑さ

Page 9: とあるアプリの設計進化

今までの反省を踏まえて、イチから設計見直し。複雑さの隠蔽

◦ UI層の分離 CurrencyManager/IBindingList/IEditableObject

◦ DBの抽象化 DAO Framework DbProviderFactory

◦ Officeとの決別 サードパーティー帳票ツール 計算ライブラリの自作

.net時代 (C#)

Page 10: とあるアプリの設計進化

UI層の裏側

【参考】とあるコンサルタントのつぶやき

IBindingList

・・・・

BusinessLogic

コードビハインド

CurrencyManager

Page 11: とあるアプリの設計進化

DBの抽象化

AccessSQL

Server

OLE DB Provider SQL Provider

BusinessLogic

DB Provider

DbProviderFactory

生成

SQLGenerator

Page 12: とあるアプリの設計進化

UIの一新◦ WPFによるインタラクティブな UIへ

より型安全な DBアクセス◦ LINQ to SQL

ClickOnceによるアプリケーション配布アプリケーションサーバの導入

◦ DBサーバの隠蔽 ドライバの配布 Firewall越しのアクセス

◦いずれはWebも Silverlightとか

第 2期 .net

Page 13: とあるアプリの設計進化

構成図 (最終 )

Oracle

・・・・

IIS

Page 14: とあるアプリの設計進化

通信の隠蔽

BusinessLogic

UI

通信のない場合

通信のある場合

UIBusiness

LogicServiceClient

ServiceInterface

HTTP

通信

WCFによる自動生成

Page 15: とあるアプリの設計進化

変更は局所的に封じ込める。境界をしっかり決めることで、置き換えが容易に

まとめ