Slide 1

Slide 1 text

DroidKaigi2016ΞϓϦΛ Xamarin ʹҠ২ͨ͠࿩ ɹ ɹ ɹ ɹ - 2016/05/07 #JXUG 13 - @amay077 1 © @amay077 , 2016

Slide 2

Slide 2 text

ࣗݾ঺հ • OKUYAMA Hironobu(@amay077) • Toyohashi, Aichi • Geospatial Engineer • VB/VC('00-), C#('05-), Android/iOS('11-), Xamarin('13-) • BUILD Insider - XamarinٯҾ͖Tips 2 © @amay077 , 2016

Slide 3

Slide 3 text

DroidKaigi2016 ͷެࣜΞϓϦΛ Xamarin.Android ΁Ҡ২ͨ͠࿩ Λ͠·͢ • Android SDKͷബ͍ϥούʔ XamarinωΠςΟϒ ͷ࿩Ͱ͢ • Xamarin.Forms Ͱ͸͋Γ·ͤΜ • MVVM ͱ͔ɺiOSଞͱͷڞ௨Խͷ࿩͸͠·ͤΜ • ࠷৽ͷ Android ΞϓϦ͕Ͳ͜·Ͱ Xamarin Ͱ։ൃՄೳ͔ʁ 3 © @amay077 , 2016

Slide 4

Slide 4 text

DroidKaigi2016 ͱ͸ • droidkaigi.github.io • ΤϯδχΞ͕ओ໾ͷAndroidΧϯϑΝϨϯε • 2/18-19ɺ౦ژ޻ۀେֶ • ࢀՃऀ600ਓ(2೔Ͱ׬ച)ɺ45ηογϣϯ ࠃ಺AndroidΞϓϦ։ൃऀ͸ඞௌඞݟͷษڧձ 4 © @amay077 , 2016

Slide 5

Slide 5 text

DroidKaigi2016 ެࣜΞϓϦ ͱ͸ • github.com/xamarinhq/app-evolve • εϐʔΧʔ/ελοϑͷ @konifar ͞Μ ͕ओಋ͠༗ࢤʢ 40໊ʂ ʣʹΑΓ։ൃ • ։ൃظؒɿ1/11ʙ2/12ʙ now • 6ը໘ɺ70Ϋϥεɺ4200ߦ(2/18࣌఺) Androidք۾ͷτοϓΤϯδχ Ξୡ͕࡞੒ͨ͠஌ݟͷմʂ 5 © @amay077 , 2016

Slide 6

Slide 6 text

AndroidΞϓϦΛ Xamarin.Android ΁ Ҡ২͢Δํ๏ • ը໘ • ॲཧ(Java) • ϥΠϒϥϦ 6 © @amay077 , 2016

Slide 7

Slide 7 text

ը໘ • ը໘ϨΠΞ΢τɺը૾ɺจࣈྻϦιʔε౳͸ͦͷ··ྲྀ༻Մೳ • activitymain.xml -> activitymain.axml • Android Data Binding ͷ ͳͲɺ৽͍͠λά͸࡟আ͕ඞཁ 7 © @amay077 , 2016

Slide 8

Slide 8 text

ࠨ:Java ӈ:Cˌ 8 © @amay077 , 2016

Slide 9

Slide 9 text

AndroidManifest.xml Xamarin.Android ʹ͓͍ͯɺը໘ͷ AndroidManifest.xml ΁ͷఆ ٛ͸ෆཁ • ͷఆٛ͸ɺ XXXActivity Ϋϥεͷଐੑ΁ • ͷఆٛ͸ɺ XXXApplication Ϋϥεͷଐੑ΁ • ݖݶͷఆٛ͸ AndroidManifest.xml ʹ͢Δ͕ Xamarin Studio/ Visual Studio ͷઃఆը໘͔Βߦ͑Δ 9 © @amay077 , 2016

Slide 10

Slide 10 text

// [BEFORE]AndroidManifest.xml in Java 10 © @amay077 , 2016

Slide 11

Slide 11 text

// [AFTER]MainActivity.cs [Activity( ConfigurationChanges = ConfigChanges.Keyboard | ConfigChanges.KeyboardHidden | ConfigChanges.ScreenLayout | ConfigChanges.ScreenSize | ConfigChanges.Orientation, Label = "@string/app_name", Theme = "@style/AppTheme.NoActionBar", MainLauncher = true)] [IntentFilter (new []{ Intent.ActionMain }, Categories = new []{ Intent.CategoryDefault })] public class MainActivity : AppCompatActivity { // ... } 11 © @amay077 , 2016

Slide 12

Slide 12 text

// [AFTER]MainApplication.cs [Android.App.Application( AllowBackup=true, Icon="@mipmap/ic_launcher", Theme="@style/AppTheme")] [MetaData("com.google.android.gms.version", Value = "@integer/google_play_services_version")] [MetaData("com.google.android.maps.v2.API_KEY", Value = "{your google maps api key}")] public class MainApplication : Android.App.Application { // ... } 12 © @amay077 , 2016

Slide 13

Slide 13 text

ॲཧ • جຊతʹ͸ॻ͖௚͠ • ߏจ͸ࣅͯΔͷͰίϐϖͯ͠ΤϥʔΛফͯ͘͠ • Sharpen ͱ͍͏πʔϧ΋ https:/ /blog.xamarin.com/android-in-c- sharp/ ͋Δ͚ͲࠓͰ΋࢖͑Δͷ͔ͳʁ • ໘౗ͩͬͨΒػೳ୯ҐͰ Jar Խͯ͠ɺBinding ܦ༝Ͱ࢖༻ͨ͠ํ ͕Α͍͔΋ 13 © @amay077 , 2016

Slide 14

Slide 14 text

ϥΠϒϥϦ • Android ΞϓϦ։ൃʹ(ओʹΦʔϓϯιʔεͷ)ϥΠϒϥϦͷ࢖༻ ͸ෆՄܽ • Android StudioҎ߱ɺgradle ʹΑΓϥΠϒϥϦͷ࢖༻ɾ؅ཧ͕ख ܰʹʢnugetΈ͍ͨͳ΋Μʣ DroidKaigiΞϓϦͰ͸ 27 ͷϥΠϒϥϦΛ࢖༻ Xamarin.AndroidԽʹ͓͚Δ Ұ൪ͷน 14 © @amay077 , 2016

Slide 15

Slide 15 text

ϥΠϒϥϦҠߦͷબ୒ࢶ 1. ಉ౳ػೳΛ࣋ͭ .NET੡ͷϥΠϒϥϦ Λ୳͢ 2. ಉ໊ͷ BindingϥΠϒϥϦ Λ୳͢ 3. ಉ౳ػೳΛ࣋ͭ BindingϥΠϒϥϦ Λ࡞Δ 4. ಉ౳ػೳΛ࣋ͭ .NET੡ͷϥΠϒϥϦ Λ࡞Δ 5. ಉ౳ػೳΛ͖͋ΒΊΔ 15 © @amay077 , 2016

Slide 16

Slide 16 text

.NET੡ͷϥΠϒϥϦ Λ୳͢ • Gson → JSON.NET • RxJava → Reactive Extensions • Dagger2 → Stiletto • Retrofit2 → Refit ୳͢ͱ݁ߏ͋Δ twitter ΍ teratail, Stackoverflow.jp ͳͲͰฉ͍ͯΈΑ͏ حಛͳਓ͕୳ͯ͘͠ΕΔ͔΋͠Εͳ͍ ʛш´)ŧŽŕ 16 © @amay077 , 2016

Slide 17

Slide 17 text

ಉ໊ͷ BindingϥΠϒϥϦ Λ୳͢ • Android Support Library / Google Play services • Picasso → Square.Picasso • AndroidFlowLayout → AndroidFlowLayout ɹ ஶ໊ͳϥΠϒϥϦͳΒطʹ XamarinରԠͷnugetύοέʔδ͕༻ҙ ͞Ε͍ͯΔʢಛʹViewؔ࿈͸Binding͔͠બ୒ࢶ͕ͳ͍ͷͰʣ Android Support Library ؔ࿈͸Ұ౓͸ඞͣϋϚΔͷͰམͪண͍ͯ 17 © @amay077 , 2016

Slide 18

Slide 18 text

BindingϥΠϒϥϦ Λ࡞Δ • gradle Ͱऔಘ͞ΕͨϥΠϒϥϦ͔Β xxx.jar Λൈ͖ग़͠ɺ Xamarin.Android ͷ BindingϓϩδΣΫτʹ૊ΈࠐΜͰϏϧυ͢Δ 18 © @amay077 , 2016

Slide 19

Slide 19 text

ಉ౳ػೳΛ࣋ͭ .NET੡ͷϥΠϒϥϦ Λ࡞Δ • ཧ૝ܥ͚ͩͲ࠷ऴखஈ • جຊతͳػೳͳΒʢJSON.NET ͷΑ͏ʹʣطʹଘࡏ͢ΔͩΖ͏͠ • Binding ΋࢖Θͳ͍ͱ͍͏͜ͱ͸ɺϚϧνϓϥοτϑΥʔϜΛҙ ࣝͯ͠ͷબ୒ͩΖ͏͠ɺ೉қ౓͸૬౰ߴ͍ • ʮҠ২͚ͩʯͷ༧ࢉͰ͸೉͍͠ͱࢥ͏ • ClosedXML, EPPlus Έ͍ͨͳͷΛ Xamarin ରԠ͢Δͷ͸χʔζ͋ Δͱࢥ͏ʢ΍͸Γ೉қ౓͸ߴ͍ʣ 19 © @amay077 , 2016

Slide 20

Slide 20 text

ಉ౳ػೳΛ͖͋ΒΊΔ ͝ར༻͸ܭըతʹ • Android-ORM - ORMϥΠϒϥϦ • ୅ସϥΠϒϥϦͱͯ͠ SQLite.NET ORM ͕͋Δ͕ɺ࢖͍ํ͕໘ ౗ͩͬͨͷͰɺKey-Value ετΞͰ͋Δ Akavache Λ࢖༻ • parceler - ը໘ؒ௨৴σʔλͷγϦΞϥΠζΛॿ͚ΔϥΠϒϥϦ • ୅ସϥΠϒϥϦ͕ݟ͔ͭΒͳ͔ͬͨͷͰɺը໘ؒͷ௨৴σʔ λ͸ JSON(JSON.NET) ʹͨ͠ 20 © @amay077 , 2016

Slide 21

Slide 21 text

Android DataBinding ʹ͍ͭͯ • Android Studio/gradle ͕ɺ ͰғΜͩൣғͷUIཁૉͷม ਺Λࣗಈίʔυੜ੒ • ͍ΘΏΔ MainForm.designer.cs తͳ • Xamarin.Android Ͱ͸ະରԠͳͷͰ λά͕Τϥʔʹ • Λ࡟আ͠ɺ஍ಓʹ FindViewById ͨ͠ 21 © @amay077 , 2016

Slide 22

Slide 22 text

Ҡ২ͷ݁Ռ • github.com/amay077/DroidKaigi2016Xamarin • 2/11 - 2/23ʢਖ਼ຯ̒೔ؒ͘Β͍ʣ • ຊՈͷ։ൃεϐʔυ͕ૣ͗ͯ͢࠷৽ػೳͷ࣮૷·Ͱ௥͍͚ͭͣ • buggy... Xamarin Ͱ΋Ϟμϯͳ AndroidΞϓϦ͕։ൃͰ͖ Δ͜ͱ͕֬ೝͰ͖ͨ 22 © @amay077 , 2016

Slide 23

Slide 23 text

·ͱΊ • ը໘ͱॲཧ • ྗٕͰҠ২Մೳ • ϥΠϒϥϦ • ཁ݅ʹԠͨ͡બ୒͕ඞཁ ͍ͣΕʹͯ͠΋ Android ΞϓϦ։ൃͷ஌ࣝ͸ඞਢ 23 © @amay077 , 2016

Slide 24

Slide 24 text

ͭ·ΓٻΊΒΕΔͷ͸… 24 © @amay077 , 2016

Slide 25

Slide 25 text

εʔύʔXamarinਓࡐʂ 25 © @amay077 , 2016

Slide 26

Slide 26 text

26 © @amay077 , 2016

Slide 27

Slide 27 text

ʲ͓·͚ʳ͞·͟·ͳΧϯϑΝϨϯεΞϓϦ 27 © @amay077 , 2016

Slide 28

Slide 28 text

Google I/O 2015 App • github.com/google/iosched • Android ͷΈରԠ • I/O 2016 App ΋ͦͷ͏ͪ͘Δʁ 28 © @amay077 , 2016

Slide 29

Slide 29 text

try! Swift App • github.com/tryswift/trySwiftApp • iOS ͷΈରԠ • 3/2-4 ʹ։࠵͞ΕͨiOS/Swiftσϕϩο ύʔ޲͚ΠϕϯτͷެࣜΞϓϦ 29 © @amay077 , 2016

Slide 30

Slide 30 text

Xamarin Evolve 2016 App • github.com/xamarinhq/app-evolve • Android / iOS/ Windows ରԠɺ࠷ڧײ͋Δ 30 © @amay077 , 2016