swiftとcocoapodsで始めるサクサクios開発!

53
Swi$CocoaPodsで始めるサクサクiOS開発!  MailboxライクなUICocoaControlsで発掘して実現~ 2014. 8. 19 Nishi-Shinjuku Tech-Circle #3 @shiraco

Upload: koji-shiraishi

Post on 25-Dec-2014

2.039 views

Category:

Technology


0 download

DESCRIPTION

SwiftとCocoaPodsで始めるサクサクiOS開発!

TRANSCRIPT

Page 1: SwiftとCocoaPodsで始めるサクサクiOS開発!

Swi$とCocoaPodsで始めるサクサクiOS開発! ~MailboxライクなUIをCocoaControlsで発掘して実現~

2014.&8.&19&Nishi-Shinjuku&Tech-Circle&#3

@shiraco

Page 2: SwiftとCocoaPodsで始めるサクサクiOS開発!

自己紹介• TIS%戦略技術センター%所属

• Twi(er:%@shiraco

• 機械学習/Python/R言語

• Nishi9Shinjuku%TechCircle%運営

• TISMatsuri%実行リーダー

Page 3: SwiftとCocoaPodsで始めるサクサクiOS開発!

CAUTION

Swi$は%2014/8/19%時点でBetaバージョンなので、本資料に記載の内容は今後変更になる可能性があります。なお、本資料の動作確認はXcode66Beta5にて行っています。

Page 4: SwiftとCocoaPodsで始めるサクサクiOS開発!

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開発!

What's'Swi+?

Page 6: SwiftとCocoaPodsで始めるサクサクiOS開発!

WWDC$2014

Page 7: SwiftとCocoaPodsで始めるサクサクiOS開発!
Page 8: SwiftとCocoaPodsで始めるサクサクiOS開発!

iOSとOS$Xのための新しいプログラミング言語

• h#ps://developer.apple.com/swi4/

Page 9: SwiftとCocoaPodsで始めるサクサクiOS開発!

Swi$とは"Objec've)C+without+the+C"iOS$8$からデビュースタイルはScala,$Go,$JavaScript等に似ており、学習コストが低いハイパフォーマンスで、$Objec4ve5Cより速く、$Cよりは遅い既存のObjec4ve5Cのコードとも混在が可能将来的にはAppleも開発言語をSwi9一本にするはずこれからiOS開発する人は安心してSwi%を始められる

Page 10: SwiftとCocoaPodsで始めるサクサクiOS開発!

疑問今後iOS開発におけるObjec&ve(Cは、どうなるのか?

Page 11: SwiftとCocoaPodsで始めるサクサクiOS開発!

Objec&ve(C

willdie.

Page 12: SwiftとCocoaPodsで始めるサクサクiOS開発!

とはいっても

Page 13: SwiftとCocoaPodsで始めるサクサクiOS開発!
Page 14: SwiftとCocoaPodsで始めるサクサクiOS開発!
Page 15: SwiftとCocoaPodsで始めるサクサクiOS開発!

既に多くのObjec&ve(C製のOSSライブラリなどの資産が世の中に出回っているのでそんなにすぐにはなくならない(と思う)

Page 16: SwiftとCocoaPodsで始めるサクサクiOS開発!

ただし、じわじわ置き換わっていくのは間違いない

(特によく使われる資産から)

Page 17: SwiftとCocoaPodsで始めるサクサクiOS開発!

さらに、Swi$の書籍はほとんど無い

Page 18: SwiftとCocoaPodsで始めるサクサクiOS開発!

今すぐ、Swi$を学びたい人はObjec*ve,Cの知識も重要になる

Page 19: SwiftとCocoaPodsで始めるサクサクiOS開発!

Swi$とObjec*ve,Cの比較

Page 20: SwiftとCocoaPodsで始めるサクサクiOS開発!
Page 21: SwiftとCocoaPodsで始めるサクサクiOS開発!

Objec&ve(C*(>*Swi/での主な変更点①

• ヘッダーファイルが要らなくなった:#hoge.h

• メッセージ式のブラケットがなくなった:#[self&viewDidLoad]

• リテラル引用符のアットマークもなくなった:#@"Hello"

• オブジェクト型の変数を宣言の*がなくなった:#NSString&*str

Objec&ve(Cの気持ち悪さ(気持ち良さ)がなくなった

Page 22: SwiftとCocoaPodsで始めるサクサクiOS開発!

Objec&ve(C*(>*Swi/での主な変更点②• 型推論:明示的な型指定不要(明示もできる)

• 定数(let)と変数(ver)を区別して宣言できる

• 明示的にoverrideを宣言できるようになった

• アクセス修飾子(public/internal/private)

などなど!

モダン言語で当たり前だった機能を(やっと)取り込んだ

Page 23: SwiftとCocoaPodsで始めるサクサクiOS開発!

Swi$%についての個人的な所感• Swi%は非Objec+ve-Cユーザーにも、Objec+ve-Cユーザーにもどちらにも優しい

• Objec+ve-C/->/Swi%では見た目は結構変わっているが、概ね、1:1で機械的にコンバートできる

Page 24: SwiftとCocoaPodsで始めるサクサクiOS開発!

What's

Page 25: SwiftとCocoaPodsで始めるサクサクiOS開発!
Page 26: SwiftとCocoaPodsで始めるサクサクiOS開発!

Mailbox

• iOS向けGmailクライアントとして登場

• 新感覚のユーザー体験を提供するメールアプリ

• 一時は100万人以上の待ち行列

• DropBoxが1億ドルで買収した

• 現在はAndroid版もあるよ!

Page 27: SwiftとCocoaPodsで始めるサクサクiOS開発!

の洗練されたUIを実現したい

Page 28: SwiftとCocoaPodsで始めるサクサクiOS開発!

スライドメニュー

Page 29: SwiftとCocoaPodsで始めるサクサクiOS開発!

グリッドメニュー

Page 30: SwiftとCocoaPodsで始めるサクサクiOS開発!

スワイプセル

Page 31: SwiftとCocoaPodsで始めるサクサクiOS開発!
Page 32: SwiftとCocoaPodsで始めるサクサクiOS開発!

CocoaControls

• 2567&open&source&and&commercial&UI&components&for&iOS&and&OS&X.

• UI周りのOSSライブラリを中心とした&

iOS&とOS&X&向けのショーケース

• あの有名アプリのUIを実現するライブラリを発掘できる

Page 33: SwiftとCocoaPodsで始めるサクサクiOS開発!
Page 34: SwiftとCocoaPodsで始めるサクサクiOS開発!

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開発!

CocoaPods(の始め方• Install

$ gem install cocoapods

Website

• h#p://cocoapods.org/

• h#ps://github.com/cocoapods/cocoapods

Page 36: SwiftとCocoaPodsで始めるサクサクiOS開発!

ECSlidingViewController

Facebookアプリのようにスライドするメニューを実現できる

Website

• h#ps://github.com/ECSlidingViewController/ECSlidingViewController

Page 37: SwiftとCocoaPodsで始めるサクサクiOS開発!

MCSwipeTableViewCell

Mailboxアプリのようにセルにスワイプするアクションを割り当てられる

Website

• h#ps://github.com/alikaragoz/MCSwipeTableViewCell

Page 38: SwiftとCocoaPodsで始めるサクサクiOS開発!

RNGridMenu

Mailboxアプリのようにグリッドメニューを簡単に実現できる

Website

• h#ps://github.com/rnystrom/RNGridMenu

Page 39: SwiftとCocoaPodsで始めるサクサクiOS開発!

CocoaPodsでMCSwipeTableViewCell導入する方法• Podfile"で宣言pod 'MCSwipeTableViewCell', '~> 2.1.0'

• プロジェクトにインストール$ pod install

• プロジェクト(workspace)を開く$ open YourProject.xcworkspace

Page 40: SwiftとCocoaPodsで始めるサクサクiOS開発!

MCSwipeTableViewCell-実装例の確認

Page 41: SwiftとCocoaPodsで始めるサクサクiOS開発!

ああ、素晴らしきかな、CocoaPods!• 簡単にプロジェクトにライブラリを導入できる

• バージョンアップもpod%install%で簡単にできる

• ほとんどのライブラリが実装例が同梱されているので実装方法で迷わない

• UI系のライブラリはCocoaControlsで探がせる!

Page 42: SwiftとCocoaPodsで始めるサクサクiOS開発!

The$Objec)ve+C$dependency$manager

CocoaPods

(現時点では)Objec(ve*C専用のライブラリ管理マネージャーSwi/からも使えるの?

Page 43: SwiftとCocoaPodsで始めるサクサクiOS開発!

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開発!

SVProgressHUD

ロード中など、進行状況を簡単に表示できるSVProgressHUD(Objec1ve3C)で試してみる

Website

• h#ps://github.com/TransitApp/SVProgressHUD

Page 45: SwiftとCocoaPodsで始めるサクサクiOS開発!

QuickBDD#Tes'ng#Framework#in#Swi3

Page 46: SwiftとCocoaPodsで始めるサクサクiOS開発!

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開発!

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開発!

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開発!

テスト実行イメージ• Person.swi+,&,PersonTests.swi+

Page 50: SwiftとCocoaPodsで始めるサクサクiOS開発!

この他にもSwi$のライブラリは続々登場する

Page 51: SwiftとCocoaPodsで始めるサクサクiOS開発!

いち早く、GitHubで人気のiOSライブラリを見つけよう

Page 52: SwiftとCocoaPodsで始めるサクサク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界隈の人をフォローしよう

Page 53: SwiftとCocoaPodsで始めるサクサクiOS開発!

ご清聴ありがとうございました