Silverlight 5でぶり返すWPF不要論

12,318 views
12,102 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
12,318
On SlideShare
0
From Embeds
0
Number of Embeds
790
Actions
Shares
0
Downloads
56
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Silverlight 5でぶり返すWPF不要論

  1. 1. VSUG DAY 2011 SummerSilverlight 5で ぶり返すWPF不要論 グレープシティ株式会社 八巻 雄哉
  2. 2. Whats New in Silverlight 5 BetaSilverlight 5 Betaの新機能 VSUG DAY 2011.06.19 2
  3. 3. Whats New in Silverlight 5 Betahttp://msdn.microsoft.com/en-us/library/gg986857(v=vs.96).aspx VSUG DAY 2011.06.19 3
  4. 4. ItemsControlの検索機能ListBoxやComboBoxといった ItemsControlで、キーボード入力による 検索ができるこれに伴い検索対象を指定する TextSearch.TextPathプロパティが追加 Silverlight 2 3 4 5 WPF 3.0 3.5 3.5SP1 4 VSUG DAY 2011.06.19 4
  5. 5. 3D DrawingSurfaceコントロール XNA Games Studio 4.0グラフィックス ライブラリ(サブセット) WPF  Viewport3Dコントロール  XAMLによる3D描画 Silverlight 2 3 4 5 WPF 3.0 3.5 3.5SP1 4 VSUG DAY 2011.06.19 5
  6. 6. システムウィンドウの表示 System.Windows.Windowクラス  クラス自体はSilverlight 4から存在  4ではOOB時のメインウィンドウを操作するためのクラス  5ではTitle、Content、Visibilityなどのプロパティが追加  WPFではこれらに加え  Iconの変更可、直接XAMLでWindowをデザイン可 Silverlight 2 3 4 5 WPF 3.0 3.5 3.5SP1 4 VSUG DAY 2011.06.19 6
  7. 7. クリック回数の検出 MouseButtonEventArgs.ClickCountプロパティ  SilverlightとWPFの違い  カウントが初期化されるまでの時間  Silverlight:前のクリックから次のクリックまでを計測  WPF:最初のクリックから計測 WPFのみ  Control.MouseDoubleClickイベント Silverlight 2 3 4 5 WPF 3.0 3.5 3.5SP1 4 VSUG DAY 2011.06.19 7
  8. 8. カスタムのマークアップ拡張 マークアップ拡張とは  実行時評価と既存オブジェクトの参照  MarkupExtensionクラスが用意され、 オリジナルのマークアップ拡張が作成可能に  WPF  Silverlightにないマークアップ拡張  x:Static、x:Null、x:Type、x:Array、DynamicResourceSilverlight 2 3 4 5 WPF 3.0 3.5 3.5SP1 4 VSUG DAY 2011.06.19 8
  9. 9. 構造体における属性構文のサポート 構造体のプロパティを属性構文で設定 した場合、4まではXamlParseException<Border CornerRadius="0,300,0,100"><Border> <Border.CornerRadius> <CornerRadius BottomLeft="100" TopRight="300" /> </Border.CornerRadius></Border> Silverlight 2 3 4 5 WPF 3.0 3.5 3.5SP1 4 VSUG DAY 2011.06.19 9
  10. 10. データバインディングのデバッグ{Binding}にブレークポイントを設定 プロパティ名のタイプミス PrivateなSetterBinding.IsDebuggingEnabledフィールド Silverlight 2 3 4 5 WPF 3.0 3.5 3.5SP1 4 VSUG DAY 2011.06.19 10
  11. 11. StyleのSetter.Valueプロパティに対する データバインディングサポートSetterのValueプロパティに {Binding}が書ける<Style TargetType="TextBlock"> <Setter Property="FontSize" Value="{Binding FontSize}"/></Style> Silverlight 2 3 4 5 WPF 3.0 3.5 3.5SP1 4 VSUG DAY 2011.06.19 11
  12. 12. 階層構造をたどってバインディング ソースを探すFindAncestor特定の型の上位要素と連結したいとき  (例)DataTemplate内でのデータバインディング<DataTemplate> <CheckBox IsChecked="{Binding IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType=ListBoxItem}}" /></DataTemplate> Silverlight 2 3 4 5 WPF 3.0 3.5 3.5SP1 4 VSUG DAY 2011.06.19 12
  13. 13. DataTemplate.DataTypeプロパティ データの型によって DataTemplateを切り替える WPF  DataTypeのほかに、任意の条件でDataTemplateを 切り替えるDataTemplateSelectorもある Silverlight 2 3 4 5 WPF 3.0 3.5 3.5SP1 4 VSUG DAY 2011.06.19 13
  14. 14. 動的生成されたプロパティに対するデータバインディング動的なカスタム型情報を提供する インターフェイス ICustomTypeProviderWPF ICustomTypeDescriptor Silverlight 2 3 4 5 WPF 3.0 3.5 3.5SP1 4 VSUG DAY 2011.06.19 14
  15. 15. 信頼されたアプリケーションにおける 制限のないローカルファイルシステムへのアクセス Silverlight 4  ユーザープロファイルの特定フォルダーのみ MyDocuments、MyMusic、MyPictures、 MyVideos Silverlight 5 Beta  制限なし Silverlight 2 3 4 5 WPF 3.0 3.5 3.5SP1 4 VSUG DAY 2011.06.19 15
  16. 16. 信頼されたアプリケーションのブラウザー内実行 条件  HKEY_LOCAL_MACHINE¥Software¥Microsoft¥Silverlight¥  AllowElevatedTrustAppsInBrowser  デジタル署名の追加 利用可能となる機能の例  WebBrowserコントロール  NotificationWindow WPF  完全信頼XBAP(イントラネットのみ) Silverlight 2 3 4 5 WPF 3.0 3.5 3.5SP1 4 VSUG DAY 2011.06.19 16
  17. 17. 効果音のための軽量なクラス Microsoft.Xna.Framework.Audio.SoundEffect  ピッチやパンの変更が可能  ループが簡単 MediaElementはメディアの再生が目的  再生までのレイテンシーが大きいため効果音などには向かない WPF  SoundPlayerAction Silverlight 2 3 4 5 WPF 3.0 3.5 3.5SP1 4 VSUG DAY 2011.06.19 17
  18. 18. MediaElement再生速度の変更 MediaElement  PlaybackRateプロパティ  マイナス値の設定が可能と書かれているが逆再生されない WPF  SpeedRatioプロパティ  マイナス値は設定できない(逆再生はサポートされていない) Silverlight 2 3 4 5 WPF 3.0 3.5 3.5SP1 4 VSUG DAY 2011.06.19 18
  19. 19. テキスト系コントロールの文字間と行間の調整CharacterSpacingプロパティ Silverlight 2 3 4 5 WPF 3.0 3.5 3.5SP1 4LineHeightプロパティ Silverlight 2 3 4 5 WPF 3.0 3.5 3.5SP1 4 VSUG DAY 2011.06.19 19
  20. 20. RichTextBoxOverflowコントロールWPFに同等のコントロールはない入力を必要としなければFlowDocument を使ったより高度なレイアウトが可能 Silverlight 2 3 4 5 WPF 3.0 3.5 3.5SP1 4 VSUG DAY 2011.06.19 20
  21. 21. Silverlight 5 Betaの新機能まとめ すでにWPFで実装されていた機能 ① ItemsControlの検索機能 ② システムウィンドウの表示 ③ クリック回数の検出 ④ カスタムのマークアップ拡張 ⑤ 構造体における属性構文のサポート ⑥ StyleのSetter.Valueプロパティに対するデータバインディングサポート ⑦ 階層構造をたどってバインディングソースを探すFindAncestor ⑧ DataTemplate.DataTypeプロパティ ⑨ LineHeightプロパティ VSUG DAY 2011.06.19 21
  22. 22. Silverlight 5 Betaの新機能まとめ 機能としてはWPFにあるが、 WPFとは異なるかたちで追加された機能 ① 3D ② 動的生成されたプロパティに対する データバインディング ③ 効果音のための軽量なクラス ④ MediaElement再生速度の変更 VSUG DAY 2011.06.19 22
  23. 23. Silverlight 5 Betaの新機能まとめWebブラウザのプラグインであることで 必要となる機能 ① 信頼されたアプリケーションにおける 制限のないローカルファイルシステムへの アクセス ② 信頼されたアプリケーションの ブラウザー内実行 VSUG DAY 2011.06.19 23
  24. 24. Silverlight 5 Betaの新機能まとめ WPFに対してアドバンテージとなる機能 ① データバインディングのデバッグ ② CharacterSpacingプロパティ ③ RichTextBoxOverflowコントロール VSUG DAY 2011.06.19 24
  25. 25. Silverlight 5 Betaの新機能まとめ機能の種類 機能数すでにWPFで実装されていた機能 9機能としてはWPFにあるが、WPFとは異なるかたちで追加された機能 4Webブラウザのプラグインであることで必要となる機能 2WPFに対してアドバンテージとなる機能 3 VSUG DAY 2011.06.19 25
  26. 26. 扶養することはあっても不要になることはないなぜWPF不要論がでてくるのか VSUG DAY 2011.06.19 26
  27. 27. なぜWPF不要論がでてくるのか同じような技術が2つある どちらか1つでよいのでは? 選ぶならSilverlightでしょ WPF不要論 VSUG DAY 2011.06.19 27
  28. 28. 手塩にかけて育てられているSilverlight 毎年のようにメジャーバージョンアップ 頭文字をとった略称ではない名前と専用のロゴ10 Googleトレンド5 WPF Silverlight0 2006 2007 2008 2009 2010 2011 VSUG DAY 2011.06.19 28
  29. 29. 図で比較 .NET Framework Silverlight.NET Frameworkクラスライブラリ SilverlightのClient Profile .NET Frameworkクラスライブラリ WPF Windowsフォーム UIフレームワーク ADO.NET WCF WCF WF (クライアント) (クライアント) ベースクラスライブラリ(BCL) ベースクラスライブラリ(BCL).NET FrameworkクラスライブラリExtended WCF ASP.NET (サーバー) 共通言語ランタイム (CLR) 共通言語ランタイム (CLR) VSUG DAY 2011.06.19 29
  30. 30. 同じようなもの?WPFとは何か? .NET Frameworkクラスライブラリの一部 Windows OSのグラフィックサブシステムSilverlightとは何か? Webブラウザーのプラグイン VSUG DAY 2011.06.19 30
  31. 31. できることが同じ? Silverlight 3  ブラウザー外実行(OOB) Silverlight 4  信頼されたアプリケーション  セキュリティ制限の緩和  利用できるローカルリソースの拡大 Silverlight 5  信頼されたアプリケーションのさらなる制限緩和  信頼されたアプリケーションのブラウザ内実行 VSUG DAY 2011.06.19 31
  32. 32. WPFとSilverlightの進化(印象)機能 機能 WPF 3.54 WPF3.5 WPF 3.0SP1 Silverlight 5 Silverlight 4 Silverlight 3 Silverlight 2 VSUG DAY 2011.06.19 32
  33. 33. リファレンスから感じとるクラス数メンバ数コンストラクタやメソッドの オーバーロード数列挙体の値数Sealed修飾子 VSUG DAY 2011.06.19 33
  34. 34. System.Windows.Controls名前空間 WPF 4 Silverlight 5 Betaクラス数 155 115自分だけが持つクラス数 65 25両方が持つクラス数 90 WPFのみ 共通 Silverlightのみ WPF 65 90Silverlight 90 25 VSUG DAY 2011.06.19 34
  35. 35. SilverlightにあってWPFにないクラス(抜粋)AutoCompleteBox ChildWindow DataGridRowGroupHeaderDataPager DescriptionViewer DrawingSurfaceHyperlinkButton MultiScaleImage RichTextBoxOverflowValidationSummary WebBrowserBrush VSUG DAY 2011.06.19 35
  36. 36. WPFにあってSilverlightにないクラス(抜粋)AccessText *****Converter ContextMenuDataGridComboBoxColumn DataGridHyperlinkColumn DataTemplateSelectorDockPanel DocumentViewer ExpanderFlowDocument***** GroupBox InkCanvasListView Menu PrintDialogSeparator SoundPlayerAction SpellCheckStickyNoteControl StyleSelector ToolBarViewport3D VSUG DAY 2011.06.19 36
  37. 37. System.Windows.Input名前空間 WPF 4 Silverlight 5 Betaクラス数 109 27自分だけが持つクラス数 82 0両方が持つクラス数 27 WPFのみ 共通 Silverlightのみ WPF 82 27Silverlight 27 VSUG DAY 2011.06.19 37
  38. 38. System.Windows.Controls.Buttonクラス WPF 4 Silverlight 5 Betaプロパティ数 136 63自分だけが持つプロパティ数 76 3両方が持つプロパティ数 60 WPFのみ 共通 Silverlightのみ WPF 76 60Silverlight 60 3 VSUG DAY 2011.06.19 38
  39. 39. SilverlightにあってWPFにないプロパティCharacterSpacing Projection TabNavigation VSUG DAY 2011.06.19 39
  40. 40. WPFにあってSilverlightにないクラス(抜粋)AreAnyTouches***** BindingGroup CommandBindingsCommandTarget ContentStringFormat ContentTemplateSelectorContextMenu Focusable ForceCursorHandlesScrolling InputBindings Is*****LayoutTransform LogicalChildren OverridesDefaultStyleSnapsToDevicePixels ToolTip Touches*****Visual***** VSUG DAY 2011.06.19 40
  41. 41. オーバーロードの数 System.Markup.XamlReaderクラスWPF 4 Silverlight 5 BetaLoad(Stream) -Load(XamlReader) -Load(XmlReader) -Load(Stream, ParserContext) -- Load(string)LoadAsync(Stream) -LoadAsync(XmlReader) -LoadAsync(Stream, ParserContext) - VSUG DAY 2011.06.19 41
  42. 42. 列挙体の値  System.Windows.Data.UpdateSourceTrigger列挙体 WPF 4 Silverlight 5 BetaDefault DefaultPropertyChanged -LostFocus -Explicit Explicit VSUG DAY 2011.06.19 42
  43. 43. sealed修飾子WPF 4public class RepeatButton : ButtonBaseSilverlight 5 Betapublic sealed class RepeatButton : ButtonBase VSUG DAY 2011.06.19 43
  44. 44. WPFとSilverlightの進化(実際) 表に見えやすい機能表に見えやすい機能 WPF 3.5 4 WPF SP1 WPF 3.0 3.5 Silverlight Silverlight 5 4 Silverlight 3 Silverlight 2 懐の深さ 懐の深さ VSUG DAY 2011.06.19 44
  45. 45. 懐の深さ開発生産性 頑張れば実現可能な機能プラットフォーム固有機能、 ハードウェアリソース活用など 頑張っても実現不可能な機能 VSUG DAY 2011.06.19 45
  46. 46. リーチの広さ幅広い実行環境 クロスプラットフォーム(PCのみ) クロスブラウザー軽量なランタイム インストールエクスペリエンス VSUG DAY 2011.06.19 46
  47. 47. 選択のポイント 懐の深さ リーチの広さ 開発生産性 幅広い実行環境 SilverlightWPF プラットフォーム固有機能 軽量なランタイム ハードウェアリソース活用 VSUG DAY 2011.06.19 47
  48. 48. このセッションはグレープシティの提供でお送りしていますGrapeCity × WPFGrapeCity × Silverlight VSUG DAY 2011.06.19 48
  49. 49. GrapeCity × WPF GrapeCity × Silverlight グ リ ッ ド Silverlight FlexGrid for WPF FlexGrid for SilverlightWPF 入 力 支 援 InputMan for WPF InputMan for Silverlight VSUG DAY 2011.06.19 49
  50. 50. WPF/Silverlightにおける サードパーティコンポーネントの必要どころ① 標準DataGridの スクロールパフォーマンス② 標準入力系コントロールの不足 VSUG DAY 2011.06.19 50
  51. 51. 高度なレイアウトシステムが スクロールパフォーマンスに影響 強力かつ柔軟なレイアウトシステムの代償  パネルに子要素が追加されるたびに、 再帰的に子要素の大きさと位置の測定が行われる  リスト項目を大量に表示するコントロールでは、 パフォーマンス負荷となる 「UIの仮想化」を行い、画面に表示されている部分の オブジェクトのみを生成することで解決  レイアウトプロセスの負荷低減  メモリ使用量の削減 VSUG DAY 2011.06.19
  52. 52. 標準DataGrid vs FlexGrid 標準DataGrid  列方向にはUIの仮想化が行われない FlexGrid  行と列の双方向にUIの仮想化が行われる VSUG DAY 2011.06.19
  53. 53. カスタマイズ性 vs コントロール数 Windowsフォーム  外観のカスタマイズ性が低い  細分化されたコントロールによる高い生産性 WPF/Silverlight  外観のカスタマイズ性が高い  標準で用意されているコントロールが少ない (特に入力系コントロール) 業務アプリでは機能のカスタマイズが重要 VSUG DAY 2011.06.19
  54. 54. 業務アプリで使われる入力系コントロール Windowsフォーム WPF/Silverlight InputMan for WPFテキスト TextBox TextBox GcTextBox日付 DateTimePicker DatePicker GcDateTime数値 NumericUpDown - GcNumberマスク MaskedTextBox - GcMask VSUG DAY 2011.06.19
  55. 55. 比較:日付入力コントロール DatePicker GcDateTime DateTimePicker (WPF/ (InputMan for WPF) (Windowsフォーム) Silverlight) (InputMan for Silverlight)数字のみの入力 ✔ - ✔ドロップダウンカレンダー ✔ ✔ ✔スピンボタンによる日付入力 ✔ - ✔時刻入力 ✔ - ✔Null値サポート - ✔ ✔ドロップダウンボタンの外観和暦、入力時/表示時の書式設定、入力候補、フィールド単位のフォー - - ✔カス制御、… VSUG DAY 2011.06.19
  56. 56. 56

×