Upload
ko-hei-ohtsuka
View
1.464
Download
0
Embed Size (px)
DESCRIPTION
ジオメディアサミット大阪2013懇親会ライトニングトーク Xamarin & Google Maps SDKでクロスプラットフォーム地図アプリ
Citation preview
Xamarin & Google Maps SDK でクロスプラットフォーム地図アプリ
こちずふぁん こと 大塚恒平@kochizufan
クロスプラットフォーム
地図アプリ開発どうされてますか?開発環境
ネイティブアプリ開発HTML5 + PhoneGap 、他
地図 APIMapKit 等ネイティブ SDK
OpenLayers 、 Leaflet 等 HTML5 地図 API
ネイティブアプリ利点:
パフォーマンス最高表現力で妥協しなくてよい
欠点:プラットフォーム毎にスキルの習得が必要
習得コストでかい使う言語がどいつもこいつも
Objective-C : キモいJava : ウザい
HTML5 + Pho なんちゃら
利点:覚える言語が JavaScript + css + HTML5 限定Write Once, Run Anyware ( に比較的近い )
欠点:パフォーマンス悪い( 特に UI で ) 無理して、頑張って、涙の末に報われない感HTML5 の実装状況に左右される( ArrayBuffer 、 WebWorker とか)
ネイティブ地図 SDK利点:
パフォーマンス最高ユーザエクスペリエンス最高(連続ズーム、回転表示)
欠点:どこかの地図の質について語りたい人がいっぱい居るプラットフォーム毎にできる事が違い過ぎる
HTML5 地図 API利点:
Google 地図や OpenStreetMap 、独自タイル地図等、選択肢がいっぱい
欠点:とびとびズームやめようや…ちょっとは回転しようや…オフライン用途に使いにくいよね
そこで開発環境 : Xamarin
http://xamarin.com/
.NET 環境 (MonoDroid 、 MonoTouch) 上で動くアプリを c# で書ける開発環境XamarinStudio として Mac 、 Windows 上で動く他、 Visual Studio のプラグインとしても動く ( その場合、 Windows Phone も視野に入れて開発可能 )
UI 含め、ネイティブ SDK の薄いラッパを提供共通ロジックは c# のノリでプラットフォーム間共有可能UI はネイティブコンポーネントをそのまま利用可能
もひとつ地図 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 版にもついたよ!
サンプルMBTiles のファイルから独自タイルを読み込んで表示するサンプル on iOS and Android
https://github.com/tilemapjp/xamarinGMS突貫工事で作ったのでまだ README ありませんすみません。明日以降作ります。プラットフォーム間のロジック共有方法は、本当はMvvmCross ( https://github.com/slodge/MvvmCross )という技術を使うべきなのですが、まだVisualStudio でしか使えず XamarinStudio では使えないのと、難しくて頭爆発するので、オレオレ共有方法で共有してます。良い子はちゃんと MvvmCross を覚えましょう。
サンプルの動かし方共通 :
どちらも 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 以降を使います。
ソリューション構成共通ロジック用プロジェクトプラットフォームに影響しないロジックはここに。
プラットフォーム別ロジック用プロジェクト共通ロジックをプラットフォーム別にコンパイルするためのシンボリックリンクと、デバイス内フォルダ構成等、どうしてもプラットフォーム依存のものはここに。
Android用 Viewプロジェクトユーザエクスペリエンスに直結するビューのロジックは、ネイティブ SDKと同じコンポーネントを、 c#の文法で実装できます。
iOS用 Viewプロジェクト
iOS用 GoogleMapsコンポーネントXamarinStoreで 1.3.0を入手しましょう。
Android用 Google Play Serviceプロジェクトgithubで入手し、 Amay師匠記事でセットアップ。
実行吹田市付近 1945 年の米軍地図、 MBTiles ファイル表示
iOS : Android :
最大の欠点開発環境が高いよ!
トライアル(無償)では、ショボいプログラムしか作れない評価ライセンスでは、フル機能が使えるが、有効期間 1ヶ月ちゃんとした開発をしようと思うと、プラットフォーム毎に年間 $299 、 iOS/Android 合計で $598
さらに Windows Phone まで視野に入れるなら、 Visual Studio 連携可能版、プラットフォーム毎に $999 、 iOS/Android 合計+Visual Studio 自身まで考えると 30万円コース個人の開発環境としてはキツい…その費用と、 c# による開発効率化&ナレッジ共通化& 特化技術者の不要化を量りにかけてペイすればお得
おしまいデバイス上で動いている様子、コンパイルの様子等の実際が見たい方は大塚まで