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
Xamarin.iOS
Search
USAMI Kosuke
August 09, 2014
Programming
460
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Xamarin.iOS
第57回 Cocoa勉強会関西で話しました。
https://atnd.org/events/53550
USAMI Kosuke
August 09, 2014
More Decks by USAMI Kosuke
See All by USAMI Kosuke
Onsager代数とその周辺 / Onsager algebra tsudoi
usamik26
0
730
Apple HIG 正式名称クイズ結果発表 / HIG Quiz Result
usamik26
0
290
ゆめみ大技林製作委員会の立ち上げの話 / daigirin project
usamik26
0
420
@ViewLoadingプロパティラッパの紹介と自前で実装する方法 / @ViewLoading property wrapper implementation
usamik26
0
570
これからUICollectionViewを実践活用する人のためのガイド / Guide to UICollectionView
usamik26
1
840
Xcodeとの最近の付き合い方のはなし / Approach To Xcode
usamik26
2
750
UICollectionView Compositional Layout
usamik26
0
900
Coding Swift with Visual Studio Code and Docker
usamik26
0
620
Swift Extension for Visual Studio Code
usamik26
2
1.2k
Other Decks in Programming
See All in Programming
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
150
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
580
Are APIs Still Relevant in the AI Era?
soyuka
0
390
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
460
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
290
setup-vp GitLab対応の裏側
naokihaba
0
140
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
320
Webの地図
yosuke_furukawa
PRO
6
5k
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
230
Androidだけじゃない、DroidKaigiで広がった私の技術スタック
akkeylab
0
110
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
370
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
200
Featured
See All Featured
How to build a perfect <img>
jonoalderson
1
6.1k
YesSQL, Process and Tooling at Scale
rocio
174
15k
A Modern Web Designer's Workflow
chriscoyier
699
190k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.1k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
270
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
Automating Front-end Workflow
addyosmani
1369
210k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
Transcript
Xamarin.iOS ! Ӊࠤݟ ެี
ࣗݾհ • Ӊࠤݟ ެีʢtwitter: @usamik26ʣ • ϑΣϯϦϧגࣜձࣾ ڞಉ։ൃ෦ • CotEditor
։ൃʢOS X ςΩετΤσΟλʣ
࠷ۙͷࣄ • ීஈ Objective-C Ͱ iOS ΞϓϦ։ൃ • ࠷ۙ Xamarin
+ MvvmCross ͡Ί·ͨ͠
Agenda ɾXamarin ͱԿ͔ ɾC# Λ͏ ɾXamarin Studio ɾMVVM ͱ ɾMvvmCross
ɾXamarin ϥΠηϯε
Xamarin ͱԿ͔
Xamarin ͱԿ͔ • C# ͰΞϓϦ։ൃ • iOS / Android /
Mac • .NET / Mono ϕʔε • MonoTouch / MonoDroid / MonoMac
Xamarin.iOS • ωΠςΟϒΞϓϦͱͯ͠ίϯύΠϧ • ैͬͯɺApp Store ਃ͕Մೳ
Xamarin.iOS • MonoTouch ܦ༝Ͱશ iOS API ʹΞΫηεՄೳ • ࠷৽ SDK
ͷਵૣ͍ʢطʹ iOS 8 ରԠʣ • ໋໊ C# ͷྲّྀʹ͋Θͤͯ͋Δ
όΠϯσΟϯάྫ [UIImage imageNamed:@“hoge”] (Objective-C) ! UIImage.FromBundle(“hoge”) (C#) [MonoTouch.Foundation.Export("imageNamed:")] public static
UIImage FromBundle (string name)
طଘίʔυͷར༻ • Objective-C Ͱॻ͔ΕͨίʔυΛར༻Մೳ • ωΠςΟϒόΠϯσΟϯάΛࣗͰੜ
Xamarin ղઆ
Xamarin ։ൃ࣮
C# Λ͏
C# • Objective-C Swift ͷΘΓʹ C# Λ͏ • C#
ݻ༗ͷจ๏͕͑Δ
ܕਪ var x = 1; // x int !
var obj = new Hoge(); // obj Hoge ΦϒδΣΫτ
ϥϜμࣜ // Ұ൪؆ܿͳه๏ʢܕਪʣ x => x > 0 ! //
ܕ return Λলུ͠ͳ͍ه๏ (int x) => { return x > 0; } ! // ௨ৗͷؔͰॻ͍ͨ߹ bool Hoge(int x) { return x > 0; }
LINQ ! ʢΫΤϦʣ var list1 = list.Where(x => x >
0); ! var list2 = list.Where(x => x > 0) .Select(x => x.Name);
async / await ! ʢඇಉظॲཧʣ async void Hoge() { Work1();
// ී௨ʹݺΕΔ var result = await WorkAsync(); // ผεϨου Work2(); // WorkAsync ͷޙͰݺΕΔ }
Xamarin Studio
։ൃڥ • Xamarin StudioʢҎલ MonoDevelopʣ • Storyboard ͷฤू Xamarin Studio
ͰՄೳ • xib ͷฤू Xcode Λىಈͯ͠࿈ಈ
None
Storyboard
AutoLayout
NuGet • NuGet Ͱ֤छϥΠϒϥϦΛಋೖͰ͖Δ • ޙड़ͷ MvvmCross NuGet Ͱ
MVVM ͱ
MVVM • Model - View - ViewModel
ϩδοΫͱϏϡʔͷ • ϩδοΫ෦ϓϥοτϑΥʔϜඇґଘ
ϏϡʔϓϥοτϑΥʔϜ͝ͱ • ֤ϓϥοτϑΥʔϜͷੈք؍Λେࣄʹ͢Δ
MVVM Λ͏ʹ • C# / .NET จԽݍͰ͔ͭͪΘΕ͖ͯͨ • ͜ͷͨΊɺXamarin ͱ
MVVM ૬ੑ͕Α͍ • ༨ஊɿObjective-C or Swift ͰΔͳΒ ReactiveCocoa Λ͏ͷ͕ྑ͍
MvvmCross
MvvmCross • Xamarin Ͱ MVVM ઃܭΛαϙʔτ͢ΔϥΠϒ ϥϦͷ̍ͭ • https://github.com/MvvmCross/MvvmCross
ϓϩδΣΫτߏ • Core • Touch (iOS) • Droid (Android)
ϓϩδΣΫτߏ • Core Project • ϓϥοτϑΥʔϜݻ༗ͷػೳ͑ͳ͍ • Touch / Droid
Project • ϓϥοτϑΥʔϜݻ༗ͷػೳ͕͑Δ • ͰɺView ʹϩδοΫΛॻ͔ͳ͍
ϓϥοτϑΥʔϜґଘͷػೳ • ϓϥοτϑΥʔϜґଘͷػೳΛ͍͍ͨ • ͨͱ͑Χϝϥͱ͔ • ϓϥάΠϯΛ࡞Δ͜ͱͰղܾ
View ͷ࡞ • MVVM ͷ View = UIViewController • View
ͷίʔυ࠷খݶʹ͓͑͞Δ • ը໘ϩδοΫ ViewModel • xib + AutoLayout Λ׆༻ • ʢݱঢ় MvvmCross Storyboard ඇରԠʣ
ը໘ભҠ • ը໘ભҠͷཧ ViewModel ʹهड़ • ΞχϝʔγϣϯॲཧͳͲ View ʹهड़ •
Storyboard ͷ Segue ͱ૬ੑѱ͍ɾɾɾ
όΠϯσΟϯά • View ͱ ViewModel ͷόΠϯσΟϯάهड़ • ͜ΕίʔυͰॻ͔͘͠ͳ͍ʢiOS ͷ߹ʣ
όΠϯσΟϯά var set = this.CreateBindingSet<HogeView, HogeViewModel>(); set.Bind(HogeLabel).To(vm => vm.HogeText); set
Bind(HogeButton).To(vm => vm.HogeCommand); set.Apply();
ͦͷଞ • MvvmCross όΠϯσΟϯάΛָʹ͢ΔΫϥ εΛ͍͔ͭ͘༻ҙ͍ͯ͠Δ • MvxImageView • MvxTableViewSource •
ͳͲ
Xamarin ϥΠηϯε
Xamarin ϥΠηϯε • ϥΠηϯεߴ͍ɾɾɾ • 1ϲ݄ͷ Trial ͋Γ
͓Βͤ
ΤϯδχΞืूத
None
Xamarin ʹڵຯ͕͋Δਓ ͥͻͲ͏ͧ