shibuya.swift #4 (http://shibuya-swift.connpass.com/event/31031/) で発表したスライドです。 もっと詳しいMVVMの話はこちら: 健康的なMVVM 書いてますか? ~MVVMアンチパターン集~ (https://speakerdeck.com/takasek/jian-kang-de-namvvm-shu-itemasuka-mvvmantipatanji)
![MVVMって何? というか…MV○丸ごと、何?](https://cdn-ak-scissors.b.st-hatena.com/image/square/0c7b1f76912d804d4c0db73fb865eddcaac0ccde/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F6833bea1c3c545d1bf5600bc2d23f36f%2Fslide_0.jpg%3F6943921)
Realm meetup #6 で発表した Sync iOS開発の舞台裏についてです プロジェクトの話や、MVVM、ViewBindingなど多義にわたり解説しています
はじめに もうすっかり年末なので、これから2015年にかけてアプリケーションアーキテクチャがどのようになっていくのかという個人的な考え/妄想や背景について、「リアクティブ」というキーワードをもとににまとめてみたいと思います。 Google Trendsを見ると"reactive programming"という言葉は2010年前後から、ゆっくりとバズをし始め、現在も上昇を続けています。 また、仕事としては、2010年ごろから大規模なWebサービス開発において、フロントエンド、バックエンド、アルゴリズム改善といった様々な箇所で、リアクティブプログラミングの要素を取り入れながら、アーキテクチャの改善を進めてきました。そのため、こういったアーキテクチャがコード品質の維持や安定性の向上、実際的で複雑な問題の解決にも適応可能であるということを実感として持っています。 近年、そういった要素が様々なツール
こんにちは。 マイクロソフトの渡辺です。 アプリケーションのデザインパターンの1つである MVVM ( Model - View - ViewModel )。既に多くの実装例や MVVM パターンを採用した Framework が公開されています。 from Wikkipedia また、MVVM パターンは、C#/.NET/XAML の世界を中心に多く利用されてきましたが、最近では、JavaScript/HTML のアプリケーション開発で利用されることも多くなりました。 そして MVVM を理解する中で、また MVVM をサポートする Framework を利用する中では Model, View, ViewModel にとどまらず、Service, Command, Messenger, IoC, DI, Service Locator ..e.t.c といったキーワードに自然と出会うでし
こんにちは。共同開発部開発担当の北川です。 クロスプラットフォームなアプリ開発では Xamarin の使用はビジネスロジックの共通化が可能となり非常に効果的です。 すべてのアプリを単一の言語(C#)で実装することができる点だけでも魅力的ですが、MVVM 設計によりその再利用性を高めている点こそがその真価を発揮しているとも言えます。 私は Xamarin でのアプリ開発を通して MVVM 設計のすばらしさを経験してしまいました。もう後には戻れません。 Java や Objective-C でのアプリ開発でも MVVM 設計は開発スピードと品質確保を両立するために有効であるはずです。 今回は Android アプリ開発(Java)で MVVM を使うとどうなるか、紹介してみたいと思います。 MVVM 設計について MVVM 設計ではビジネスロジックを Model が担当し、ViewModel
ユーザー操作に応じて表示内容が大幅に入れ替わる、画面遷移風、ウィザード風のWPFアプリケーション。 Visual Studio 2010でユーザー・インターフェイス開発 - @IT の例では、コンテンツ領域を切り替えるボタンのイベントハンドラに、コンテンツ領域を生成するコードを書いている。 private void SwitchContent(string senderName) { switch (senderName) { case "MenuObentoOrder": ContentControlMain.Content = new ContetObentoOrder(); ChangeRibbonTabVisibility(senderName); break; case "MenuObentoEntry": ContentControlMain.Content = new Con
僕のセッションの資料をアップします。 前回は時間オーバー。今回は10分も早く終わるとかorz。 わんくま同盟 東京勉強会 #60 http://www.wankuma.com/seminar/20110625tokyo60/ 普段ブログで書いているような話や、今までUPしたスライドのような話ではなくて、超初心者向けの内容です。 「一般的な設計原則とWPF/Silverlightの特徴から導出するMVVMパターン」という副題が付けてあります。 とりあえずSlideboomはパワポアニメもいけるようで大満足。 レビュー協力してくれた秘密組織 謎クエリの会のみんな、@xin9leさん本当にありがとう!。 課題 反省会という名の、いつものメンバー的な3次会で、「WeakEventの話はレベル1にふさわしくないんじゃないの?」という意見をもらっていたり。WeakEventパターンへの踏み込んだ解説は
.NET開発者中心 厳選ブログ記事 MVVMパターンの常識 ― 「M」「V」「VM」の役割とは? ―― 「the sea of fertility」より ―― 尾上 雅則 2011/05/18 「.NET開発者中心 厳選ブログ記事」シリーズでは、世界中にある膨大なブログ・コンテンツの中から、特にInsider.NET/.NET開発者中心の読者に有用だと考えられるブログ記事を編集部が発掘・厳選し、そのブログ記事を執筆したブロガーの許可の下、その全文を転載・翻訳しています。この活動により、.NET開発者のブログ文化の価値と質を高め、より一層の盛り上げに貢献することを目指しています。 MVVM(Model-View-ViewModel)パターンに関する知見があちこちに散らばっているように見えるので、そろそろまとめてみることにしました。この記事は、MVVMの基本的な考え方・実装方法などを把握されて
○データ・バインディングでコマンド処理 前回説明したように、WPFにはデータ・バインディングという仕組みがあり、ビューの外部から表示したいデータを与えることができる(外部から与えるデータは、後述する「ビューモデル(ViewModel)」というものになる場合が多い)。 この仕組みを用いることで、Figure 2に示すように、表示したいデータだけでなく、コマンドを外部から与えることも可能である。こうすることで、ビュー内にはデータも処理も書く必要がなくなり、一般にテストが難しくなりがちなビューを極力小さくすることができる。 この方法におけるコマンドの利用手順は以下のようになる。 ICommandインターフェイスを実装したクラスを作る(=コマンドの実装) 外部から与えるデータ(=ビューモデル)により、実装したコマンドをプロパティとして公開する 公開したプロパティを、<Button>要素や<Menu
以前にも何度かT4 Templateを使ってViewModelの記述を簡略化する方法を書いてきました。 T4 TemplateでViewModelを生成する その3「Commandにも対応」 ViewModelのコードの自動生成機能とアイテムテンプレートを作ってみた これまでの方法の課題 ただ、この方法も少しばかり不満がありました。 全体的にDSLチックな構文になりとっつきにくい プロパティに属性を指定するのが文字列で指定するためインテリセンスが効かない ViewModelの基本クラスが固定化されてしまう 今回のチャレンジ ということで今回作ったものは以下のことを目標にして作りました。 なるべくDSLチックになる箇所を最小限に。 プロパティに属性を指定する方法は、インテリセンスが効くように。 ViewModelの基本クラスは割と好きに変えれるようにしたい なるべくMVVMフレームワーク非依
MVVMパターンでSilverlightでアプリケーションを組んでて画面が表示された時から入力値の妥当性検証をしておきたいという要望があるとします。簡単にできるだろうと思ってたら、結構実装に時間がかかったので備忘録がわりにメモしておきます。 ちなみにネタ元はMSDNフォーラムに以下の質問です。 LostFocus時のエラー検証について OnApplyTemplateが呼ばれるタイミングについて 初期画面表示直前に処理を実装したい 色々質問されていますが、恐らくこのようなことがやりたいのだろうな〜と思ったので実装してみました。 ViewModelの基本クラスの定義 とりあえずSilverlightApplicationを作成してPrismをNuGetから入手して参照に追加します。そしてViewModelを定義します。 namespace PrismMVVMSample.ViewModels
はじめに 前回、Messenger パターンという、ViewModel から View に要求を送る方法を試しました。 いまさら聞けない「MVVM + Messenger パターン」超入門 - present ただ、「View のコードビハインドにメッセージを処理するコードなんて書きたくない!」っていう人は結構いるみたいです。私もできることならコードビハインド書きたくないですね。 そんな人向けに、「Blend SDK に含まれている System.Windows.Interactivity.dll を使って、メッセージに対する処理を XAML で書いてしまおう」という、 Messenger を発展させたパターンがありました。その名も「Messenger + Behavior パターン」。 Messenger + Behavior パターンの鍵 System.Windows.Interact
2011/03/02 コメントの指摘を受けて修正。 間違ってた部分。 WeakPropertyChangedViewModelBaseクラスの以下の処理。 PropertyChangedEventManager.AddListener( this.Model, new PropertyChangedWeakEventListener( base.RaisePropertyChanged), string.Empty); 正しいものに差し替えました。taguoさん指摘ありがとうございました。今、UxeenというWPF製でMVVM適用して頑張って作ってるTwetterクライアントのプロジェクトのリーダーのid:anis774さんにプロジェクトに入れてもらってMVVM関連のところを見たり、気になるところに手を入れたりしてる今日この頃です。 そこで、こんな感じのプログラムを書いていたのですよ。 n
MSDN フォーラムでMVVMの画面遷移についてという質問が上がってたので、Prismを使ってやってみました。 この例で使ってるInteractionRequestの使い方は、以下の記事を参照してください。 MVVMパターンでVMからVを操作する Prism編 ViewModelの作成 今回は、ViewModelからViewへのプロパティの変更通知は必要ない小さなサンプルなので、あえてViewModelはINotifyPropertyChangedを実装していません。単純にめんどくさいからです。 まず、DataGridに表示させる行に対応するViewModelを作成します。 namespace SelectItemWindow { // 画面遷移が主題なのでModelは省いてます public class PersonViewModel { public string Name { get
Prismの最新バージョンからMVVMでの開発をサポートしてくれるようになりました。という話を聞いてPrismをダウンロードしてきてレッツトライ!としようと思うと、Bootstrapperがどうの、EventAggregaterがどうの、Regionがどうの、MEFがどうのUnityがどうのetc...と色々覚えないといけないおまけがついてくる割に、MVVM何処にあるんだ??という状態になってしまいます。 Prismは、使いこなすと便利なのですが、そういう便利クラスは置いておいて、MVVMの基本クラスだけ拝借するのでしたら、以下で述べてるクラス群をチョイスして使うだけでOKです。 PrismでMVVM(Model View ViewModel)パターンのサポート用に用意されているクラスのまとめ ということでPrismを使ってMVVMをしようとする人がPrismの樹海に迷い込まないようにPr
MVVM LightToolkitのVB用テンプレートがないと聞いたので、とりあえずViewModelのテンプレートを作ってみました。 Visual Studioのテンプレートを作るのは簡単です。 もともとになるプロジェクトやファイルを作って、 置き換えようのパラメーターをソースに適用して、 ウィザードからテンプレート化して、 UserTemplateフォルダーに置く だけ。 ということで、やってみます。 1.テンプレートのもととなるプロジェクトを作る。 まずは、テンプレートのもととなるプロジェクトを作ります。 本来のMVVM LightToolkitのプロジェクトテンプレートから作られるプロジェクトは、アセンブリの参照以外にも、MVVM LocatorやMVVM Viewなどが最初からプロジェクトに追加されていますが、今回は単にMVVM LightToolkitのアセンブリが追加され、V
はじめに 「MVVMパターンでアプリケーションを実装するのは面倒だ」 そんな時、簡単に利用できるユーティリティや簡単なツールキットの使用を検討してみてはどうでしょうか。今回は、Silverlight 4の開発で利用できるユーティリティやツールキットを解説します。 RelayCommand ICommandインターフェイスの実装を行っていると、ExecuteメソッドやCanExecuteメソッド以外はほぼ同じような実装を行えば良いことに気づきます。MVVMを採用した多くのプロジェクトでは、ExecuteメソッドやCanExecuteメソッドをデリゲートで受け取るようにしたRelayCommandというユーティリティクラスを導入して、コマンド実装の手間や修正を簡素化しています。リスト1にRelayCommandのサンプルを示します。 public class RelayCommand<T> :
はじめに Silverlightに限らない話ですが、ページからのイベントに対する処理をすべてイベントハンドラに記述してしまったために、再利用性が著しく低かったり、単体テストがひどくやりにくいシステムを見たことはありませんか? これは、プログラムの機能をすべて同じ層に記述していることが原因の1つです。 この問題に対するSilverlightでの解決策の1つが、MVVMパターンです。今回はMVVMパターンと、MVVMパターンの要となるデータバインディング、コマンドバインディングについて2回にわたって解説します。 MVVMパターンとは MVVMはModel-View-ViewModelの頭文字をとった、アプリケーションの階層化パターンの1つです。階層化パターンを適用することで各層の依存関係が薄くなり、アプリケーションの修正、複数人数での分散開発、単体テストなどが実施しやすくなります。 Expre
非実在コマンドパターンを掘り下げていくと、どう頑張ってもVisual Studioがコマンドをうまく認識してくれない+Expression Blendのデザイナがエラーはいて表示してくれなくなったりと挫折してしまいました。 ということで、ViewModelは今の所自動生成するのが一番なんだろうという考えに至り、とりあえずViewModelの自動生成と、それようのアイテムテンプレートを作りました。 ちなみに、中身がわかれば任意のViewModelの基本クラスとかに差し替えとかも出来たりしますが今回作ったのは@ugaya40さんがこっそり作ってる、まだ未完成&未公開のLivetというMVVMフレームワークを前提にしてます。Livetのバイナリは同梱してるので、使うことは出来ます。(たぶんベータ以前の状態だと思われ) とりあえず、今回作ったのは以下のものです。 LivetSupportTempl
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く