Gleyzer両氏によって共同開発されました。2019で、同言語の発表を行いました。InfoQはPurdy氏に言語と、氏らが解決を目指した問題について聞きました。設計/アーキテクチャアジャイルマニュフェスト:ソフトウェアアーキテクトの視点ソフトウェアアーキテクトの役割と責任はアジャイルソフトウェア開発のためのマニフェストの価値と矛盾していると見えますが、優れたアーキテクトはアジャイル開発チームをサポートするテクニックを見つけています。Streamingは、ストリーミングデータのためのSQLライクなインターフェースを提供します。Streamsによって、Redisがストリーミングデータを複数のプロデューサとコンシューマの間で消費、保持、配信することができるようになります。ソフトウェア開発のマニフェストたゆまず息もつかずに市場に突進することで、会社を静かに消滅の崖っぷちへと追い込みます。それは設計してコードを書く方法を再考する時です。簡単さへの投資は、速さへの投資です。簡単さは知的財産の主鉱脈でもあります。競争上の優位性は、一度失ったら、もう一度手に入れることはほとんど不可能です。Buytaerts氏が過去10年間にわたって、企業がDevOps採用のハイプサイクルをくぐり抜け、変革に対する誤解を解消する過程を支援してきた経験について語ります。WPFについて書かれたものの多くは、WPFを使えば以前と比べていかに簡単に、見栄えのかっこいいアプリケーションを作れるか、について述べています。WPFはフロントエンドの構築を行うためのパワフルなテクノロジーという他の(あまり目立たない)潜在能力も備えているのです。Ruby、.NETといったあらゆるバックエンドのサービスから情報を取得して表示する際の魅力的な選択肢となりました。この記事では、WPFとその他のテクノロジー、たとえばAjax/DHTML、Swing、そしてFlashを比較します。Javaをベースとしたバックエンドのサービスを例として用いて、WPFフロントエンドを構築してリッチクライアントとして役立たせるいくつかのシナリオをお見せしたいと思います。WPFに関する簡潔なガイドWPFはリッチクライアントアプリケーションを構築するためのプラットフォームです。2003(Server)にもインストールすることが可能です。WPFのユーザインターフェースは.NETのオブジェクトモデルとして組み立てられています。Language)を勧めています。XAMLはマークアップ言語の一種で、デザインが必要なユーザインターフェースの外観と、その振る舞いを定義するためのコードを分離しておくことができます。どちらのアプローチ(.NETオブジェクトモデルとXAML)も等価で、XAMLは単に別の構文であるというだけです。XAMLの構文はツールにとって作成するのも取り扱うのも簡単なようにデザインされており、コーディングのスキルなしにデザイナが直接ユーザインターフェースを作成できるよう、そうしたツールが作成されることを意図しています。(WPFに関するより詳しい情報はこちらのサイトを見てください:http://wpf.netfx3.com/)関連スポンサーコンテンツWPFは、.NETで利用できる最初のリッチクライアントAPIというわけではありません。Formsは、本質的にはWin32ウィンドウシステムの上に位置する.NETのレイヤです。FormsはWin32上で多くの機能を追加されましたが、基礎となるUIプラットフォームが持つ明らかな限界により制約を受け続けていました。Win32のウィンドウシステムの上には構築されていません。代わりにDirectXの上に構築されており、ローカルマシンに搭載されたグラフィックカードのパワー全てを利用することが可能です。WPFの目的は、単に見栄えの良いアプリケーションではありません。WPFによってもたらされる最も大きな一つの利益は、多くのリッチクライアント機能を一つのプラットフォームに統合していることです。した個々の機能のほとんどは、しばらくの間は他のUIテクノロジーにおいて孤立して利用可能です。WPFはアニメーション化されたベクターグラフィックスとビデオを提供しますが、これは長い間Flashの十八番でした。Formsで利用可能でした。CSSよりもはるかに進んでいます)。ASP.NETといったHTML指向のテクノロジーからそのまま持ってきたものです。進んだ3Dレンダリングを何年にもわたって利用可能でした。WPFの先達たちは自分が成すべきことについてはきちんとこなしますが、複数のテクノロジーからなる機能を一つのアプリケーションの中で使用するのは非常に困難です。Windowsのボタンやコンボボックスと連動してFlashのアニメーション機能を使用するのは非常に難しいです。(Flashアプリケーションは自身でコントロールを定義する傾向がありますが、それらは概してユーザが選択したOSの視覚テーマとは相容れない場合が多く、しばしばアクセシビリティの基準を満たさず、その振る舞いは通常ネイティブのコントロールとは調和がとれていません。HTMLによる文章レイアウトと連動したデータバインディングを使用することは、あまりサポートされていません。テクノロジーを混ぜ合わせようとすると、アプリケーションは複数の異なる世界に引き裂かれるのが落ちです。した隔たりの橋渡しをするのは、良くても不自由、しばしば不可能な場合が多いです。対照的に、WPFはこれを簡単にします。不幸なことに、公開されているWPFサンプルの多くは、こうした(UIテクノロジーの)統合については、デモとして若干ふさわしくありません。フローレイアウト文書の真ん中に埋め込まれた、見た目は普通のWindowsボタンの見出しの一部として、回転する立方体上にフルモーションのビデオが張り付いているのは、さまざまに異なるUI機能が一つになっていることを確信させるデモンストレーションではあるでしょうが、こんな疑問もわいてきます。まともな思考をしていたら、誰が現実のアプリケーションでこんなデザインをするのでしょう?実際には、一つのアプリケーションの中にUI機能をできうる限り統合するというのは起こりそうもありません。それをするのは、Webの初期に多くのサイトがあまりよく考えもせず、HTMLの機能をできる限り全て使ってやろうとしていたのを思い起こさせます。その結果は、めちゃくちゃでした。よいWebアプリケーションを作るために、テクノロジーをどう使うのがベストかを学ぶには、少し時間がかかりました。同様に、WPFの視覚機能をあらゆる組み合わせで使用するのはパワフルですし自由ですが、使いやすいアプリケーションを作るにはちょっとしたセンスと節度が必要でしょう。WPFは視覚的な冒険をしないアプリケーションにとってもかなり多くのものを提供してくれます。WPFのフロントエンドを作るのか?なぜWPFのフロントエンドを作りたいのか、という議論を意味あるものにするためには、いくつか他の選択肢と比較する必要があります。Forms、またはWin32です。Webフロントエンドと比較すると、WPFはより高い品質の対話性を実現できます。最近の対話的なWebアプリケーションの標準は改善されてきています。AJAXは昔ながらのプレーンなHTMLよりもかなり良い対話的な振舞いを提供しますが、実際何とも言いがたいです。我々は、対話性にひどい問題を抱えているということにほとんど気付かないほどWebに慣らされてしまっていましたから、単に「ひどくない」というだけのWebサイトに圧倒されてしまいました。できたAJAXアプリケーションでも、リッチクライアントの標準からするとかなり当り前のユーザエクスペリエンスの基準を満たしているだけです。AJAXツールは急速に進歩してはいますが、満足のいく対話的な体験をAJAXで構築するには、リッチクライアント技術で少なくとも同程度のものを生産するのに比べて、依然として多大な労力が必要です。WPFアプリケーションはクライアントのマシンがネットワークにつながっていない状態でも動作します。Webアプリケーションにおいてもこの問題を解決すべく進歩が進んでいますが、現在では、リッチクライアントアプリケーションだけが断続的にしかネットワークにつなげないユーザにとっての説得力のあるソリューションを提供しています。Swingと比較すると、WPFは注目に値する二つの利点を提供します。第一に、WPFのデータバインディングシステムです。XMLバインディングとデータテンプレート機能については、この記事でも後で取り上げます。Windowsでのみ動くよう設計されているのです。これは、ローカルPCが持つ性能を、特にグラフィックハードウェアのパワーをフルに活用することができるということを意味します。これにより、データの先進的な視覚化による高いパフォーマンスのレンダリングや、アニメーションやビデオでより飾り立てる、といった外観も可能になります。Flashを使えば、アニメーションやビデオのプレイバックといったように、WPFと幾分同じように飾り立てることはできます。標準的なWindowsプログラムと同じような外観と振舞いを持つアプリケーションを作るとしたら、少し弱いです。WPFの素晴らしい強みの一つが、先進的なヴィジュアルの外観と、ユーザが期待するとおりにふるまうWindowsコントロールの標準セットをどちらも備えていることです。その両方を使用することもできますし、一つのアプリケーション内で自由に組み合わせることもできます。Formsや昔ながらのWin32開発と比べると、WPFはより良いデータバインディング機能を提供し、データをリッチな見せ方にするのもより簡単です。WPFは多くの利点を持ってはいますが、それを使わないと選択するであろういくつかの理由も存在します。3.0があまり利用されていないことでしょう。3.0フレームワークがインストールされていることが必要不可欠です。サービスパック2よりも古いバージョンのWindowsを使用しているユーザをサポートする必要があった場合は、WPFは問題外です。3.0がインストールされているかどうかはわかりません。(もしこうした理由でWPFを除外したとしても、WPF/Eを除外する必要はありません。これは、WPFの機能を切り詰めたサブセットを提供するUIプラットフォームです。Xを含む非マイクロソフトプラットフォームでも動作するということから来ています。WPF/Eはまだリリースされておらず、現在ではその実用性も限られています。確かに、非常に初期段階の公開プレビューがちょうどこの記事の執筆中にリリースされました。それはWPF/Eの初期段階であり、今すぐその上に何かを築けるといったものではありません。)気にとめておくべき他の点としては、典型的なWPFアプリケーションのメモリ使用量です。Officeスイートとサイズを競っており、'メモリを一番食う豚'選手権で競い合っているかのようです。(しかも、そうした特定のWPFアプリケーションはすべて、Officeアプリケーションのどれよりも機能がひどく少ないのです。)もし省メモリ設定のクライアントマシンをサポートする必要があるなら、WPFは最良の選択肢ではないでしょう。他のテクノロジーを採用したいと考えているかもしれません。あなたが.NETをすでに使っているなら、WPFは魅力的です。WPFは単に.NETの世界における他の部分というだけですから、比較的学ぶのも採用するのも簡単です。あなたのシステムが.NETを使っていなかった場合は、開発者達が学ぶ必要のある複数のテクノロジーを追加するコストより、潜在的な利益が勝っているかどうかを考慮する必要があります。した阻害要因がないと仮定して、その有益さは試す価値があるように見えたなら、次のステップはどういう種類のWPFアプリケーションを構築するかを考えることです。アプリケーションタイプとデプロイメント・オプションWPFアプリケーションは様々な形をとります。Webライクなナビゲーションを持つUIを提供することも、より昔ながらのフォーム指向なスタイルをとることもあります。スタンドあローンのアプリケーションとして実行することも、ブラウザのフレーム内で全て実行されるようにすることもあるでしょう。アプリケーションがどうデプロイされるかについて様々なオプションもあります。リッチクライアントアプリケーションの伝統的なスタイルでは、Webブラウザの代わりに自身のウィンドウ内で動き、スタートメニューのプログラムリストから実行を開始できます。WPFは.NETフレームワークの'ClickOnce'デプロイメント技術を使用でき、更新をWebサーバにデプロイしてクライアントマシンに自動的にダウンロードされるようにすることができます。WebベースのJavaアプリケーションがすでに確固としてあるなら、スタンドアローンのWPFアプリケーションはちょっと合わないように見えることでしょう。いう場合は代わりに、ブラウザ上で実行されナビゲーションされるスタイルのWPFアプリケーションを一つ、もしくはそれ以上作ることで、アプリケーション全体の構造に混乱をきたすことなくWPFを活用し始められます。Application'と呼ばれます。(先に述べたとおり、XAMLはWPFのユーザインターフェースを構築するときにしばしば使われるマークアップ言語です。これはJavaアプレットにとてもよく似たモデルです。XBAPはWebページに埋め込まれたり、Webページ全体の代わりになることができ、どちらの場合でもセキュアなサンドボックス内で実行されます。全体的な構造を適切な形で残したまま、WebアプリケーションにXBAPを追加、もしくは置き換えていくことができます。これにより最も利益を得られる適切な部分にのみWPFを適用することができるため、「全か無か」というアプローチを必要としません。3.0が入っていないクライアントに対しては、XBAPの代わりに通常のWebページをいったことも可能です。その他のオプションとしては、純粋なマークアップのアプローチがあります。XBAPをビルドする代わりに(常にアプリケーションをコンパイルされます)、単にXAMLを生成することができます。WebサーバがXAMLページを提供していたら、クライアントがWPFをサポートしている場合に限り、コンテンツはパースされ、レンダリングされます。Webサーバのコンテンツ・マネジメント・システムがXSLTを使ってWebページを生成する機能をサポートしていたら、ソースからHTMLを生成するのと同様XAMLを生成することで、これが可能になります。適用できるというのはほとんど便利ではありません。そんな場合は恐らくスタンドアローンのクライアントアプリケーションに向かうのではないでしょうか。すると、クライアントアプリケーションがJavaサービスと対話するにはどうすれば良いかという疑問がわいてきます。3.0フレームワークにはWCFも含まれています。Foundationは、分散サービスを作り、使用するためのテクノロジーです。それはまた、Webサービス標準も幅広くサポートしています。Webサービスを利用するのです。これが唯一の選択肢というわけではありません。(これは幸運なことです。いくつかの場合WCFを使えないことがあるからです。WCFは現在、部分信頼のシナリオをサポートしていません。これの意味するところは、XBAPの中でWCFを使用できないということです。2.0スタイルのWebサービスクライアント機能を使用することもできます。WCFと同じように動作します。実際、どこからデータが来たかなんて全く気にしないのです。これが嬉しいのは、古いオブジェクトのセットをデータソースとして使用するときです。同様にオブジェクトに対してバインドを行うこともでき、WPFはXMLデータへの直接的なデータバインディングにも優れたサポートを持ちます。XML)アプローチもとても良く機能します。次の章で、単純な例をお見せします。データソースとしてXMLに直接バインドすることができます。何らかの方法でXMLをラップする必要もありません。これを説明するために、非常に単純ですがとてもポピュラーなXMLデータ形式:RSSをバインドすることにしましょう。RSSは、多くの異なる技術で生成された、膨大な量の異なる発信元が世界には存在します。以下の例では、Sunの開発者サイトから発信されたRSSフィードを使用することにしましょう。Javaが関わっていると考えても間違いはなさそうです。これは、RSSフィードからいくつかの情報を提供する、WPFのユーザインターフェースにおけるXAMLコードの断片です。</Border>例を単純にするため、XMLソースのURLは、ここではXmlDataProvider要素にハードコードされています。現実のアプリケーションでは、アプリケーション内にXMLを取り込む方法は他にもたくさんあります。この例でいちばん興味深い部分は、StackPanelの中に入れ子になったTextBlockのペアです。(StackPanelは、子供要素を縦に積み重ねて整列するレイアウトコンポーネントです。...}'シンタックスで記述されています。これら要素中のXPath式は、ここであげた例の一番上部近くにあるXmlDataProvider要素と関連があります。/rss/channel/titleというXPath式を評価し、その結果をテキストとして表します。以下に、この例の実行結果を示します。Webから生の形式でそれを引っ張ってきただけなのに、です。式で指すことができます。このアプローチは、データをXML形式で吐き出すあらゆるサービス(Java、もしくはその他)に対しても動作します。この例では、フィードから情報の一つを取り出して見せるだけです。一つのWPFのデータバインディング機能が持つ利点を生かし、もうちょっと手間をかけるだけで、もっと興味深いものを作ることができます。それはデータテンプレートです。データテンプレートデータテンプレートは、データをどう表示するかにおける再利用可能な記述方法です。データテンプレートは、複数個のアイテムに対して適用でき(例えばリスト内のすべての項目)、一貫した表示方法を行うことができます。以下の例は、前の例のStackPanelの内側に加えることができます。ListBoxコントロールを生成しますが、そのリスト項目は、この場合RSSフィード内の'item'要素の集合です。</ListBox>リスト内のそれぞれの項目はDataTemplateによって表示されます。この例では、内側に埋め込まれたListBoxで指定されています。このテンプレートからは、それぞれの項目をどう配置しフォーマットするか、データのどの部分をitemから取り出すか、といったことがわかります。結果はこのように見えます。これは、データテンプレートが視覚的にどういったことを行えるか、について表面的な部分をかろうじて撫でているにすぎません。WPFの機能を使うかは完全に自由ですし、テキストにこだわる必要もありません。データテンプレートは例えばイメージ、グラフィカル要素、アニメーション、3Dコンテンツなども取り込むことができます。テキストボックスのようなデータの編集を許容する対話的なコントロールや、あなたが好む対話的な振舞いを何でも提供するカスタムコントロールといったものも追加できます。お解りの通り、データテンプレートはサービスからリターンされたデータのリストを整形するための異常なほど簡単な方法です。XMLデータに対して直接データテンプレートを適用することができます。オブジェクトに対してもデータテンプレートを使用することができます。WCFのWebサービスラッパーによってリターンされたオブジェクトです。バインドできるという能力は便利ですが、何らかのラッパーオブジェクトに対しても動作してくれるとより便利なことがあります。WSDL定義を提供するWebサービスを扱っているなら、そうしたラッパーをツールを使って生成できることもしばしばです。した場合、WPFが持つオブジェクトベースのデータバインディングを使い、生のXMLに直接バインドする代わりにそうしたオブジェクトにバインドすることができます。eBayは彼らのWebサービスAPIのWSDL定義を提供しています。ここからダウンロードできます。http://developer.ebay.com/webservices/latest/eBaySvc.wsdl(APIを使用するためには、彼らのサービスにサインアップする必要があります。WSDLは自由にダウンロードできます。eBayは、サーバのヘッダやサービスが返すエラーメッセージが示しているように、バックエンドにJavaを使用しています。Javaで実装されているという事実がクライアント側のテクノロジーに何らかの制約を課すことはありません。そのため、WSDLを.NETクライアントにインポートすることができます。初期段階のバージョンから利用可能だったWebサービスのサポートを使用することができます。ツールを使用することもできます。どちらのテクノロジーも、WSDLで定義されたメッセージや関連付けられた型に対する、同様のラッパークラスを生成するためのツールを提供しています。eBayのWebサービスAPIにおけるそうした型の一つにUserTypeがあり、ユーザについての情報を提供します。これに対してツールが自動生成したラッパーは、XMLから要素の値を抜き出し、.NETのプロパティとして表現します。WPFからバインドすることができます。以下のマークアップは、UIをUserType内のプロパティのいくつかとバインドしています。UserTypeのインスタンスをWebサービスから取得し、UIの'データコンテキスト'にそれを置き、バインディング目的でそのインスタンスを使用できるようにしているというコードが、アプリケーションのどこかに存在すると仮定しています。</Grid>注目すべきは、Binding式の中で"XPath=..."と指定する代わりに、"Path=..."と指定していることです。形式ではなくオブジェクトのプロパティ内にあると期待していることをWPFに対して伝えます。上のマークアップは、以下のようにユーザ情報を表示します。このようにオブジェクトのラッパーを扱うことの利点としては、データを単に表示するという以上の事を、クライアントが行うのが簡単になるということが挙げられます。WPFアプリケーションは通常、マークアップとコードが混ざり合って成り立っています。Webサービスから取得したデータを、XMLから抜き出しオブジェクトにラップすれば、コードがこのデータを取り扱うのが簡単になり、アプリケーションに必要なクライアント側の振る舞いを何でも提供できます。サービスの上にWPFのフロントエンドを置くという、二つの非常に単純な例について見てきました。今回私たちが利用した、主なWPF特有の機能はデータバインディングです。それはサービスから取得したデータをUIにつなげるための非常に便利な手段を提供します。他のリッチクライアントアプリケーションと同様に、もちろんWPFアプリケーションもクライアントサイドのパワーと振舞いを私たちが望むだけ提供します。この例では、WPFは単に見た目が良いという以上の物であることを強調するため、わざと極端に単純なヴィジュアルにしていますが、WPFはデータバインディングや通常のWindowsコントロールといった平凡だけど退屈な世界を取り扱い、それを視覚的にリッチなプレゼンテーションへと高めていける可能性を秘めています。コンテンツページも見てください。Studioに関する書籍を執筆してきました。彼はロンドンに住んでいますが、様々な開発者のメーリングリストやニュースグループでしばしば見かけます。した場では、ほんの短い質問に対する返事として、彼からすさまじく長大なメールを受け取ってしまった人を眺めるのが人気の娯楽となっています。ついてもっと知りたければ、彼のブログ(http://www.interact-sw.co.uk/iangblog/)を見てください。毎週火曜日に前週のまとめコンテンツがお送りいたします。25万人ものシニアデベロッパーのコミュニティーにぜひご参加ください。サンプルを見るあなたのメールアドレスはこちら国を選んでください。プライバシーポリシーに従って私の個人情報を扱うことに同意します。登録するとさまざまなことができます。アカウント登録をしてInfoQをお楽しみください。あなたの意見をお聞かせください。毎週火曜日に前週のまとめコンテンツがお送りいたします。25万人ものシニアデベロッパーのコミュニティーにぜひご参加ください。サンプルを見る様々なイノベーターとアーリーアダプターがお送りするテクノロジーの概要を見る。自分がまだ知らないことに気づいていないと知るあなたが興味のあるトピックスをいつでも最新な情報に。あなたのメールアドレスはこちら国を選んでください。プライバシーポリシーに従って私の個人情報を扱うことに同意します。よい世界へ私たちが暮らす世界を大切に思い、よりよいものにしたいと考えています。人のためのソフトウェア開発を加速し私たちのミッションを実現することで、この思いを成し遂げようとしています。私たちは利益の1%をさまざまな慈善団体に寄付しています。会社として、また従業員として、そうしたことの価値を強く信じているからです。with.プライバシーBTあなたのプロファイルは最新ですか?プロフィールを確認してアップデートしてください。アドレス*Eメールを変更すると確認のメールが配信されます。会社名:現在の会社名をご入力ください。Other組織規模:現在の組織規模をご入力ください。2,501+国:現在の国を設定してください。Zimbabwe都道府県:現在の都道府県に設定してください。次の都道府県にアップデートする:ニュースレターを購読しますか?インダストリーメールを購読しますか?本Eメールに登録すると、以前より関心のあったトピックの関連情報をお送りする場合がございます。詳細はこちらのプライバシーポリシーをご覧ください。newsletter?新しいメールアドレスに確認用のメールを送信します。このポップアップ画面は自動的に閉じられます。