極東 IT Engneers 勉強会「WPF どう教える?」

タイトル通り、勉強会に出てきた。

うーん、WPF を人に教えるときに、XAML 抜きの状態から教えて、仕組みがわかったところで初めて XAML に入る人がいるんだなぁ・・・
本になってるのでも1冊あったよなぁ、XAML が一切出てこない WPF 本。

で、思うに、それはダメなんじゃないかと。本当は勉強会の場で言えればよかったんだけども、帰りの電車の中で考えてて至った結論なんでここで。

WPF ってのは、

  • 誤: 依存プロパティとかの仕組みがあって、その上に XAML が載ってる
  • 正: XAML を実現するためには、依存プロパティとかの仕組みが必要だった

だと思うのね。XAML ありきでないとああいう設計にはなってないと思う。

時代背景的にも、HTML+JavaScript が大流行してた頃に開発されてるし。ASP.NETパラダイムWindows アプリでも使いたいって要望も高かったんじゃないかと。WPFWindows Forms の後継として見ちゃダメで、HTML+JavaScript とか ASP.NETWindows アプリ版と考えて、XAMLC# で書くのが基本だと思わないとダメ。CGI から PHP とか ASP に移行したときのことを思い出して。

となると、まず先に「XAMLGUI 作ります」って話をしないと、「どうして依存プロパティなんてものがあるの」っていう疑問に答える自然なストーリーが描けない気がする。

XML を毛嫌いする人が多いのも分かるし、XML は冗長すぎて人間が書くものじゃないって意見も分かるけども。XAML は HTML のようなものと考えて、Visual Studio の IntelliSense の補助を受けながら書くなら、人が手書きするのも全然おかしいことじゃない(もちろん、補完機能のない素のテキストエディタで手書きするものではないけど)。それに、階層的なデータ構造を表現するには、XML って割とありだと思うんだけど。HTML が受けたのも、GUI 記述に XML 型のタグ構造がマッチしてたからだと思うし。実行効率の面でも、WPF の場合、XAML はビルド時にバイナリ化されてからリソースに入るわけで、XML をパースするコストはかからないし。