xamarinで作るiphoneとwindowsストアアプリの共通コンポーネント
DESCRIPTION
MVP Community Camp 2014 の資料 Xamarin で iOS/Android/Windowsストアアプリの共通ライブラリ(ポータブルクラスライブラリ)を作るお話ですTRANSCRIPT
Xamarin で作るiPhone と Windows ス
トアアプリの共通コンポーネント
増田 智明( @moonmile ).NET ラボ Micorosft MVP C#
Moonmile Solutions
自己紹介&宣伝
増田 智明 [email protected]
執筆業 逆引き大全 Visual C# 2013 、 Visual Basic 2013
逆引き大全 iPhone/iPad アプリ開発 作って覚える iPhone/iPad アプリ入門 ひと目でわかる Visual Studio 2012 アプリケーション開発
プログラマ CakePHP+WPF で予約システム Fortran+VC++ で構造解析
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
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\
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.
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
PCL の使いどころ
サーバーとの通信ロジック( Azure Mobile Service など) ローカルストレージの保存ロジック( SQLite 、ローカルファイル) 業務ロジック ゲームロジック
View とは切り離されたデータモデル MVC 、 MVVM パターンの活用
Viewプラット
フォーム単位
DataModelBusiness
Logic
Ex. パズルアプリの構造
iOS 用View
storyboard
Android 用View
*.axml
WinStore 用ViewXAML
PCL共通ロジック
パズル判定 C#
iOS 用個別処理
C#
Android 用個別処理
C#
WinStore 用個別処理
C#
Azure MobileService
サービス処理点数登録 / パズル DL
フロントエンド
サービス処理バックエンド
点数処理
iOS で PCL を使う
Visual Studio で参照設定 Xamarin.iOS Build Host の設定 ソリューションプラットフォームを
「 iPhoneSimulator 」に設定 ブレークポイント、デバッグ表示を
Visual Studio で制御
Windows ストアアプリで PCL を使う
Visual Studio で参照設定 Windows シミュレーターで実行 WPF アプリで動作確認 TMPuzzle.Core.Test プロジェクトでテスト
Android で PCL を使う
Visual Studio で参照設定 Target Android Device を指定 実機へは adb を使う Android エミュレータは、起動が遅いので、
あらかじめ立ち上げておくとよい。 ブレークポイント、デバッグ表示を
Visual Studio で制御
PCL の苦手な部分
プラットフォーム依存が多い箇所 インターフェースを使えばできないことはないが、構造が複雑化
外部ライブラリの依存が多い メインプロジェクトにアセンブリを入れる必要がある。 Azure Mobile Service を NuGet で入れる。将来的には?
その他の共通化の方法
プラットフォーム毎に #if でビルドして用意する Mono.Csharp.dll 、 SQLite.NET
プラットフォーム毎のライブラリを利用 OpenCV (内部で C ライブラリの呼び出し)
ソースコードで共有 C# コードをリンクで共有
参考リンク
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