Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
モバイル向けクロスプラットフォーム
開発ツール Xamarin の概要とそ
の利点
2017/6/24(土)
MOBILE CONFERENCE 2017
Japan Xamarin User Group
田淵義人@エクセルソフト
Twitte...
営業(セールスエンジニア) 兼 新規事業開発室 室長
Xamarin コミュニティエバンジェリスト
Microsoft MVP Visual Studio and Development Technologies
Xamarin MVP
連載・...
Xamarin 概要
C# / .NET / Visual Studio
フル “ネイティブ” アプリ
API 100% 移植
コード共通化
Xamarin
4
2つの開発手法
Shared C# App Logic
(PCL)
Shared XAML/C# UI Code
(Xamarin.Forms)
iOS
C# UI
Shared C# App Logic
(PCL)
Android
C# UI...
必要な知識
プラットフォーム
個別
Xamarin Native
iOS API Objective-C, Swift Xcode
Android API Java Android Studio
Windows API Visual Studi...
抽象化UIライブラリ
最大公約数
ワンソース・ネイティブUI/UX
XAML / MVVM
拡張可能
7
Xamarin.Forms
Shared C# App Logic
(PCL)
Shared XAML/C# UI Code
(Xamar...
Xamarin.Forms
ワンソース
ネイティブの
UI/UX
XAML
MVVM
8
Demo
10
11
//ネット接続を確認
var connection = CrossConnectivity.Current;
If (connection.IsConnected)
//Xam.Plugin.Geolocatorを使用して緯度、経度を取得...
12
using (var client = new HttpClient())
{
var json = await client.GetStringAsync(url);
var items = JsonConvert.Deserializ...
13
var pinCurrent = new Pin()
{
Type = PinType.Place,
Label = "Current Place",
Address = address,
Position = new Position(...
Visual Studio:表示>その他のウィンドウ>Xamarin.Forms Previewer
Visual Studio for Mac:XAML ファイルを開いて右上のプレビューボタンをクリック
14
Forms Previewer
UIは個別
ネイティブAPIは個別
PCL or Shared
ネットワーク
Json, XML
永続化
async/await
15
Xamarin ネイティブ
iOS
C# UI
Shared C# App Logic
(PCL)
Andr...
Xamarin ネイティブ
16
17
var locMgr = new CLLocationManager();
locMgr.RequestWhenInUseAuthorization();
button.TouchUpInside += (s, _) =>
{
locMg...
18
public class MainActivity : Activity, ILocationListener
{
...
var locMgr = GetSystemService(Context.LocationService) as...
Xamarin の利点
C# / .NET / Visual Studio
フル “ネイティブ” アプリ
API 100% 移植
コード共通化
Xamarin
20
C#er/XAMLer/WPF/UWP → Forms
素早く簡単に作る → Forms
iOS/Android ネイティブ経験者 → ネイティブ
きれいに細かく作る → ネイティブ
社内プロジェクト → ??
受託開発 → ??
HTML/J...
まとめ
Xamarin はいいぞ
C# だけで iOS/Android/Mac など様々なアプリを開発できる
API が同じような名前で 100% 提供されているので行き来が楽
Xamarin.Forms は単純に技術を追うだけでも楽しい
27
ありがとうございます
Japan Xamarin User Group
田淵義人@エクセルソフト
Twitter: @ytabuchi
facebook: ytabuchi.xlsoft
28
Nächste SlideShare
Wird geladen in …5
×

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

3.547 Aufrufe

Veröffentlicht am

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

Veröffentlicht in: Mobil
  • Login to see the comments

モバイル向けクロスプラットフォーム開発ツール 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

×