WPF(Windows Presentation Foundation)+XAML入門 前編
Vista時代のプログラミングモデル .NET Framework 3.0入門(1)
-
- Page 2
XAMLについて
WPFの特徴の1つは、XAML(Extensible Application Markup Language:ザメル/ザムル)と呼ばれる言語を用いてアプリケーションのUIを記述できる点にあります。XAMLはXMLベースの言語で、ボタンや2D/3D描画のためのコンポーネントを、XMLのタグを用いて表現します。
例えば、ウィンドウ内にチェックボックス・テキストボックス・ボタンを配置した状態のXAMLは次のようになります。
<Window x:Class="WindowsApplication1.Window2" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="WindowsApplication1" Height="300" Width="300"> <Grid> <CheckBox Height="13" Margin="50.2366666666667,21,0,0" Name="checkBox1" Width="65.7633333333333"> CheckBox </CheckBox> <TextBox Height="26" Margin="50,46,142,0" Name="textBox1"> </TextBox> <Button Height="27" Margin="53,96,0,0" Name="button1" Width="75"> Button </Button> </Grid> </Window>

ここで使用しているCheckBox、TextBox、ButtonといったXMLの要素はそれぞれ.NET Framework 3.0のクラスに対応します。HeightやNameといったXMLの属性はそれぞれのクラスのプロパティに対応します。
WPFでは、このようにXAMLファイルでUIを定義し、実際のイベント処理などはXAMLと連携して動作するコードビハインドのプログラムファイルに記述します。これはちょうどASP.NETのモデル(.aspxファイル内にASP.NETのタグを用いてさまざまなコンポーネントを配置し、イベント処理はコードビハインドの.aspx.cs/.aspx.vbファイルに記述する)に似ていると言えるかもしれません。
ASP.NETでは、コードビハインドモデル以外に、.aspxファイル内に直接プログラムを記述するページインラインモデルを用いることができますが、XAMLでも同様に、XAMLファイル内に直接プログラムを記述することができます。
<x:Code> <![CDATA[ private void button1_Clicked(object sender, RoutedEventArgs e) { //イベント処理 } ]]> </x:Code>
また、XAMLを単純にコンテンツ記述言語として考え、コードビハインドのプログラムを実装しないことも可能です。その場合は「Loose XAML」と呼びます。
WPFを採用する理由
「WPFを使えば3Dなどの新しい機能を使えることは分かった。でも当分3Dを使った開発の予定はないし、無理してWPFに移行する意味はあまりないのでは……」
もっともな意見ですが、開発者にとってのWPFのメリットは3Dなどの新機能を利用できること以外にも多くあります。とりわけ、Win16時代から設計がずっと変わっていないGDI(Windows XPでC++言語ベースのGDI+が採用されたものの、WPFほど抜本的な変更ではなかった)の枠組みを捨て、完全に新たな標準となったことで、開発者がWPF開発を覚える意義は大きいと言えます。
GDIを直接使うには大量のコードが必要だったため、GUIアプリケーションを作成するためにこれまでに多くのフレームワークが出てきました。言語は限定されますがVisual BasicやDelphiはGUIアプリケーション開発への1つの解でしたし、C++言語ではMFC・ATL/WTLなどのライブラリを使うのが一般的でした。こうしたフレームワークごとにUI部品の使い方は異なり、そのたびに学習し直す必要がありました。もちろんWPFでも新たな技術を覚える必要がありますが、基本的にはWindows Formsの延長上にある技術であり、.NET開発になじみがある開発者であれば、比較的短期間で習得することができるでしょう(ただしXAML自体の仕様はなかなか大きいので、すべてを把握するのはやや大変かもしれません……)。Windows Vistaの基盤として採用されたWPFは、Windows上の標準UIコンポーネントとして、今後もずっとサポートされることは間違いありません。当面廃れる心配がない技術ですので、安心して学習することができます。
また、XAMLというUI記述言語を採用することで、Webアプリケーション開発では一般的ながら、スタンドアロンアプリケーションではあまり重視されてこなかった、デザイナと開発者の連携が容易となります。例えば現状ではExpression Blendなどを利用することで共同作業できます。これまでのアプリケーション開発では、Windowsアプリケーションの標準的なUI作法にただ従っていればよかったかもしれませんが、きちんとデザインされたWebが浸透した現在では、いかに使いやすく魅力的なUIを提供するかという部分がアプリケーション開発の重要な側面となっています。これまでの、デザイナから上がってきたラフスケッチを見ながら開発者が(デザインに向いているツールとは言い難い)Visual Studioを用いて画面を作成し、またデザイナからのレビューを受けて開発者が修正、といった面倒な作業が不要となって、それぞれが自分の本業に集中できる環境となれば、作業効率・品質共に向上することでしょう。
手放しで褒めすぎた感もありますが、WPFが魅力的な技術であることは確かです。ぜひトライしてみてください。
この記事は参考になりましたか?
- Vista時代のプログラミングモデル .NET Framework 3.0入門連載記事一覧
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 土井 毅(ドイ ツヨシ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
