Xamarinの概要と活用事例
2017/3/29(水)
Xamarin 最前線 with iOS Consortium
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.iOS とは何かを理解してもらう
Xamarin 面白そうだなと感じてもらう
3
ゴール
Xamarinとは
C# / .NET / Visual Studio
フル “ネイティブ” アプリ
API 100% 移植
コード共通化
Xamarin
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はネイティブで個別に作りこむ
6
iOS の API を C# から呼び出せる薄
いラッパー
同じ要素を利用可能
Storyboard
ViewController
Info.plist/Entitlements.plist
Assets
Monoランタイムと C# のコードを AOT
コンパイル
7
Xamarin.iOS
https://speakerdeck.com/amay077/xamarin-dot-android-teshi-merukurosuhuratutohuomumohairuahurikai-fa-number-droidkaigi-number-droidkaigi1
8
Storyboard/ViewController
namespace XamarinNative.iOS
public partial class ViewController :
UIViewController
{
public ViewController(IntPtr handle)
: base(handle) {}
public override void ViewDidLoad()
{
base.ViewDidLoad();
GetButton.TouchUpInside += (sender, e) =>
{
GetButton.SetTitle("Tapped!",
UIControlState.Normal);
};
}
}
9
Info.plist
NuGet
10
Xamarin ネイティブのコード
11
Xamarin.Forms
ワンソース
ネイティブの
UI/UX
XAML
MVVM
12
Model View
ViewModel
Data Binding
13
MVVM
Open Source
https://github.com/ProjectBlueMonkey
/BlueMonkey
MVVM Pattern
Prism for Xamarin.Forms
Guidance
Patterns & Practices
Testable & Maintainable
14
Project Blue Monkey
http://www.nuits.jp/entry/bluemonkey-architecture-overview
https://www.slideshare.net/AtsushiNakamura4/blue-monkey-architecture-overview
Xamarin.Forms のコード
15
必要な知識
プラットフォーム
個別
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
16
C#
17
button.Click += async (sender, e) =>
{
var client = new HttpClient();
using (var reader = new StreamReader(await client.GetStreamAsync("xxx")))
{
var deserializer = new XmlSerializer(typeof(Rss));
var latest = deserializer.Deserialize(reader) as Rss;
var feed = latest.Channel.Items
.Where(x => x.Link.Contains("xamarin"))
.Select(x => x.Title).ToList();
}
};
どんなアプリが作れるの?
フェンリル株式会社 様
http://biz.fenrir-
inc.com/application_dev
elopment/casestudy_ap
p/nhk_kouhaku.html
NHK 紅白
19
株式会社エムティーアイ 様
http://www.xlsoft.com/jp/pr
oducts/xamarin/apps_saken
omy.html
Xamarin.Forms 活用事例
Sakenomy
20
@muak_x さん
http://kamusoft.hatenab
log.jp/entry/2016/11/08/
220810
21
色しらべ
@yamamo さん
https://docs.com
/yamamoto-
takahiro/9893/jxu
gc-17-xamarin
22
AzureVM Power Switch
@kikutaro_ さん
http://kikutaro777
.hatenablog.com/
entry/2016/08/07
/230423
23
坂道46セレクション
24
エイチ・エス証券 スマ株
https://speakerdeck.com/amay077/xamarin-dot-android-teshi-merukurosuhuratutohuomumohairuahurikai-fa-number-droidkaigi-number-droidkaigi1
まとめ
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はネイティブで個別に作りこむ
26
iOS の知識があるとより活用できる
共通化で品質向上
モダンな開発環境で変更に強い良いアプリを
Xamarin
ありがとうございます
JXUG にも遊びに来てください
Japan Xamarin User Group
田淵義人@エクセルソフト
Twitter: @ytabuchi
facebook: ytabuchi.xlsoft
28

Xamarin の概要と活用事例