WPFって何?初めてWPFでWindowsアプリを作ることになったときにとりあえず採用すべきライブラリ

f:id:hrmch-ioii:20170411023317p:plain

元プロの社畜 @nabeemichi です。

仕事でWPFを利用してWindowsアプリを作らないといけないのだけれど、

日本語のWPFの情報が少なすぎてビビってる。

Java出身のぼくからするとまじでしょんべんちびるくらい情報ない。

英語の情報探せばいいのかもしれないけど、それでも少ないと思う。

WPFって何?状態から初めて、1週間くらいで、ある程度アプリ作れるようになった。

でも、だいぶ遠回りしてキャッチアップしてしまった。

WPFとは?

ぼくはC#すら触ったことがない。

だからWPFなんて聴いたことすらなかった。

まさか、いまさらWindowsアプリつくるなんてことすら考えてなかった。

だから、このレベルからスタート。


Windowsアプリを作るためのもの。

慣れたら今までよりも簡単にアプリ作れますよ。

とマイクロソフトが言ってるもの。

MVVMパターンを利用するのがあたりまえとかいうことになってる。

正直、このくらいの理解で十分だ。

これ以上突っ込んだら、宗教的なものになる。

WPFでアプリ作ると決まってるなら、これ以上WPFについて自分の頭のメモリを利用するなんて意味がない。

とにかく入れておくライブラリ

MVVMパターンを補助するライブラリは必須で入れるべき。

Prismとか、MVVM Light Toolkitとかなんでもいいんだけど、

とにかく入れる。

そもそもMVVMってなに?

MVVMってのは、model, view viewmodelに分けた考え方。

全部疎結合でつくりましょうね。

その上で、画面構成部分と画面に表示するデータ部分とビジネスロジック分けましょうとかいうやつ。

最初はこんくらいの理解でいいと思う。

ここもかなり宗教論争てきで、そんなに厳密に理解する必要なし。

やってくうちに、これはModelだな。

だってこっちにしないと疎結合にならんし、改修するときこっちもなおさないけんじゃーとかわかってくるから大丈夫。

まずWPFのキャッチアップはいらない。Prismをキャッチアップせよ

ぼくが採用したのはPrism。

MVVM Light Toolkitでもよかったけど、

そこそこ複雑になりそうなのと、Prismは機能を小分けにしやすそうだったので採用

WPFはMVVM提唱してるくせに、おまじないのような無駄クラスをかかないといけない。

かんぜんにお作法状態。

正直、MVVMあたりまえな雰囲気だしてるならWPF事態がサポートしろよ!

って感じのレベル。

そんなの使ってキャッチアップしても意味ない。

どのくらい意味ないかというと、数学の積分の定義のlimitΣをキャッチアップしてるのと同じくらいどうでもいい。

積分したいなら、積分のルールだけ覚えておけばなんとかなる。

さらに深く考える必要があるなら、理解すればいいだけ。

初心者の状態では理解しても意味なし。

WPFの機能を理解してる暇あったら、ライブラリのキャッチアップしたほうが作れるようになる。

少なくとも、初心者のうちは理解しなくていい。

Prismの最大のメリットはmoduleという考え方

ほかのMVVMのライブラリにあるかどうか調べてないけど、

Prismでは画面の中で小分けにできるmodule機能がある。

これは重要だ。

画面構成内の機能に依存せずに開発が可能なため、締め切り間近のやばいときに分業しやすくなる。

さらに、まずいときはそのままmoduleごと削ぎ落とすこともできる。

開発者としての予防線が貼りやすい。

まとめ

ぼくはPrismを採用した。

Prismはライブラリにそって開発するとMVVMに勝手になっていきそうな気配も感じてる。

Prismでなくてもいいのだけど、MVVMをサポートするライブラリを入れてから

キャッチアップすることが、むだ時間をつかわないでWPFでの開発ができる。

なんなら、MVVMライブラリのキャッチアップをすることがメインになる。

その後で、気になるとこがあればWPFの本来の処理を理解すればいい。

時間は有限だ。

締切も甘くはない。

生産性を上げるには、まずライブラリありきでキャッチアップしたほうが効率的だった。

なぜなら、おまじない的なお作法が多すぎるのだよ!WPFは。

つまり、理解する必要がないルーチンソースコードを理解してもしょうがないのだ。