SlideShare a Scribd company logo
1 of 49
Download to read offline
Windows Phone開発のための
Prism + ReactiveProperty基本
2015/6/26 まんつーまん@調布
大田 一希
Prismとは
• Microsoft Patterns & Practicesチーム製のMVVMフレームワーク
• 以下のプラットフォームをサポート
• WPF(超複雑)
• Silverlight(オワコン)
• Windows store app
• Windows Phone(今回の主題)
• Xamarin(Preview)
• 最近MS P&PチームからMVP主体のチームに移管された
Prism.StoreApps
Prism.StoreAppsの中から電話向けに説明
Prism.StoreApps
• Universal app(Windows store app + Windows Phone app)版Prism
• 以下の構成要素がある
• Prism.Mvvm :MVVMをサポートする基本クラスを提供
• Prism.Mvvm.Phone :↑にPhone固有機能を提供
• Prism.StoreApps :Win store app + WP app固有機能を提供
• Prism.StoreApps.Phone:↑にWP固有機能を提供
覚えておきたいクラス
Prism.Mvvm
• 本当にプレーンなMVVMの必要最低限の機能を提供するライブラリ
• 以下の機能を提供
• BindableBase class :INotifyPropertyChangedの基本実装
• DelegateCommand class :ICommandの基本実装
Prism.Mvvm.Phone
• 以下の機能を提供
• ViewModelLocator class :ViewとViewModelの紐づけ機能
Prism.StoreApps
• PrismのUniversal app版
• 以下の機能を提供
• VisualStateAwarePage class :ページの基本クラス
• ViewModel class :ViewModelの基本クラス
• SessionStateService class :中断時の一時データ保存用クラス
• FrameNavigationService class :画面遷移用クラス
Prism.StoreApps.Phone
• Prism.StoreAppsのPhone特化版
• 以下の機能を提供
• MvvmAppBase class :Appクラスの基本クラス
クラス詳解
各クラスの使い方
BindableBase class
• MVVMには必須のINotifyPropertyChangedの実装クラス
• SetProperty<T>メソッドを使う
こんな感じにsetが書ける
コードスニペットに登録すると捗る
DelegateCommand class
• ReactiveProperty使うならいらない子なので割愛
ViewModelLocator class
• 命名規約(カスタマイズ可能だけどやりかたは割愛)によりViewと
ViewModelを紐づける
• 以下のような命名規約
• AppNamespace.Views.HogePage(View名)
• AppNamespace.ViewModels.HogePageViewModel(View名+ViewModel)
この2つを結びつける
ViewModelLocator class
• ページの添付プロパティとして記述することで機能する
VisualStateAwarePage class
• Pageに便利機能を追加
• Prismを使う上でページはこいつを継承する必要がある
• 以下の機能を提供
• GoBackCommand property :戻る機能のCommand
• GoHomeCommand property :トップページへ戻る機能のCommand
• SaveState method :オーバーライドして中断時のデータ保存
• LoadState method :オーバーライドして中断時のデータ読込
• VisualStateの切り替え
• DefaultLayout, PortraitLayout, MinimalLayoutを自動で切り替え(詳細は割愛)
VisualStateAwarePage class
• 以下のように”空白のページ”テンプレートを書き換える
• ViewModelLocatorも合わせて以下のようなXAMLがひな形
VisualStateAwarePageの名前
空間を定義
Pageタグを書き換え
VisualStateAwarePage class
• 以下のように”空白のページ”のテンプレートを書き換える
OnNavigatedToメソッドのオー
バーライドを消す
基本クラスを
VisualStateAwarePageにする
ViewModel class
• BindableBaseを拡張して以下の機能を提供する
• OnNavigatedToメソッド :画面遷移してきたときに呼ばれる
• OnNavigatedFromメソッド :画面から離れるときに呼ばれる
• 中断処理への対応 :RestorableState属性つけたプロパティの自動
復元
ViewModel class
• 基本以下のような書き方になる
SessionStateService class
• 中断時のデータ保存用クラス
• 実際に使うときはISessionStateService interface
• 後述するMvvmAppBaseのプロパティとして定義される
• Dictionary<string, object> SessionState { get; }プロパティがある
• ↑は、中断時のデータ保存場所
• RegisterKnownTypeメソッド
• プリミティブ型以外をSessionStateに登録するときに型を登録するメソッド
(しておかないと例外が飛ぶ)
FrameNavigationService class
• 画面遷移をするためのクラス
• 実際使うときはINavigationService interface
• MvvmAppBaseクラスのプロパティとして定義される
FrameNavigationService class
• 画面遷移の仕方
• ViewのXXXXPageに遷移するときは以下のように呼び出す
• NavigationService.Navigate(“XXXX”, null); // 第二引数は画面遷移パラメータ
• Frameにあるようなメソッドがある
• GoBack() :戻る
• CanBoBack() :戻れる場合true
MvvmAppBase class
• Appクラスの基本クラス
• なが~いApp.xaml.csをシンプルに書ける
MvvmAppBase class
• Appクラスの定義方法
• App.xamlを以下のように書き換える
MvvmAppBaseの名前空間を
定義
Appタグを書き換え
MvvmAppBase class
• MainPageに遷移する場合のコードビハインド
長い処理を消して画面遷移す
るだけの処理へ
基本クラスをMvvmAppBaseへ
組み合わせて使う
Pageで画面遷移するには
• MvvmAppBaseのOnInitializeAsyncメソッドをオーバーライドする
• Pageに紐づくViewModelの生成をカスタマイズする
• ViewModelにNavigationServiceを渡す
• MainPageViewModelの生成をカスタマイズする場合は以下のような感じ
Pageで画面遷移するには
• ViewModel側では以下のようにコンストラクタでINavigationServiceを受
け取り、それを使って画面遷移をする
Modelはどうするの?
• Appクラスで作成してViewModelに渡すのがいいと思います
ReactiveProperty
ReactiveProperty
• Reactive Extensions(Rx)をベースにしたMVVMサポートライブラリ
• V ⇔ ViewModel ⇔ Modelの間をRxでシームレスに繋ぐのが特徴
ReactiveProperty
• 以下のクラスを提供
• ReactiveProperty<T> class :ViewModelのプロパティ用
• ReactiveCommand class :ViewModelのCommand用
• ReadOnlyReactiveCollection<T> class:ViewModelのコレクション用
• その他拡張メソッドを提供
• INotifyPropertyChangedの拡張メソッド
• ToReactivePropertyAsSynchronized method :MのプロパティとVMの
ReactivePropertyの同期をとるためのメソッド
• ObservableCollection<T>の拡張メソッド
• ToReadOnlyReactiveCollection method :MのObservableCollection<T>と
VMのReadOnlyReactiveCollection<T>の同期をとるためのメソッド
ReactiveProperty class
• ViewModelに定義するプロパティ
• public ReactiveProperty<string> Name { get; private set; }のように定義
• コンストラクタで初期化
• this.Name = new ReactiveProperty<string>(); // nullを持った状態
• this.Name = new ReactiveProperty<string>(“なまえ”); // 初期値を持った状態
• this.Name = source.ToReactiveProperty(); // IObservable<T>から変換
• this.Name = person.ToReactivePropertyAsSynchronized(x => x.Name); // Modelのプロ
パティから変換
ReactiveProperty class
• IObservable<T>からの変換
• 超便利なので覚えておくべき
• model // 何かINotifyPropertyChangedの実装クラス
.PropertyChangedAsObservable(x => x.Name) // IObservable<T>に変換
.ToReactiveProperty(); // ReactivePropertyに変換
• ↑でModelからViewModelへの一方通行値同期が可能
ReactiveProperty class
• ToReactivePropertyAsSynchronized methodも便利
• model // INotifyPropertyChangedの実装クラス
.ToReactivePropertyAsSynchronized(x => x.Name); //Nameプロパティと同期
• model // INotifyPropertyChangedの実装クラス
.ToReactivePropertyAsSynchronized(
x => x.Age, // Ageプロパティを
x => x.ToString(), // M -> VMの時は文字列に変換して
x => int.Parse(x)); // VM -> Mの時はintに変換する
ReactiveProperty class
• ToReactivePropertyAsSynchronized methodも便利
• model // INotifyPropertyChangedの実装クラス
.ToReactivePropertyAsSynchronized(
x => x.Age, // Ageプロパティを
x => x.Age.ToString(), // M -> VMの時は文字列に変換して
x => int.Parse(x), // VM -> Mの時はintに変換する
ignoreValidationErrorValue: true); // 変な値は通さない(次ページ参照)
ReactiveProperty class
• 値の検証をサポート
• // 何らかの方法でRPを作成
this.Hoge = xxxx.ToReactivePropertyAsSynchronized(…)
// 検証ロジックを設定(nullの時はOKでそうじゃないときはエラーメッセージ)
.SetValidateNotifyError(x =>
{
var x = 0;
if (int.TryParse(x, out x)) { return null; }
else { return "整数を入力してください"; }
});
ReactiveCommand class
• IObservable<bool>から生成可能なCommand
• public ReactiveCommand HogeCommand { get; private set; }
• コンストラクタで以下のように初期化
• this.HogeCommand = new ReactiveCommand(); // 常に実行可能なコマンド
• this.HogeCommand = source.ToReactiveCommand(); // IO<bool>がtrueの
時だけ実行可能なコマンド
ReactiveCommand class
• コマンドの処理はSubscribeメソッドでやる
• this.HogeCommand.Subscribe(_ =>
{
// コマンド実行時の処理
});
ReadOnlyReactiveCollection class
• ModelのObservableCollection<T>をViewModelで読み取り専用コレク
ションとして公開する
• 以下のように定義する
• public ReadOnlyReactiveCollection<PersonViewModel> People { get;
private set; }
• 以下のように初期化する
• // modelでObservableCollection<Person>が定義されてるとする
this.People = model.People
// model.Peopleと同期をとったPersonViewModelのコレクションを作成
.ToReadOnlyReactiveCollection(x => new PersonViewModel(x));
組み合わせて使う
PrismとReactiveProperty
基本はModelは普通に書く
• INotifyPropertyChangedとObservableCollection<T>による変更通知
• 機能をメソッドとして提供
ViewModelをPrism + ReactivePropertyで
• ViewModel classを継承
• ReactiveProperty<T>でプロパティを定義
• OnNavigatedToメソッドでReactiveProperty<T>の初期化
• OnNavigatedFromメソッドで後始末
後始末
• ReactivePropertyとModelを接続したら最後に接続を切ること
• じゃないと予期せぬ処理が走ったりする
• 具体的には
• OnNavigatedToでCompositeDisposableに集める
• OnNavigatedFromでDisposeする
後始末
• こんな感じ
• private CompositeDisposable disposable = new CompositeDisposable();
• OnNavigatedToで
• this.Name = hoge.ToReactiveProperty().AddTo(this.disposable);
• this.People = model.People
.ToReadOnlyReactiveCollection(x => new PersonViewModel(x))
.AddTo(this.disposable);
• OnNavigatedFromで
• this.disposable.Dispose();
まとめ
Prism
• BindableBase
• ViewModelLocator
• ViewModel
• MvvmAppBase(NavigationService, SessionStateService)
• OnInitializeAsync
• OnLaunchApplicationAsync
ReactiveProperty
• ReactiveProperty<T>
• ReactiveCommand
• ReadOnlyReactiveCollection<T>
• INotifyPropertyChanged extension method
• ToReactivePropertyAsSynchronized
• ObservableCollection<T> extension method
• ToReadOnlyReactiveCollection
まとめ
• あとはケーススタディの積み重ね

More Related Content

What's hot

Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。
Yuya Yamaki
 
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
onozaty
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについて
kumake
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
 

What's hot (20)

ServiceとRepository
ServiceとRepositoryServiceとRepository
ServiceとRepository
 
中・大規模でLaravelを導入するTips
中・大規模でLaravelを導入するTips中・大規模でLaravelを導入するTips
中・大規模でLaravelを導入するTips
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
 
Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。
 
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
 
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
 
20160526 依存関係逆転の原則
20160526 依存関係逆転の原則20160526 依存関係逆転の原則
20160526 依存関係逆転の原則
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
 
Msを16倍出し抜くwpf開発1回目
Msを16倍出し抜くwpf開発1回目Msを16倍出し抜くwpf開発1回目
Msを16倍出し抜くwpf開発1回目
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについて
 
かずきのUWP入門
かずきのUWP入門かずきのUWP入門
かずきのUWP入門
 
Unityでオニオンアーキテクチャ
UnityでオニオンアーキテクチャUnityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャ
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
 
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かすドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす
 
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。 【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
 
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
 
関数型プログラミングのデザインパターンひとめぐり
関数型プログラミングのデザインパターンひとめぐり関数型プログラミングのデザインパターンひとめぐり
関数型プログラミングのデザインパターンひとめぐり
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
 

Similar to Prism + ReactiveProperty入門

Pylons ユーザのための Pyramid 移行ガイド
Pylons ユーザのための Pyramid 移行ガイドPylons ユーザのための Pyramid 移行ガイド
Pylons ユーザのための Pyramid 移行ガイド
Nozomu Kaneko
 
Visual studio 2013 Overview
Visual studio 2013 OverviewVisual studio 2013 Overview
Visual studio 2013 Overview
一希 大田
 
オブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional Programmingオブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional Programming
Tomoharu ASAMI
 
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
Shotaro Suzuki
 
DoActionからJava VMバイトコードに変換する話
DoActionからJava VMバイトコードに変換する話DoActionからJava VMバイトコードに変換する話
DoActionからJava VMバイトコードに変換する話
emorins
 

Similar to Prism + ReactiveProperty入門 (20)

MvvmCross 入門
MvvmCross 入門MvvmCross 入門
MvvmCross 入門
 
T119_5年間の試行錯誤で進化したMVPVMパターン
T119_5年間の試行錯誤で進化したMVPVMパターンT119_5年間の試行錯誤で進化したMVPVMパターン
T119_5年間の試行錯誤で進化したMVPVMパターン
 
Mvpvm pattern
Mvpvm patternMvpvm pattern
Mvpvm pattern
 
Xamarin で ReactiveUI を使ってみた
Xamarin で ReactiveUI を使ってみたXamarin で ReactiveUI を使ってみた
Xamarin で ReactiveUI を使ってみた
 
Pylons ユーザのための Pyramid 移行ガイド
Pylons ユーザのための Pyramid 移行ガイドPylons ユーザのための Pyramid 移行ガイド
Pylons ユーザのための Pyramid 移行ガイド
 
RIAアーキテクチャー研究会 第3回 セッション4 Mvpvm pattern
RIAアーキテクチャー研究会 第3回 セッション4 Mvpvm patternRIAアーキテクチャー研究会 第3回 セッション4 Mvpvm pattern
RIAアーキテクチャー研究会 第3回 セッション4 Mvpvm pattern
 
Visual studio 2013 Overview
Visual studio 2013 OverviewVisual studio 2013 Overview
Visual studio 2013 Overview
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
 
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Monadic Programmingのススメ - Functional Reactive ProgrammingへのアプローチMonadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
 
C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 Preview in Visual Studio 2019 (16.0)C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 Preview in Visual Studio 2019 (16.0)
 
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
 
Spring3.1概要x di
Spring3.1概要x diSpring3.1概要x di
Spring3.1概要x di
 
オブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional Programmingオブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional Programming
 
Blue monkey architecture overview
Blue monkey architecture overviewBlue monkey architecture overview
Blue monkey architecture overview
 
iOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPracticeiOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPractice
 
作られては消えていく泡のように儚いクラスタの運用話
作られては消えていく泡のように儚いクラスタの運用話作られては消えていく泡のように儚いクラスタの運用話
作られては消えていく泡のように儚いクラスタの運用話
 
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
 
Xamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツXamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツ
 
Xamarin.iOS
Xamarin.iOSXamarin.iOS
Xamarin.iOS
 
DoActionからJava VMバイトコードに変換する話
DoActionからJava VMバイトコードに変換する話DoActionからJava VMバイトコードに変換する話
DoActionからJava VMバイトコードに変換する話
 

More from 一希 大田

More from 一希 大田 (20)

.NET 7 での ASP.NET Core Blazor の新機能ピックアップ
.NET 7 での ASP.NET Core Blazor の新機能ピックアップ.NET 7 での ASP.NET Core Blazor の新機能ピックアップ
.NET 7 での ASP.NET Core Blazor の新機能ピックアップ
 
Power Apps + C#
Power Apps + C#Power Apps + C#
Power Apps + C#
 
Azure Static Web Apps を試してみた!
Azure Static Web Apps を試してみた!Azure Static Web Apps を試してみた!
Azure Static Web Apps を試してみた!
 
Visual studio 2019 updates pickup!
Visual studio 2019 updates pickup!Visual studio 2019 updates pickup!
Visual studio 2019 updates pickup!
 
.NET 5 and Windows app dev
.NET 5 and Windows app dev.NET 5 and Windows app dev
.NET 5 and Windows app dev
 
Uno Platform 触ってみた
Uno Platform 触ってみたUno Platform 触ってみた
Uno Platform 触ってみた
 
WPF on .NET Core 3.1 で Windows 10 アプリ開発
WPF on .NET Core 3.1 で Windows 10 アプリ開発WPF on .NET Core 3.1 で Windows 10 アプリ開発
WPF on .NET Core 3.1 で Windows 10 アプリ開発
 
.NET Core 3.0 + Windows 10 で WPF 開発
.NET Core 3.0 + Windows 10 で WPF 開発.NET Core 3.0 + Windows 10 で WPF 開発
.NET Core 3.0 + Windows 10 で WPF 開発
 
はじめよう Azure Functions
はじめよう Azure Functionsはじめよう Azure Functions
はじめよう Azure Functions
 
Windows 10 対応のデスクトップアプリを作る技術(事前公開版v2)
Windows 10 対応のデスクトップアプリを作る技術(事前公開版v2)Windows 10 対応のデスクトップアプリを作る技術(事前公開版v2)
Windows 10 対応のデスクトップアプリを作る技術(事前公開版v2)
 
Xamarin.Forms アプリケーション 設計パターン
Xamarin.Forms アプリケーション 設計パターンXamarin.Forms アプリケーション 設計パターン
Xamarin.Forms アプリケーション 設計パターン
 
Windows 10 対応のデスクトップアプリを 作る技術(事前公開版)
Windows 10 対応のデスクトップアプリを 作る技術(事前公開版)Windows 10 対応のデスクトップアプリを 作る技術(事前公開版)
Windows 10 対応のデスクトップアプリを 作る技術(事前公開版)
 
WPF on .NET Core 3.0
WPF on .NET Core 3.0WPF on .NET Core 3.0
WPF on .NET Core 3.0
 
Visual Studio 2019 の個人的なお勧め機能(発表時点)
Visual Studio 2019 の個人的なお勧め機能(発表時点)Visual Studio 2019 の個人的なお勧め機能(発表時点)
Visual Studio 2019 の個人的なお勧め機能(発表時点)
 
Visual Studio 2019 の個人的なお勧め機能
Visual Studio 2019 の個人的なお勧め機能Visual Studio 2019 の個人的なお勧め機能
Visual Studio 2019 の個人的なお勧め機能
 
Windows 10 に対応した デスクトップ アプリを作る技術(事前公開版 v2)
Windows 10 に対応した デスクトップ アプリを作る技術(事前公開版 v2)Windows 10 に対応した デスクトップ アプリを作る技術(事前公開版 v2)
Windows 10 に対応した デスクトップ アプリを作る技術(事前公開版 v2)
 
事前公開版 Windows 10 に対応したデスクトップ アプリを作る技術 v1
事前公開版 Windows 10 に対応したデスクトップ アプリを作る技術 v1事前公開版 Windows 10 に対応したデスクトップ アプリを作る技術 v1
事前公開版 Windows 10 に対応したデスクトップ アプリを作る技術 v1
 
スマートスピーカーのバックエンドで Azure を使う方法
スマートスピーカーのバックエンドでAzure を使う方法スマートスピーカーのバックエンドでAzure を使う方法
スマートスピーカーのバックエンドで Azure を使う方法
 
Visual Studio App center 概要
Visual Studio App center 概要Visual Studio App center 概要
Visual Studio App center 概要
 
はじめての HoloLens セッションの集大成お見せします!
はじめての HoloLens セッションの集大成お見せします!はじめての HoloLens セッションの集大成お見せします!
はじめての HoloLens セッションの集大成お見せします!
 

Recently uploaded

Recently uploaded (10)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 

Prism + ReactiveProperty入門