Entry

Windows プログラミング MFC vs SDK + 独自クラスライブラリ

2011年01月12日

Microsoft Visual Studio で Standard Edition 以上のパッケージを利用している場合,C++ のプログラミングに MFC を利用できるわけだけれども,こいつを利用するか否か,非常に悩むところがあります。最初に決めることなんだけれども,一度決めたらなかなか修正がきかないので慎重に決定したいところ。MFC を使わないとなると,SDK の WinAPI を生で叩いてゴリゴリやることになる。C++ ならクラスライブラリを作るのが普通だと思います。さて,どっちを選べばいいでしょう?

と,こゆ話を,もう随分前に,あるパッケージベンダ(かなり有名)の開発部長さんと話したのでした。思い出したので書いておきます。

その某ベンダさんでは,MFC が整備される前から人気の製品を作っていたので,GUI ライブラリを独自に作っていたのでした。しかし,GUI のライブラリまで保守するとなると,かなりの工数を取られてしまいます。また,SDK から Windows プログラミングを知っている人も少なくなっている。できれば標準(なのか?)の MFC に移行して,保守と技術の継承をスムーズに行いたいということでした。そりゃもっともだ。

一方,個人的に,GUI のライブラリを自前で作ることにもメリットがあると思うんですね。「MFC 使えねーから」とか「クソMS氏ね!」とかではなく,もちっと積極的な理由で。少し挙げてみます。

  • C++ の文法から(比較的)乖離しないで,GUI のプログラムを書ける。
  • マルチプラットフォームに(比較的)対応しやすい。
  • STL や boost のような,標準/次期標準ライブラリとも親和性が比較的高い。
  • VS の Express Edition をメインに使う場合は事実上必須。
  • theApp ってトップレベル(グローバル)のインスタンスなんだよね……(ま,いいんだけど)。

もちろん,これには「そう書けば」という留保がつくわけで,書けない場合は Standard Edition 以上を買って,MFC を使うしかありません。しかし,アマチュアプログラマにとって,自前の GUI ライブラリがあれば,Express Edition だけで本格的なプログラムを作れるのは魅力です(「そう書けば」だが)。また,MFC は基本的にマクロを大量に利用していて,独自の文法構造を持っている箇所があります。こゆマクロは他のクラスライブラリで利用することができないので,一度 MFC にすると決めたら後戻りはできません。他方,デメリットはというと,

  • C++ はもちろん SDK を深く理解していないと端的につらい。
  • 自分で作ったものは自分で保守しなくちゃいけない(既出)。
  • GUI の機構を設計するに当たって(ウィジェットの配置とか)一定のポリシーがないと,単に WinAPI を薄いラッパで包んだことにしかならない。
  • 熱い情熱を持って設計/実装しても,利用者からすると,実は「使えりゃどっちでもいい」な評価だったりする。

箇条書きにするとありきたりな話になってしまうわけですが……。

個人的には,やはり保守も含めた工数との兼ね合いに尽きるのだと思います。単発のプロジェクトでひとつのアプリケーションを作るだけなら,「MFC 使った方が早いに決まってるじゃん」とゆことになるわけだけれども,今後の開発(マルチプラットフォーム化や開発環境整備のコスト)も含めて総合的に考えると,必ずしも MFC が有利とは言えない気もします。ちゃっちゃか作れる人は,クラスライブラリを作っちゃった方が早かったりもする。

GUI のクラスライブラリを作るのに一生懸命になって,本題のアプリケーションを作れなかったら本末転倒もいいとこですしね。やはり悩ましいところです。

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN