プログラミング2009/07/01 22:16

今後の開発スタイルをどうすべきか悩む。
仕事は仕事で頂いた仕事をしっかりこなすとして、問題はオンラインソフト。

 Microsoftが今後主力にしたがっているのはWPFやSilverlightなんだろうけど、やはり.NETは痒いところにはどうしても手が届かない。特にWPFはUIの制作にBlendが別途必要という時点でどうかしてる(なくても作れるけど)。
 わざわざデザイナー絡めるほどのアプリ開発といったら不特定一般顧客を相手にしたパッケージ開発やWeb系くらいしか思い当たらないし、大半を占める業務系開発はそこまで凝ったものは必要としない(コストが嵩むし、デザインを懲りすぎた社内システムが長続きしたのを見たことがない)。それに一度デザインしたらそうそう変えるものでもない。いずれにせよ相当慣れないと生産性云々以前の問題なので、仕事や自己満足以外で選択することはまずない。

 だったらWPF以外ならどうか。たとえば「Print Album」を.NETベースで作ることを考えたらどうなるか。
 快適さを一切考えなければUI自体は非常に作りやすいし凝ったものが作れる。でもPrint Albumの機能をマネージコードだけで作れるだろうかと考えると非常に悩む。最低限アンマネージドの実装が前提となる機能も存在する(Susie32 plug-inなど)。実装中のαブレンドもCLRの枠内だけでは実現しようがないので、画像をバイナリベースでガリガリ書き換えているVC++コードも全て移植する必要があるけど、生産性に加えてパフォーマンス低下は免れない。

 エンジンを全てネイティブにして、CLI経由で外観だけ.NETにする手段もある――が、正直それだったらMFCで組んだ方がマシ――結局、いつも行き着くのはVC++(^_^; 別に.NETが悪いわけではない。C#はコントロールも豊富だし普通にアプリを作るぶんにはVC++とは比較にならんほど生産性は高い。でもOSの心臓をえぐってきた従来型の開発者にとっては、少々やりづらい時代ではある。

 実は、次期Print Album用にイチから設計し直してゼロから組み直したエンジンは遥か以前から存在する。それを使えば今抱えている課題が全てクリアできる。画像やフォントの任意角度描画や自由描画などの基本的画像処理機能はもちろん、Vista/7での動作も正式に保証できるようになる。ただ、ネイティブ開発である以上、正式対応かという意味では課題が残ってしまう。

 VCをとばして、VBやC#から触れている開発者を本気で羨ましいと思う。
 何でも思い通りにこなせてしまうVC++を最初から知らなければ、
 こんなくだらない選択肢で悩みなど持つ必要もなくなるのに。