【18-c-5】c# で ios/androidアプリ開発 - visual studio 2015 + xamarin + mvvmcross -

24
18-C-5 2016/02/18 青青青@ShinichiAoyagi C# 青 iOS/Android 青青青青青 - Visual Studio 2015 + Xamarin + MVVMCross - 青青青青青青 : #devsumiC

Upload: shinichiaoyagi

Post on 11-Apr-2017

2.726 views

Category:

Software


0 download

TRANSCRIPT

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

【 18-C-5 】

2016/02/18青柳臣一 @ShinichiAoyagi

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

ハッシュタグ : #devsumiC

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

#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

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

#devsumi#devsumiC

Ask the Speaker セッション終了後、ご質問にお応えしますちょっとしたことでも疑問点・不明点がありましたらぜひお越しください 場所

2F ラウンジ (この部屋の隣です)2F ラウンジに

JXUG (Japan Xamarin User Group)のブースもあります!

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

#devsumi#devsumiC

Xamarin ってご存知? Xamarin (ザマリン)社の提供する商用開発環境 iOS 、 Android のアプリを C# で開発できる(あと Macも) 開発環境Windows Mac

Xamarin Studio Xamarin StudioVisual Studio

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

#devsumi#devsumiC

Xamarin のエディション xamarin.com からダウンロードしてインストール

Visual Studio 2015 には同梱(インストール時にカスタムで選択する必要あり)エディションStarter 無料 各種制限ありIndie 個人 or 従業員 5 名以下BusinessEnterprise Business + 有線サポートや hotfix

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

#devsumi#devsumiC

Mac が必要です!! Windows で iOS アプリ開発

Xamarin Studio 、 Visual Studio

ビルドや実行には Mac が必要! ネットワーク経由で Mac にアクセスする仕組み

Mac を横に置く Windows on 仮想化ソフト on Mac

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

#devsumi#devsumiC

Xamarin プロジェクトの構成 共通部とプラットフォーム依存部

PCL は限定された .NET

App1 共通部ポータブルクラスライブラリ( Portable Class Library )

App1.Droid Android 固有部分(ビューなど)App1.iOS iOS 固有部分(ビューなど)App1.WinPhone Windows Phone 固有部分(ビューなど)

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

#devsumi#devsumiC

PCL へ機能追加、プラグイン NuGet などにいろいろあり

Microsoft.Net.Http HttpClientPortable.BouncyCastle 暗号化・復号化Zlib.Portable 圧縮・解凍PCLStorage ストレージアクセスXam.Plugins.Settings アプリケーション設定その他いろいろ

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

#devsumi#devsumiC

Xamarin の特徴 とても薄いラッパー

OS を抽象化しているわけではない ほぼネイティブ

プログラミング言語が変わっただけ Objective-C/Swift や Java → C# なので iOS や Android の知識は必要

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

#devsumi#devsumiC

薄いラッパー(というかラッパーなんてない) 加速度センサー( iOS )

加速度センサー( Android )

Objective-C Xamarin( C#)CMMotionManager クラス CMMotionManager クラスstartDeviceMotionUpdatesToQueue() メソッドstartDeviceMotionUpdatesUsingReferenceFrame()メソッド

StartDeviceMotionUpdates() メソッド

Java Xamarin( C#)SensorManager クラス SensorManager クラスregisterListener() メソッド RegisterListener() メソッド

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

#devsumi#devsumiC

Xamarin でアプリ開発 iPhone アプリと Android アプリ

(残念ながら Windows Phone は対象外) サーバーにデータを蓄積

API サーバー 運用チームが使用するツール

Web ベースのシステム + Windows アプリ

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

#devsumi#devsumiC

みんな C#

SQL Database

Redis Cache

BLOB Storage

Web App (API)

Web App (Web)

AzureiPhone

Android

PC (ブラウザ)

運用ツール

Xamarin( C# )Xamarin( C# )

ASP.NET Web API ( C# )

ASP.NET MVC( C# )

WPF( C# )

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

#devsumi#devsumiC

Xamarin を使ったわけ Objective-C ( iOS )や Java ( Android )での開発もやってる けど C# や VB が得意(好き)なメンバーたち サーバーやツール類は?

Azure ? AWS ? ASP.NET ? Java ? Node.js ? Win アプリ?

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

#devsumi#devsumiC

MVVMCross MVVM をサポートするライブラリ

https://github.com/MvvmCross/MvvmCross Xamarin 専用ではない もちろん必須というわけでもない

MVVM 以外にも便利な機能あり

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

#devsumi#devsumiC

MVVMCross の導入 NuGet でインストール

MVVMCross.HotTuna.StarterPack

ちょっと修正 App1.Core → App1 ToDo に書かれてることをやる(一部間違ってるところもあるので注意)

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

#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!"; }); }}

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

#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();

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

#devsumi#devsumiC

DataBinding.Droid axml に書く

<EditText ~略~    local:MvxBind="Text Hello" /><TextView ~略~    local:MvxBind="Text Hello" /><Button ~略~ local:MvxBind="Click ClickCommand"/>

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

#devsumi#devsumiC

MVVMCross.Pluginsコードでよく使うのにプラットフォームで違うものたち

カラーブラウザー起動メール起動ファイルアクセスSqliteその他いろいろhttp://mvvmcross.com/docs の PLUGINS の項

Mvx.Resolve<IMvxWebBrowserTask>().ShowWebPage("http://yahoo.co.jp/");

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

#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}}"

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

#devsumi#devsumiC

Xamarin.Forms ビューも共通化できる XAML っぽい

それに慣れてる人には扱いやすい(かも) DependencyService

共通部からプラットフォーム依存の機能を呼ぶ https://developer.xamarin.com/guides/xamarin-forms/dependency-service/

デザイナーがない! そろそろ?

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

#devsumi#devsumiC

Xamarin を使った感想 ViewModel と Model は共通化できた データ処理エンジンは PCL にして共通化

同じDLL が Azure 、スマホ、 Windows で動いている C# 好き的には捗る

Objective-C/Swift や Java での開発になれているんであればわざわざC# をマスターするってのはどうなんだろう Xamarin.Forms はプロトタイプ開発時に便利だった

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

#devsumi#devsumiC

Xamarin 社のサービス Xamarin Insights

Azure Application Insights みたいなもの(だと思う)今は Google アナリティクスを使っている(ちなみに、 Azure上の Web App は New Relic ) Xamarin Test Cloud

いろいろなデバイスでのテスト

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

#devsumi#devsumiC

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

JXUGC #11 Xamarin ハンズオン大会http://jxug.connpass.com/event/27329/

2016/03/26 (土)会場未定(品川?)