SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
モバイル向けクロスプラットフォーム
開発ツール Xamarin の概要とそ
の利点
2017/6/24(土)
MOBILE CONFERENCE 2017
Japan Xamarin User Group
田淵義人@エクセルソフト
Twitter: @ytabuchi
facebook: ytabuchi.xlsoft
営業(セールスエンジニア) 兼 新規事業開発室 室長
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
田淵義人@エクセルソフト
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
Windows
C# UI
Xamarin.FormsXamarin Native
ロジックのみ共通化
UIはネイティブで個別に作りこむ
5
必要な知識
プラットフォーム
個別
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
抽象化UIライブラリ
最大公約数
ワンソース・ネイティブUI/UX
XAML / MVVM
拡張可能
7
Xamarin.Forms
Shared C# App Logic
(PCL)
Shared XAML/C# UI Code
(Xamarin.Forms)
Xamarin.Forms
Xamarin.Forms
ワンソース
ネイティブの
UI/UX
XAML
MVVM
8
Demo
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
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
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 を追加して移動
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)
Android
C# UI
Windows
C# UI
Xamarin Native
ロジックのみ共通化
UIはネイティブで個別に作りこむ
Xamarin ネイティブ
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)
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)
Xamarin の利点
C# / .NET / Visual Studio
フル “ネイティブ” アプリ
API 100% 移植
コード共通化
Xamarin
20
C#er/XAMLer/WPF/UWP → Forms
素早く簡単に作る → Forms
iOS/Android ネイティブ経験者 → ネイティブ
きれいに細かく作る → ネイティブ
社内プロジェクト → ??
受託開発 → ??
HTML/JS → Cordova? React Native?
21
Xamarin.Forms VS Xamarin ネイティブ
まとめ
Xamarin はいいぞ
C# だけで iOS/Android/Mac など様々なアプリを開発できる
API が同じような名前で 100% 提供されているので行き来が楽
Xamarin.Forms は単純に技術を追うだけでも楽しい
27
ありがとうございます
Japan Xamarin User Group
田淵義人@エクセルソフト
Twitter: @ytabuchi
facebook: ytabuchi.xlsoft
28

Weitere ähnliche Inhalte

Was ist angesagt?

20171202 Xamarinの歩き方
20171202 Xamarinの歩き方20171202 Xamarinの歩き方
20171202 Xamarinの歩き方Yoshito Tabuchi
 
Xamarin概要と活用方法
Xamarin概要と活用方法Xamarin概要と活用方法
Xamarin概要と活用方法Yoshito Tabuchi
 
Xamarin.forms+azureで始めるモバイル開発
Xamarin.forms+azureで始めるモバイル開発Xamarin.forms+azureで始めるモバイル開発
Xamarin.forms+azureで始めるモバイル開発Tsukasa Kato
 
ゆるふわ Xamarin Tips
ゆるふわ Xamarin Tipsゆるふわ Xamarin Tips
ゆるふわ Xamarin TipsDaiki Kawanuma
 
この辺でXamarin導入による 効果と限界をしっかり把握してみよう MVP Community Camp 2015
この辺でXamarin導入による 効果と限界をしっかり把握してみよう  MVP Community Camp 2015 この辺でXamarin導入による 効果と限界をしっかり把握してみよう  MVP Community Camp 2015
この辺でXamarin導入による 効果と限界をしっかり把握してみよう MVP Community Camp 2015 Shinichi Hirauchi
 
BlueMonkeyプロジェクトのご紹介
BlueMonkeyプロジェクトのご紹介BlueMonkeyプロジェクトのご紹介
BlueMonkeyプロジェクトのご紹介Yoshito Tabuchi
 
Xamarin 概要 2017/01/15
Xamarin 概要 2017/01/15Xamarin 概要 2017/01/15
Xamarin 概要 2017/01/15Yoshito Tabuchi
 
Developers.io.札幌 xamarinってどうよ
Developers.io.札幌 xamarinってどうよDevelopers.io.札幌 xamarinってどうよ
Developers.io.札幌 xamarinってどうよShinichi Hirauchi
 
BoxViewの美味しい食べ方
BoxViewの美味しい食べ方BoxViewの美味しい食べ方
BoxViewの美味しい食べ方Shinichi Hirauchi
 
ちょっとエモい話
ちょっとエモい話ちょっとエモい話
ちょっとエモい話Yoshito Tabuchi
 
Xamarin バッドノウハウ大全
Xamarin バッドノウハウ大全Xamarin バッドノウハウ大全
Xamarin バッドノウハウ大全Yoshito Tabuchi
 
Xamarin 基礎講座 2016年7月版
Xamarin 基礎講座 2016年7月版Xamarin 基礎講座 2016年7月版
Xamarin 基礎講座 2016年7月版Yoshito Tabuchi
 
私とXamarinと。
私とXamarinと。私とXamarinと。
私とXamarinと。Takkiiii
 
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介Yoshito Tabuchi
 
Xamarin概要と活用方法
Xamarin概要と活用方法Xamarin概要と活用方法
Xamarin概要と活用方法Yoshito Tabuchi
 
アプリケーション・デベロッパー 〜Xamarinによるクロスプラットフォーム開発〜
アプリケーション・デベロッパー 〜Xamarinによるクロスプラットフォーム開発〜アプリケーション・デベロッパー 〜Xamarinによるクロスプラットフォーム開発〜
アプリケーション・デベロッパー 〜Xamarinによるクロスプラットフォーム開発〜Daiki Kawanuma
 

Was ist angesagt? (20)

20171202 Xamarinの歩き方
20171202 Xamarinの歩き方20171202 Xamarinの歩き方
20171202 Xamarinの歩き方
 
Xamarin概要
Xamarin概要Xamarin概要
Xamarin概要
 
Xamarin概要と活用方法
Xamarin概要と活用方法Xamarin概要と活用方法
Xamarin概要と活用方法
 
Xamarin.forms+azureで始めるモバイル開発
Xamarin.forms+azureで始めるモバイル開発Xamarin.forms+azureで始めるモバイル開発
Xamarin.forms+azureで始めるモバイル開発
 
ゆるふわ Xamarin Tips
ゆるふわ Xamarin Tipsゆるふわ Xamarin Tips
ゆるふわ Xamarin Tips
 
この辺でXamarin導入による 効果と限界をしっかり把握してみよう MVP Community Camp 2015
この辺でXamarin導入による 効果と限界をしっかり把握してみよう  MVP Community Camp 2015 この辺でXamarin導入による 効果と限界をしっかり把握してみよう  MVP Community Camp 2015
この辺でXamarin導入による 効果と限界をしっかり把握してみよう MVP Community Camp 2015
 
BlueMonkeyプロジェクトのご紹介
BlueMonkeyプロジェクトのご紹介BlueMonkeyプロジェクトのご紹介
BlueMonkeyプロジェクトのご紹介
 
Visual Studio + xamarin で始めるモバイル アプリ開発
Visual Studio + xamarin で始めるモバイル アプリ開発Visual Studio + xamarin で始めるモバイル アプリ開発
Visual Studio + xamarin で始めるモバイル アプリ開発
 
Xamarin 概要 2017/01/15
Xamarin 概要 2017/01/15Xamarin 概要 2017/01/15
Xamarin 概要 2017/01/15
 
Developers.io.札幌 xamarinってどうよ
Developers.io.札幌 xamarinってどうよDevelopers.io.札幌 xamarinってどうよ
Developers.io.札幌 xamarinってどうよ
 
BoxViewの美味しい食べ方
BoxViewの美味しい食べ方BoxViewの美味しい食べ方
BoxViewの美味しい食べ方
 
ちょっとエモい話
ちょっとエモい話ちょっとエモい話
ちょっとエモい話
 
Xamarin バッドノウハウ大全
Xamarin バッドノウハウ大全Xamarin バッドノウハウ大全
Xamarin バッドノウハウ大全
 
Xamarin 基礎講座 2016年7月版
Xamarin 基礎講座 2016年7月版Xamarin 基礎講座 2016年7月版
Xamarin 基礎講座 2016年7月版
 
Xamarinの歩き方
Xamarinの歩き方Xamarinの歩き方
Xamarinの歩き方
 
私とXamarinと。
私とXamarinと。私とXamarinと。
私とXamarinと。
 
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
 
Xamarin概要と活用方法
Xamarin概要と活用方法Xamarin概要と活用方法
Xamarin概要と活用方法
 
アプリケーション・デベロッパー 〜Xamarinによるクロスプラットフォーム開発〜
アプリケーション・デベロッパー 〜Xamarinによるクロスプラットフォーム開発〜アプリケーション・デベロッパー 〜Xamarinによるクロスプラットフォーム開発〜
アプリケーション・デベロッパー 〜Xamarinによるクロスプラットフォーム開発〜
 
Xamarin Overview
Xamarin Overview Xamarin Overview
Xamarin Overview
 

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

Xamarin.Forms のこれまでとこれから
Xamarin.Forms のこれまでとこれからXamarin.Forms のこれまでとこれから
Xamarin.Forms のこれまでとこれからYoshito Tabuchi
 
Xamarin 20141212 モバイルカフェスペシャル 「C#で作るiOS/Androidのクロスプラットフォームスマホアプリ開発」
Xamarin 20141212 モバイルカフェスペシャル 「C#で作るiOS/Androidのクロスプラットフォームスマホアプリ開発」Xamarin 20141212 モバイルカフェスペシャル 「C#で作るiOS/Androidのクロスプラットフォームスマホアプリ開発」
Xamarin 20141212 モバイルカフェスペシャル 「C#で作るiOS/Androidのクロスプラットフォームスマホアプリ開発」Yoshito Tabuchi
 
Xamarin基礎講座 Xamarinハンズオン(2016.09 浜松) #JXUG #jaghama
Xamarin基礎講座 Xamarinハンズオン(2016.09 浜松) #JXUG #jaghamaXamarin基礎講座 Xamarinハンズオン(2016.09 浜松) #JXUG #jaghama
Xamarin基礎講座 Xamarinハンズオン(2016.09 浜松) #JXUG #jaghamaHironov OKUYAMA
 
Xamarin.Forms.WPF を試してみた
Xamarin.Forms.WPF を試してみたXamarin.Forms.WPF を試してみた
Xamarin.Forms.WPF を試してみたm ishizaki
 
C#で作成するfacebookアプリ mvp community camp
C#で作成するfacebookアプリ mvp community campC#で作成するfacebookアプリ mvp community camp
C#で作成するfacebookアプリ mvp community campShinichi Hirauchi
 
Xamarin で クラシックデスクトップ 2
Xamarin で クラシックデスクトップ 2Xamarin で クラシックデスクトップ 2
Xamarin で クラシックデスクトップ 2m ishizaki
 
Xamarin ~ iOS/Android/Windows アプリを C# で作ろう~
Xamarin ~ iOS/Android/Windows アプリをC# で作ろう~Xamarin ~ iOS/Android/Windows アプリをC# で作ろう~
Xamarin ~ iOS/Android/Windows アプリを C# で作ろう~Fujio Kojima
 
20110212 Silverlight から Bing Maps に触れる
20110212 Silverlight から Bing Maps に触れる20110212 Silverlight から Bing Maps に触れる
20110212 Silverlight から Bing Maps に触れるKenji Wada
 
MAUIGraphicsNamespace.pptx
MAUIGraphicsNamespace.pptxMAUIGraphicsNamespace.pptx
MAUIGraphicsNamespace.pptxTakao Tetsuro
 
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネントXamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネントMasuda Tomoaki
 
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 EastiOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 Eastirgaly
 
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメXamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメYoshito Tabuchi
 
Xamarin で始めるクロスプラットフォーム開発
Xamarin で始めるクロスプラットフォーム開発Xamarin で始めるクロスプラットフォーム開発
Xamarin で始めるクロスプラットフォーム開発m ishizaki
 
シルバーウィークにfacebookアプリを作成した
シルバーウィークにfacebookアプリを作成したシルバーウィークにfacebookアプリを作成した
シルバーウィークにfacebookアプリを作成したShinichi Hirauchi
 

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

Xamarinの概要
Xamarinの概要Xamarinの概要
Xamarinの概要
 
Xamarin.Forms概要
Xamarin.Forms概要Xamarin.Forms概要
Xamarin.Forms概要
 
Xamarin.Forms のこれまでとこれから
Xamarin.Forms のこれまでとこれからXamarin.Forms のこれまでとこれから
Xamarin.Forms のこれまでとこれから
 
Xamarin 20141212 モバイルカフェスペシャル 「C#で作るiOS/Androidのクロスプラットフォームスマホアプリ開発」
Xamarin 20141212 モバイルカフェスペシャル 「C#で作るiOS/Androidのクロスプラットフォームスマホアプリ開発」Xamarin 20141212 モバイルカフェスペシャル 「C#で作るiOS/Androidのクロスプラットフォームスマホアプリ開発」
Xamarin 20141212 モバイルカフェスペシャル 「C#で作るiOS/Androidのクロスプラットフォームスマホアプリ開発」
 
Xamarin基礎講座 Xamarinハンズオン(2016.09 浜松) #JXUG #jaghama
Xamarin基礎講座 Xamarinハンズオン(2016.09 浜松) #JXUG #jaghamaXamarin基礎講座 Xamarinハンズオン(2016.09 浜松) #JXUG #jaghama
Xamarin基礎講座 Xamarinハンズオン(2016.09 浜松) #JXUG #jaghama
 
Xamarin.Forms.WPF を試してみた
Xamarin.Forms.WPF を試してみたXamarin.Forms.WPF を試してみた
Xamarin.Forms.WPF を試してみた
 
インフラジスティックスおよび Xamarin.Forms コントロールのご紹介
インフラジスティックスおよび Xamarin.Forms コントロールのご紹介インフラジスティックスおよび Xamarin.Forms コントロールのご紹介
インフラジスティックスおよび Xamarin.Forms コントロールのご紹介
 
Xamarin Overview
Xamarin Overview Xamarin Overview
Xamarin Overview
 
C#で作成するfacebookアプリ mvp community camp
C#で作成するfacebookアプリ mvp community campC#で作成するfacebookアプリ mvp community camp
C#で作成するfacebookアプリ mvp community camp
 
C# と Xamarin
C# と XamarinC# と Xamarin
C# と Xamarin
 
Xamarin で クラシックデスクトップ 2
Xamarin で クラシックデスクトップ 2Xamarin で クラシックデスクトップ 2
Xamarin で クラシックデスクトップ 2
 
Xamarin ~ iOS/Android/Windows アプリを C# で作ろう~
Xamarin ~ iOS/Android/Windows アプリをC# で作ろう~Xamarin ~ iOS/Android/Windows アプリをC# で作ろう~
Xamarin ~ iOS/Android/Windows アプリを C# で作ろう~
 
20110212 Silverlight から Bing Maps に触れる
20110212 Silverlight から Bing Maps に触れる20110212 Silverlight から Bing Maps に触れる
20110212 Silverlight から Bing Maps に触れる
 
MAUIGraphicsNamespace.pptx
MAUIGraphicsNamespace.pptxMAUIGraphicsNamespace.pptx
MAUIGraphicsNamespace.pptx
 
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネントXamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント
 
Xamarin 基礎講座
Xamarin 基礎講座Xamarin 基礎講座
Xamarin 基礎講座
 
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 EastiOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
 
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメXamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
 
Xamarin で始めるクロスプラットフォーム開発
Xamarin で始めるクロスプラットフォーム開発Xamarin で始めるクロスプラットフォーム開発
Xamarin で始めるクロスプラットフォーム開発
 
シルバーウィークにfacebookアプリを作成した
シルバーウィークにfacebookアプリを作成したシルバーウィークにfacebookアプリを作成した
シルバーウィークにfacebookアプリを作成した
 

Mehr von Yoshito Tabuchi

Kong Summit 2021 振り返り
Kong Summit 2021 振り返りKong Summit 2021 振り返り
Kong Summit 2021 振り返りYoshito Tabuchi
 
勉強会参加のススメ
勉強会参加のススメ勉強会参加のススメ
勉強会参加のススメYoshito Tabuchi
 
Kong Enterprise の紹介
Kong Enterprise の紹介Kong Enterprise の紹介
Kong Enterprise の紹介Yoshito Tabuchi
 
How does a sales person grow up his community
How does a sales person grow up his communityHow does a sales person grow up his community
How does a sales person grow up his communityYoshito Tabuchi
 
Xamarin で Cognitive Services を使う
Xamarin で Cognitive Services を使うXamarin で Cognitive Services を使う
Xamarin で Cognitive Services を使うYoshito Tabuchi
 
Xamarin で Cognitive Services を使ってみよう
Xamarin で Cognitive Services を使ってみようXamarin で Cognitive Services を使ってみよう
Xamarin で Cognitive Services を使ってみようYoshito Tabuchi
 
Xamarinを触り始めた頃の話〜触りたい人に向けて〜
Xamarinを触り始めた頃の話〜触りたい人に向けて〜Xamarinを触り始めた頃の話〜触りたい人に向けて〜
Xamarinを触り始めた頃の話〜触りたい人に向けて〜Yoshito Tabuchi
 
2018年のXamarinの概要と活用方法
2018年のXamarinの概要と活用方法2018年のXamarinの概要と活用方法
2018年のXamarinの概要と活用方法Yoshito Tabuchi
 
Xamarin の特徴と開発手法概要
Xamarin の特徴と開発手法概要Xamarin の特徴と開発手法概要
Xamarin の特徴と開発手法概要Yoshito Tabuchi
 

Mehr von Yoshito Tabuchi (11)

Kong Summit 2021 振り返り
Kong Summit 2021 振り返りKong Summit 2021 振り返り
Kong Summit 2021 振り返り
 
Kong 概要
Kong 概要Kong 概要
Kong 概要
 
勉強会参加のススメ
勉強会参加のススメ勉強会参加のススメ
勉強会参加のススメ
 
Kong Enterprise の紹介
Kong Enterprise の紹介Kong Enterprise の紹介
Kong Enterprise の紹介
 
How does a sales person grow up his community
How does a sales person grow up his communityHow does a sales person grow up his community
How does a sales person grow up his community
 
Xamarin で Cognitive Services を使う
Xamarin で Cognitive Services を使うXamarin で Cognitive Services を使う
Xamarin で Cognitive Services を使う
 
Xamarin で Cognitive Services を使ってみよう
Xamarin で Cognitive Services を使ってみようXamarin で Cognitive Services を使ってみよう
Xamarin で Cognitive Services を使ってみよう
 
Xamarinを触り始めた頃の話〜触りたい人に向けて〜
Xamarinを触り始めた頃の話〜触りたい人に向けて〜Xamarinを触り始めた頃の話〜触りたい人に向けて〜
Xamarinを触り始めた頃の話〜触りたい人に向けて〜
 
2018年のXamarinの概要と活用方法
2018年のXamarinの概要と活用方法2018年のXamarinの概要と活用方法
2018年のXamarinの概要と活用方法
 
Xamarin 概要
Xamarin 概要Xamarin 概要
Xamarin 概要
 
Xamarin の特徴と開発手法概要
Xamarin の特徴と開発手法概要Xamarin の特徴と開発手法概要
Xamarin の特徴と開発手法概要
 

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

  • 1. モバイル向けクロスプラットフォーム 開発ツール Xamarin の概要とそ の利点 2017/6/24(土) MOBILE CONFERENCE 2017 Japan Xamarin User Group 田淵義人@エクセルソフト Twitter: @ytabuchi facebook: ytabuchi.xlsoft
  • 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 田淵義人@エクセルソフト
  • 4. C# / .NET / Visual Studio フル “ネイティブ” アプリ API 100% 移植 コード共通化 Xamarin 4
  • 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. 必要な知識 プラットフォーム 個別 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
  • 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. 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. 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. Visual Studio:表示>その他のウィンドウ>Xamarin.Forms Previewer Visual Studio for Mac:XAML ファイルを開いて右上のプレビューボタンをクリック 14 Forms Previewer
  • 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はネイティブで個別に作りこむ
  • 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. 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)
  • 19. C# / .NET / Visual Studio フル “ネイティブ” アプリ API 100% 移植 コード共通化 Xamarin 20
  • 20. C#er/XAMLer/WPF/UWP → Forms 素早く簡単に作る → Forms iOS/Android ネイティブ経験者 → ネイティブ きれいに細かく作る → ネイティブ 社内プロジェクト → ?? 受託開発 → ?? HTML/JS → Cordova? React Native? 21 Xamarin.Forms VS Xamarin ネイティブ
  • 22. Xamarin はいいぞ C# だけで iOS/Android/Mac など様々なアプリを開発できる API が同じような名前で 100% 提供されているので行き来が楽 Xamarin.Forms は単純に技術を追うだけでも楽しい 27
  • 23. ありがとうございます Japan Xamarin User Group 田淵義人@エクセルソフト Twitter: @ytabuchi facebook: ytabuchi.xlsoft 28