Objective-Cプログラマのためのswift導入法

5,107 views

Published on

06/25開催のSwiftLT会の発表資料です。
発表時からはスクリーンショットなど削除してコア部分のみに絞っています。

下記スライドもあわせてご覧下さい。(このスライドの更新・増補版です)
http://www.slideshare.net/hasegawatomoki/swift2014

Published in: Technology, Business
0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,107
On SlideShare
0
From Embeds
0
Number of Embeds
2,030
Actions
Shares
0
Downloads
11
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide

Objective-Cプログラマのためのswift導入法

  1. 1. Objective-C iOSプログラマのための Swift導入法 長谷川 智希 2014/06/25 Swift LT会
  2. 2. 自己紹介 • 長谷川智希 / デジタルサーカス(株) 副団長CTO • 趣味: iOSアプリ/ Web開発 • その他趣味: カート, 電子工作(mbed) … @tomzoh facebook.com/ hasegawa.tomoki
  3. 3. デジタルサーカス(株) • Webサイト開発(PHP, CakePHP, Drupal) • スマホアプリ開発(iOS, Android) 団員募集中 ­ WE WANT YOU!
  4. 4. 今日のテーマ • Objective-C iOSプログラマのためのSwift導入法 • Objective-Cでのいつもの書き方、Swiftでは? • TIPS • Swiftを使ってみての感想
  5. 5. いつもの構文 in Swift
  6. 6. いつもの構文 in Swift • Controller class definition • Super class / protocol method • Protocol method’s parameter • IBOutlet, IBAction • AnyObject and Type Casting
  7. 7. Controller class definition // Super Class @interface MasterViewController : UITableViewController {} ! // Protocol(s) @interface LoveBeerListViewController : UIViewController <UITableViewDataSource, UITableViewDelegate> {} // Super Class class MasterViewController: UITableViewController {} ! // Protocol(s) class LoveBeerListViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {} Objective-C Swift
  8. 8. Controller class definition // Super Class class MasterViewController: UITableViewController {} ! // Protocol(s) class LoveBeerListViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {} Swift •スーパークラス指定は : の後に。 •プロトコル定義はスーパークラス定義の後にカンマ 区切りで。
  9. 9. Super class method - (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 • Super classのmethodは override で定義。
  10. 10. Protocol method - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {} func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {} Objective-C Swift • Swiftではパラメタは(変数名: 型)または(外部名 変数名: 型)。 • UIKitのプロトコルメソッドは後者で定義されている。 • Objective-Cへの配慮っぽい。(けどちょっと…)
  11. 11. IBOutlet ! @property (weak, nonatomic) IBOutlet UITableView *tableView; ! @IBOutlet var tableView: UITableView Objective-C Swift • .hではなく.swiftに書く。 • Interface Builderで[Ctrl]+ドラッグで作る。
  12. 12. IBAction - (IBAction)pushButton:(UIButton *)sender { } @IBAction func pushButton(sender: UIButton) { } Objective-C Swift • IBOutletと同じ。 • senderを選択できるところも同じ。
  13. 13. AnyObject and Type Casting LBShopTableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"ShopCell" forIndexPath:indexPath]; let cell = tableView.dequeueReusableCellWithIdentifier("ShopCell", forIndexPath: indexPath) as LBShopTableViewCell Objective-C Swift • Objective-Cでは dequeueReusableCellWithIdentifier:forIndexPath:の返 値はid型。 • SwiftではAnyObject型。→ as [型]でキャストする。
  14. 14. TIPS • 現状、Swift、プロトコルメソッドについて補完が効かない。 • 「func tableView(」とか書いて待ってても何も出てこな い。 • Xcodeのひな形を使ったり、Objective-Cのコードを見な がらSwiftに翻訳したりすると良いです。 • Kindleの「先取り!Swift(*)」を読んで概要を知ってから iBooksのドキュメントを読むのがおすすめ。 • ある程度理解したらObjective-CからSwiftに翻訳するのが良 いでしょう。(Swiftはまだ情報が少ないので。) (*) http://www.amazon.co.jp/dp/B00L35LRPI
  15. 15. Swiftを書いてみた感想 • Swift、いい感じ。 • Objective-C前提で作られた仕様との接点がちょっとイマイチだけど。 • .hって面倒だと思ってたけど思ってたより面倒だったんだな。ETCみた いな感じ。 • Objective-Cでバリバリ書けるひとが無理して導入することは ない様に想う。 • 多言語からの参入者にはSwiftの方が心理的障壁が低くていい かも。 • 製品版になるまでに個人で使い込んで社内で共有しておいて、 製品版になったらすぐ導入しよう。
  16. 16. KeyNote テンプレート: 「大体いい感じになるKeynoteテンプレート「Azusa」作った」http://memo.sanographix.net/post/82160791768 ありがとうございました @tomzoh facebook.com/hasegawa.tomoki 団員募集中

×