Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Swift 2014夏
デジタルサーカス(株)⻑⾧長⾕谷川智希
⾃自⼰己紹介
・ ⻑⾧長⾕谷川智希
・ デジタルサーカス(株) 副団⻑⾧長CTO
・ 趣味: iOSアプリ開発, Web開発
・ その他趣味: レンタルカート, 電⼦子⼯工作(mbed), …
と も き
@tomzoh TOMZOH
著書
iOS
執筆中
デジタルサーカス(株)
・ Webサイト受託開発(PHP, CakePHP, Drupal)
・ スマホアプリ受託開発(iOS, Android)
・ ⾃自社サービス (http://appbuilder.jp)
2000 Samui 2001...
もくじ
1. Xcode上でのSwiftの取り扱い
2. Objective-CからSwiftになって変わること変わらないこと
3. Objective-Cでのいつもの書き⽅方、Swiftでは?
4. Swift TIPS
5. 現時点での資料...
Playground
・ 本⽇日の発表に含まれるコード実⾏行行例例はXcode6の
Playgroundを使ったものが多いです。
デモ
1. Xcode上でのSwiftの取り扱い
1. Xcode上でのSwiftの取り扱い
2. Objective-CからSwiftになって変わること変わらないこと
3. Objective-Cでのいつもの書き⽅方、Swiftでは?
4. Swi...
プロジェクトの作り⽅方
・ 今までと同じ。Product Name, Organization Name,
Organization Identifier, Devies …
・ Languageの選択が増えている。Swiftを選択。
プロジェクト内のファイル
・ おなじみMaster-Detail Applicationの場合…
・ AppDelegate.swift
・ Main.storyboard
・ MasterViewController.swift
・ Deta...
新規ファイルの追加
・ プロジェクト作成同様 Language の設定が増えている以外
は同じ。
・ クラスを指定するとそのクラスのひな形が作成される。
Xcode上でのSwiftの取り扱いまとめ
・ ⾔言語の選択がある他はObjecive-Cの時と同じ。
・ 継承クラス指定、便便利利です。活⽤用しましょう。
2. Objective-CからSwiftになって
変わること変わらないこと
1. Xcode上でのSwiftの取り扱い
2. Objective-CからSwiftになって変わること変わらないこと
3. Objective-Cでのいつもの書き⽅...
変わること
・ No .h, .m . Only .swift
・ ファイルを⾏行行き来しなくて良良いので地味にラク
・ Interface Builderから作成するIBOutlet, IBActionも .swift に書く
・ ⾔言語仕様...
⾔言語仕様による変化
Immutable / Mutableな変数
構造体のメンバへ直接アクセス可能
型推測
⾔言語仕様による変化
クラス定義 / メソッド定義
変わらないこと
・ Xcode Project, StoryBoard, Interface Builder
・ Provisioning Profiles
・ COCOAPODS含めObjective-Cベースのライブラリ混在可
・ Coco...
3. Objective-Cでのいつもの書き
⽅方、Swiftでは?
1. Xcode上でのSwiftの取り扱い
2. Objective-CからSwiftになって変わること変わらないこと
3. Objective-Cでのいつもの書き⽅方、Sw...
Controller class definition
// Super Class	
@interface MasterViewController : UITableViewController {}	
// Protocol(s)	
@i...
Super class’s method
・ Super classのmethodは override で定義。
- (void)viewDidLoad {}	
- (void)viewWillAppear:(BOOL)animated {}	...
Protocol method
・ Swiftではパラメタは(変数名: 型)または(外部名 変数名: 型)。
・ UIKitのプロトコルメソッドは後者で定義されている。
・ Objective-Cへの配慮っぽい。(けどちょっと…)
- (UIT...
IBOutlet
・ .hではなく.swiftに書く。
・ Interface Builderで[Ctrl]+ドラッグで作る。
!
@property (weak, nonatomic) IBOutlet UITableView *tableV...
IBAction
・ IBOutletと同じ。
・ Objective-C同様senderを選択できる。UIButton or AnyObject
- (IBAction)pushButton:(UIButton *)sender {	
}
@...
AnyObject and Type Casting
LBShopTableViewCell* cell = [tableView
dequeueReusableCellWithIdentifier:@"ShopCell" forIndexPa...
4. Swift TIPS
1. Xcode上でのSwiftの取り扱い
2. Objective-CからSwiftになって変わること変わらないこと
3. Objective-Cでのいつもの書き⽅方、Swiftでは?
4. Swift TIPS
...
Swiftでの開発TIPS
・ ⾔言語仕様
・ Optional型
・ ARC
・ Arrayの実装 / タプル
・ COCOAPODSの使い⽅方
・ ライブラリ紹介
・ SwiftyJSON
・ ALAMOFIRE
⾔言語仕様
1. ⾔言語仕様
2. COCOAPODSの使い⽅方
3. ライブラリ紹介
Optional型
Optional型
・ Objective-C の NSString には nil が⼊入る。
・ Swift の String には nil は⼊入らない。
・ nil を⼊入れたい場合は Optional<String> 型を使う。
・ S...
Optional型
nilを⼊入れるならOptional型に。
Optional<String>型はそのままでは使えない
Optional型 - アンラップ
アンラップして String 型として使える様にする
アンラップは複数の⽅方法がある
?はOptional Chaining、!はForced Unwrapping
Optional型 - アンラップ
if や while の中でアンラップする⽅方法は Optional Binding
・ let でも var でもOK
・ unwrappedStr は String 型
・ optionalStr が n...
Optional型 - アンラップ
Implicitly Unwrapped Optional 型で宣⾔言する
使⽤用時に強制的にアンラップされる
Implicitly Unwrapped Optional 型に nil が⼊入っているとランタ...
Optional型 - シンタックスシュガー
・ シンタックスシュガー
・ Optional<String> → String?
・ Implicitly Unwrapped Optional<String> → String!
・ アンラップ...
ARC
ARC
・ Swiftのメモリ管理理はARC。
・ 循環参照が発⽣生しない様に気を遣う必要がある。
・ 従来の strong, weak と新規に追加された unowned
ARC
// self がクロージャを強参照し、クロージャが self を強参照して循環参照に陥る	
self.aProperty = {	
self.doSomething()	
}	
!
// unowned self としてキャプチャする...
Arrayの実装 / タプル
Arrayの実装
Swift の Array は値型。Dictionaryも。
タプル
タプル。値をカンマ区切切りで括弧でくくったもの。
タプル
funcの引数や返値にも使える
for in で key, value の分離離に使える
COCOAPODSの使い⽅方
1. ⾔言語仕様
2. COCOAPODSの使い⽅方
3. ライブラリ紹介
COCOAPODSの使い⽅方
・ SwiftからもCOCOAPODSは使える。
・ ふつうに Podfile を書いて pod install する。
・ プロジェクト名-Bridging-Header.h を作る。
・ プロジェクトにObje...
COCOAPODSの使い⽅方
AFNetworkingを使う例例
ライブラリ紹介
1. ⾔言語仕様
2. COCOAPODSの使い⽅方
3. ライブラリ紹介
ライブラリ紹介
・ SwiftからObjective-Cのライブラリは使える。
・ AFNetworkingも、SDWebImageも、MBProgressHUDも。
・ ただ、それらのObjective-CのライブラリはObjective-C...
SwiftyJSON
・ JSONをSwiftで気持ちよくパースするためのライブラリ。
・ 使わないと…
!
・ 使うと…
shopName = 	
(((json as? NSArray)?[0] as? NSDictionary)?["sh...
ALAMOFIRE
・ Alamofire is an HTTP networking library written in Swift.
Think of it as AFNetworking, reimagined for the
conv...
5. 現時点でのおすすめ資料料
1. Xcode上でのSwiftの取り扱い
2. Objective-CからSwiftになって変わること変わらないこと
3. Objective-Cでのいつもの書き⽅方、Swiftでは?
4. Swift TIP...
現時点でのおすすめ資料料
・ Kindle
・ 「先取り!Swift」
・ iBooks
・ 「Swift離離陸陸ガイド」
・ 「The Swift Programming Language」
!
・ Qiita
・ Swiftタグ
ありがとうございました。
@tomzoh
Swift事情2014夏 ~ Swift入門 beta6対応
Upcoming SlideShare
Loading in …5
×

Swift事情2014夏 ~ Swift入門 beta6対応

2,828 views

Published on

過去の勉強会で発表した「SwiftによるiOS開発再入門」「Objective-CプログラマのためのSwift導入法」を再構成して現時点で最新(beta6)仕様にアップデートしたものです。

Published in: Software

Swift事情2014夏 ~ Swift入門 beta6対応

  1. 1. Swift 2014夏 デジタルサーカス(株)⻑⾧長⾕谷川智希
  2. 2. ⾃自⼰己紹介 ・ ⻑⾧長⾕谷川智希 ・ デジタルサーカス(株) 副団⻑⾧長CTO ・ 趣味: iOSアプリ開発, Web開発 ・ その他趣味: レンタルカート, 電⼦子⼯工作(mbed), … と も き @tomzoh TOMZOH
  3. 3. 著書 iOS 執筆中
  4. 4. デジタルサーカス(株) ・ Webサイト受託開発(PHP, CakePHP, Drupal) ・ スマホアプリ受託開発(iOS, Android) ・ ⾃自社サービス (http://appbuilder.jp) 2000 Samui 2001 Cebu 2002 Phuket 2004 Ishigaki 2005 Vietnam 2006 Hǎinán Dǎo 2007 Bali 2008 Taiwan 2010 Seoul 2011 Macau 2012 Guam 2013 Phuket
  5. 5. もくじ 1. Xcode上でのSwiftの取り扱い 2. Objective-CからSwiftになって変わること変わらないこと 3. Objective-Cでのいつもの書き⽅方、Swiftでは? 4. Swift TIPS 5. 現時点での資料料ポインタ
  6. 6. Playground ・ 本⽇日の発表に含まれるコード実⾏行行例例はXcode6の Playgroundを使ったものが多いです。 デモ
  7. 7. 1. Xcode上でのSwiftの取り扱い 1. Xcode上でのSwiftの取り扱い 2. Objective-CからSwiftになって変わること変わらないこと 3. Objective-Cでのいつもの書き⽅方、Swiftでは? 4. Swift TIPS 5. 現時点での資料料ポインタ
  8. 8. プロジェクトの作り⽅方 ・ 今までと同じ。Product Name, Organization Name, Organization Identifier, Devies … ・ Languageの選択が増えている。Swiftを選択。
  9. 9. プロジェクト内のファイル ・ おなじみMaster-Detail Applicationの場合… ・ AppDelegate.swift ・ Main.storyboard ・ MasterViewController.swift ・ DetailViewController.swift ・ あんまり変わらない。
  10. 10. 新規ファイルの追加 ・ プロジェクト作成同様 Language の設定が増えている以外 は同じ。 ・ クラスを指定するとそのクラスのひな形が作成される。
  11. 11. Xcode上でのSwiftの取り扱いまとめ ・ ⾔言語の選択がある他はObjecive-Cの時と同じ。 ・ 継承クラス指定、便便利利です。活⽤用しましょう。
  12. 12. 2. Objective-CからSwiftになって 変わること変わらないこと 1. Xcode上でのSwiftの取り扱い 2. Objective-CからSwiftになって変わること変わらないこと 3. Objective-Cでのいつもの書き⽅方、Swiftでは? 4. Swift TIPS 5. 現時点でのおすすめ資料料
  13. 13. 変わること ・ No .h, .m . Only .swift ・ ファイルを⾏行行き来しなくて良良いので地味にラク ・ Interface Builderから作成するIBOutlet, IBActionも .swift に書く ・ ⾔言語仕様による変化 ・ 構造体のメンバへ直接アクセス可能 ・ 変数 … Immutable / Mutable / 型推測 ・ クラス定義 / メソッド定義 ・ nilを意識識したコーディング ・ Dictionary, Arrayの取り扱い
  14. 14. ⾔言語仕様による変化 Immutable / Mutableな変数 構造体のメンバへ直接アクセス可能 型推測
  15. 15. ⾔言語仕様による変化 クラス定義 / メソッド定義
  16. 16. 変わらないこと ・ Xcode Project, StoryBoard, Interface Builder ・ Provisioning Profiles ・ COCOAPODS含めObjective-Cベースのライブラリ混在可 ・ Cocoa Touch (Foundation Framework, UIKit, … )
  17. 17. 3. Objective-Cでのいつもの書き ⽅方、Swiftでは? 1. Xcode上でのSwiftの取り扱い 2. Objective-CからSwiftになって変わること変わらないこと 3. Objective-Cでのいつもの書き⽅方、Swiftでは? 4. Swift TIPS 5. 現時点での資料料ポインタ
  18. 18. Controller class definition // Super Class @interface MasterViewController : UITableViewController {} // Protocol(s) @interface LoveBeerListViewController : UIViewController <UITableViewDataSource, UITableViewDelegate> {} Objective-C // Super Class class MasterViewController: UITableViewController {} // Protocol(s) class LoveBeerListViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {} Swift ・ スーパークラス指定は : の後に。 ・ プロトコル定義はスーパークラス定義の後に , 区切切りで。
  19. 19. Super class’s method ・ Super classのmethodは override で定義。 - (void)viewDidLoad {} - (void)viewWillAppear:(BOOL)animated {} - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{} override func viewDidLoad() {} override func viewWillAppear(animated: Bool){} override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {} Objective-C Swift
  20. 20. Protocol method ・ Swiftではパラメタは(変数名: 型)または(外部名 変数名: 型)。 ・ UIKitのプロトコルメソッドは後者で定義されている。 ・ Objective-Cへの配慮っぽい。(けどちょっと…) - (UITableViewCell *)tableView:(UITableView *)tableView
 cellForRowAtIndexPath:(NSIndexPath *)indexPath {} func tableView(tableView: UITableView, 
 cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {} Objective-C Swift
  21. 21. IBOutlet ・ .hではなく.swiftに書く。 ・ Interface Builderで[Ctrl]+ドラッグで作る。 ! @property (weak, nonatomic) IBOutlet UITableView *tableView; ! @IBOutlet var tableView: UITableView Objective-C Swift
  22. 22. IBAction ・ IBOutletと同じ。 ・ Objective-C同様senderを選択できる。UIButton or AnyObject - (IBAction)pushButton:(UIButton *)sender { } @IBAction func pushButton(sender: UIButton) { } Objective-C Swift
  23. 23. AnyObject and Type Casting LBShopTableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"ShopCell" forIndexPath:indexPath]; let cell: LBShopTableViewCell = tableView.dequeueReusableCellWithIdentifier("ShopCell", forIndexPath: indexPath) as LBShopTableViewCell Objective-C Swift ・ dequeueReusableCellWithIdentifier:forIndexPath:の返値は Objective-Cではid型。SwiftではAnyObject型。 ・ Swiftではas [型]で明⽰示的にキャストする必要あり。
  24. 24. 4. Swift TIPS 1. Xcode上でのSwiftの取り扱い 2. Objective-CからSwiftになって変わること変わらないこと 3. Objective-Cでのいつもの書き⽅方、Swiftでは? 4. Swift TIPS 5. 現時点でのおすすめ資料料
  25. 25. Swiftでの開発TIPS ・ ⾔言語仕様 ・ Optional型 ・ ARC ・ Arrayの実装 / タプル ・ COCOAPODSの使い⽅方 ・ ライブラリ紹介 ・ SwiftyJSON ・ ALAMOFIRE
  26. 26. ⾔言語仕様 1. ⾔言語仕様 2. COCOAPODSの使い⽅方 3. ライブラリ紹介
  27. 27. Optional型
  28. 28. Optional型 ・ Objective-C の NSString には nil が⼊入る。 ・ Swift の String には nil は⼊入らない。 ・ nil を⼊入れたい場合は Optional<String> 型を使う。 ・ String 型として使いたい場合 Optional<String> 型のままでは使えな いので String 型を取り出して使う。 ・ これを「アンラップ」と⾔言う。
 (String 型が Optional<String> 型に「ラップされている」) ・ アンラップにはいくつかの⽅方法がある。
  29. 29. Optional型 nilを⼊入れるならOptional型に。 Optional<String>型はそのままでは使えない
  30. 30. Optional型 - アンラップ アンラップして String 型として使える様にする アンラップは複数の⽅方法がある ?はOptional Chaining、!はForced Unwrapping
  31. 31. Optional型 - アンラップ if や while の中でアンラップする⽅方法は Optional Binding ・ let でも var でもOK ・ unwrappedStr は String 型 ・ optionalStr が nil の場合は if の条件式の評価が false になる
  32. 32. Optional型 - アンラップ Implicitly Unwrapped Optional 型で宣⾔言する 使⽤用時に強制的にアンラップされる Implicitly Unwrapped Optional 型に nil が⼊入っているとランタイムエラー
  33. 33. Optional型 - シンタックスシュガー ・ シンタックスシュガー ・ Optional<String> → String? ・ Implicitly Unwrapped Optional<String> → String! ・ アンラップに使う ? や ! とは別物
  34. 34. ARC
  35. 35. ARC ・ Swiftのメモリ管理理はARC。 ・ 循環参照が発⽣生しない様に気を遣う必要がある。 ・ 従来の strong, weak と新規に追加された unowned
  36. 36. ARC // self がクロージャを強参照し、クロージャが self を強参照して循環参照に陥る self.aProperty = { self.doSomething() } ! // unowned self としてキャプチャすると、クロージャは self を所有しない self.aProperty = { [unowned self] in self.doSomething() }
  37. 37. Arrayの実装 / タプル
  38. 38. Arrayの実装 Swift の Array は値型。Dictionaryも。
  39. 39. タプル タプル。値をカンマ区切切りで括弧でくくったもの。
  40. 40. タプル funcの引数や返値にも使える for in で key, value の分離離に使える
  41. 41. COCOAPODSの使い⽅方 1. ⾔言語仕様 2. COCOAPODSの使い⽅方 3. ライブラリ紹介
  42. 42. COCOAPODSの使い⽅方 ・ SwiftからもCOCOAPODSは使える。 ・ ふつうに Podfile を書いて pod install する。 ・ プロジェクト名-Bridging-Header.h を作る。 ・ プロジェクトにObjective-Cの新規ファイルを追加すると「Bridging Headerを作る?」というダイアログが出るのでそれで作るのがラク。 // // Use this file to import your target's public headers that you would like to expose to Swift. // #import <AFNetworking/AFNetworking.h>
  43. 43. COCOAPODSの使い⽅方 AFNetworkingを使う例例
  44. 44. ライブラリ紹介 1. ⾔言語仕様 2. COCOAPODSの使い⽅方 3. ライブラリ紹介
  45. 45. ライブラリ紹介 ・ SwiftからObjective-Cのライブラリは使える。 ・ AFNetworkingも、SDWebImageも、MBProgressHUDも。 ・ ただ、それらのObjective-CのライブラリはObjective-Cのオブ ジェクトを前提としている。 ・ 出来ればSwiftのライブラリを使いたい…。
  46. 46. SwiftyJSON ・ JSONをSwiftで気持ちよくパースするためのライブラリ。 ・ 使わないと… ! ・ 使うと… shopName = (((json as? NSArray)?[0] as? NSDictionary)?["shop"] as? NSDictionary)?["name"] shopName = json[0]["shop"]["name"].string
  47. 47. ALAMOFIRE ・ Alamofire is an HTTP networking library written in Swift. Think of it as AFNetworking, reimagined for the conventions of this new language. ! ! ! ・ Xcode beta6の仕様変更更で動かなくなってる… Alamofire.request(.GET, "https://qiita.com/api/v1/tags.json").response { (request, response, data, error) in let json: [JSONValue] = JSONValue(data!).array for tag in tags { println(tag["name"].string) } }
  48. 48. 5. 現時点でのおすすめ資料料 1. Xcode上でのSwiftの取り扱い 2. Objective-CからSwiftになって変わること変わらないこと 3. Objective-Cでのいつもの書き⽅方、Swiftでは? 4. Swift TIPS 5. 現時点でのおすすめ資料料
  49. 49. 現時点でのおすすめ資料料 ・ Kindle ・ 「先取り!Swift」 ・ iBooks ・ 「Swift離離陸陸ガイド」 ・ 「The Swift Programming Language」 ! ・ Qiita ・ Swiftタグ
  50. 50. ありがとうございました。 @tomzoh

×