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
450
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
650
Apple HIG 正式名称クイズ結果発表 / HIG Quiz Result
usamik26
0
200
ゆめみ大技林製作委員会の立ち上げの話 / daigirin project
usamik26
0
340
@ViewLoadingプロパティラッパの紹介と自前で実装する方法 / @ViewLoading property wrapper implementation
usamik26
0
500
これからUICollectionViewを実践活用する人のためのガイド / Guide to UICollectionView
usamik26
1
770
Xcodeとの最近の付き合い方のはなし / Approach To Xcode
usamik26
2
690
UICollectionView Compositional Layout
usamik26
0
820
Coding Swift with Visual Studio Code and Docker
usamik26
0
530
Swift Extension for Visual Studio Code
usamik26
2
1.1k
Other Decks in Programming
See All in Programming
When Dependencies Fail: Building Antifragile Applications in a Fragile World
selcukusta
0
120
Introduce Hono CLI
yusukebe
6
3.3k
フロントエンド開発のためのブラウザ組み込みAI入門
masashi
7
3.7k
他言語経験者が Golangci-lint を最初のコーディングメンターにした話 / How Golangci-lint Became My First Coding Mentor: A Story from a Polyglot Programmer
uma31
0
490
社会人になっても趣味開発を続けたい! / traPavilion
mazrean
1
120
alien-signals と自作 OSS で実現する フレームワーク非依存な ロジック共通化の探求 / Exploring Framework-Agnostic Logic Sharing with alien-signals and Custom OSS
aoseyuu
3
5.3k
はじめてのDSPy - 言語モデルを『プロンプト』ではなく『プログラミング』するための仕組み
masahiro_nishimi
4
17k
Designing Repeatable Edits: The Architecture of . in Vim
satorunooshie
0
210
Vue 3.6 時代のリアクティビティ最前線 〜Vapor/alien-signals の実践とパフォーマンス最適化〜
hiranuma
2
350
品質ワークショップをやってみた
nealle
0
830
AsyncSequenceとAsyncStreamのプロポーザルを全部読む!!
s_shimotori
1
220
業務でAIを使いたい話
hnw
0
220
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
How GitHub (no longer) Works
holman
315
140k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
950
The Cost Of JavaScript in 2023
addyosmani
55
9.1k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
The Language of Interfaces
destraynor
162
25k
Optimizing for Happiness
mojombo
379
70k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
4 Signs Your Business is Dying
shpigford
186
22k
Keith and Marios Guide to Fast Websites
keithpitt
412
23k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
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 ʹڵຯ͕͋Δਓ ͥͻͲ͏ͧ