xamarinで作るiphoneとwindowsストアアプリの共通コンポーネント

14
Xamarin ででで iPhone で Windows ででででででででででで ででででで でで でで@moonmile .NET でで Micorosft MVP C# Moonmile Solutions

Upload: moonmile

Post on 15-Jan-2015

514 views

Category:

Self Improvement


0 download

DESCRIPTION

MVP Community Camp 2014 の資料 Xamarin で iOS/Android/Windowsストアアプリの共通ライブラリ(ポータブルクラスライブラリ)を作るお話です

TRANSCRIPT

Page 1: Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント

Xamarin で作るiPhone と Windows ス

トアアプリの共通コンポーネント

増田 智明( @moonmile ).NET ラボ  Micorosft MVP C#

Moonmile Solutions

Page 2: Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント

自己紹介&宣伝

増田 智明 [email protected]

執筆業 逆引き大全 Visual C# 2013 、 Visual Basic 2013

逆引き大全 iPhone/iPad アプリ開発 作って覚える iPhone/iPad アプリ入門 ひと目でわかる Visual Studio 2012 アプリケーション開発

プログラマ CakePHP+WPF で予約システム Fortran+VC++ で構造解析

Page 3: Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント

Xamarin とは?

C# でクロスプラットフォーム開発 Xamarin Studio

Xamarin.iOS

Xamarin.Android

前身が mono MonoDevelop

ASP.NET を Linux で動かすなど 去年の 11 月頃に Microsoft 社と提携

インサイド Xamarin – Build Insider by 榎本 温 氏 http://www.buildinsider.net/mobile/insidexamarin

Page 4: Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント

PCL(Potralb Class Library) とは?

Windows フォーム、 Windows ストアアプリ、 Sliverlight 、Windows Phone で利用できる共通ライブラリ

プラットフォーム間の共通アセンブリを使うことで、同じコード / アセンブリを使える。 ライブラリとして使いまわしが可能 C#, Visual Basic, F# で作成可能

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.5\Profile\Profile78\

Page 5: Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント

PCL のアセンブリ

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETPortable\ を直接見れば OK

無いもの System.Data … DataTable, DataRow

System.Windows.Forms

WindowsBase.dll … Point (WPF)

System.Drawing ... Rectangle, Point (WinForm)

System.Web

System.Xaml

etc.etc.

Page 6: Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント

Xamarin+PCL の組み合わせ

Xamarin では、 iOS/Android アプリを C# で書ける。 Xamarin では、 .NET ライブラリを読み込める。 Visual Studio/Xamarin で、 C# の PCL を作る。 Visual Studio で、 Windows ストアアプリを作る。

Visual Studio と Xamarin の組み合わせで、Windows ストア /iOS アプリ /Android アプリで共通のライブラリを使える。

Windowsストアアプリ

iOSアプリ

Andoridアプリ

PotableClass

Library

Page 7: Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント

PCL の使いどころ

サーバーとの通信ロジック( Azure Mobile Service など) ローカルストレージの保存ロジック( SQLite 、ローカルファイル) 業務ロジック ゲームロジック

View とは切り離されたデータモデル MVC 、 MVVM パターンの活用

Viewプラット

フォーム単位

DataModelBusiness

Logic

Page 8: Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント

Ex. パズルアプリの構造

iOS 用View

storyboard

Android 用View

*.axml

WinStore 用ViewXAML

PCL共通ロジック

パズル判定 C#

iOS 用個別処理

C#

Android 用個別処理

C#

WinStore 用個別処理

C#

Azure MobileService

サービス処理点数登録 / パズル DL

フロントエンド

サービス処理バックエンド

点数処理

Page 9: Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント

iOS で PCL を使う

Visual Studio で参照設定 Xamarin.iOS Build Host の設定 ソリューションプラットフォームを

「 iPhoneSimulator 」に設定 ブレークポイント、デバッグ表示を

Visual Studio で制御

Page 10: Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント

Windows ストアアプリで PCL を使う

Visual Studio で参照設定 Windows シミュレーターで実行 WPF アプリで動作確認 TMPuzzle.Core.Test プロジェクトでテスト

Page 11: Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント

Android で PCL を使う

Visual Studio で参照設定 Target Android Device を指定 実機へは adb を使う Android エミュレータは、起動が遅いので、

あらかじめ立ち上げておくとよい。 ブレークポイント、デバッグ表示を

Visual Studio で制御

Page 12: Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント

PCL の苦手な部分

プラットフォーム依存が多い箇所 インターフェースを使えばできないことはないが、構造が複雑化

外部ライブラリの依存が多い メインプロジェクトにアセンブリを入れる必要がある。 Azure Mobile Service を NuGet で入れる。将来的には?

Page 13: Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント

その他の共通化の方法

プラットフォーム毎に #if でビルドして用意する Mono.Csharp.dll 、 SQLite.NET

プラットフォーム毎のライブラリを利用 OpenCV (内部で C ライブラリの呼び出し)

ソースコードで共有 C# コードをリンクで共有

Page 14: Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント

参考リンク

Xamarin - Build mobile apps for iOS, Android, Mac and Windowshttp://xamarin.com/

インサイド Xamarin Build Insider http://www.buildinsider.net/mobile/insidexamarin

Introduction to Mobile Development | Xamarinhttp://docs.xamarin.com/guides/cross-platform/getting_started/introduction_to_mobile_development/

Windows Azure Mobile Services | Xamarinhttp://docs.xamarin.com/guides/cross-platform/azure/mobile-services/

praeclarum/sqlite-nethttps://github.com/praeclarum/sqlite-net

New open source Portable Class Library for SQLite | MS OpenTechhttps://msopentech.com/blog/2014/02/03/new-open-source-portable-class-library-sqlite/

ポータブルクラスライブラリ (Portable Class Library) を使った開発 - Akira Onishi's weblog - Site Home - MSDN Blogshttp://blogs.msdn.com/b/aonishi/archive/2012/06/28/10324945.aspx