swift

19
Swift 鈴木 俊裕 @toshi0383

Upload: toshihiro-suzuki

Post on 16-Aug-2015

164 views

Category:

Technology


4 download

TRANSCRIPT

Swift鈴木 俊裕 @toshi0383

JamNaviというアプリをリリースしました

開発期間6ヶ月 工数で言ったら 2.0ヶ月くらい バックエンドはParse SwiftよりはUIKitやプロジェクトの環境設定で苦戦 なぜみんないまだにObjective-Cで書いているのか理解できない

Swiftについて好き勝手しゃべります

Swift イイところ

ランタイムエラーからの解放(型安全) [[[[^void{}]]]];にさよならできる!開発効率向上 ハイレベルな言語機能 学習コスト低い(シンプルで直感的な言語機能) 実行速度速いらしい

Objective-C脳

Person.h @interface Person @property (nonatomic) NSString *name; -(void)walk:(NSInteger)distance; @end

Person.m #import “Person.h”; @implementation Person -(void)walk:(NSInteger)distance {} @end

Swift脳

Person.swift class Person { var name:String func walk(distance:int) {} }

// 簡潔..

Objective-C脳

@property (nonatomic) NSArray *items;

for (NSDictionary *dic in items) { NSString *video_id = [dic objectForKey:@“video_id”]; NSLog(“%@“, video_id); … .. }

Swift脳

var items:[Dictionary<String, String>] // 型安全

for item in items { if let v = item["video_id"] { // リテラルもシンプル println(v) // 直感的 } }

Swiftっぽさ

struct optional type cast extension generics protocol access control closure initializer enum subscript typealias property observer custom operator

struct

$ grep ^struct\ swift-header | wc -l 81 $ grep ^class\ swift-header | wc -l 3 classよりなるべくstructを使いましょう

optional

optional implicitly unwrapped optional

optional

使う時 例:o.detailとquery:Dictionary<String, String>で指定された文字列のマッチング

enum

enum

使ってわかったハマりどころ

コンパイルおっそい=>1.2でだいぶ改善した Xcodeクラッシュする=>もう慣れたので何とも思わない initializerの定義でハマる genericsで頑張るとハマる(今はまだ使わないほうが幸せかも) カスタム演算子定義が競合する可能性 環境設定のやり方に悩む

#if はできるけど#ifdef #def できません PREPROCESSOR MACROも当然使えません *.xcconfigを使えば解決しそう

まとめ

つらみを補って余りある利点 シンプルで使い易い。開発効率もさることながら、後からメンテするのがラクなのが実は一番嬉しい。 若い技術なのでコミュニティの躍動感を味わえる。

Objective-CとSwiftは同じプロジェクト内で共存できる dプロジェクトも理論的には全部Swiftに置き換え可能 段階的に置き換えていくと幸せかも

Learning Swift

Swift Programming Language (Apple) Functional Programming in Swift (objc.io) swift-json (dan kogai) WWDC videos

Swift interoperability in depth Intermediate Swift Advanced Swift

realm.io

Happy Swift Life