Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
DroidKaigi2016 アプリを Xamarin に移植した話 #jxug
Search
amay077
May 07, 2016
Programming
4.7k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
DroidKaigi2016 アプリを Xamarin に移植した話 #jxug
JXUGC #13 東京 緊急開催 Xamarin のすべて! -
http://jxug.connpass.com/event/29734/
の発表資料です。
amay077
May 07, 2016
More Decks by amay077
See All by amay077
愛知県新型コロナ対策サイト(非公式)の紹介
amay077
0
350
愛知県コロナ対策サイトが立ち上がってから
amay077
0
140
Xamarin.Forms Hot Reload のススメ
amay077
0
940
クロスプラットフォームモバイルアプリ開発ツール総ざらい2019 〜Titanium Mobile から Kotlin/Native まで〜 #droidkaigi
amay077
11
10k
ハムスター検出器を1日で作ってみた #NGK2018B
amay077
1
1.2k
App Center から Azure Pipeline に乗り換えた話
amay077
0
1.4k
Xamarin.Forms.GoogleMaps について
amay077
0
1.6k
Xamarin.Android で始めるクロスプラットフォームモバイルアプリ開発 #jaghama
amay077
0
710
Xamarin.Android で始めるクロスプラットフォームモバイルアプリ開発 #jxug
amay077
0
1k
Other Decks in Programming
See All in Programming
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
470
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
670
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
140
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
260
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
5
9.4k
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
380
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
210
Ghostty + Neovimで作る 透明でカッコ良い開発環境
j341nono
0
150
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
460
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
1
420
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
270
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
9
5.3k
Featured
See All Featured
Music & Morning Musume
bryan
48
7.4k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
690
How to make the Groovebox
asonas
2
2.5k
エンジニアに許された特別な時間の終わり
watany
109
250k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
430
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
250
ラッコキーワード サービス紹介資料
rakko
1
5.1M
Designing for Performance
lara
611
70k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Transcript
DroidKaigi2016ΞϓϦΛ Xamarin ʹҠ২ͨ͠ ɹ ɹ ɹ ɹ - 2016/05/07 #JXUG
13 - @amay077 1 © @amay077 , 2016
ࣗݾհ • OKUYAMA Hironobu(@amay077) • Toyohashi, Aichi • Geospatial Engineer
• VB/VC('00-), C#('05-), Android/iOS('11-), Xamarin('13-) • BUILD Insider - XamarinٯҾ͖Tips 2 © @amay077 , 2016
DroidKaigi2016 ͷެࣜΞϓϦΛ Xamarin.Android Ҡ২ͨ͠ Λ͠·͢ • Android SDKͷബ͍ϥούʔ XamarinωΠςΟϒ ͷͰ͢
• Xamarin.Forms Ͱ͋Γ·ͤΜ • MVVM ͱ͔ɺiOSଞͱͷڞ௨Խͷ͠·ͤΜ • ࠷৽ͷ Android ΞϓϦ͕Ͳ͜·Ͱ Xamarin Ͱ։ൃՄೳ͔ʁ 3 © @amay077 , 2016
DroidKaigi2016 ͱ • droidkaigi.github.io • ΤϯδχΞ͕ओͷAndroidΧϯϑΝϨϯε • 2/18-19ɺ౦ژۀେֶ • ࢀՃऀ600ਓ(2Ͱച)ɺ45ηογϣϯ
ࠃAndroidΞϓϦ։ൃऀඞௌඞݟͷษڧձ 4 © @amay077 , 2016
DroidKaigi2016 ެࣜΞϓϦ ͱ • github.com/xamarinhq/app-evolve • εϐʔΧʔ/ελοϑͷ @konifar ͞Μ ͕ओಋ͠༗ࢤʢ
40໊ʂ ʣʹΑΓ։ൃ • ։ൃظؒɿ1/11ʙ2/12ʙ now • 6ը໘ɺ70Ϋϥεɺ4200ߦ(2/18࣌) Androidք۾ͷτοϓΤϯδχ Ξୡ͕࡞ͨ͠ݟͷմʂ 5 © @amay077 , 2016
AndroidΞϓϦΛ Xamarin.Android Ҡ২͢Δํ๏ • ը໘ • ॲཧ(Java) • ϥΠϒϥϦ
6 © @amay077 , 2016
ը໘ • ը໘ϨΠΞτɺը૾ɺจࣈྻϦιʔεͦͷ··ྲྀ༻Մೳ • activitymain.xml -> activitymain.axml • Android Data
Binding ͷ <layout> ͳͲɺ৽͍͠λάআ͕ඞཁ 7 © @amay077 , 2016
ࠨ:Java ӈ:Cˌ 8 © @amay077 , 2016
AndroidManifest.xml Xamarin.Android ʹ͓͍ͯɺը໘ͷ AndroidManifest.xml ͷఆ ٛෆཁ • <activity> ͷఆٛɺ XXXActivity
Ϋϥεͷଐੑ • <application> ͷఆٛɺ XXXApplication Ϋϥεͷଐੑ • ݖݶͷఆٛ AndroidManifest.xml ʹ͢Δ͕ Xamarin Studio/ Visual Studio ͷઃఆը໘͔Βߦ͑Δ 9 © @amay077 , 2016
// [BEFORE]AndroidManifest.xml in Java <application android:name=".MainApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme">
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="${mapsApiKey}" /> <activity android:name=".activity.MainActivity" android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:label="@string/app_name" android:theme="@style/AppTheme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 10 © @amay077 , 2016
// [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
// [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
ॲཧ • جຊతʹॻ͖͠ • ߏจࣅͯΔͷͰίϐϖͯ͠ΤϥʔΛফͯ͘͠ • Sharpen ͱ͍͏πʔϧ https:/ /blog.xamarin.com/android-in-c-
sharp/ ͋Δ͚ͲࠓͰ͑Δͷ͔ͳʁ • ໘ͩͬͨΒػೳ୯ҐͰ Jar Խͯ͠ɺBinding ܦ༝Ͱ༻ͨ͠ํ ͕Α͍͔ 13 © @amay077 , 2016
ϥΠϒϥϦ • Android ΞϓϦ։ൃʹ(ओʹΦʔϓϯιʔεͷ)ϥΠϒϥϦͷ༻ ෆՄܽ • Android StudioҎ߱ɺgradle ʹΑΓϥΠϒϥϦͷ༻ɾཧ͕ख ܰʹʢnugetΈ͍ͨͳΜʣ
DroidKaigiΞϓϦͰ 27 ͷϥΠϒϥϦΛ༻ Xamarin.AndroidԽʹ͓͚Δ Ұ൪ͷน 14 © @amay077 , 2016
ϥΠϒϥϦҠߦͷબࢶ 1. ಉػೳΛ࣋ͭ .NETͷϥΠϒϥϦ Λ୳͢ 2. ಉ໊ͷ BindingϥΠϒϥϦ Λ୳͢ 3.
ಉػೳΛ࣋ͭ BindingϥΠϒϥϦ Λ࡞Δ 4. ಉػೳΛ࣋ͭ .NETͷϥΠϒϥϦ Λ࡞Δ 5. ಉػೳΛ͖͋ΒΊΔ 15 © @amay077 , 2016
.NETͷϥΠϒϥϦ Λ୳͢ • Gson → JSON.NET • RxJava → Reactive
Extensions • Dagger2 → Stiletto • Retrofit2 → Refit ୳͢ͱ݁ߏ͋Δ twitter teratail, Stackoverflow.jp ͳͲͰฉ͍ͯΈΑ͏ حಛͳਓ͕୳ͯ͘͠ΕΔ͔͠Εͳ͍ ʛш´)ŧŽŕ 16 © @amay077 , 2016
ಉ໊ͷ BindingϥΠϒϥϦ Λ୳͢ • Android Support Library / Google Play
services • Picasso → Square.Picasso • AndroidFlowLayout → AndroidFlowLayout ɹ ஶ໊ͳϥΠϒϥϦͳΒطʹ XamarinରԠͷnugetύοέʔδ͕༻ҙ ͞Ε͍ͯΔʢಛʹViewؔ࿈Binding͔͠બࢶ͕ͳ͍ͷͰʣ Android Support Library ؔ࿈ҰඞͣϋϚΔͷͰམͪண͍ͯ 17 © @amay077 , 2016
BindingϥΠϒϥϦ Λ࡞Δ • gradle Ͱऔಘ͞ΕͨϥΠϒϥϦ͔Β xxx.jar Λൈ͖ग़͠ɺ Xamarin.Android ͷ BindingϓϩδΣΫτʹΈࠐΜͰϏϧυ͢Δ
18 © @amay077 , 2016
ಉػೳΛ࣋ͭ .NETͷϥΠϒϥϦ Λ࡞Δ • ཧܥ͚ͩͲ࠷ऴखஈ • جຊతͳػೳͳΒʢJSON.NET ͷΑ͏ʹʣطʹଘࡏ͢ΔͩΖ͏͠ • Binding
Θͳ͍ͱ͍͏͜ͱɺϚϧνϓϥοτϑΥʔϜΛҙ ࣝͯ͠ͷબͩΖ͏͠ɺқ૬ߴ͍ • ʮҠ২͚ͩʯͷ༧ࢉͰ͍͠ͱࢥ͏ • ClosedXML, EPPlus Έ͍ͨͳͷΛ Xamarin ରԠ͢Δͷχʔζ͋ Δͱࢥ͏ʢΓқߴ͍ʣ 19 © @amay077 , 2016
ಉػೳΛ͖͋ΒΊΔ ͝ར༻ܭըతʹ • Android-ORM - ORMϥΠϒϥϦ • ସϥΠϒϥϦͱͯ͠ SQLite.NET ORM
͕͋Δ͕ɺ͍ํ͕໘ ͩͬͨͷͰɺKey-Value ετΞͰ͋Δ Akavache Λ༻ • parceler - ը໘ؒ௨৴σʔλͷγϦΞϥΠζΛॿ͚ΔϥΠϒϥϦ • ସϥΠϒϥϦ͕ݟ͔ͭΒͳ͔ͬͨͷͰɺը໘ؒͷ௨৴σʔ λ JSON(JSON.NET) ʹͨ͠ 20 © @amay077 , 2016
Android DataBinding ʹ͍ͭͯ • Android Studio/gradle ͕ɺ<layout> ͰғΜͩൣғͷUIཁૉͷม Λࣗಈίʔυੜ •
͍ΘΏΔ MainForm.designer.cs తͳ • Xamarin.Android ͰະରԠͳͷͰ <layout> λά͕Τϥʔʹ • <layout> Λআ͠ɺಓʹ FindViewById ͨ͠ 21 © @amay077 , 2016
Ҡ২ͷ݁Ռ • github.com/amay077/DroidKaigi2016Xamarin • 2/11 - 2/23ʢਖ਼ຯ̒ؒ͘Β͍ʣ • ຊՈͷ։ൃεϐʔυ͕ૣ͗ͯ͢࠷৽ػೳͷ࣮·Ͱ͍͚ͭͣ •
buggy... Xamarin ͰϞμϯͳ AndroidΞϓϦ͕։ൃͰ͖ Δ͜ͱ͕֬ೝͰ͖ͨ 22 © @amay077 , 2016
·ͱΊ • ը໘ͱॲཧ • ྗٕͰҠ২Մೳ • ϥΠϒϥϦ • ཁ݅ʹԠͨ͡બ͕ඞཁ ͍ͣΕʹͯ͠
Android ΞϓϦ։ൃͷࣝඞਢ 23 © @amay077 , 2016
ͭ·ΓٻΊΒΕΔͷ… 24 © @amay077 , 2016
εʔύʔXamarinਓࡐʂ 25 © @amay077 , 2016
26 © @amay077 , 2016
ʲ͓·͚ʳ͞·͟·ͳΧϯϑΝϨϯεΞϓϦ 27 © @amay077 , 2016
Google I/O 2015 App • github.com/google/iosched • Android ͷΈରԠ •
I/O 2016 App ͦͷ͏ͪ͘Δʁ 28 © @amay077 , 2016
try! Swift App • github.com/tryswift/trySwiftApp • iOS ͷΈରԠ • 3/2-4
ʹ։࠵͞ΕͨiOS/Swiftσϕϩο ύʔ͚ΠϕϯτͷެࣜΞϓϦ 29 © @amay077 , 2016
Xamarin Evolve 2016 App • github.com/xamarinhq/app-evolve • Android / iOS/
Windows ରԠɺ࠷ڧײ͋Δ 30 © @amay077 , 2016