Slide 1

Slide 1 text

Xamarin.iOS ! Ӊࠤݟ ެี

Slide 2

Slide 2 text

ࣗݾ঺հ • Ӊࠤݟ ެีʢtwitter: @usamik26ʣ • ϑΣϯϦϧגࣜձࣾ ڞಉ։ൃ෦ • CotEditor ։ൃʢOS X ςΩετΤσΟλʣ

Slide 3

Slide 3 text

࠷ۙͷ࢓ࣄ • ීஈ͸ Objective-C Ͱ iOS ΞϓϦ։ൃ • ࠷ۙ͸ Xamarin + MvvmCross ͸͡Ί·ͨ͠

Slide 4

Slide 4 text

Agenda ɾXamarin ͱ͸Կ͔ ɾC# Λ࢖͏ ɾXamarin Studio ɾMVVM ͱ͸ ɾMvvmCross ɾXamarin ϥΠηϯε

Slide 5

Slide 5 text

Xamarin ͱ͸Կ͔

Slide 6

Slide 6 text

Xamarin ͱ͸Կ͔ • C# ͰΞϓϦ։ൃ • iOS / Android / Mac • .NET / Mono ϕʔε • MonoTouch / MonoDroid / MonoMac

Slide 7

Slide 7 text

Xamarin.iOS • ωΠςΟϒΞϓϦͱͯ͠ίϯύΠϧ • ैͬͯɺApp Store ਃ੥͕Մೳ

Slide 8

Slide 8 text

Xamarin.iOS • MonoTouch ܦ༝Ͱશ iOS API ʹΞΫηεՄೳ • ࠷৽ SDK ΁ͷ௥ਵ΋ૣ͍ʢطʹ iOS 8 ରԠʣ • ໋໊͸ C# ͷྲّྀʹ͋Θͤͯ͋Δ

Slide 9

Slide 9 text

όΠϯσΟϯάྫ [UIImage imageNamed:@“hoge”] (Objective-C) ! UIImage.FromBundle(“hoge”) (C#) [MonoTouch.Foundation.Export("imageNamed:")] public static UIImage FromBundle (string name)

Slide 10

Slide 10 text

طଘίʔυͷར༻ • Objective-C Ͱॻ͔ΕͨίʔυΛར༻Մೳ • ωΠςΟϒόΠϯσΟϯάΛࣗ෼Ͱੜ੒

Slide 11

Slide 11 text

Xamarin ղઆ

Slide 12

Slide 12 text

Xamarin ։ൃ࣮੷

Slide 13

Slide 13 text

C# Λ࢖͏

Slide 14

Slide 14 text

C# • Objective-C ΍ Swift ͷ୅ΘΓʹ C# Λ࢖͏ • C# ݻ༗ͷจ๏͕࢖͑Δ

Slide 15

Slide 15 text

ܕਪ࿦ var x = 1; // x ͸ int ! var obj = new Hoge(); // obj ͸ Hoge ΦϒδΣΫτ

Slide 16

Slide 16 text

ϥϜμࣜ // Ұ൪؆ܿͳه๏ʢܕਪ࿦ʣ x => x > 0 ! // ܕ΍ return Λলུ͠ͳ͍ه๏ (int x) => { return x > 0; } ! // ௨ৗͷؔ਺Ͱॻ͍ͨ৔߹ bool Hoge(int x) { return x > 0; }

Slide 17

Slide 17 text

LINQ ! ʢΫΤϦʣ var list1 = list.Where(x => x > 0); ! var list2 = list.Where(x => x > 0) .Select(x => x.Name);

Slide 18

Slide 18 text

async / await ! ʢඇಉظॲཧʣ async void Hoge() { Work1(); // ී௨ʹݺ͹ΕΔ var result = await WorkAsync(); // ผεϨου Work2(); // WorkAsync ͷޙͰݺ͹ΕΔ }

Slide 19

Slide 19 text

Xamarin Studio

Slide 20

Slide 20 text

։ൃ؀ڥ • Xamarin StudioʢҎલ͸ MonoDevelopʣ • Storyboard ͷฤू΋ Xamarin Studio ͰՄೳ • xib ͷฤू͸ Xcode Λىಈͯ͠࿈ಈ

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

Storyboard

Slide 23

Slide 23 text

AutoLayout

Slide 24

Slide 24 text

NuGet • NuGet Ͱ֤छϥΠϒϥϦΛಋೖͰ͖Δ • ޙड़ͷ MvvmCross ΋ NuGet Ͱ

Slide 25

Slide 25 text

MVVM ͱ͸

Slide 26

Slide 26 text

MVVM • Model - View - ViewModel

Slide 27

Slide 27 text

ϩδοΫͱϏϡʔͷ෼཭ • ϩδοΫ෦෼͸ϓϥοτϑΥʔϜඇґଘ

Slide 28

Slide 28 text

Ϗϡʔ͸ϓϥοτϑΥʔϜ͝ͱ • ֤ϓϥοτϑΥʔϜͷੈք؍Λେࣄʹ͢Δ

Slide 29

Slide 29 text

MVVM Λ࢖͏ʹ͸ • C# / .NET จԽݍͰ͔ͭͪΘΕ͖ͯͨ • ͜ͷͨΊɺXamarin ͱ MVVM ͸૬ੑ͕Α͍ • ༨ஊɿObjective-C or Swift Ͱ΍ΔͳΒ ReactiveCocoa Λ࢖͏ͷ͕ྑ͍

Slide 30

Slide 30 text

MvvmCross

Slide 31

Slide 31 text

MvvmCross • Xamarin Ͱ MVVM ઃܭΛαϙʔτ͢ΔϥΠϒ ϥϦͷ̍ͭ • https://github.com/MvvmCross/MvvmCross

Slide 32

Slide 32 text

ϓϩδΣΫτߏ੒ • Core • Touch (iOS) • Droid (Android)

Slide 33

Slide 33 text

ϓϩδΣΫτߏ੒ • Core Project • ϓϥοτϑΥʔϜݻ༗ͷػೳ͸࢖͑ͳ͍ • Touch / Droid Project • ϓϥοτϑΥʔϜݻ༗ͷػೳ͕࢖͑Δ • Ͱ΋ɺView ʹ͸ϩδοΫΛॻ͔ͳ͍

Slide 34

Slide 34 text

ϓϥοτϑΥʔϜґଘͷػೳ • ϓϥοτϑΥʔϜґଘͷػೳΛ࢖͍͍ͨ • ͨͱ͑͹Χϝϥͱ͔ • ϓϥάΠϯΛ࡞Δ͜ͱͰղܾ

Slide 35

Slide 35 text

View ͷ࡞੒ • MVVM ͷ View = UIViewController • View ͷίʔυ͸࠷খݶʹ͓͑͞Δ • ը໘ϩδοΫ͸ ViewModel • xib + AutoLayout Λ׆༻ • ʢݱঢ় MvvmCross ͸ Storyboard ඇରԠʣ

Slide 36

Slide 36 text

ը໘ભҠ • ը໘ભҠͷ࿦ཧ͸ ViewModel ʹهड़ • ΞχϝʔγϣϯॲཧͳͲ͸ View ʹهड़ • Storyboard ͷ Segue ͱ͸૬ੑѱ͍ɾɾɾ

Slide 37

Slide 37 text

όΠϯσΟϯά • View ͱ ViewModel ͷόΠϯσΟϯάهड़ • ͜Ε͸ίʔυͰॻ͔͘͠ͳ͍ʢiOS ͷ৔߹ʣ

Slide 38

Slide 38 text

όΠϯσΟϯά var set = this.CreateBindingSet(); set.Bind(HogeLabel).To(vm => vm.HogeText); set Bind(HogeButton).To(vm => vm.HogeCommand); set.Apply();

Slide 39

Slide 39 text

ͦͷଞ • MvvmCross ͸όΠϯσΟϯάΛָʹ͢ΔΫϥ εΛ͍͔ͭ͘༻ҙ͍ͯ͠Δ • MvxImageView • MvxTableViewSource • ͳͲ

Slide 40

Slide 40 text

Xamarin ϥΠηϯε

Slide 41

Slide 41 text

Xamarin ϥΠηϯε • ϥΠηϯεߴ͍ɾɾɾ • 1ϲ݄ͷ Trial ͋Γ

Slide 42

Slide 42 text

͓஌Βͤ

Slide 43

Slide 43 text

ΤϯδχΞืूத

Slide 44

Slide 44 text

No content

Slide 45

Slide 45 text

Xamarin ʹڵຯ͕͋Δਓ͸ ͥͻͲ͏ͧ