swiftとcocoapodsで始めるサクサクios開発!
DESCRIPTION
SwiftとCocoaPodsで始めるサクサクiOS開発!TRANSCRIPT
Swi$とCocoaPodsで始めるサクサクiOS開発! ~MailboxライクなUIをCocoaControlsで発掘して実現~
2014.&8.&19&Nishi-Shinjuku&Tech-Circle
@shiraco
自己紹介• TIS%戦略技術センター%所属
• Twi(er:%@shiraco
• 機械学習/Python/R言語
• Nishi9Shinjuku%TechCircle%運営
• TISMatsuri%実行リーダー
CAUTION
Swi$は%2014/8/19%時点でBetaバージョンなので、本資料に記載の内容は今後変更になる可能性があります。なお、本資料の動作確認はXcode66Beta5にて行っています。
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-
What's'Swi+?
WWDC$2014
iOSとOS$Xのための新しいプログラミング言語
• h#ps://developer.apple.com/swi4/
Swi$とは"Objec've)C+without+the+C"iOS$8$からデビュースタイルはScala,$Go,$JavaScript等に似ており、学習コストが低いハイパフォーマンスで、$Objec4ve5Cより速く、$Cよりは遅い既存のObjec4ve5Cのコードとも混在が可能将来的にはAppleも開発言語をSwi9一本にするはずこれからiOS開発する人は安心してSwi%を始められる
疑問今後iOS開発におけるObjec&ve(Cは、どうなるのか?
Objec&ve(C
willdie.
とはいっても
既に多くのObjec&ve(C製のOSSライブラリなどの資産が世の中に出回っているのでそんなにすぐにはなくならない(と思う)
ただし、じわじわ置き換わっていくのは間違いない
(特によく使われる資産から)
さらに、Swi$の書籍はほとんど無い
今すぐ、Swi$を学びたい人はObjec*ve,Cの知識も重要になる
Swi$とObjec*ve,Cの比較
Objec&ve(C*(>*Swi/での主な変更点①
• ヘッダーファイルが要らなくなった:#hoge.h
• メッセージ式のブラケットがなくなった:#[self&viewDidLoad]
• リテラル引用符のアットマークもなくなった:#@"Hello"
• オブジェクト型の変数を宣言の*がなくなった:#NSString&*str
Objec&ve(Cの気持ち悪さ(気持ち良さ)がなくなった
Objec&ve(C*(>*Swi/での主な変更点②• 型推論:明示的な型指定不要(明示もできる)
• 定数(let)と変数(ver)を区別して宣言できる
• 明示的にoverrideを宣言できるようになった
• アクセス修飾子(public/internal/private)
などなど!
モダン言語で当たり前だった機能を(やっと)取り込んだ
Swi$%についての個人的な所感• Swi%は非Objec+ve-Cユーザーにも、Objec+ve-Cユーザーにもどちらにも優しい
• Objec+ve-C/->/Swi%では見た目は結構変わっているが、概ね、1:1で機械的にコンバートできる
What's
Mailbox
• iOS向けGmailクライアントとして登場
• 新感覚のユーザー体験を提供するメールアプリ
• 一時は100万人以上の待ち行列
• DropBoxが1億ドルで買収した
• 現在はAndroid版もあるよ!
の洗練されたUIを実現したい
スライドメニュー
グリッドメニュー
スワイプセル
CocoaControls
• 2567&open&source&and&commercial&UI&components&for&iOS&and&OS&X.
• UI周りのOSSライブラリを中心とした&
iOS&とOS&X&向けのショーケース
• あの有名アプリのUIを実現するライブラリを発掘できる
CocoaPodsThe$Objec)ve+C$dependency$
manager
• Ruby製ライブラリ管理ツール
• CocoaPodsリポジトリ(h/p://
cocoapods.org/)には数千のiOS,;OS;XのPods(ライブラリ)が登録されている
• RubyのBundlerみたいな感じ
• Gemfile(Gemfile.lock)に対してPodfile(Podfile.lock)でライブラリ管理
CocoaPods(の始め方• Install
$ gem install cocoapods
Website
• h#p://cocoapods.org/
• h#ps://github.com/cocoapods/cocoapods
ECSlidingViewController
Facebookアプリのようにスライドするメニューを実現できる
Website
• h#ps://github.com/ECSlidingViewController/ECSlidingViewController
MCSwipeTableViewCell
Mailboxアプリのようにセルにスワイプするアクションを割り当てられる
Website
• h#ps://github.com/alikaragoz/MCSwipeTableViewCell
RNGridMenu
Mailboxアプリのようにグリッドメニューを簡単に実現できる
Website
• h#ps://github.com/rnystrom/RNGridMenu
CocoaPodsでMCSwipeTableViewCell導入する方法• Podfile"で宣言pod 'MCSwipeTableViewCell', '~> 2.1.0'
• プロジェクトにインストール$ pod install
• プロジェクト(workspace)を開く$ open YourProject.xcworkspace
MCSwipeTableViewCell-実装例の確認
ああ、素晴らしきかな、CocoaPods!• 簡単にプロジェクトにライブラリを導入できる
• バージョンアップもpod%install%で簡単にできる
• ほとんどのライブラリが実装例が同梱されているので実装方法で迷わない
• UI系のライブラリはCocoaControlsで探がせる!
The$Objec)ve+C$dependency$manager
CocoaPods
(現時点では)Objec(ve*C専用のライブラリ管理マネージャーSwi/からも使えるの?
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
SVProgressHUD
ロード中など、進行状況を簡単に表示できるSVProgressHUD(Objec1ve3C)で試してみる
Website
• h#ps://github.com/TransitApp/SVProgressHUD
QuickBDD#Tes'ng#Framework#in#Swi3
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
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()) } } } }}
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(!
テスト実行イメージ• Person.swi+,&,PersonTests.swi+
この他にもSwi$のライブラリは続々登場する
いち早く、GitHubで人気のiOSライブラリを見つけよう
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界隈の人をフォローしよう
ご清聴ありがとうございました