WPF Whiteboard / adKinn
今年前半はWindowsアプリケーションの開発を行っています。
今回のWindowsアプリの開発ではWindows Presentation Foundation(WPF)とEntity Framework(EF)を使って開発しています。
WPFとはマイクロソフトが開発しているGUI開発基盤です。.NET Frameworkに含まれているので、WPFで開発したアプリは特別なツールをインストールしなくても使えます。
特徴としてはAngularJSでも使われている、MVVPパターンを使いロジックと画面を分離して開発ができるということです。TDDは終わったとの議論はありますが、TDDで開発している弊社としてはFormsアプリでの開発はシンドイ部分があります。素直にMVVPで開発した方が幸せになれるのではないかと思い採用しました。
約半年ほどですがWPFを使ってみての感想ですが、まず利点と思われるのは以下の通りです。
- GUIはかなり柔軟に対応できる
- ロジックとビューの分離はできる
- コマンドパターンでイベント操作は容易に開発できる
- 頑張ればViewModelもUnitTestがかける
- htmlのcssのようにGUIにプロパティを設定できるので、全体的な変更や個別の変更などいい感じで設定できる
- 描画がベクターベースなので、画像の拡大縮小が簡単
- データバインディングが強力
GUIに関してはTemplate機能を使い、ListViewなどにTextblockやCheckbox等のコントロール部品を挿入する事ができるのでかなり柔軟な対応が可能です。
MVVPパターンを使用してるので、ロジック側からみたGUIはViewModelになります。ViewModelとView間のデータバインディングが機能豊富なので、ロジックとGUIがいい感じで分離できます。
次にちょっとしんどかったところですが、
- データバンディングは自動的に行われないので、制御部分を書く必要があるのでコードの量が増える。
- WPFはあくまでもプレゼンテーション層のフレームワークなので、XAMLコードでDIみたいな使い方はできない。
- 真面目にMVVPを守るとダイアログメッセージを表示するだけでも結構大変
- GUI部分は付属のBlenderはあまり使えなく、結局VS側で手動でコードする方がいい
- 印刷のフォーマットを作るのが大変
- 日本語の情報はあまりない
利点のところで、データバインディングがいいと書きましたが、そのデータバインディングを使いこなすまでが結構大変でした。
MVVPパターンは過去にAngularJSで使用していたので、同様にViewModelのプロパティを変更したらViewが再描写されるとばかり思っていました。
MVVPパターンは過去にAngularJSで使用していたので、同様にViewModelのプロパティを変更したらViewが再描写されるとばかり思っていました。
しかし、WPFでは自分でプロパティが変わったことをViewに通知しなければなりません。
はじめはエラーメッセージが何故表示されないのか悩みました。再描写が必要なプロパティに制御コードを書く必要があり、コーディングの量は多くなります。
VisutalStudioに付属しているBlenderというソフトで簡単に画面作成ができると思っていたのですが、やはり細かい設定ができないし、勝手にタグを追加してしまうので、使わなくなりました。結局手動でタグを打ちました。
日本では使われないのでしょうか、あまり日本語の情報はありませんでした。なので海外サイトを検索しまくることになりました。StackoverFlowがなければエラい事でした。
使用してみての感想はやっぱり後発のフレームワークだけあって良く出来ていると思います。Windowsでの開発はちょっとと思っていましたが、WPFでの開発ならばちょっとは幸せになれるのではないでしょうか。
長くなってしまったので、EFは次回にします。
0 件のコメント:
コメントを投稿