とあるアプリの設計進化
TRANSCRIPT
WinRTの話はありません
この物語はフィクションです。◦登場するアプリケーションは実際には存在しません。
お断り
業務パッケージ◦会計とかで、いろいろ分析するアプリケーション
背景
メリット◦圧倒的なシェア。
ほぼすべての業務 PCにインストールされている◦お手軽 VBA◦超強力な分析関数
デメリット◦最大 65536行(件)◦フィルタリングも貧弱◦超自由な入力
ぱっと見でわかりやすい UIは作りにくい◦基本一人でしか使えない
始まりはいつも Excel
メリット◦共有フォルダさえあれば、複数人で使用可能
サーバを立てる必要が無い◦ Accessがない環境でも、 Runtimeのみの配布が可能◦ Excelとの連係も比較的容易◦やっぱりお手軽 VBA◦帳票ツールとしても
デメリット◦ VBAなので、出来ることが限られる◦実行速度がイマイチ
そして Accessへ
メリット◦本格的なアプリケーション作成 (?)◦豊富サードパーティ製コンポーネント◦ Office連携等が楽◦ VBAからの移行も用意
デメリット◦似非オブジェクト指向◦弱い型付け
遅延バインディング、 Variant型◦継ぎ足し作られてきた秘伝のソース
気付けばそこに VB6
環境によって選択構成図 (VB6)
SQL Server
MDB(Access)
・・・・
VB6 実行ファイル
Access 一覧系帳票用
Excel 分析計算用単票系帳票用
DB MDB( Access)SQL Server
顧客要求の多様化◦分析結果の経年変化 /細かい単位での分析 /将来予測
実行環境の多様化◦ OS/Office◦ Multi DBMS
使用者の多様化◦会計・事務・営業
安易なカスタマイズ
蓄積する複雑さ
今までの反省を踏まえて、イチから設計見直し。複雑さの隠蔽
◦ UI層の分離 CurrencyManager/IBindingList/IEditableObject
◦ DBの抽象化 DAO Framework DbProviderFactory
◦ Officeとの決別 サードパーティー帳票ツール 計算ライブラリの自作
.net時代 (C#)
UI層の裏側
【参考】とあるコンサルタントのつぶやき
IBindingList
・・・・
BusinessLogic
コードビハインド
CurrencyManager
DBの抽象化
AccessSQL
Server
OLE DB Provider SQL Provider
BusinessLogic
DB Provider
DbProviderFactory
生成
SQLGenerator
UIの一新◦ WPFによるインタラクティブな UIへ
より型安全な DBアクセス◦ LINQ to SQL
ClickOnceによるアプリケーション配布アプリケーションサーバの導入
◦ DBサーバの隠蔽 ドライバの配布 Firewall越しのアクセス
◦いずれはWebも Silverlightとか
第 2期 .net
構成図 (最終 )
Oracle
・・・・
IIS
通信の隠蔽
BusinessLogic
UI
通信のない場合
通信のある場合
UIBusiness
LogicServiceClient
ServiceInterface
HTTP
通信
WCFによる自動生成
変更は局所的に封じ込める。境界をしっかり決めることで、置き換えが容易に
まとめ