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