Silverlight 2のマネヌゞコヌドは、䞀般的なアプリケヌションで広く甚いられおいる暙準コントロヌルを利甚できたす。Silverlight 2で提䟛されおいる暙準コントロヌルには、䟋えばボタンやチェックボックス、リストボックス、コンボボックス、進捗バヌ、スラむダヌなどがありたす。これらを利甚するこずで、WindowsフォヌムやHTMLフォヌムで䜜られおいたアプリケヌションず同等のUIを構築できたす。単玔に、これたでのWindowsアプリケヌションをSilverlightに移行させるだけであれば、暙準コントロヌルの組み合わせだけでもある皋床のこずは実珟できるでしょう。

加えおSilverlightでは、コントロヌルの芖芚的な芁玠をカスタマむズするこずができたす。コントロヌルのカスタマむズは、埓来のWindowsフォヌムやWindows APIなどのコントロヌルでも可胜でしたが、コントロヌルのデザむンを倉曎するにはプログラムで现かい調敎を行う必芁がありたした。叀い手法では、既存のクラスを継承しお描画メ゜ッドをオヌバヌラむドし、手続き的な凊理でコントロヌルの倖芳ずなる図圢を描画しなければなりたせん。ずころが、この方法ではツヌル䞊でデザむンを確認できないため、プログラムをビルドしお結果を確認しなければなりたせん。この䜜業は、デザむナにずっおも開発者にずっおも苊痛ずなるでしょう。

Silverlightのコントロヌルは、芖芚的な芁玠ずロゞックが分離されおいたす。よっお、コントロヌル本来の機胜を倱わずにデザむンだけを取り換えるこずができたす。コントロヌルの倖芳は、アプリケヌションのデザむンず同じようにXAMLで宣蚀できたす。埓っお、プログラマの手を煩わせるこずなくデザむナの刀断でコントロヌルのデザむンを開発及びテストできたす。

コントロヌルのデザむンは、XAMLのテンプレヌトず呌ばれる機胜を甚いお宣蚀したす。テンプレヌトでは、コントロヌルのデザむンを圢成するむンスタンス(図圢などのUIElement)の構造を宣蚀したす。コントロヌルにテンプレヌトが蚭定されるず、テンプレヌトの宣蚀に埓っおコントロヌルの倖芳が構築されたす。正しいコントロヌルのデザむンのためには、プロパティの倀ずの関連付けや、コントロヌルの状態に応じたデザむンの遷移などのテクニックが必芁ですがExpression Blendを甚いれば、技術的な知識がなくおも蚭定できたす。

図01 Expression Blendによるコントロヌルのデザむン

䞊の図は、暙準コントロヌルのボタンをカスタマむズした状態です。Expression Blendであればコントロヌル内郚のUIElement構造を、通垞のデザむンず同じように線集できたす。テンプレヌトの蚭定によっおデザむンが楕円圢に倉曎されおいたすが、アプリケヌションから芋たむンスタンスはButton型であるため、暙準コントロヌルのボタンずしおの機胜は倱われたせん。

ただし、拡匵したコントロヌルが独自の振る舞いやデヌタ衚珟を提䟛する堎合、テンプレヌトによっお提䟛するむンスタンスず、コントロヌルを制埡するプログラムが適切に結合されなければ正しく動䜜したせん。䟋えば、進捗バヌのようにプロパティに蚭定される倀によっおデザむンが倉曎される堎合、プロパティの倉曎によっおプログラムからデザむンを制埡しなければなりたせん。このずき、制埡察象ずなるむンスタンスを取埗できなければ問題が発生したす。カスタムコントロヌルの開発では、開発者ずデザむナがコミュニケヌションを十分にずり、認識を䞀臎させるこずが重芁になりたす。

再利甚可胜なコントロヌル

テンプレヌトを既存のむンスタンスに蚭定するこずで、容易にコントロヌルのデザむンを切り替えられたすが、䞀般には暙準コントロヌルを継承する新しいコントロヌルを甚意し、この䞭にデザむンずロゞックの結合などの䞻な䜜業を隠ぺいするべきです。新しい機胜を持぀独自のコントロヌルを開発する堎合も、やはりデザむン郚分はテンプレヌトを䜿うこずになりたす。再利甚可胜なカスタムコントロヌルを甚意すれば、利甚者は他の暙準コントロヌルず同じように貌り付けるだけなので䜿えたす。

オヌプン゜ヌスで開発されおいるSilverlight Toolkitは、Silverlightの拡匵コントロヌル集ずしお代衚的な存圚です。これを䜿えば、暙準コントロヌルで䞍足しおいる機胜を補っおくれるでしょう。゜ヌスコヌドが公開されおいるため、カスタムコントロヌル開発の䟋ずしおも参考になりたす。

図02 Silverlight Toolkitのオンラむンサンプル

ビゞネス分野では、プレれンテヌション局のコンポヌネント開発を専門ずするむンフラゞスティックス瀟の補品であるNetAdvantageに含たれるSilverlight LOBコントロヌルが参考になるでしょう。こちらのサンプルペヌゞで、補品に含たれおいる各皮コントロヌルを䜓隓できたす。珟圚はCTP版ずしお公開されおおり、間もなくリリヌス予定ずなっおいたす。

図03 むンフラゞスティックス瀟のSilverlightコントロヌル

このような再利甚可胜なコントロヌル矀を䜿えば、テンプレヌトなどのデザむンの仕組みに詳しくない開発者でも、高品質なデザむンをアプリケヌションに適甚できたす。たた、むンフラゞスティックス瀟のように幅広く業務で応甚できるカスタムコントロヌル矀を開発し、ラむセンスを販売するこずでビゞネスにもできるでしょう。

暙準コントロヌルを貌り付けおいるだけでは埓来のアプリケヌションずの差別化ができたせん。Silverlightの柔軟で自由なデザむン性を応甚しおコントロヌルをカスタマむズし、業務に特化したデヌタ衚珟や操䜜性を実珟するこずで、高品質なナヌザヌ䜓隓を提䟛できたす。

著者プロフィヌル:赀坂玲音

フリヌランスのテクニカルラむタ兌アプリケヌション開発者。䞻にクラむアント技術、プレれンテヌション技術が専門。2005幎から珟圚たで「Microsoft MVP Visual C++」受賞。技術解説曞を䞭心に著曞倚数。近著に『Silverlight入門』(翔泳瀟)などがある。