Slide 1

Slide 1 text

Xamarin Λ࢖ͬͨ iOS ΞϓϦ։ൃͷݱ৔͔Β Ӊࠤݟެี Fenrir Inc.

Slide 2

Slide 2 text

Xamarin ͱ͸

Slide 3

Slide 3 text

Xamarin ͱ͸ • ෳ਺ͷϓϥοτϑΥʔϜʹରԠͨ͠ΞϓϦ։ൃ؀ڥ • iOS / Android / ... • .NET / Mono ϕʔε • C# Ͱ͢΂ͯͷίʔυ͕ॻ͚Δ • ʢC# Ҏ֎ʹ F# ΋࢖͑Δʣ

Slide 4

Slide 4 text

ωΠςΟϒΞϓϦ • ֤ OS ͷωΠςΟϒ API ͕࢖͑Δ • ωΠςΟϒ API ΁ͷ C# όΠϯσΟϯά • ֤ OS ͷωΠςΟϒ UI ͕࢖͑Δ • ͦΕҎ֎ʹ Xamarin.Forms ͱ͍͏બ୒ࢶ΋͋Δ • ֤ OS ͷωΠςΟϒΞϓϦ͕ϏϧυͰ͖Δ

Slide 5

Slide 5 text

ϓϥοτϑΥʔϜؒͷίʔυڞ௨Խ

Slide 6

Slide 6 text

࢖༻࣮੷

Slide 7

Slide 7 text

࣮ࡍʹ࢖ͬͯΈͯ

Slide 8

Slide 8 text

࣮ࡍʹ iOS ΞϓϦ։ൃͰ࢖ͬͯΈͯ • IDE • Storyboard • C#

Slide 9

Slide 9 text

IDE ˍ Storyboard

Slide 10

Slide 10 text

։ൃ؀ڥʢIDEʣ • બ୒ࢶ • Visual Studio for Mac • RiderʢJetBrains ੡ IDEʣ • Windows + Visual Studio

Slide 11

Slide 11 text

࣮ࡍͷ؀ڥ • Visual Studio for Mac Ͱͻͱͱ͓Γͷ͜ͱ͕Ͱ͖Δ • ίʔσΟϯά͸ Rider ΍ Windows ্ͷ VS ͷํָ͕ • ͨͩɺσόοά΍ Storyboard ฤूͳͲ͸ෆ͕҆͋Δ • ซ༻͸໘౗ͳͷͰɺ݁ہ VS for Mac Ͱશ෦΍͍ͬͯΔ

Slide 12

Slide 12 text

Xamarin.iOS ͱ Storyboard • Storyboard ্ʹ UIViewController Λஔ͘৔߹

Slide 13

Slide 13 text

Storyboard ฤू࣌ͷ໰୊ • VS for Mac Ͱ Storyboard Λฤू͢Δ৔߹ • ⭕ ৽͍͠ class ໊ΛೖΕΔͱɺclass ϑΝΠϧΛੜ੒ • ⭕ .designer.cs ϑΝΠϧͱͷ࿈ܞ • ❌ View ͷ഑ஔ่͕ΕΔ͜ͱ͕͋Δ • ❌ Auto Layout ͷ੍໿͕উखʹมΘΔ͜ͱ͕͋Δ

Slide 14

Slide 14 text

VS for Mac ͱ Xcode ͷซ༻ • ࠷ॳͷ࡞੒΍ .designer.cs ࿈ܞ͸ VS for Mac • View ഑ஔ΍ϨΠΞ΢τௐ੔͸ Xcodeʢ݁ہɺซ༻ঢ়ଶʣ

Slide 15

Slide 15 text

̘ˌ

Slide 16

Slide 16 text

̘ˌ • Swift / Kotlin ʹൺ΂Ε͹ݹ͍͕ɺݱࡏ΋ਐԽ͍ͯ͠Δ • ඪ४ͷݴޠػೳ͕༏Ε͍ͯΔ • namespace • event • async / await • Reactive • ͳͲ

Slide 17

Slide 17 text

event class Hoge { public event EventHandler HogeEvent; HogeEvent.Invoke(); // ΠϕϯτൃՐʢ಺ଆ͔ΒͷΈʣ } var hoge = new Hoge(); hoge.HogeEvent += ... // ΠϕϯτϋϯυϦϯάॲཧ

Slide 18

Slide 18 text

async / await async Task HogeAsync() { // Կ͔ͷඇಉظॲཧ } var result1 = Hoge1(); var result = await HogeAsync(); // ඇಉظॲཧ͕ऴΘΔͷΛ଴ͭ var result2 = Hoge2();

Slide 19

Slide 19 text

await ͰΞϥʔτͷϘλϯԡԼ଴ͪ var tcs = new TaskCompletionSource(); var alert = UIAlertController.Create(title, message, style); alert.AddAction(UIAlertAction.Create(name, style, action => { tcs.SetResult(true); // ϘλϯͷΞΫγϣϯͰ SetResult })); PresentViewController(alert, true, null); var result = await tcs.Task; // SetResult Λ଴ͭ

Slide 20

Slide 20 text

Reactive Extensions • ͍ΘΏΔ Rx • .NET ൃ঵ͷ΋ͷ͕֤ݴޠʹ޿·͍ͬͯΔ • Θ͟Θ͟ϥΠϒϥϦΛೖΕͣͱ΋ɺඪ४ͰରԠ͍ͯ͠Δͷ͕ڧ Έ • ҎԼͷϥΠϒϥϦΛೖΕΔͱΑΓศར • ReactiveProperty • ReactiveCommand

Slide 21

Slide 21 text

·ͱΊ

Slide 22

Slide 22 text

·ͱΊ • IDE ͸ Visual Studio for Mac • Storyboard ฤू͸ Xcode • ซ༻ঢ়ଶʹͳΔͷ͸΍΍໘౗ • C# ͸݁ߏศར