Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

【18-C-5】C# で iOS/Androidアプリ開発 - Visual Studio 2015 + Xamarin + MVVMCross -

3,134 views

Published on

デベロッパーサミット2016 2月18日のセッション資料です。

Published in: Software
  • Be the first to comment

【18-C-5】C# で iOS/Androidアプリ開発 - Visual Studio 2015 + Xamarin + MVVMCross -

  1. 1. 【18-C-5】 2016/02/18 青柳臣一 @ShinichiAoyagi C# で iOS/Androidアプリ開発 - Visual Studio 2015 + Xamarin + MVVMCross - ハッシュタグ: #devsumiC
  2. 2. #devsumi #devsumiC 自己紹介  青柳臣一  @ShinichiAoyagi  株式会社ディーバ(大阪市中央区)  代表取締役・デベロッパー  オリジナルソフトウエア開発、受託開発  WPF、Windows Forms、 ASP.NET Web Forms/MVC/Web API  iOS(Objective-C)、Android(Java)、Windows Phone  Xamarin  その他(HTML5、JavaScript、PHP…) 2015年12月発売 秀和システム ISBN: 978-4-7980-4495-8
  3. 3. #devsumi #devsumiC Ask the Speaker  セッション終了後、ご質問にお応えします ちょっとしたことでも疑問点・不明点がありましたら ぜひお越しください  場所  2Fラウンジ (この部屋の隣です) 2Fラウンジに JXUG (Japan Xamarin User Group) のブースもあります!
  4. 4. #devsumi #devsumiC Xamarinってご存知?  Xamarin(ザマリン)社の提供する商用開発環境  iOS、Android のアプリを C# で開発できる(あとMacも)  開発環境 Windows Mac Xamarin Studio Xamarin Studio Visual Studio
  5. 5. #devsumi #devsumiC Xamarinのエディション  xamarin.com からダウンロードしてインストール  Visual Studio 2015 には同梱 (インストール時にカスタムで選択する必要あり) エディション Starter 無料 各種制限あり Indie 個人 or 従業員5名以下 Business Enterprise Business + 有線サポートやhotfix
  6. 6. #devsumi #devsumiC Macが必要です!!  WindowsでiOSアプリ開発  Xamarin Studio、Visual Studio  ビルドや実行にはMacが必要!  ネットワーク経由でMacにアクセスする仕組み  Macを横に置く  Windows on 仮想化ソフト on Mac
  7. 7. #devsumi #devsumiC Xamarinプロジェクトの構成  共通部とプラットフォーム依存部  PCLは限定された.NET App1 共通部 ポータブルクラスライブラリ(Portable Class Library) App1.Droid Android固有部分(ビューなど) App1.iOS iOS固有部分(ビューなど) App1.WinPhone Windows Phone固有部分(ビューなど)
  8. 8. #devsumi #devsumiC PCLへ機能追加、プラグイン  NuGetなどにいろいろあり Microsoft.Net.Http HttpClient Portable.BouncyCastle 暗号化・復号化 Zlib.Portable 圧縮・解凍 PCLStorage ストレージアクセス Xam.Plugins.Settings アプリケーション設定 その他いろいろ
  9. 9. #devsumi #devsumiC Xamarinの特徴  とても薄いラッパー  OSを抽象化しているわけではない  ほぼネイティブ  プログラミング言語が変わっただけ  Objective-C/Swift や Java → C#  なので iOS や Android の知識は必要
  10. 10. #devsumi #devsumiC 薄いラッパー(というかラッパーなんてない)  加速度センサー(iOS)  加速度センサー(Android) Objective-C Xamarin(C#) CMMotionManagerクラス CMMotionManagerクラス startDeviceMotionUpdatesToQueue()メソッド startDeviceMotionUpdatesUsingReferenceFrame()メソッ ド StartDeviceMotionUpdates()メソッド Java Xamarin(C#) SensorManagerクラス SensorManagerクラス registerListener()メソッド RegisterListener()メソッド
  11. 11. #devsumi #devsumiC Xamarinでアプリ開発  iPhoneアプリとAndroidアプリ  (残念ながらWindows Phoneは対象外)  サーバーにデータを蓄積  APIサーバー  運用チームが使用するツール  Webベースのシステム + Windowsアプリ
  12. 12. #devsumi #devsumiC みんなC# SQL Database Redis Cache BLOB Storage Web App (API) Web App (Web) Azure iPhone Android PC(ブラウザ) 運用ツール Xamarin (C#) Xamarin (C#) ASP.NET Web API (C#) ASP.NET MVC (C#) WPF (C#)
  13. 13. #devsumi #devsumiC Xamarinを使ったわけ  Objective-C(iOS)やJava(Android)での開発もやってる  けどC#やVBが得意(好き)なメンバーたち  サーバーやツール類は?  Azure?AWS?  ASP.NET?Java?Node.js?  Winアプリ?
  14. 14. #devsumi #devsumiC MVVMCross  MVVMをサポートするライブラリ  https://github.com/MvvmCross/MvvmCross  Xamarin専用ではない  もちろん必須というわけでもない  MVVM以外にも便利な機能あり
  15. 15. #devsumi #devsumiC MVVMCrossの導入  NuGetでインストール  MVVMCross.HotTuna.StarterPack  ちょっと修正  App1.Core → App1  ToDoに書かれてることをやる (一部間違ってるところもあるので注意)
  16. 16. #devsumi #devsumiC DataBinding.ViewModel  ビューモデル  MvxViewModelを継承する  XAMLと同様INotifyPropertyChangedで変更通知する仕組み private string hello = "Hello MvvmCross"; public string Hello { get { return this.hello; } set { SetProperty(ref hello, value); } } public IMvxCommand ClickCommand { get { return new MvxCommand(() => { this.Hello = "Click!"; }); } }
  17. 17. #devsumi #devsumiC DataBinding.iOS  コードで書く  using MvvmCross.Binding.BindingContext;  インテリセンスのおかげで悪くはない  Set.Bind(control).For(c => c.Text).To(vm => vm.Hello).WithConversion(…); var set = this.CreateBindingSet<FirstView, App1.ViewModels.FirstViewModel>(); set.Bind(label).To(vm => vm.Hello); set.Bind(textField).To(vm => vm.Hello); set.Bind(button).To(vm => vm.ClickCommand); set.Apply();
  18. 18. #devsumi #devsumiC DataBinding.Droid  axml に書く <EditText ~略~ local:MvxBind="Text Hello" /> <TextView ~略~ local:MvxBind="Text Hello" /> <Button ~略~ local:MvxBind="Click ClickCommand"/>
  19. 19. #devsumi #devsumiC MVVMCross.Plugins  コードでよく使うのにプラットフォームで違うものたち カラー ブラウザー起動 メール起動 ファイルアクセス Sqlite その他いろいろ http://mvvmcross.com/docs のPLUGINSの項 Mvx.Resolve<IMvxWebBrowserTask>().ShowWebPage("http://yahoo.co.jp/");
  20. 20. #devsumi #devsumiC MVVMCross.Plugin.Color  ViewModel  MvxColor を使う  View  データバインディング + ValueConverter  iOS: set.Bind(label) .For(c => c.TextColor).To(vm => vm.LabelColor) .WithConversion(new MvxNativeColorValueConverter());  Android: local:MvxBind="Text Hello; TextColor NativeColor(LabelColor)“  XAML: Color="{Binding CurrentColor, Converter={StaticResource NativeColor}}"
  21. 21. #devsumi #devsumiC Xamarin.Forms  ビューも共通化できる  XAMLっぽい  それに慣れてる人には扱いやすい(かも)  DependencyService  共通部からプラットフォーム依存の機能を呼ぶ  https://developer.xamarin.com/guides/xamarin-forms/dependency-service/  デザイナーがない!  そろそろ?
  22. 22. #devsumi #devsumiC Xamarinを使った感想  ViewModelとModelは共通化できた  データ処理エンジンはPCLにして共通化  同じDLLがAzure、スマホ、Windowsで動いている  C#好き的には捗る  Objective-C/SwiftやJavaでの開発になれているんであればわざわざC#をマス ターするってのはどうなんだろう  Xamarin.Formsはプロトタイプ開発時に便利だった
  23. 23. #devsumi #devsumiC Xamarin社のサービス  Xamarin Insights  Azure Application Insightsみたいなもの(だと思う) 今はGoogleアナリティクスを使っている (ちなみに、Azure上のWeb AppはNew Relic)  Xamarin Test Cloud  いろいろなデバイスでのテスト
  24. 24. #devsumi #devsumiC ご清聴ありがとうございました。 JXUGC #11 Xamarin ハンズオン大会 http://jxug.connpass.com/event/27329/ 2016/03/26(土) 会場未定(品川?)

×