14
Xamarin & Google Maps SDK で でででででででででででででででで でででででで でで でででで @kochizufan

Xamarin & Google Maps SDKでクロスプラットフォーム地図アプリ

Embed Size (px)

DESCRIPTION

ジオメディアサミット大阪2013懇親会ライトニングトーク Xamarin & Google Maps SDKでクロスプラットフォーム地図アプリ

Citation preview

Page 1: Xamarin & Google Maps SDKでクロスプラットフォーム地図アプリ

Xamarin & Google Maps SDK でクロスプラットフォーム地図アプリ

こちずふぁん こと 大塚恒平@kochizufan

Page 2: Xamarin & Google Maps SDKでクロスプラットフォーム地図アプリ

クロスプラットフォーム

地図アプリ開発どうされてますか?開発環境

ネイティブアプリ開発HTML5 + PhoneGap 、他

地図 APIMapKit 等ネイティブ SDK

OpenLayers 、 Leaflet 等 HTML5 地図 API

Page 3: Xamarin & Google Maps SDKでクロスプラットフォーム地図アプリ

ネイティブアプリ利点:

パフォーマンス最高表現力で妥協しなくてよい

欠点:プラットフォーム毎にスキルの習得が必要

習得コストでかい使う言語がどいつもこいつも

Objective-C : キモいJava : ウザい

Page 4: Xamarin & Google Maps SDKでクロスプラットフォーム地図アプリ

HTML5 + Pho なんちゃら

利点:覚える言語が JavaScript + css + HTML5 限定Write Once, Run Anyware ( に比較的近い )

欠点:パフォーマンス悪い( 特に UI で ) 無理して、頑張って、涙の末に報われない感HTML5 の実装状況に左右される( ArrayBuffer 、 WebWorker とか)

Page 5: Xamarin & Google Maps SDKでクロスプラットフォーム地図アプリ

ネイティブ地図 SDK利点:

パフォーマンス最高ユーザエクスペリエンス最高(連続ズーム、回転表示)

欠点:どこかの地図の質について語りたい人がいっぱい居るプラットフォーム毎にできる事が違い過ぎる

Page 6: Xamarin & Google Maps SDKでクロスプラットフォーム地図アプリ

HTML5 地図 API利点:

Google 地図や OpenStreetMap 、独自タイル地図等、選択肢がいっぱい

欠点:とびとびズームやめようや…ちょっとは回転しようや…オフライン用途に使いにくいよね

Page 7: Xamarin & Google Maps SDKでクロスプラットフォーム地図アプリ

そこで開発環境 : Xamarin

http://xamarin.com/

.NET 環境 (MonoDroid 、 MonoTouch) 上で動くアプリを c# で書ける開発環境XamarinStudio として Mac 、 Windows 上で動く他、 Visual Studio のプラグインとしても動く ( その場合、 Windows Phone も視野に入れて開発可能 )

UI 含め、ネイティブ SDK の薄いラッパを提供共通ロジックは c# のノリでプラットフォーム間共有可能UI はネイティブコンポーネントをそのまま利用可能

Page 8: Xamarin & Google Maps SDKでクロスプラットフォーム地図アプリ

もひとつ地図 API : Google Maps SDK

Android: Google Maps API for Android v2https://developers.google.com/maps/documentation/android/

iOS: Google Maps SDK for iOShttps://developers.google.com/maps/documentation/ios/

Google の高品質地図!ベクタ地図!Google の高機能 UX !中間ズーム!回る!鳥瞰視点も!Google 嫌い? OSM ガー?タイルインタフェース使えばいいじゃない!最近 iOS 版にもついたよ!

Page 9: Xamarin & Google Maps SDKでクロスプラットフォーム地図アプリ

サンプルMBTiles のファイルから独自タイルを読み込んで表示するサンプル on iOS and Android

https://github.com/tilemapjp/xamarinGMS突貫工事で作ったのでまだ README ありませんすみません。明日以降作ります。プラットフォーム間のロジック共有方法は、本当はMvvmCross ( https://github.com/slodge/MvvmCross )という技術を使うべきなのですが、まだVisualStudio でしか使えず XamarinStudio では使えないのと、難しくて頭爆発するので、オレオレ共有方法で共有してます。良い子はちゃんと MvvmCross を覚えましょう。

Page 10: Xamarin & Google Maps SDKでクロスプラットフォーム地図アプリ

サンプルの動かし方共通 :

どちらも Google Maps API/SDK の API Key を取得してちゃんと書き込んでやりましょう。

Android : Google Play Services の project を github からダウンロードしてきて、ソリューションに加えましょう。設定方法は、 amay 師匠の以下記事を参考にhttp://qiita.com/items/2d76a090d49926805431

iOS : iOS の Google Maps SDK は、 Xamarin Store で無料入手できます。Components から選択して DL し、プロジェクトに加えましょう。バージョンは 1.3.0 以降を使います。

Page 11: Xamarin & Google Maps SDKでクロスプラットフォーム地図アプリ

ソリューション構成共通ロジック用プロジェクトプラットフォームに影響しないロジックはここに。

プラットフォーム別ロジック用プロジェクト共通ロジックをプラットフォーム別にコンパイルするためのシンボリックリンクと、デバイス内フォルダ構成等、どうしてもプラットフォーム依存のものはここに。

Android用 Viewプロジェクトユーザエクスペリエンスに直結するビューのロジックは、ネイティブ SDKと同じコンポーネントを、 c#の文法で実装できます。

iOS用 Viewプロジェクト

iOS用 GoogleMapsコンポーネントXamarinStoreで 1.3.0を入手しましょう。

Android用 Google Play Serviceプロジェクトgithubで入手し、 Amay師匠記事でセットアップ。

Page 12: Xamarin & Google Maps SDKでクロスプラットフォーム地図アプリ

実行吹田市付近 1945 年の米軍地図、 MBTiles ファイル表示

iOS : Android :

Page 13: Xamarin & Google Maps SDKでクロスプラットフォーム地図アプリ

最大の欠点開発環境が高いよ!

トライアル(無償)では、ショボいプログラムしか作れない評価ライセンスでは、フル機能が使えるが、有効期間 1ヶ月ちゃんとした開発をしようと思うと、プラットフォーム毎に年間 $299 、 iOS/Android 合計で $598

さらに Windows Phone まで視野に入れるなら、 Visual Studio 連携可能版、プラットフォーム毎に $999 、 iOS/Android 合計+Visual Studio 自身まで考えると 30万円コース個人の開発環境としてはキツい…その費用と、 c# による開発効率化&ナレッジ共通化& 特化技術者の不要化を量りにかけてペイすればお得

Page 14: Xamarin & Google Maps SDKでクロスプラットフォーム地図アプリ

おしまいデバイス上で動いている様子、コンパイルの様子等の実際が見たい方は大塚まで