Xamarin の特徴と開発手法概要
2016/9/7 2016年9月定例会「クロスプラット
フォーム開発最前線」
田淵義人@エクセルソフト
Twitter: @ytabuchi
facebook: ytabuchi.xlsoft
自己紹介
Xamarin コミュニティエバンジェリスト
2016年4月 Microsoft MVP Visual Studio and Development Technologies 受賞
Build Insider, マイナビニュース
.NET開発テクノロジ入門2016年版 (Xamarinの章)
Japan Xamarin User Group (ジェイザグ) 主催
Twitter: @ytabuchi
facebook: ytabuchi.xlsoft
Blog: Xamarin 日本語情報
2
ゴール
Xamarin の仕組み・開発手法を理解してもらう
面白そうだなと感じてもらう
事例
Sakenomy
http://www.xlsoft.com/jp/p
roducts/xamarin/apps_sak
enomy.html
5
NHK 紅白
http://biz.fenrir-
inc.com/application_d
evelopment/casestudy
_app/nhk_kouhaku.ht
ml
6
アジェンダ
Xamarin 概要
Xamarin ネイティブでの開発
Xamarin.Forms での開発
まとめ
アジェンダ
Xamarin 概要
Xamarin ネイティブでの開発
Xamarin.Forms での開発
まとめ
Xamarin (ザマリン)
9
Xamarin
10
C# 6.0
11
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Http;
using Newtonsoft.Json;
button.Click += async (sender, e) =>
{
using (var client = new HttpClient())
{
using (var reader = new StreamReader(await client.GetStreamAsync("xxx")))
{
var json = await reader.ReadToEndAsync();
var jsonModel = JsonConvert.DeserializeObject<List<Data>>(json)
.Where(x => x.Url.Contains("xamarin"))
.Select(x => x.Title).ToList();
}
}
};
2つの開発手法
12
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はネイティブで個別に作りこむ
必要な知識
13
プラットフォーム
個別
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
アジェンダ
Xamarin 概要
Xamarin ネイティブでの開発
Xamarin.Forms での開発
まとめ
Xamarin ネイティブ
15
iOS
C# UI
Shared C# App Logic
(PCL)
Android
C# UI
Windows
C# UI
Xamarin Native
ロジックのみ共通化
UIはネイティブで個別に作りこむ
Layout
16
Activity + Layout
17
<LinearLayout ... >
<TextView ... />
<EditText ... />
<Button ... />
<TextView ... />
</LinearLayout>
[Activity(MainLauncher = true)]
public class MainActivity : Activity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
var editText = FindViewById<EditText>
(Resource.Id.digitsInput);
...
}
...
}
アジェンダ
Xamarin 概要
Xamarin ネイティブでの開発
Xamarin.Forms での開発
まとめ
Xamarin.Forms
最大公約数
19
Shared C# App Logic
(PCL)
Shared XAML/C# UI Code
(Xamarin.Forms)
Xamarin.Forms
Xamarin.Forms
20
アジェンダ
Xamarin 概要
Xamarin ネイティブでの開発
Xamarin.Forms での開発
まとめ
Xamarin
22
2つの開発手法
23
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はネイティブで個別に作りこむ
興味を持ってくれた方は
参考資料・サンプル
24
デモで使用したプロジェクト
https://github.com/ytabuchi/XamarinNative/tree/master/ListViewSample
Xamarin.Android の ListView で Item を追加、削除したい(CustomAdapter)
Xamarin.Android の ListView で Item を追加、削除したい(ArrayAdapterと
SimpleListItem1)
https://github.com/ytabuchi/xamarin-forms/tree/master/XF_ListViewSample
MVVM な Xamarin.Forms プロジェクトの Model を UnitTest してみる - その1
MVVM な Xamarin.Forms プロジェクトの Model を UnitTest してみる - その2
ハンズオンレポジトリ
https://github.com/ytabuchi/XamarinHOL
26
Prebuilt サンプル
https://www.xamarin.com/prebuilt
27
Acquaint Sport Xamarin CRM My Shoppe
【告知】次回 JXUG
JXUGC #17 お前の Xamarin アプリを見せてみろ! -
connpass
28
ご清聴ありがとうございます
田淵義人@エクセルソフト
Twitter: @ytabuchi
facebook: ytabuchi.xlsoft

Xamarin の特徴と開発手法概要