Your SlideShare is downloading. ×
Cross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCross
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Cross platform development with Xamarin 2.0 + MvvmCross

1,302

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,302
On Slideshare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
5
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Cross Platform Development with Xamarin 2.0 + MvvmCross 伊勢  シン Room metro #23 2014/03/01(Sat) @ Common Room 中津
  • 2. ⾃自⼰己紹介 •  伊勢  シン / 伊藤  伸裕 – @iseebi / id:iseebi •  スマートフォンアプリ作ってます。 – iPhone / Android •  フェンリル株式会社  所属 •  コミュニティ – スマートフォン勉強会@関⻄西 – すごいHaskell読書会 in ⼤大阪 •  H本読んでます。
  • 3. 今⽇日お話しすること •  Xamarin と  MvvmCrossについて – クロスプラットフォーム? – MvvmCrossのプロジェクトの初期設定⽅方法 – これだけは調べておきたいMvvmCross •  Service •  Plugin
  • 4. Xamarin 2.0 •  ネイティブの  iOS / Android / Mac アプリを C# で書ける! – Windows プラットフォームを⾜足せば、だいたいのプラッ トフォームのソースをC#で書いてしまえる。 – うまく使えば、かなりの量量のコードを使い回せる!
  • 5. クロスプラットフォーム開発? •  ただ書くだけだとうまくいかない –  単純にDLLを作ると、 各プラットフォームでしか動かない。 –  プロジェクトからリンクするというのは使いづらい •  PCL (Portable Class Library) という仕組みがあ る –  指定しているプラットフォームすべてで参照できるDLLを作 れる –  使えるクラスは、最⼤大公約数的になってしまう。 –  プラットフォームに固有の部分はPCLに書けないので、ロ ジックだけPCLに書き、UIやデバイス操作は各アプリ本体 にコードを書く。
  • 6. 実際にどれくらいの共通化効果あるの? •  アプリの性質にもよるけど、 3割から4割くらい共通化できます。 PCL
  • 7. デメリット •  ライセンスが⾼高い – 会社で使うと1開発者1プラットフォーム  約10万円 – 3⼈人チームを組むと  iOS / Android 3本ずつ=60万 (実際はディスカウント⼊入るのでもうちょっと安い) – 中⼩小企業ではよっぽどの事がないと買ってもらえない •  C#のコードが全部動くわけじゃない – iOS上だと動的コード⽣生成ができないので、ILは事前 コンパイルされる。(AOT)
  • 8. これだけは先に⾔言っときたい •  iOS/Androidさわったことない⼈人は、 まずはObjective-C/Java向けに書かれた本や ドキュメントを読んで! –  底辺にあるのはネイティブのオブジェクト。 ListViewなんてゆとりオブジェクトないで! –  誤った思想で作ったら余裕でネイティブ層クラッシュ •  コード共有で、ライセンス費⽤用をひねりだそう! –  ObjC/Java書きたくないというだけでは、動機に乏しい。 ライセンス費⽤用も⾼高いし偉い⼈人にメリット感じてもらえない。 (「おまえ勉強したくないだけだろ」で⼀一蹴) –  20万円/⼈人を超える価値を出さないといけない!
  • 9. これだけは先に⾔言っときたい •  現状ベストなのはMacでXamarin Studioを使う こと。 •  現状Visual Studioサポートは実⽤用的でない – Xamarin Studioと改⾏行行コードが違ってgitで衝突しま くる(チームで1⼈人だけVSで、他の⼈人はXSということは 現状厳しい  / .gitattributesでいけるかも?) – iOSのビルドに結局Macが必要 – iOSのGUI編集に結局Xcodeが必要 – そもそも挙動怪しい
  • 10. どうやってコードを共有するか •  共通側のコードを増やす – 「Viewやネイティブ処理理のコード書いたら負け」という 意識識をチーム内で共有することが⼤大事 – デバイス(カメラなど)も共有ロジックからコントロールす べき •  MVVMを使って表⽰示処理理と内部処理理を分離離す る。
  • 11. MVVM •  Model-View-ViewModel の略略 •  表⽰示処理理と内部処理理を分割するためのソフトウェ アアーキテクチャパターンの1つ。 – データバインディングを活⽤用している。 •  MvvmCross を使った開発では、 アプリ本体に View を、 Model と  ViewModel を Core(PCL)にもたせる。 – Windows系の環境で普通にやるより、 内部処理理がPCLで制限があることもあり、 より明確かつ強⼒力力に分離離することができる。
  • 12. MvvmCross •  クロスプラットフォームでのMVVM開発をサポート するライブラリ – Windows Desktop(WPF)、Windowsストアアプリ、 Windows Phone、Xamarin.iOS、 Xamarin.Android、MonoMac/Xamarin.Mac •  MVVMやそれを便便利利に使うための仕組みが全部 ⼊入りになっている – Messenger、I18N、Presenter、IoC 他 •  処理理の分離離をサポートする機構も備わる – プラグイン
  • 13. Core: PCL で作成する ViewModel, Service のほか、 プラットフォーム⾮非依存な Converter などを配置する アプリ: 通常のアプリプロジェクトで作成する。 View のほか、 プラットフォームに依存する Converter などを配置する。
  • 14. MvvmCrossを使ったプロジェクトの作成 •  昔はいろいろしないといけなかったけど今はNuGet ⼀一発 •  Xamarin StudioでNuGetを使えるようにする – https://github.com/mrward/monodevelop- nuget-addin
  • 15. ソリューション・プロジェクトの作成 •  下記の構造が原則 – TestApp.sln •  TestApp.Core (共有コード:PCL) •  TestApp.Touch (Xamarin.iOS) •  TestApp.Droid (Xamarin.Android) •  TestApp.Mac (MonoMac) •  TestApp.Wpf •  TestApp.WindowsPhone •  TestApp.WindowsStore
  • 16. PCLの設定・参照設定 •  Coreのプロパティで、PCLのプロファイルを選択 –  「ビルド>⼀一般」 –  Profile78 を選択 •  アプリ側のプロジェクトからPCLを参照設定しましょう。
  • 17. MvvmCrossをインストール •  ソリューションのManage NuGet Packages を 開く
  • 18. MvvmCrossをインストール •  MvvmCross で検索索して 「MvvmCross – Hot Tuna Starter Pack」を ⼊入れる
  • 19. iOS⽤用のプロジェクトの初期設定 •  AppDelegate.txt の中⾝身で  AppDelegate.cs を上書きし、AppDelegate.txt は削除します。
  • 20. ここまででとりあえず •  実⾏行行できるはず
  • 21. Service •  ViewModelを超える共有オブジェクト – MvvmCrossが⾃自動で⽣生成し、再利利⽤用してくれる CoreにServicesフォルダ IHogeService HogeService
  • 22. Service •  使いたいオブジェクト(VM等)の コンストラクタに指定すると、受け取ることができる
  • 23. Plugin •  デバイス操作や、センサー、通信等、プラット フォームに依存する処理理を⼀一般化してPCLから 操作できるようにしている。 – Pluginが提供するオブジェクトもServiceと同じ使い ⽅方で使える •  NuGetでインストール可能。
  • 24. ここからはじめよう •  N plus 1 Videos of MvvmCross – https://github.com/MvvmCross/MvvmCross/ wiki/N-plus-1-Videos-Of-MvvmCross •  MvvmCross公式のリファレンス – https://github.com/MvvmCross/MvvmCross •  Xamarin+MvvmCrossで アプリ開発をはじめる準備  2014年年3⽉月版 – http://iseebi.hatenablog.com/entry/ 2014/03/01/031216
  • 25. まとめ •  Xamarin使うなら、最初からクロスプラットフォーム 狙いでいきましょう。 – これまでiOS/Androidのプログラム書いたことがない⼈人 は、Objective-C/Java向けの説明読みましょう。 •  MvvmCrossのセットアップはNuGetで⼀一撃でで きるようになってる。 •  ServiceとPluginは使い⽅方ほとんど解説されてな いけど、使い⽅方わかったらすごい便便利利。

×