サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
インタビュー
ugaya40.net
XAML Advent Calendar 11日目の記事です。 皆さんXAML使いこなしていますか?。XAMLって慣れていない間はどーしてもC#などの言語の考え方に縛られて活用しきれないものです。ですので今日は、C#では実現が難しく、XAML固有の機能を使うことでXAMLでの表現力を広げるTipsを2つほど解説します。 去年のWeakEventみたいなものを期待していた方、ライトなネタで申し訳ありません。 【その1】Attachableなコントロールを作る こういうのどうしていますか? ButtonのControlTemplateで実現しようとしても画像が異なるだけで複数のControlTemplateが必要になってしまいます。かといってわざわざUserControlも大げさでなんかしっくりきません。Buttonだけじゃなくて、いろんなコントロールに画像はさみたくなる事もまた多いです。 こ
弊社協賛の プログラミング生放送勉強会第25回@品川 http://atnd.org/events/41993 でお話ししてきました。 結構抽象度の高い話を、トークでだいぶ埋めつつお話ししたのでどっかでリバイバルセッションするかも。 誰にでも解るように細かくやるとまた80分セッションでもPDSを越えてDomain Logic Patternまでいけない事になるし、説明飛ばすとかなり早い段階か人を置いていく事になるしそもそも自分の理解出来ないものは価値がないと思っている人たちを黙らせられないのでまぁ難しいっすね。
この記事は C# AdventCalender 2012 の12/17日分の記事です。 タイトルなんのこっちゃ?って思われるかもしれませんが、今年はMVVMとは関係ないC#erらしいタイトルを・・・という事自信がなくなるクラスのインターフェースに使う(プロパティの型として使う)コレクションinterfaceの使いわけを自身の整理のためにも書いてみます。 ようは public class Tweet{ } public class TwitterApplication { public [?(なんかコレクションのインターフェース)] Tweets{get; private set;} } みたいな時にこの「?」に何を使うかという問題ですね。 .NET4.5ではIReadOnlyCollection<T>/IReadOnlyList<T>/IReadOnlyDictionary<T>などの読み
もう年なのか・・と思えるほど体力的に徹夜が堪えてくるようになってきましたが話してきましたよん RIA アーキテクチャ研究会 第4回セミナー http://kokucheese.com/event/index/50383/
こんにちわ。久々に小ネタをリリースしたのでこんな記事を書いています。今回はXAMLもMVVMも関係ありません。ご存知の方もご存じではない方もいらっしゃるとは思いますが、NET Framework 4.5では標準ライブラリでZip圧縮・解凍ができるようになりました(しかしパスワード付きZipに対するサポートはないようです)。今回CodePlexにリリースしたのはその補完クラスになります。 今までLivetのプロジェクト・アイテムテンプレート用のzipファイルを作成するのに簡単なバッチを書いて使っていました。が、なんというかバッチに向いているアーカイバソフトって意外とそんなにないんですね。しっかり探したわけではないんですが。今まではLhaplusのGUI上の設定に強く依存するバッチを書いて使っていましたが、今回Windows 8 Pro RTMに乗り換えた際に正しく動く設定を失くしてしまい、こ
大阪遠征でした。2コマ2コマ。 2012/8/4 わんくま同盟 大坂勉強会 #50 http://www.wankuma.com/seminar/20120804osaka50/ 1コマ目は「GUIアーキテクチャパターンの基礎からMVVMパターンへ」。3/10,6/23とやってきたこのテーマもそろそろこの辺でfixかなーと思っております。 2コマ目は「Modelの中身 – ドメインロジックパターン」。こっちはまだ何回か洗練させる必要があるかなー。。 2コマ目のデモアプリは何故かあそこのネットワーク環境では微妙な動きをしましたが、完全にこちらのサンプルと同じものになります。 「WPF/Silverlight/WindowsPhoneから WinRT まで見据えたリッチクライアント Model 設計」- RIA アーキテクチャ研究会 第2回セミナーで話してきました! the sea of fe
念願のWPF4 MVVM Infrastructure Livet 1.0系をリリースしました。現行バージョン1.04。1.0.0はごくひそかにリリースし、1.0.3まではフィードバックを集めつつ特にここでの告知なしでやってきました。 このバージョンからはLivetは後方互換性を意識したバージョンアップをする事になります。以後Livet1.x系の間にパブリックインターフェースの削除はありません。パブリックAPIの追加はありますが、削除の代わりに既存のAPIにはObsolete属性を使用して非推奨とする事にします。 自信を持っておすすめできるリリースです。 主要機能はLivet紹介ページに記載してあります。なおNugetにも対応いたしました。(ただLivetの威力はプロジェクトテンプレートによるものが大きいため、極力VSGaralley/msiからのインストールをおすすめします)。ReSha
なにやらMOVEが話題です。 MVC is dead, it’s time to MOVE on. http://cirw.in/blog/time-to-move-on [翻訳]MVCは死んだ。MOVEするときがきた きしだのはてな http://d.hatena.ne.jp/nowokay/20120704 Twitterで「”MOVEは生まれた瞬間死んだ” って記事まだー?」って騒いでたら「お前が書けよ」の流れだったので息抜きに書きます。息抜きなので図が無いのは勘弁してください。 MOVEが生まれていない理由 この文中ではMOVEが生まれた理由はMVCの問題点に関わるとされており、そのMVCの問題点としてされているのは次の2点です。 MVCではControllerが肥大化する MVCは10年古い技術で設計されていて、最新のプログラミングパラダイムに対応していない。 しかしこの理由のう
お話してきました。 6/23 .NETラボ勉強会 http://www.dotnetlab.net/dnn/Events/NETラボ勉強会2012年06月/tabid/116/Default.aspx 今回の件で大体わかったんですが、DomainModel/TransactionScriptの所まで70分ぐらいで話を進めるのは無理ですね。 今回のセッションの内容のあたりの理解を前提に踏まえたセッションをどこかでやりたいっす。 3/10よりはうまくなったかなぁって気がします。 Twitterでサンプルコードから概念を学ぶ事についてうっさかったのでそこら辺はしっかり書いています。
3/10 RIAアーキテクチャ研究会 第3回セミナーで話してきました。 RIA アーキテクチャー研究会 第3回 セミナー http://atnd.org/events/24951 資料を公開します。UIパターンの理解を妨げる先入観、多少はぶち壊せたかな?。 スライドはアニメーションを多用しています。しかしアニメーションを飛ばすと要点が隠れてしまうようになっています、ごめんなさい><。 終了後に目についたいくつかの反応に反応しておきます。 ・「Modelから考えると混乱する」というのはDDDの人から見ると反論多そうじゃない?。 まずUIパターンでいうModelはDomainModelを内包しうるし、時にはイコールになることもあるだろうけど、基本的におなじものをさした言葉ではありません。しかもこれは責務分けに悩んだ時の指針として出したもので、設計の手順として説明したところじゃないです。資料を参
この記事はSilverlight Advent Calender 2011の12/11分の記事です。前日は@neueccさんの.NETの標準シリアライザ(XML/JSON)の使い分けまとめでした。 WeakEventとは? WeakEventとはイベントハンドラの解除忘れによるメモリリークが発生しないイベント機構の事です。 .NETでメモリリークが発生する主要要因の一つとして、イベント受信側クラスがイベントハンドラの登録を解除しない事で発生するメモリリークが挙げられます。ステートレスなWebプラットフォーム上ではほとんど発生を考慮しなくて良い問題ですが、ステートフルなリッチクライアントではよく問題になります。WeakEvent機構はそのためのソリューションの一つとしてもともとはWPF用に用意されていた機構です。その証拠に.NET4ではWeakEventManagerなどのWeakEvent
RIA アーキテクチャ研究会 第2回セミナー話してきました。 RIA アーキテクチャ研究会 第2回セミナー http://atnd.org/events/21774 スライドはデモプロジェクトのソリューションと併せてご覧ください。 今回のテーマはModelオンリー。そして僕にしては珍しくでもデモプロジェクト中心です。スライドはデモプロジェクトと合わせてご覧ください。 個人的な事情で全ソースコード・全スライドは計26時間で作ったものなので、ソースにバグ残っていますし、汚いです。ただ今回限りのソースではなく今後リファクタを重ねて議論の土台にしていこうと思っているものなのでソースはbitbucketに公開しました。 デモプロジェクト デモプロジェクトリポジトリ https://bitbucket.org/ugaya40/twittersample スライド中で説明していますが、WPF4/Sil
MVVMパターン的な実装は、他のプラットフォームでは選択肢の一つにすぎませんが、WPF/Silverlight(Windows Phone 7 含む)においては唯一の選択肢です。コードビハインドを書かないことはMVVMパターンそのものの定義とは関係ありません。まずはスキルにあったレベルでMVVMパターンを意識した実装を初めてみませんか? 以前の勉強会発表資料(わんくま勉強会での発表資料の半分以上をカットし、Androidテスト祭り分追加)を加工し、社内勉強会、そのほかの勉強会・ブログなどで自由に使える資料として公開します。私の個人名は抜いてあります。 無許可の改変・引用なども問題ありません。ただ、資料の直接の商用利用などはご遠慮ください。 ブログに張り付けたい場合、下のbマークから埋め込み用URLを取得できます。 「コードビハインドを書くのはMVVMパターンではない」などの誤解が、MVVM
2011/8/6 第1回 Androidテスト祭りの発表資料を公開します。.NETクラスタという先入観を持っていただきたくなかったので、自己紹介スライドは最後にさせていただきました。でも非常に空気のよい場だったのでそんな配慮は不要だったかもしれません。 反省点としてはやはり伝え方です。設計パターンに対する意識がすでにある方には届くみたいですが、あまり今まで意識していない方に、どうやって今後伝えていくべきか、きちんと今後考えていきたいと思います。 一応補足として、WPF/SilverlightでのPresentationModelパターンの実装パターン?であるMVVMパターンについて、どういった必然性がWPF/Silverlightにあるのかはこちらに書いてありますますので、興味を持っていただける方はどうぞ。 MVVMパターンとは? わんくま同盟東京勉強会 #60 セッション資料 the
ちょうど今Livet開発メーリングリストで懸案になっている機能に、WPFがCommandのCanExecuteを強制的に自動再評価する既定の動きを、一切強制再評価なし(None)・WPF既定(Default)・WPF既定(Full)に加えてViewModelのプロパティの変化で強制再評価 の3つのモードに設定できるようにする機能があります。 この機能の是非について、正直ものすごく悩んでいますし、MLメンバの方にも反対意見も頂いております。広くご意見いただけると幸いです。 概要 WPF既定の動作の何が気に入らなかったかといえば、 Windowのアクティブ化・非アクティブ化 マウスクリック キーボード押下 キーボードフォーカスのGot/Lost が、アプリ内のどれかのコントロールやWindow自体に発生した場合に、Viewに存在するすべてのコマンドソースコントロール(ButtonやMenuIt
僕のセッションの資料をアップします。 前回は時間オーバー。今回は10分も早く終わるとかorz。 わんくま同盟 東京勉強会 #60 http://www.wankuma.com/seminar/20110625tokyo60/ 普段ブログで書いているような話や、今までUPしたスライドのような話ではなくて、超初心者向けの内容です。 「一般的な設計原則とWPF/Silverlightの特徴から導出するMVVMパターン」という副題が付けてあります。 とりあえずSlideboomはパワポアニメもいけるようで大満足。 レビュー協力してくれた秘密組織 謎クエリの会のみんな、@xin9leさん本当にありがとう!。 課題 反省会という名の、いつものメンバー的な3次会で、「WeakEventの話はレベル1にふさわしくないんじゃないの?」という意見をもらっていたり。WeakEventパターンへの踏み込んだ解説は
よくTwitter上などでMVVMパターンの学習は難しいという話を聞きます。最近その理由と認識のずれが少しづつ解ってきたので、書いてみる事にしました。 ネット上には様々なサンプルコードがありますが、「MVVMパターンを使う」という視点で学習する場合、用意した開発環境によって学習する事は異なってきます。 何故なら、設計パターンの思想の再現度は「その設計パターンのためのライブラリと環境」によって大きく異なるものだからです。 ASP.NET MVCが導入できない状況でASP.NET MVCをやろうとしますか?。そんな事をしようとすると業務ドメインのロジックに注力するどころか、MVCの概念を正しく理解しているのはもちろんの事、ASP.NETパイプラインの仕様に詳しく精通している必要もあります。他の環境(例えばRubyにおけるRails)でMVC補助がどうやって成立しているかも踏まえた上でインフラス
Livet WPF4 MVVM インフラストラクチャ ProjectHome : http://ugaya40.net/livet SourceCode : https://bitbucket.org/ugaya40/livet/ Livetの概要と導入方法 LivetはWPF4のためのMVVM(Model/View/ViewModel)パターン用インフラストラクチャです。.NET Framework 4 Client Profile以上で動作し、zlib/libpngライセンスで提供しています。zlib/libpngライセンスでは、ライブラリとしての利用に留めるのであれば再配布時にも著作権表示などの義務はありません。しかし、ソースコードを改変しての再配布にはその旨の明示が義務付けられます。 Livetの目指すところ 現在、WPFでMVVMパターンによる実装を行うにはインフラストラクチャの
LivetはWPF4のためのMVVM(Model/View/ViewModel)パターン用インフラストラクチャです。.NET Framework 4 Client Profile以上で動作し、zlib/libpngライセンスで提供しています。zlib/libpngライセンスでは、ライブラリとしての利用に留めるのであれば再配布時にも著作権表示などの義務はありません。しかし、ソースコードを改変しての再配布にはその旨の明示が義務付けられます。 ダウンロードはこちらからになります。配布ファイルはVSI(Visual Studio Content Installer)形式を使用しています。Livetアセンブリ・デザイナ(Visual Studio 2010/Expression Blend 4)サポートアセンブリを内包するプロジェクトテンプレートと、コマンド・プロパティ用のコードスニペットがインスト
僕はGoogleやTwitter検索で定期的にMVVMというキーワードで検索を行っています。 そこでこんな素敵な記事を見つけました。 MVVMのメリット・デメリットを見つめなおす wave1008の日記 http://d.hatena.ne.jp/wave1008/20110227 基本的にMVVMパターンの大目標(ドメインロジックとプレゼンテーションロジックの分離)には賛同されているものの、ビヘイビアやコマンドの仕様には否定的な記事です。書かれている内容は非常に説得力があり、素晴らしい記事です。驚くほどこういった記事は少ないので、大変勉強になりました。是非皆さんも一読してみてください。 素晴らしい突込みとは思うのですが、一年以上MVVMを追い続けた人間として素直にこの内容の視点に賛同できるというわけではないので、少し僕の考え方を書いてみたいと思います。 反論の前提として、僕はMVVMイン
MVVMパターンに関する認識・知見があちこちに散らばっているように見えるので、そろそろまとめてみる事にしました。この記事は、他の各サイトの記事などでMVVMの基本的な考え方・実装方法などを把握されている方が対象です。 そういった方がMVVMパターンを実務に適応してみようと思った時や、MVVMパターンを要件に合わせてカスタマイズしていく際に、認識すべきパターンの実装方式のそもそもの理由と考え方、要件に合わせて考えていかなければならないポイントを把握する助けとなる情報を提供するのを目的としてこの記事を書きました。(文字ばかりですいません><) MVVMの実装の各要素の実装をこねくりまわすばかりで、その過程でパターンを把握している気になって、パターンの本来の目的を破壊してしまうような実装を推奨してしまっている人も見ます。そんな滑稽な事をしない認識を持って欲しいのです。 MVVMパターンは、WPF
今後のMVVMパターンの普及のために重要だと思われるいくつかの項目についてConnectへフィードバックしました。 System.Windows.Interactivity.dll相当の機能を、.NETFrameworkに導入して欲しい この件については、こちらの記事を参照してください。 EventTriggerの名前衝突問題とか、どういう形で解決してくれるのか。これは本当に解決されないとまずい項目。 ApplicationクラスがDependencyObjectから派生されるようにしてほしい 僕の提案通りだと、DependencyObjectはDispatcherObjectの派生クラスなので、Applicationを素直に触れるスレッドが一つに限られてしまいます。ただApplicationを複数スレッドから触るのってそもそもどうなんでしょうかと僕は思っています。 何よりも現状は、App
前述の記事の通りSilverlight5にはMVVMパターンサポートとして、イベントハンドラへのXAMLからの直接バインドが可能になるそうです。 こういうコードイメージになるんですかね。(このコードは実際には動作しません) 以前の記事ではあえて書きませんでした(Twitterでは愚痴りまくってました)が、私はこの機能の導入には絶対反対です。何故ならそれはMVVMパターンの思想と反しかねないからです。私は、MVVMパターンがパターン遵守へ誘導的なインフラストラクチャを持ちうるポテンシャルを持っている事を大きなメリットだと思っています。 パターン遵守へ誘導的な設計パターンのインフラストラクチャ MVC系に限らず、多くの設計パターンは習得にドキュメントやサンプルコードを読み込まねばなりません。 ドキュメントやサンプルコードへの理解の差が、コードの品質の差となって現れる事は良くありることです。
細かいTipsとかやった事ないんですが、今回はC# Advent Calendar jp: 2010用にちょっとWPF-Tipsやってみました。この記事はC# Advent Calendar jp: 2010、12/5分です。 WPFのItemsControllのスクロール動作には2種類の動作があります。 物理スクロールと論理スクロール 物理スクロールは、あらかじめ定められた物理インクリメント (通常は、ピクセル数で宣言された値) で内容をスクロールするために使用されます。 論理スクロールは、論理ツリーの次の項目にスクロールするために使用されます。 物理スクロールは、ほとんどの Panel 要素の既定のスクロール動作です。 WPF では、両方の種類のスクロールをサポートしています。 MSDNライブラリ ScrollViewerの概要 – http://msdn.microsoft.com/
日本時間本日早朝(2010/12/03)、米国 でのイベントSilverlight Fire Starterのキーノートにおいて、Silverlight 5が発表されました。 WPFの存在意義を脅かすほどのSilverlightの機能強化が発表される中、The Future of Microsoft SilverlightとしてMVVMパターン用サポートがSilverlight 5 標準に公式に採用される事が発表されました。 Model View ViewModel (MVVM) and Databinding enhancements allow more work to be done more easily via XAML: Debugging support now allows breakpoints to be set on a binding, so you can ste
WPF/Silverlight開発において、イベント駆動開発じゃ何故いけないのか? MVC/MVP/PMパターンとMVVMはどう違うのか、どういったメリットがあるのか? そういう声を聴く機会は少なくありません。 MVVMパターンとイベント駆動開発、MVC/MVP/PMパターンとの関係について僕の理解をまとめました。 MVVMパターンをわざわざ適応する事に疑問がある方にはぜひ読んで欲しいと思っています。 また、このドキュメントを記述するにあたり@matarilloさん、@ufcppさん、@yfakariyaさん、諸先輩方3方に叩き台を見ていただき多くの指摘を頂くことができました。今回は頂いたフィードバックを受けて公開する形になっております。 押しつけがましくも一方的に依頼させていただいて、にも拘わらず非常に丁寧に様々な指摘・示唆を頂くことができました。 この場を借りてお礼申し上げます。ありが
第60回codeseek勉強会・第2回日本C#ユーザー会勉強会 勉強会行ってきました。話してきました。 貫徹だったので頭がぼーっとしてましたが、なんとか喋りました。しかしその後の懇親会ではところどころ記憶が抜け・・。 @neueccさんのお宅で朝まで飲み。大人数で押しかけ申し訳ない。 しかし楽しかったー。 反省点 なによりも、タイムオーバーで尻切れになってしまいました。 話す前は時間意識してたんですが、デモプロジェクトのフォントサイズ、マルチディスプレイの操作で苦戦。 操作に戸惑ってタイムオーバーとかないわぁ。。 一応、押しの方法。Prismの方法までは紹介できたので、なんとかといったところ。 必ずどこかでリベンジします。 資料 スライド(Office Web App) ViewModelからViewへのメッセージング手法 サンプルソース(Visual Studio 2010 WPFソリュ
11月6日の第60回codeseek勉強会・第2回日本C#ユーザー会勉強会で、ViewModelからViewへのメッセージング手法について話してきます。 スピーカーとして話す事 前回の記事で書いたビヘイビアやTriggerBase/TriggerActionは、Viewが起点となるアクション非常に有用です。 しかし、アプリケーションのエラーダイアログなどのView側が起点ではないアクションを実装しようとするとかなり強引な実装になってしまいます。 今回の勉強会では、View起点のアクションの場合はどう実装するのか、View側を起点としないアクションはどう実装するのかについて、世界中で考えられてきた様々な手法と、今後主流となっていきそうな手法について話すつもりです。 いくつかのメジャーなMVVM補助ライブラリにも触れて、それらのライブラリがどういった対応をしているかにも触れていきたいと思ってい
プログラムの知識というのはいろいろなところに応用をすることができるものであり、そのまま通用するわけではなくても、思考の仕方というのは役立ったりするものです。 そのため、全く無関係のもののように見えても繋がる部分があるものであれば、知識を役立てることができ有効活用することができるので、知識があって損をすることはありません。 本人が上手く活用をしようという考え方さえあれば、いくらでも有効活用することができるのです。 プログラミングの知識で手術をシミュレーション 陥没乳頭の手術のシミュレーションを、情報技術関連の知識で行うことができるかとふと考えた時に、これは実現可能だと思いました。 全く無関係の分野に見えますから難しいと思いがちですが、正しい手順というものがあり幾通りのやり方が考えられるものであったとしても、最善の方法というものが存在するのであれば、情報技術開発の知識は十分に応用できるものなの
次のページ
このページを最初にブックマークしてみませんか?
『アプリ開発に必須なプログラム言語は!? – JavaやObjective-Cなど聞くけど、何が...』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く