Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Xamarin.iOS
Search
USAMI Kosuke
August 09, 2014
Programming
0
430
Xamarin.iOS
第57回 Cocoa勉強会関西で話しました。
https://atnd.org/events/53550
USAMI Kosuke
August 09, 2014
Tweet
Share
More Decks by USAMI Kosuke
See All by USAMI Kosuke
Onsager代数とその周辺 / Onsager algebra tsudoi
usamik26
0
530
Apple HIG 正式名称クイズ結果発表 / HIG Quiz Result
usamik26
0
110
ゆめみ大技林製作委員会の立ち上げの話 / daigirin project
usamik26
0
280
@ViewLoadingプロパティラッパの紹介と自前で実装する方法 / @ViewLoading property wrapper implementation
usamik26
0
430
これからUICollectionViewを実践活用する人のためのガイド / Guide to UICollectionView
usamik26
1
690
Xcodeとの最近の付き合い方のはなし / Approach To Xcode
usamik26
2
610
UICollectionView Compositional Layout
usamik26
0
680
Coding Swift with Visual Studio Code and Docker
usamik26
0
440
Swift Extension for Visual Studio Code
usamik26
2
900
Other Decks in Programming
See All in Programming
Nurturing OpenJDK distribution: Eclipse Temurin Success History and plan
ivargrimstad
0
480
見せてあげますよ、「本物のLaravel批判」ってやつを。
77web
5
6.9k
C++でシェーダを書く
fadis
6
4k
リアーキテクチャxDDD 1年間の取り組みと進化
hsawaji
1
200
Jakarta EE meets AI
ivargrimstad
0
210
プロジェクト新規参入者のリードタイム短縮の観点から見る、品質の高いコードとアーキテクチャを保つメリット
d_endo
1
1.1k
Hotwire or React? ~アフタートーク・本編に含めなかった話~ / Hotwire or React? after talk
harunatsujita
1
110
Sidekiqで実現する 長時間非同期処理の中断と再開 / Pausing and Resuming Long-Running Asynchronous Jobs with Sidekiq
hypermkt
6
3.1k
破壊せよ!データ破壊駆動で考えるドメインモデリング / data-destroy-driven
minodriven
17
4.3k
From Subtype Polymorphism To Typeclass-based Ad hoc Polymorphism- An Example
philipschwarz
PRO
0
190
アジャイルを支えるテストアーキテクチャ設計/Test Architecting for Agile
goyoki
9
3.1k
Webの技術スタックで マルチプラットフォームアプリ開発を可能にするElixirDesktopの紹介
thehaigo
2
1k
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
38
7.1k
Scaling GitHub
holman
458
140k
Navigating Team Friction
lara
183
14k
10 Git Anti Patterns You Should be Aware of
lemiorhan
654
59k
The Invisible Side of Design
smashingmag
297
50k
Raft: Consensus for Rubyists
vanstee
136
6.6k
Code Review Best Practice
trishagee
64
17k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
92
16k
Optimizing for Happiness
mojombo
376
69k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
15
2k
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 ʹڵຯ͕͋Δਓ ͥͻͲ͏ͧ