54
Xamarin基礎講座 Xamarinハンズオン Japan Xamarin User Group 田淵 義人 080-7015-3586 Twitter: @ytabuchi facebook: xlsoft.ytabuchi Blog: Xamarin 日本語情報

Xamarin 基礎講座 2016年7月版

Embed Size (px)

Citation preview

Page 1: Xamarin 基礎講座 2016年7月版

Xamarin基礎講座Xamarinハンズオン

Japan Xamarin User Group田淵義人080-7015-3586Twitter: @ytabuchifacebook: xlsoft.ytabuchiBlog: Xamarin日本語情報

Page 2: Xamarin 基礎講座 2016年7月版

田淵義人@エクセルソフトXamarin コミュニティエバンジェリスト

2016年4月 Microsoft MVP Visual Studio and Development Technologies 受賞

連載・執筆Build Insider, マイナビニュース

.NET開発テクノロジ入門2016年版(Xamarinの章)

コミュニティTwitter: @ytabuchi

facebook: ytabuchi.xlsoft

Blog: Xamarin 日本語情報

2

自己紹介

Page 3: Xamarin 基礎講座 2016年7月版

第1部 30分+90分Xamarin 概要

Android, iOS 概要

Xamarin ネイティブ

第2部 30分+90分Xamarin.Forms

まとめ

LT大会&キャッチアップ 30分

3

本日のスケジュール

Page 4: Xamarin 基礎講座 2016年7月版

http://github.com/ytabuchi/XamarinHOL

4

資料

Page 5: Xamarin 基礎講座 2016年7月版

アジェンダ

Xamarin 概要Android, iOS 概要Xamarin ネイティブXamarin.Formsまとめ

5

Page 6: Xamarin 基礎講座 2016年7月版

Miguel, Nat

Mono, Ximian

Novell, Attachmate

Microsoft

6

Xamarin (ザマリン・企業)

Page 7: Xamarin 基礎講座 2016年7月版

C# / .NET / Visual Studio

フル “ネイティブ” アプリ

API 100% 移植

コード共通化

7

Xamarin

Page 8: Xamarin 基礎講座 2016年7月版

C#

8

using System.Collections.Generic;using System.IO;using System.Linq;using System.Net.Http;using System.Xml.Serialization;

button.Click += async (sender, e) =>{using (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();}

}};

Page 9: Xamarin 基礎講座 2016年7月版

2つの開発手法

9

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はネイティブで個別に作りこむ

Page 10: Xamarin 基礎講座 2016年7月版

必要な知識

10

プラットフォーム個別

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

Page 11: Xamarin 基礎講座 2016年7月版

Visual Studio Community の利用条件:https://www.microsoft.com/ja-jp/dev/products/community.aspx

11

必要なライセンス

http://nuits.hatenadiary.jp/entry/2016/05/06/174037

Page 12: Xamarin 基礎講座 2016年7月版

アジェンダ

Xamarin 概要Android, iOS 概要Xamarin ネイティブXamarin.Formsまとめ

12

Page 13: Xamarin 基礎講座 2016年7月版

Xamarin.Android

13

Page 14: Xamarin 基礎講座 2016年7月版

構成

14

ソースファイル

(C#)

UI 定義

(axml)

メタデータ

(Resources)

Page 15: Xamarin 基礎講座 2016年7月版

Activity

15

Activity 1

UI

Code

Activity 2

UI

Code

Activity 3

UI

Code

Data, files,

images など

アプリ

Page 16: Xamarin 基礎講座 2016年7月版

Layout

16

Page 17: Xamarin 基礎講座 2016年7月版

Layout

17

Page 18: Xamarin 基礎講座 2016年7月版

Activity + Layout

18

<LinearLayout ... ><TextView ... /><EditText ... /><Button ... /><TextView ... />

</LinearLayout>

[Activity]public class PiActivity : Activity{......

}

Page 19: Xamarin 基礎講座 2016年7月版

Resource Id

19

[Activity(MainLauncher = true)]public class MainActivity : Activity{

protected override void OnCreate(Bundle bundle){

base.OnCreate(bundle);SetContentView(Resource.Layout.Main);

var et = FindViewById<EditText>(Resource.Id.digitsInput);...

}...

}

Page 20: Xamarin 基礎講座 2016年7月版

Intent

20

Page 21: Xamarin 基礎講座 2016年7月版

Intent

21

public class MainActivity : Activity{...void OnClick(object sender, EventArgs e){

var intent = new Intent(this, typeof(Activity2));

base.StartActivity(intent);}

}

Page 22: Xamarin 基礎講座 2016年7月版

Intent

22

Page 23: Xamarin 基礎講座 2016年7月版

Navigation

23

Page 24: Xamarin 基礎講座 2016年7月版

Xamarin.iOS

24

Page 25: Xamarin 基礎講座 2016年7月版

構成

25

ソースファイル

(C#)

UI 定義

(Storyboard + XiB)

メタデータ

(property lists)

Page 26: Xamarin 基礎講座 2016年7月版

Frame

26

Page 27: Xamarin 基礎講座 2016年7月版

Bounds

27

Page 28: Xamarin 基礎講座 2016年7月版

View (コードで)

28

Page 29: Xamarin 基礎講座 2016年7月版

29

Storyboard

Page 30: Xamarin 基礎講座 2016年7月版

Constraints (制約)

30

Page 31: Xamarin 基礎講座 2016年7月版

Multi Screen

31

Page 32: Xamarin 基礎講座 2016年7月版

Segue

32

Page 33: Xamarin 基礎講座 2016年7月版

Segue

33

Page 34: Xamarin 基礎講座 2016年7月版

アジェンダ

Xamarin 概要Android, iOS 概要Xamarin ネイティブXamarin.Formsまとめ

34

Page 35: Xamarin 基礎講座 2016年7月版

Xamarin ネイティブ

35

Page 36: Xamarin 基礎講座 2016年7月版

UIは個別

ネイティブAPIは個別

PCL vs Sharedネットワーク

Json, XML

永続化

async/await

36

Xamarin ネイティブ

iOS

C# UI

Shared C# App Logic

(PCL)

Android

C# UI

Windows

C# UI

Xamarin Nativeロジックのみ共通化

UIはネイティブで個別に作りこむ

Page 37: Xamarin 基礎講座 2016年7月版

アジェンダ

Xamarin 概要Android, iOS 概要Xamarin ネイティブXamarin.Formsまとめ

37

Page 38: Xamarin 基礎講座 2016年7月版

抽象化UIライブラリ最大公約数

ワンソース・ネイティブUI/UX

XAML / MVVM

拡張可能

38

Xamarin.Forms

Shared C# App Logic

(PCL)

Shared XAML/C# UI Code

(Xamarin.Forms)

Xamarin.Forms

Page 39: Xamarin 基礎講座 2016年7月版

Pages

39

New!

Page 40: Xamarin 基礎講座 2016年7月版

Layouts

40

New!New!

Page 41: Xamarin 基礎講座 2016年7月版

Controls

ActivityIndicator BoxView Button DatePicker Editor

Entry Image Label ListView Map

OpenGLView Picker ProgressBar SearchBar Slider

Stepper TableView TimePicker WebView

EntryCell ImageCell SwitchCell TextCell ViewCell

41

Page 42: Xamarin 基礎講座 2016年7月版

Xamarin.Forms

ワンソース

ネイティブのUI/UX

42

Page 43: Xamarin 基礎講座 2016年7月版

XAML

43

Page 44: Xamarin 基礎講座 2016年7月版

XAMLの機能

44

Page 45: Xamarin 基礎講座 2016年7月版

XAMLの機能

Resource

Style

Trigger

Behavior

Value Converter

Data Template

Data Binding

45

Page 46: Xamarin 基礎講座 2016年7月版

Model View ViewModel

Data Binding

MessagingCenter

46

MVVM

Page 47: Xamarin 基礎講座 2016年7月版

ネイティブコントロール (UI)

Custom Renderer

Effects

47

Page 48: Xamarin 基礎講座 2016年7月版

ネイティブAPI

Dependency Service

Plugin

48

Page 49: Xamarin 基礎講座 2016年7月版

アジェンダ

Xamarin 概要Android, iOS 概要Xamarin ネイティブ, Xamarin.Forms開発手法まとめ

49

Page 50: Xamarin 基礎講座 2016年7月版

C# / .NET / Visual Studio

フル “ネイティブ” アプリ

API 100% 移植

コード共通化

50

Xamarin

Page 51: Xamarin 基礎講座 2016年7月版

2つの開発手法

51

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はネイティブで個別に作りこむ

Page 52: Xamarin 基礎講座 2016年7月版

#Xamarinはいいぞ

52

Page 53: Xamarin 基礎講座 2016年7月版

公式ドキュメント

ペゾルド本(PDFが無料配布中)

日本語の情報

Japan Xamarin User Group

Build Insider

Qiita

田淵のブログ

各種ブログへのリンク53

リソース

Page 54: Xamarin 基礎講座 2016年7月版

ありがとうございました

Japan Xamarin User Group田淵義人080-7015-3586Twitter: @ytabuchifacebook: xlsoft.ytabuchiBlog: Xamarin日本語情報