WPF開発やります

めっさお久しぶりです。
やっと会社での仕事も一段落し、勉強する時間もとれるようになってきました。

現在の会社に入ってから3年目に突入しましたが、久々に過去の自分のブログを読んで、コーディングが乱れ切っているのを実感しています。
その主な原因が、OfficePIAとAcrobat SDKにあることは否めません。

OfficePIAとは、Microsoft OfficeC#で制御可能にするCOMのIACで、要するにVBAでできることをC#でやれます。
これを使ってWordを外部からゴニョゴニョするわけですが、なかなかどうしてハイブロウなバグがいくつも出てきます。
Word2003のころはまだよかったのですが、Word2010に移植したら、メモリリーク。それもWord側で。
いろいろ探っていくと、ループするだけでメモリ使用量が増えていく。タスクマネージャーを見ながら、どこで漏れているのかを類推していく以外にデバッグ方法がありません。そうやって、メモリリークしない方法で書いていくわけです。ソースの可読性もクソもありません。他にも、印刷すると落ちてしまったり、画面と印刷結果があっていなかったり。ソースを寄こせといくら叫んでもM○に届くはずもありません。なのにWord2013とか、やめてくださいマジでもう。

Acrobat SDKは、上に比べるとなかなかよくできています。ただ、いかんせん言語がCな上に、プラグインにするとエントリポイントがAcrobat側になってしまったりして、使い勝手がよくありません。最近、SDKの一部の機能がサロゲートペアに対応していないことが判明して、頭を抱えています。自分の担当じゃないですが。

これらの要素技術をまとめる上で、.NETというのはなかなかよくできています。
結構なんでも連携できるし、デザインパターンを駆使することで、ある程度ソースの見栄えもよくなりました。

で、まあ、そろそろ次の段階に進もうか、ということで、やっと.NET3.5です。
(4.0?それ何のお菓子ですか?)

WPFですが、専門書籍を探すのに苦労しました。
茨城の片田舎から東京まで出て、見つかったのがたったの2冊。
WPFなんて、見たらだいたいわかるんじゃね?仮にもFlex使いでしょ?」と言われそうですが、まあその通りです。
ですが、新しいフレームワークを使うときには、大抵新しいプログラミングパターンも同時に覚えることになります。

WPFでいえば、MVVMパターンがそれにあたります。
ViewModelという、いってみればそのビュー(フォーム)専用の、イベント処理やらなにやらをロジックとプロパティとともにまとめた小さなモデルを用意してやって、そこである程度整理されたデータを上位のモデル(MVCでいうところのモデル)に渡します。WindowsFormでも採用できるスタイルではあるのですが、WPFでは半ば強制です。
ボタンを押したときのイベントも、直接コマンドパターンのコマンドオブジェクトとバインディングできるというかバインディングしやがれテメエみたいな作りになっていて、ようするに「コードビハインドになんか余計なことを書いたらコロス」というスタイルになっています。

こういうスタイルの押し付けは奇麗なコーディングをするうえで気持ちいい一方で、イレギュラーなことをするときには結構困ったりします。そのためにも、本格的にコーディングする前に、じっくり調査しておかないといけないのでした。

もうひとつ勉強しているのが、SharePointです。
これは既存のサーバーソリューションとの連携ができるかどうかの調査、という位置づけです。
相変わらずサーバー製品にはアレルギーがあるのですが、TechNetから落としてきてインストールしてみて、初めて「あ、これって結局CMSだったのか」と気付いたというマヌケさ・・・。個人的には、こういうもので製品を作ると、際限なく仕様変更や要望が入るので、ささっと作ったらとっとと離脱したいです。人生は短い。

そんなわけで、学習メモを再開していきたいと思います。
たまにアフィとか貼るかもしれません。最近250円ほど入ったようなので。