XAMLいいよXAML

XMALとは、マイクロソフトの作ったマークアップ言語。ぐぐると、基本的にWPFsilverlightとセットで語られる。
多くはWPFなどで、インターフェース設計で使えるもので、多くのwebサイト開発のように、デザインとロジックの分離を可能とする技術である。
実際、WPFを使ってみると便利で、ボタンの配置などの情報を今までのデザイナソフトからのマウスでの指定や、一つ一つのコントロールをNewして、個々のクラスに細々とパラメータを代入するような開発と比べると、XMLで記述しているので、他のところで作ったものをコピペで簡単に移植できたりする。

連載:XAMLの基礎知識 - @IT
第2回 WPFとXAMLの関係とは? XAMLの基礎を学ぶ (1/3):連載:WPF入門 - @IT

しかし、これを読むと分かるけど、XAMLの本質は、インタフェースのデザインのためのものではない。
オブジェクトの依存関係を含む、設定を記述する言語である。
今までは、オブジェクトの永続化というと、バイナリにするか、制約の多い、XML記述にするかの選択であったけれど、もう一つ選択肢が出来たことになる。
また、WPFでの開発でも分かるとおり、XAMLは編集性が高い。そして、テキストのXAMLファイルを動的に読み込めて扱える。この二点により、プログラミングとして、手作業で動的に変化して欲しいところを記述するのに最適である。

そんなわけでXAMLいいよXAML
使い方も簡単。.Net Framework4.0から 「System.XAML名前空間が追加された。ここを使えばOK。
そして、難しいことを考えず、XamlServicesを使えばOKっぽい。
LoadとSaveが手軽に出来る。

http://msdn.microsoft.com/ja-jp/library/system.xaml.xamlservices.aspx

ここに書いてあるように、検索するとよく見つかる、system.windows.markup.xamlwriter はWPF専用なので、普通のクラスには使ってはいけない。

クラスの頭に、[ContentProperty("対象のプロパティ")]を指定すると、XAMLがすっきりする。
パブリックプロパティを記述するので、読み取り専用にするとか、メソッドにしてしまうとかすることで、不可視にするとさらにXAMLがすっきりする。

また、XamlServicesから出力したXAMLWPFのコントロールに貼り付け、ルートのクラスに「x:Class="Sample.MyGrid"」などの設定をちゃんとやると、普通のWPFのように、イベントパンドラを新たに付け加えることが出来る。こんな斜め上なやり方をやらなくても、直接XAMLファイルを扱えるテンプレートが欲しいものだ。

そういえば、XAMLが使えるという感覚が出てくると、XAMLを編集するために特化した、コントロールを欲しくなるのだが、検索しても無いようだ。
今のところ、VS.Netが最強という感じなのかな?

こんなことを調べまくったのは、これを作っていたためです。Webクロールするための、フレームワークです。XAML周りは作りかけですがw
Rawler

クロールの性格上、webページに合わせる必要があるので、それぞれのサイトに対して個別対応しなくてはならない。そのため、ユーザにクロールプログラムを作ってもらわなくてはいけない。しかし、webページの取得、解析のためのテキスト処理、データの書き込み、スレッド処理等を自分でやれと言っても、様々な分野にわたるので結構難易度が高い。これを肩代わりするためのフレームワークです。

こんな感じに書くとクロールプログラムとなって、ウェブページのここの要素をセマンティックに取得できる。

XAMLの形式に沿って親子関係をベースにしてプログラムが進むように作っている。たぶん、こういうことをするためにXAMLがあるのだと思う。


あんまりにもWPFがらみのXAMLの話は多いのだけど、XAML単体の話はなさ過ぎるので書いてみた。