78
UXDD MVVM Store Apps 蜜蜜蜜蜜蜜蜜蜜蜜 蜜蜜 蜜

UXDD MVVM Store Apps 蜜葉式開発フロー

Embed Size (px)

Citation preview

Page 1: UXDD MVVM Store Apps 蜜葉式開発フロー

UXDD MVVM Store Apps 蜜葉式開発フロー蜜葉 優

Page 2: UXDD MVVM Store Apps 蜜葉式開発フロー

• H.N. : 蜜葉 優 [mitsuba yu]• Expression Blend が好きな人• 最近はカメラが趣味• twitter:@mitsuba_tan• Community:Windows Phone Arch• blog:http://d.hatena.ne.jp/c-mitsuba

profile

Page 3: UXDD MVVM Store Apps 蜜葉式開発フロー

• プログラマにはデザイナっていう人• デザイナにはプログラマっていう人• UX デザイナとかインタラクションデベ

ロッパーとか怪しい肩書きはじめました• XAML が好きな人• C# はよくわかんない。• ロジックとか興味ないけど• 見た目は綺麗な方がいい

profile

Page 4: UXDD MVVM Store Apps 蜜葉式開発フロー
Page 5: UXDD MVVM Store Apps 蜜葉式開発フロー

経緯

Page 6: UXDD MVVM Store Apps 蜜葉式開発フロー

なんかちょっとまえからWindows Store Appsっていうのがあるらしい

Page 7: UXDD MVVM Store Apps 蜜葉式開発フロー

作ってみよう!

Page 8: UXDD MVVM Store Apps 蜜葉式開発フロー

なんかテンプレがむずかしい

Page 9: UXDD MVVM Store Apps 蜜葉式開発フロー

あれ、 Windows Phone にあった SampleDatasetも DataStore も Behavior もないじゃない

Page 10: UXDD MVVM Store Apps 蜜葉式開発フロー

なんかあたしが Windows Phone でやってたことが何一つできない・・・

Page 11: UXDD MVVM Store Apps 蜜葉式開発フロー

XAML(Blend) と C#/VB(Visual Studio) ってデザイナとプログラマの協業支援じゃなかったっけ…

Page 12: UXDD MVVM Store Apps 蜜葉式開発フロー

決別の危機!

Page 13: UXDD MVVM Store Apps 蜜葉式開発フロー

ちょっと作り方を考えよう。

Page 14: UXDD MVVM Store Apps 蜜葉式開発フロー

ふむ、、、こうすればいいかも?

Page 15: UXDD MVVM Store Apps 蜜葉式開発フロー

今日はそんな体験談をお話します。

Page 16: UXDD MVVM Store Apps 蜜葉式開発フロー

• アプリケーション開発を分担する– MVVM

– 協業

テーマ

Page 17: UXDD MVVM Store Apps 蜜葉式開発フロー

• すばらしき Windows Phone

– SampleDataset

– DataStore

– Behavior

agenda

Page 18: UXDD MVVM Store Apps 蜜葉式開発フロー

• Windows Store Apps でこうつくった– ラフ作成– コピペ XAML

– ItemsTemplate 書く– ぷろっぷたぶたぶぐらい覚えれるよね– CollectionViewSource でしあわせ

agenda

Page 19: UXDD MVVM Store Apps 蜜葉式開発フロー

前提知識

Page 20: UXDD MVVM Store Apps 蜜葉式開発フロー

• Silverlight,WPF,WindowsPhoneApps,Window

s Store Apps を開発するときのパターン• XAML=

Extensible Application Markup Language

• C#/VB

– なんか処理するコード

XAML+C#/VB

Page 21: UXDD MVVM Store Apps 蜜葉式開発フロー

• 誤解を恐れずにいっちゃえば、• XAML = HTML + CSS 的な役割• C#/VB = Javascript 的な役割

XAML+C#/VB

Page 22: UXDD MVVM Store Apps 蜜葉式開発フロー

MVVM みたいなもの

Page 23: UXDD MVVM Store Apps 蜜葉式開発フロー

ModelViewViewModel

Page 24: UXDD MVVM Store Apps 蜜葉式開発フロー

MVVMModel View ViewModel( モデル・ビュー・ビューモデル ;MVVM) は、独自のGUI( グラフィカルユーザーインターフェース ) を持つアプリケーションソフトウェアを、以下に述べるような Model-View-ViewModel の 3 つの部分に分割して設計・実装するソフトウェアアーキテクチャパターンである。 MVC(Model-View-Controller) の派生パターンであり、特にPresentation Model[1] パターンを直接の祖先に持つ。 MVVM を考慮してアプリケーションを開発する目的は、他の MVC 系のパターンと同様にアプリケーションの「プレゼンテーションとドメインを分離 [2] 」する事で、アプリケーション開発における保守性・開発生産性に寄与する事である。元来マイクロソフト社のユーザーインターフェースサブシステムである WPF(Windows Presentation Foundation) や Silverlight の世界で生まれた考え方ではあるが、現在は Android やウェブブラウザ上での JavaScript の世界でも MVVM の利用は広がっている。

wikipedia

Page 25: UXDD MVVM Store Apps 蜜葉式開発フロー

なんかむずかしくってよーわからん。

Page 26: UXDD MVVM Store Apps 蜜葉式開発フロー

View : みためViewMode : 表示したいデータをまとめたやつModel : 実際にデータ取ってくるコード

Page 27: UXDD MVVM Store Apps 蜜葉式開発フロー

程度に考えてる

Page 28: UXDD MVVM Store Apps 蜜葉式開発フロー

もう少し言うと、なんでもかんでもMVVMにする必要はないかんじ

Page 29: UXDD MVVM Store Apps 蜜葉式開発フロー

• MVVM を使うと綺麗に疎結合できる!– V,VM,M 間でだれがどこを実装するか分担できる

• 一人やったら、やらなくてもいいんちゃうの?

– 綺麗に分けるのに、どこまで分けるかとか、難しい実装とかいるかもしれない。• べたで書いた方が開発速度がいいかもしれない。

– コードの再利用性が高くなる!• ほんとに再利用する?

– 綺麗に分けると、コードをいじった時の影響が少なくて済むから保守性があがる。• これはそうかも

MVVM に思うこと

Page 30: UXDD MVVM Store Apps 蜜葉式開発フロー

MVVM に思うこと• MVVM を使うと綺麗に疎結合できる!

– V,VM,M 間でだれがどこを実装するか分担できる• 一人やったら、やらなくてもいいんちゃうの?

– 綺麗に分けるのに、どこまで分けるかとか、難しい実装とかいるかもしれない。• べたで書いた方が開発速度がいいかもしれない。

– コードの再利用性が高くなる!• ほんとに再利用する?

– 綺麗に分けると、コードをいじった時の影響が少なくて済むから保守性があがる。• これはそうかも

Page 31: UXDD MVVM Store Apps 蜜葉式開発フロー

とはいえ、やっぱりむずかしそう

Page 32: UXDD MVVM Store Apps 蜜葉式開発フロー

まーでもC#とかよくわかんないし、流行りでなんかいいらしいけど、よくわかんない。

Page 33: UXDD MVVM Store Apps 蜜葉式開発フロー

でもC#書いてくれる人が書きやすいように見た目つくると、あとでいろいろ変更とかあったときに勝手にやれるらしい

Page 34: UXDD MVVM Store Apps 蜜葉式開発フロー

デザイナ「プログラマのことなんてほっといてデザインできる!」

Page 35: UXDD MVVM Store Apps 蜜葉式開発フロー

プログラマ「デザイナほっといてとりあえずデータさえ取ってくればいい」

Page 36: UXDD MVVM Store Apps 蜜葉式開発フロー

ぷろぐらむとかしらなくても見た目がつくれる!

Page 37: UXDD MVVM Store Apps 蜜葉式開発フロー

じゃあ見た目は XAML で完結すればいいんじゃないか!

Page 38: UXDD MVVM Store Apps 蜜葉式開発フロー

とりあえず見た目に関してはC#書いたら負けなんじゃないか!   ←結論

Page 39: UXDD MVVM Store Apps 蜜葉式開発フロー

気づいたら MVVM のような形になってた

Page 40: UXDD MVVM Store Apps 蜜葉式開発フロー

M <-> V M <-> M

Page 41: UXDD MVVM Store Apps 蜜葉式開発フロー

言い換えれば、ホットモックみたいなものをつくります。

Page 42: UXDD MVVM Store Apps 蜜葉式開発フロー

すばらしきWindows Phone

Page 43: UXDD MVVM Store Apps 蜜葉式開発フロー

• SampleDataSet

• DataStore

• Behavior

• Binding

• Converter

Windows Phone の場合

Page 44: UXDD MVVM Store Apps 蜜葉式開発フロー

• SampleDataSet

– 実行時に取得するデータをデザイン時に仮に生成してくれる機能

– 取得するデータの形式さえ決まっていれば、コードの実装を待たずにデザインを作ることができるようになるのがメリット

Windows Phone の場合

Page 45: UXDD MVVM Store Apps 蜜葉式開発フロー

• DataStore

– アプリケーション内で利用したい値を保持する機能– DataStore の生成にはコードを必要とせず、ビジュ

アルに定義が可能– 後述する Behavior をつかえば、値の変更も可能

Windows Phone の場合

Page 46: UXDD MVVM Store Apps 蜜葉式開発フロー

• Behavior

– だれのなにをどうしたときに、– だれのなにをどうするっていう機能– 例えば、ボタンをクリックしたときに、テキ

ストを変更するとか

Windows Phone の場合

Page 47: UXDD MVVM Store Apps 蜜葉式開発フロー

• Binding

– コントロールのプロパティとコントロールのプロパティをひもづける機能

– 例えば、 TextBox に入力している文字とTextBlock に表示する文字をひもづける

Windows Phone の場合

Page 48: UXDD MVVM Store Apps 蜜葉式開発フロー

• Converter

– Binding でひもづけた間でデータに何か編集を行う機能(というか実装?

– 例えば、 TextBox に 100(int) と入力すると、TextBlock に 01:40(TimeSpan) と表示するなど

Windows Phone の場合

Page 49: UXDD MVVM Store Apps 蜜葉式開発フロー

• つくるもののデータがあれば、いきなり作りはじめられます。

• SampleDataset で簡単

Windows Phone の場合

Page 50: UXDD MVVM Store Apps 蜜葉式開発フロー

• もしもデータがなければ、それっぽいデータを作ればいい。

• XML から SampleDataSet のインポートで簡単

Windows Phone の場合

Page 51: UXDD MVVM Store Apps 蜜葉式開発フロー

• UI で必要な動的な値は DataStore でおっけー

Windows Phone の場合

Page 52: UXDD MVVM Store Apps 蜜葉式開発フロー

・ボタン押した時になにかしたいはビヘイビアでおっけー

・ステートの変更とかも、 Storyboard キックしたりとかプロパティ変えるとかDataStore の値になんかするとかも簡単

Windows Phone の場合

Page 53: UXDD MVVM Store Apps 蜜葉式開発フロー

やってみよう

Page 54: UXDD MVVM Store Apps 蜜葉式開発フロー

例えば HatenaFotolifeの画像を取ってくる

http://f.hatena.ne.jp/hotfoto?mode=rss

Page 55: UXDD MVVM Store Apps 蜜葉式開発フロー

Xml 取ってくればすぐにデザインができる!

Page 56: UXDD MVVM Store Apps 蜜葉式開発フロー

例えば1から順番に数字タップして速度を競うゲームを作ってみる

Page 57: UXDD MVVM Store Apps 蜜葉式開発フロー

SampleDataSetを実データとして使ったり、ビヘイビアを駆使すればコードいらず!

Page 58: UXDD MVVM Store Apps 蜜葉式開発フロー

• SampleDataSet,DataStore,behavior,binding,Converter,Storyboard あたりを駆使すれば、見た目はほとんど実装できたし、動的なものが必要ないアプリは C# なしで作れたこともあった。

• データもある体で作れるし、 XAML で出来ないところはプログラマにまかせるって言える

Windows Phone の場合

Page 59: UXDD MVVM Store Apps 蜜葉式開発フロー

とはいえ、日本で売っていない Windows Phone 8

7.8 ->

Page 60: UXDD MVVM Store Apps 蜜葉式開発フロー

アプリ作っても使える人も端末も少ないのが現実

Page 61: UXDD MVVM Store Apps 蜜葉式開発フロー

そこで win8 に合わせてStore Apps かー

Page 62: UXDD MVVM Store Apps 蜜葉式開発フロー

• Windows Store Apps にはSampleDataset 、 DataStore 、 Behavior がない。

• あるのは、 Storyboard 、 Binding 、 Converter ぐらい

最初に言ったように

Page 63: UXDD MVVM Store Apps 蜜葉式開発フロー

• SampleDataSet がない DataStore がない!– データありきでデザインとか開発ができない

• Behavior がない!– C# かかなあかん。。

最初に言ったように

Page 64: UXDD MVVM Store Apps 蜜葉式開発フロー

Store のデモ!

Page 65: UXDD MVVM Store Apps 蜜葉式開発フロー

と言いたいけど、さっきの電話レベルをストアでやるのはちょっとつらい

Page 66: UXDD MVVM Store Apps 蜜葉式開発フロー

いやかなりつらい

Page 67: UXDD MVVM Store Apps 蜜葉式開発フロー

なので、アプリを作る前に、クラスの設計とかデータの構造とかどの画面でどんな情報が必要でどう紐づくっていう設計を最初にきちんとしないとつらい。。

Page 68: UXDD MVVM Store Apps 蜜葉式開発フロー

ほんとはアプリ構成とか IAとかやるべきだけど、こんなふうにViewから作ります。

Page 69: UXDD MVVM Store Apps 蜜葉式開発フロー

ほんとはアプリ構成とか IAとかやるべきだけど、今日はできた前提でViewを作ります。

Page 70: UXDD MVVM Store Apps 蜜葉式開発フロー

・ベタ書き XAML・ ItemsTemplate化・ CollectionViewSource・必要なら Converter 自作

Page 71: UXDD MVVM Store Apps 蜜葉式開発フロー

ここまでできれば、あとはプログラマよろしく!

Page 72: UXDD MVVM Store Apps 蜜葉式開発フロー

でも、、、

Page 73: UXDD MVVM Store Apps 蜜葉式開発フロー

やっぱりパソコンはちょっとたいへん <ー結論

Page 74: UXDD MVVM Store Apps 蜜葉式開発フロー

• Windows Store Apps では協業・分離できるほどの環境が整ってない。

• ボタン押した時に Storyboard を動かすとかも C# で書かないといけない。

• .cs がどんどん XAML と密結合する• しかも、 Windows Store Apps のデザイ

ナならちょっとぐらい C# 書けないと…

まとめ

Page 75: UXDD MVVM Store Apps 蜜葉式開発フロー

• ただまぁ、 ItemsTemplate 作って、 CollectionViewSource でデータでるようにしたし、ここまでやったから、

• あとプログラマよろしく でいいとおもう– デザイナとプログラマの線引き– 協業なんてなかったんや。。。

まとめ

Page 76: UXDD MVVM Store Apps 蜜葉式開発フロー

所感

Page 77: UXDD MVVM Store Apps 蜜葉式開発フロー

せっかく、めとろめとろ言ってたんやから、電話みたいにもっと作りやすくしてほしいなー

Page 78: UXDD MVVM Store Apps 蜜葉式開発フロー

ご清聴ありがとうございました

@mitsuba_tan