Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

モバイル向けクロスプラットフォーム開発ツール Xamarin の概要とその利点

3,203 views

Published on

2017/6/24(土) Mobile Conference 2017 Kagoshima で発表した資料です。

Published in: Mobile
  • Hey guys! Who wants to chat with me? More photos with me here 👉 http://www.bit.ly/katekoxx
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

モバイル向けクロスプラットフォーム開発ツール Xamarin の概要とその利点

  1. 1. モバイル向けクロスプラットフォーム 開発ツール Xamarin の概要とそ の利点 2017/6/24(土) MOBILE CONFERENCE 2017 Japan Xamarin User Group 田淵義人@エクセルソフト Twitter: @ytabuchi facebook: ytabuchi.xlsoft
  2. 2. 営業(セールスエンジニア) 兼 新規事業開発室 室長 Xamarin コミュニティエバンジェリスト Microsoft MVP Visual Studio and Development Technologies Xamarin MVP 連載・執筆 Build Insider Xamarin Tips .NET開発テクノロジ入門2016年版 コミュニティ Japan Xamarin User Group 主宰 Twitter: @ytabuchi facebook: ytabuchi.xlsoft Blog: Xamarin 日本語情報 2 田淵義人@エクセルソフト
  3. 3. Xamarin 概要
  4. 4. C# / .NET / Visual Studio フル “ネイティブ” アプリ API 100% 移植 コード共通化 Xamarin 4
  5. 5. 2つの開発手法 Shared C# App Logic (PCL) Shared XAML/C# UI Code (Xamarin.Forms) iOS C# UI Shared C# App Logic (PCL) Android C# UI Windows C# UI Xamarin.FormsXamarin Native ロジックのみ共通化 UIはネイティブで個別に作りこむ 5
  6. 6. 必要な知識 プラットフォーム 個別 Xamarin Native iOS API Objective-C, Swift Xcode Android API Java Android Studio Windows API Visual StudioC# API 言語 統合開発環境 iOS API Objective-C, Swift Xcode Android API Java Android Studio Windows API Visual StudioC# Xamarin.Forms iOS API Android API Windows API Objective-C, Swift Xcode Java Android Studio Visual StudioC#Xamarin.Forms UI toolkit 6
  7. 7. 抽象化UIライブラリ 最大公約数 ワンソース・ネイティブUI/UX XAML / MVVM 拡張可能 7 Xamarin.Forms Shared C# App Logic (PCL) Shared XAML/C# UI Code (Xamarin.Forms) Xamarin.Forms
  8. 8. Xamarin.Forms ワンソース ネイティブの UI/UX XAML MVVM 8
  9. 9. Demo 10
  10. 10. 11 //ネット接続を確認 var connection = CrossConnectivity.Current; If (connection.IsConnected) //Xam.Plugin.Geolocatorを使用して緯度、経度を取得 var locator = CrossGeolocator.Current; locator.DesiredAccuracy = 50; var position = await locator.GetPositionAsync(10000); Connectivity Plugin/Geolocator Plugin
  11. 11. 12 using (var client = new HttpClient()) { var json = await client.GetStringAsync(url); var items = JsonConvert.DeserializeObject<GeoCode>(json); string address = items.results[0].formatted_address; } Geocode API から JSON で住所を取得 public class Result { ... public string formatted_address { get; set; } } public class GeoCode { public List<Result> results { get; set; } public string status { get; set; } } http://maps.google.com/maps/api/geocode/json?latlng=35.641324,139.740914&sensor=false&language=ja-jp
  12. 12. 13 var pinCurrent = new Pin() { Type = PinType.Place, Label = "Current Place", Address = address, Position = new Position(position.Latitude, position.Longitude), }; map.Pins.Add(pinCurrent); map.MoveToRegion(MapSpan.FromCenterAndRadius( pinCurrent.Position, Distance.FromMeters(1000))); Map に Pin を追加して移動
  13. 13. Visual Studio:表示>その他のウィンドウ>Xamarin.Forms Previewer Visual Studio for Mac:XAML ファイルを開いて右上のプレビューボタンをクリック 14 Forms Previewer
  14. 14. UIは個別 ネイティブAPIは個別 PCL or Shared ネットワーク Json, XML 永続化 async/await 15 Xamarin ネイティブ iOS C# UI Shared C# App Logic (PCL) Android C# UI Windows C# UI Xamarin Native ロジックのみ共通化 UIはネイティブで個別に作りこむ
  15. 15. Xamarin ネイティブ 16
  16. 16. 17 var locMgr = new CLLocationManager(); locMgr.RequestWhenInUseAuthorization(); button.TouchUpInside += (s, _) => { locMgr.DesiredAccuracy = 100; locMgr.LocationsUpdated += (object sender, CLLocationsUpdatedEventArgs e) => { var location = e.Locations[e.Locations.Length - 1]; Console.WriteLine($"Lat:{location.Coordinate.Latitude}"); Console.WriteLine($"Lng:{location.Coordinate.Longitude}"); }; locMgr.StartUpdatingLocation(); }; CLLocationManager (iOS)
  17. 17. 18 public class MainActivity : Activity, ILocationListener { ... var locMgr = GetSystemService(Context.LocationService) as LocationManager; locMgr.RequestLocationUpdates(LocationManager.NetworkProvider, 10000, 10, this); public void OnLocationChanged(Location location) { Console.WriteLine($"Lat:{location.Latitude}"); Console.WriteLine($"Lng:{location.Longitude}"); } } LocationManager (Android)
  18. 18. Xamarin の利点
  19. 19. C# / .NET / Visual Studio フル “ネイティブ” アプリ API 100% 移植 コード共通化 Xamarin 20
  20. 20. C#er/XAMLer/WPF/UWP → Forms 素早く簡単に作る → Forms iOS/Android ネイティブ経験者 → ネイティブ きれいに細かく作る → ネイティブ 社内プロジェクト → ?? 受託開発 → ?? HTML/JS → Cordova? React Native? 21 Xamarin.Forms VS Xamarin ネイティブ
  21. 21. まとめ
  22. 22. Xamarin はいいぞ C# だけで iOS/Android/Mac など様々なアプリを開発できる API が同じような名前で 100% 提供されているので行き来が楽 Xamarin.Forms は単純に技術を追うだけでも楽しい 27
  23. 23. ありがとうございます Japan Xamarin User Group 田淵義人@エクセルソフト Twitter: @ytabuchi facebook: ytabuchi.xlsoft 28

×