swiftとcocoapodsで始めるサクサクios開発!
DESCRIPTION
SwiftとCocoaPodsで始めるサクサクiOS開発!TRANSCRIPT
![Page 1: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/1.jpg)
Swi$とCocoaPodsで始めるサクサクiOS開発! ~MailboxライクなUIをCocoaControlsで発掘して実現~
2014.&8.&19&Nishi-Shinjuku&Tech-Circle
@shiraco
![Page 2: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/2.jpg)
自己紹介• TIS%戦略技術センター%所属
• Twi(er:%@shiraco
• 機械学習/Python/R言語
• Nishi9Shinjuku%TechCircle%運営
• TISMatsuri%実行リーダー
![Page 3: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/3.jpg)
CAUTION
Swi$は%2014/8/19%時点でBetaバージョンなので、本資料に記載の内容は今後変更になる可能性があります。なお、本資料の動作確認はXcode66Beta5にて行っています。
![Page 4: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/4.jpg)
Agenda
1. What's)Swi-?
2. What's)Mailbox?
3. Cocoa)Controls)and)CococaPods
4. How)to)use)CocoaPods)from)Swi-?
5. Quick:)BDD)TesIng)Framework)in)Swi-
![Page 5: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/5.jpg)
What's'Swi+?
![Page 6: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/6.jpg)
WWDC$2014
![Page 7: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/7.jpg)
![Page 8: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/8.jpg)
iOSとOS$Xのための新しいプログラミング言語
• h#ps://developer.apple.com/swi4/
![Page 9: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/9.jpg)
Swi$とは"Objec've)C+without+the+C"iOS$8$からデビュースタイルはScala,$Go,$JavaScript等に似ており、学習コストが低いハイパフォーマンスで、$Objec4ve5Cより速く、$Cよりは遅い既存のObjec4ve5Cのコードとも混在が可能将来的にはAppleも開発言語をSwi9一本にするはずこれからiOS開発する人は安心してSwi%を始められる
![Page 10: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/10.jpg)
疑問今後iOS開発におけるObjec&ve(Cは、どうなるのか?
![Page 11: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/11.jpg)
Objec&ve(C
willdie.
![Page 12: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/12.jpg)
とはいっても
![Page 13: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/13.jpg)
![Page 14: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/14.jpg)
![Page 15: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/15.jpg)
既に多くのObjec&ve(C製のOSSライブラリなどの資産が世の中に出回っているのでそんなにすぐにはなくならない(と思う)
![Page 16: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/16.jpg)
ただし、じわじわ置き換わっていくのは間違いない
(特によく使われる資産から)
![Page 17: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/17.jpg)
さらに、Swi$の書籍はほとんど無い
![Page 18: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/18.jpg)
今すぐ、Swi$を学びたい人はObjec*ve,Cの知識も重要になる
![Page 19: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/19.jpg)
Swi$とObjec*ve,Cの比較
![Page 20: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/20.jpg)
![Page 21: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/21.jpg)
Objec&ve(C*(>*Swi/での主な変更点①
• ヘッダーファイルが要らなくなった:#hoge.h
• メッセージ式のブラケットがなくなった:#[self&viewDidLoad]
• リテラル引用符のアットマークもなくなった:#@"Hello"
• オブジェクト型の変数を宣言の*がなくなった:#NSString&*str
Objec&ve(Cの気持ち悪さ(気持ち良さ)がなくなった
![Page 22: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/22.jpg)
Objec&ve(C*(>*Swi/での主な変更点②• 型推論:明示的な型指定不要(明示もできる)
• 定数(let)と変数(ver)を区別して宣言できる
• 明示的にoverrideを宣言できるようになった
• アクセス修飾子(public/internal/private)
などなど!
モダン言語で当たり前だった機能を(やっと)取り込んだ
![Page 23: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/23.jpg)
Swi$%についての個人的な所感• Swi%は非Objec+ve-Cユーザーにも、Objec+ve-Cユーザーにもどちらにも優しい
• Objec+ve-C/->/Swi%では見た目は結構変わっているが、概ね、1:1で機械的にコンバートできる
![Page 24: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/24.jpg)
What's
![Page 25: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/25.jpg)
![Page 26: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/26.jpg)
Mailbox
• iOS向けGmailクライアントとして登場
• 新感覚のユーザー体験を提供するメールアプリ
• 一時は100万人以上の待ち行列
• DropBoxが1億ドルで買収した
• 現在はAndroid版もあるよ!
![Page 27: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/27.jpg)
の洗練されたUIを実現したい
![Page 28: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/28.jpg)
スライドメニュー
![Page 29: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/29.jpg)
グリッドメニュー
![Page 30: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/30.jpg)
スワイプセル
![Page 31: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/31.jpg)
![Page 32: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/32.jpg)
CocoaControls
• 2567&open&source&and&commercial&UI&components&for&iOS&and&OS&X.
• UI周りのOSSライブラリを中心とした&
iOS&とOS&X&向けのショーケース
• あの有名アプリのUIを実現するライブラリを発掘できる
![Page 33: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/33.jpg)
![Page 34: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/34.jpg)
CocoaPodsThe$Objec)ve+C$dependency$
manager
• Ruby製ライブラリ管理ツール
• CocoaPodsリポジトリ(h/p://
cocoapods.org/)には数千のiOS,;OS;XのPods(ライブラリ)が登録されている
• RubyのBundlerみたいな感じ
• Gemfile(Gemfile.lock)に対してPodfile(Podfile.lock)でライブラリ管理
![Page 35: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/35.jpg)
CocoaPods(の始め方• Install
$ gem install cocoapods
Website
• h#p://cocoapods.org/
• h#ps://github.com/cocoapods/cocoapods
![Page 36: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/36.jpg)
ECSlidingViewController
Facebookアプリのようにスライドするメニューを実現できる
Website
• h#ps://github.com/ECSlidingViewController/ECSlidingViewController
![Page 37: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/37.jpg)
MCSwipeTableViewCell
Mailboxアプリのようにセルにスワイプするアクションを割り当てられる
Website
• h#ps://github.com/alikaragoz/MCSwipeTableViewCell
![Page 38: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/38.jpg)
RNGridMenu
Mailboxアプリのようにグリッドメニューを簡単に実現できる
Website
• h#ps://github.com/rnystrom/RNGridMenu
![Page 39: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/39.jpg)
CocoaPodsでMCSwipeTableViewCell導入する方法• Podfile"で宣言pod 'MCSwipeTableViewCell', '~> 2.1.0'
• プロジェクトにインストール$ pod install
• プロジェクト(workspace)を開く$ open YourProject.xcworkspace
![Page 40: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/40.jpg)
MCSwipeTableViewCell-実装例の確認
![Page 41: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/41.jpg)
ああ、素晴らしきかな、CocoaPods!• 簡単にプロジェクトにライブラリを導入できる
• バージョンアップもpod%install%で簡単にできる
• ほとんどのライブラリが実装例が同梱されているので実装方法で迷わない
• UI系のライブラリはCocoaControlsで探がせる!
![Page 42: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/42.jpg)
The$Objec)ve+C$dependency$manager
CocoaPods
(現時点では)Objec(ve*C専用のライブラリ管理マネージャーSwi/からも使えるの?
![Page 43: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/43.jpg)
Swi$からはObjec*ve,Cを呼び出せる!そうBridging'Headerを用意すればね!YourProject*Bridging*Header.h
#import <SVProgressHUD.h>
従来、呼び出し元のファイル!or!YourProject*Prefix.pch!で宣言していた#import宣言をBridging,Headerに記述する• 参考:#h%p://xoyip.hatenablog.com/entry/2014/06/04/200000
![Page 44: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/44.jpg)
SVProgressHUD
ロード中など、進行状況を簡単に表示できるSVProgressHUD(Objec1ve3C)で試してみる
Website
• h#ps://github.com/TransitApp/SVProgressHUD
![Page 45: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/45.jpg)
QuickBDD#Tes'ng#Framework#in#Swi3
![Page 46: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/46.jpg)
Quick
• BDD$Tes(ng$Framework
• RubyのRSpecのようなテストが書ける
• Swi:とObjec(ve>C両方に対応• Website:)h+ps://github.com/Quick/Quick
• 参考:)h+p://qiita.com/susieyy/items/
56457922d3d6bbee21ef
![Page 47: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/47.jpg)
Sample'Codeimport Quickimport Nimble
class DolphinSpec: QuickSpec { override func spec() { describe("a dolphin") { describe("its click") { it("is loud") { let click = Dolphin().click() expect(click.isLoud).to(beTruthy()) }
it("has a high frequency") { let click = Dolphin().click() expect(click.hasHighFrequency).to(beTruthy()) } } } }}
![Page 48: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/48.jpg)
Quickの始め方1. Quick(&(Nimbleをリポジトリからgit(cloneする
2.テストターゲットにQuick.xcodeproj(&(Nimble.xcodeprojを追加
3. Quick.framework(&(Nimble.frameworkをリンクさせる
4. (任意)Alcatrazを使ってQuick(File(Templatesをインストールする
5. Quick(File(Templatesからスペックファイルを作成し、記述する
6. Cmd(+(U(!
![Page 49: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/49.jpg)
テスト実行イメージ• Person.swi+,&,PersonTests.swi+
![Page 50: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/50.jpg)
この他にもSwi$のライブラリは続々登場する
![Page 51: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/51.jpg)
いち早く、GitHubで人気のiOSライブラリを見つけよう
![Page 52: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/52.jpg)
Swi$をこれから勉強する人へ• Swi$%Apple%公式:"h$ps://developer.apple.com/swi5/
• Qiita%Swi$タグ:"h$p://qiita.com/tags/swi5
• Swi$%Developers%Japan:"h$ps://www.facebook.com/groups/758657577499091/
• Connpass:"h$p://connpass.com/"※事前にswi5界隈の人をフォローしよう
![Page 53: SwiftとCocoaPodsで始めるサクサクiOS開発!](https://reader034.vdocuments.net/reader034/viewer/2022052410/549bee83ac7959c42a8b45de/html5/thumbnails/53.jpg)
ご清聴ありがとうございました