SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Visual Studio 2008徹底入門(AD)

Visual Studio 2008で標準搭載されたWindows Presentation Foundation

Visual Studio 2008 徹底入門 (5)

  • このエントリーをはてなブックマークに追加

WPFについて

 今回は、これらWPF/WCF/WFフレームワークの中からWPFについて取り上げます。

 「WPF」は.NET Framework 3.0で導入されたユーザーインターフェイスフレームワークです。

 これまでWindowsのグラフィックス機能を提供してきたGDIが基本的に2D描画機能のみだったのに対し、WPFは3Dグラフィックスを含め、さまざまなグラフィックス機能を扱うことができるようになっています。

 WPFでは、XAML(Extensible Application Markup Language:ザメル/ザムル)と呼ばれるXMLをベースとした言語を使ってユーザーインターフェイスを記述することができます。また、WPFは高度な3Dグラフィックス機能を持つGPUを生かした描画を行うことができます。これまでゲームなどにしかそのポテンシャルを生かすことができなかったGPUの膨大な計算能力を用い、豊かなUIを実現することができます。

XAMLとは

 「XAML」とは、ユーザーインターフェイスをXML形式で表現したものです。

 .NET Framework 2.0までで使用していたWindows Formsでは、ユーザーインターフェイスがコードの固まりとして表現されていましたが、これはコントロール間の親子関係が掴みづらく、またデザインを直接編集するのが難しい方式でした。

 XAMLでは、ユーザーインターフェイスに使用するコントロールをXMLの要素で、コントロールのプロパティをXMLの属性で表現し、コントロールの入れ子関係などもXMLの要素の親子関係で自然に表現することができます。

 例えば、以下はウィンドウ上にテキストボックスとボタンを配置したXAMLコードです。

 TextBox要素、Button要素とその属性がコントロールとプロパティに対応しています。

XAMLサンプルコード
<Window x:Class="WpfTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="WpfTest" Height="600" Width="400"
>
<Grid> <TextBox Height="20" Name="textBox1"></TextBox> <Button Height="30" Name="button1" Width="120">Button</Button> </Grid> </Window>
プロパティ要素について
 コントロールのプロパティのうち、数値や文字列はそのままXMLの属性として表現することができますが、文字列として表現できない複雑なプロパティについては、プロパティ要素という方法で記述します。プロパティ要素は、「コントロール名.プロパティ名」という名前の要素として子要素に配置します。
例えば、矩形を特定の画像で塗りつぶす場合、矩形を表すRectangleコントロールの塗りつぶし方法を示すfillプロパティに、ImageBrushオブジェクトを設定する必要があります。これは次のようなXAMLコードで表すことができます。
プロパティ要素のXAMLコード
<Rectangle Width="100" Height="100"
>
<Rectangle.Fill> <ImageBrush ImageSource="fill.png"/> </Rectangle.Fill> </Rectangle>
この場合、Rectangle.Fill要素がRectangleコントロールのFillプロパティを表すプロパティ要素です。

 XAMLには、Windows Formsと同様のユーザーインターフェイスの静的な構造を記述する機能だけでなく、タイムラインに沿ったアニメーション効果や、さまざまなグラフィックス機能が収められています。

 XAMLはXML形式であるため、Visual Studio以外のさまざまなツールでサポートされていくものと期待されています。ソフトウェア開発の現場において、デザイナがデザインに特化したツールでXAMLを出力し、それを開発者がVisual Studio 2008で開いて実際のコードを記述していく、といった作業分担も可能となっていくでしょう。

 例えば、Microsoft Expression Blendは、XAMLをサポートしたデザインツールです。Expression BlendはVisual Studioと同じプロジェクトファイルを扱うことができますので、Expression BlendとVisual Studioにより、デザイナと開発者が協同してアプリケーション開発に取り組む体制を整えることができます。

WPFのアプリケーション形態

 WPFは以下の2種類の形態で使用することができます。

  1. WPF アプリケーション
  2. 通常のWindows Formsアプリケーションと同様の、スタンドアロン型のアプリケーションです。XAMLを使用し、Windows Formsよりも豊富なグラフィック機能を持ったアプリケーションを作成することができます。
     
  3. WPF ブラウザ アプリケーション
  4. Webブラウザ(Internet Explorer / Firefox)上で動作する、XAMLを使用したプログラムです。XAMLブラウザアプリケーション(XBAP)とも呼びます。
    クライアント環境に.NET Frameworkがインストールされている必要があるため、主にイントラネットなどで、リッチクライアントを作成する用途に向いています。
Microsoft Silverlight
 WPF ブラウザ アプリケーションとは別のリッチクライアント技術として、Microsoft Silverlightがあります。
SilverlightはWPF ブラウザ アプリケーションとは異なり、クロスブラウザ・クロスプラットフォームを実現したフレームワークです。専用のプラグインをインストールする必要があるものの、Windows(Internet Explorer / Mozilla Firefox)/Machintosh(Safari / Mozilla Firefox)がサポートされています。
以前はWPF/Eと呼ばれており、XAMLを使用するという点ではWPFに類似した技術ですが、WPFには含まれていません。

 Silverlightを含め、これらのアプリケーションの特徴、用途についてまとめると、次のようになります。

WPF / Silverlightの特徴/用途
WPF / Silverlightの特徴/用途

 あくまでもWindows OSと.NET Frameworkの組み合わせの上で動作するWPFと、クロスブラウザ・クロスプラットフォームを目指すSilverlightの位置づけの違いに注目してください。

 本記事ではVisual Studio 2008によるWPF開発の流れを説明していきます。

 Visual Studio 2008のWPFサポートは、CTP版のVisual Studio 2005 Extensions for WPFから改善された部分も多く、今後のWPFの普及に向けての活用が期待されます。

 

次のページ
サンプル1~まずはHelloWorld

修正履歴

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Visual Studio 2008徹底入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、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本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 土井 毅(ドイ ツヨシ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2185 2008/09/04 18:53

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング