Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
660
Apple HIG 正式名称クイズ結果発表 / HIG Quiz Result
usamik26
0
210
ゆめみ大技林製作委員会の立ち上げの話 / daigirin project
usamik26
0
350
@ViewLoadingプロパティラッパの紹介と自前で実装する方法 / @ViewLoading property wrapper implementation
usamik26
0
510
これから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
540
Swift Extension for Visual Studio Code
usamik26
2
1.1k
Other Decks in Programming
See All in Programming
Github Copilotのチャット履歴ビューワーを作りました~WPF、dotnet10もあるよ~ #clrh111
katsuyuzu
0
110
251126 TestState APIってなんだっけ?Step Functionsテストどう変わる?
east_takumi
0
320
AIコーディングエージェント(NotebookLM)
kondai24
0
180
愛される翻訳の秘訣
kishikawakatsumi
3
320
チームをチームにするEM
hitode909
0
330
S3 VectorsとStrands Agentsを利用したAgentic RAGシステムの構築
tosuri13
6
310
Go コードベースの構成と AI コンテキスト定義
andpad
0
120
Navigation 3: 적응형 UI를 위한 앱 탐색
fornewid
1
320
大体よく分かるscala.collection.immutable.HashMap ~ Compressed Hash-Array Mapped Prefix-tree (CHAMP) ~
matsu_chara
2
220
SwiftUIで本格音ゲー実装してみた
hypebeans
0
350
新卒エンジニアのプルリクエスト with AI駆動
fukunaga2025
0
220
20251127_ぼっちのための懇親会対策会議
kokamoto01_metaps
2
430
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.3k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.2k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
710
Product Roadmaps are Hard
iamctodd
PRO
55
12k
The World Runs on Bad Software
bkeepers
PRO
72
12k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Context Engineering - Making Every Token Count
addyosmani
9
510
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
How to Ace a Technical Interview
jacobian
280
24k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
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 ʹڵຯ͕͋Δਓ ͥͻͲ͏ͧ