TypedMVVMはDavide Zordan氏の開発した,WinJSやTypeScript, MVVMを使用してWindows Storeアプリを記述するためのサンプルとライブラリのコレクションだ。WinJSで開発されたシンプルなWindows StoreナビゲーションアプリのMVVMパターンを通じて,関心事の分離を適用することにより,実世界のシナリオにおけるTypeScriptの使用を可能にする。
氏の説明によれば,すべての .jsソースファイルが,クラス/インターフェース実装を備えた新たなフォルダ構造のTypeScriptに変換されている。designDataがデザインタイムのデータの実装を提供してブレンダビリティ(Blendability, 混合性)を担保する一方で,ライブラリにはTypeScript定義やRelayCommand<T>やViewModelBaseといったTypedMVVMコアクラスが格納されている。パッケージにはサービスやビューモデル,ビューモデルファクトリ用のインターフェース,さらにビューモデルの具象クラスやビュー定義なども含まれる。
InfoQではMicrosoft MVPであるソフトウェアアーキテクト兼開発者の氏にコンタクトを取り,TypedMVVMについて詳しく聞いた。
InfoQ: TypedMVVMを開発した背景について説明して頂けますか?
私は構造化された方法でコードを書くのが好きで,"関心事の分離" やオブジェクト指向,モジュール化,テスト容易性,拡張性といったベストプラクティスを受け入れたいと思っています。
TypeScriptは開発者に対して,プロフェッショナルなアプリケーションを開発する上で基本的なものだと私が考える機能を,数多く提供してくれます。特に,型のチェックと推論リファクタリング,インテリセンスの完全サポートといった機能は,複雑で大規模なアプリケーションを開発する場合には必須のものです。このような理由から私は,TypeScriptを使用して,MVVMデザインパターンをWinJSナビゲーションアプリに適用する方法を示すような,シンプルなクラスセットを開発しようと思いました。
InfoQ: TypedMVVMを使わずに開発されたWindows Storeアプリとは,どのような違いがあるのでしょう?
WinJSで開発された通常のWindows Storeアプリでは,コア言語としてJavaScriptを使用します。TypedMVVMでコア言語として使用するのはTypeScriptです。TypeScriptは静的型付け,インターフェース,クラス(ほんの数個ですが)を備えていますが,最終的にはプレーンなJavaScriptにコンパイルされます。その他には,ViewModelパターンを初めて使う開発者が,適切な構成とテスト性を備えたコードを記述できるようにするためのヘルパクラスがいくつか含まれています。
InfoQ: TypedMVVMを使用すると,どのようなタイプのアプリケーションが開発可能なのですか?
当面のターゲットは,WinJSフレームワークを使用したWindows Storeアプリです。
InfoQ: TypedMVVMを実装した実際のアプリケーションとして,何かご存じのものはありますか?
リリースされたばかりですので,現時点では,実際のプロジェクトに関する情報はありません。
InfoQ: 今後のロードマップについて教えてください。
ロードマップはまだ作成中ですが,制御の逆転(inversion of control)や疎結合メッセージング,アプリケーション固有サービスといったものを考えています。これらは本当に有効なものになるでしょう。