2014年からswiftを振り返る! #cswift
TRANSCRIPT
![Page 1: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/1.jpg)
EZ-NET 熊⾕友宏 http://ez-net.jp/
2016.04.23 カジュアル Swift 勉強会 #7
2014年からSwiftを振り返る!Swift カジュアルプログラミング
![Page 2: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/2.jpg)
EZ-NET
![Page 3: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/3.jpg)
iPhone
Swift
EZ-NET
![Page 4: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/4.jpg)
EZ-NET
![Page 6: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/6.jpg)
2014 年 11 ⽉ 1 ⽇
![Page 7: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/7.jpg)
2014 年 11 ⽉ 1 ⽇
MOSA Software Meeting 2014
![Page 8: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/8.jpg)
MSM 2014 当時の資料で今の Swift を振り返ってみよう!
![Page 9: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/9.jpg)
当時の資料
![Page 10: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/10.jpg)
![Page 11: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/11.jpg)
![Page 12: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/12.jpg)
1
![Page 13: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/13.jpg)
![Page 14: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/14.jpg)
![Page 15: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/15.jpg)
![Page 16: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/16.jpg)
![Page 17: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/17.jpg)
![Page 18: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/18.jpg)
![Page 19: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/19.jpg)
79
4
122
![Page 20: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/20.jpg)
![Page 21: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/21.jpg)
![Page 22: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/22.jpg)
⚫︎
⚫︎
⚫︎
⚫︎
![Page 23: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/23.jpg)
![Page 24: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/24.jpg)
![Page 25: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/25.jpg)
![Page 26: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/26.jpg)
⚫︎
⚫︎
⚫︎
![Page 27: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/27.jpg)
NSArray *array = @[ @"A", @"B", @"C" ]; NSString *string = [array componentsJoinedByString:@", "];
NSLog(@"Value: %@", string);
let array = [ "A", "B", "C" ] let string = join(", ", array)
println("Value: \(string)")
![Page 28: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/28.jpg)
⚫︎
⚫︎
⚫︎
⚫︎
8
10
44
![Page 29: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/29.jpg)
⚫︎
⚫︎
1
![Page 30: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/30.jpg)
![Page 31: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/31.jpg)
i += 10;
i += 10
![Page 32: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/32.jpg)
if (i == 10) {
}
if i == 10 {
}
![Page 33: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/33.jpg)
⚫︎
⚫︎
⚫︎
![Page 34: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/34.jpg)
NSString *str = @"OBJC STRING"; NSNumber *num = @10;
char* str = "C STRING"; int num = 10;
let str:String = "SWIFT STRING" let num:Int = 10
17
![Page 35: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/35.jpg)
NSArray *arr = @[ @5, @10 ]; NSDictionary *dic = @{ @"K1":@1, @"K2":@2 };
let arr:[Int] = [ 5, 10 ] let dic:[String:Int] = [ "K1": 1, "K2": 2 ]
24 34
![Page 36: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/36.jpg)
NSInteger i = 10; const NSInteger i = 10;
NSString* s = @"TEXT"; NSMutableString* s = [@"TEXT" mutableCopy];
var i = 10 let i = 10
let s = "TEXT" var s = "TEXT"
3
![Page 37: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/37.jpg)
NSString *str = [NSString stringWithFormat:@"Name=%@, Value=%d", name, value];
let str:String = "Name=\(name), Value=\(value)"
20
![Page 38: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/38.jpg)
NSString *str = [@"MSM" stringByAppendingString:@"2014"];
let str:String = "MSM" + "2014"
18
![Page 39: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/39.jpg)
if ([string1 isEqualToString:string2]) {
}
if string1 == string2 {
}
19
3
![Page 40: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/40.jpg)
[MyClass methodWithValue:10.0 ofType:@"$"]
MyClass.method(value:10.0, ofType:"$")
72 90
![Page 41: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/41.jpg)
// タプル…複数の型を自由に組み合わせられる let value:(Int,String) = (200, "SWIFT")
// nil 許容型…値の他に「ない」状態を扱える let value:Int? = nil
// 値つき列挙型…自由な値を持てる列挙子 enum Enumerate { case Name(String) case NoName }
4
5
8 41 50
![Page 42: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/42.jpg)
![Page 43: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/43.jpg)
44 62 63
⚫︎
⚫︎
⚫︎
⚫︎
⚫︎
64 65 66 67
6
![Page 44: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/44.jpg)
⚫︎
⚫︎
⚫︎
⚫︎
![Page 45: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/45.jpg)
![Page 46: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/46.jpg)
![Page 47: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/47.jpg)
// クロージャの定義 let isOK:(Int)->Bool = {(code:Int)->Bool in
return contains(200..<300, code) }
// 関数のように実行 let result = isOK(200)
// 別の関数の引数に渡して実行 let result = contains(statuses, isOK)
7
79
![Page 48: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/48.jpg)
⚫︎
⚫︎
⚫︎
⚫︎
⚫︎
4 6
31 40
43 44
13
81
8
65
![Page 49: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/49.jpg)
func getStatus()->(code:Int, status:String) { return (200, "OK") }
67
enum Status { case OK case Failed(String) }
func getStatus()->Status { return Status.OK }
50
![Page 50: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/50.jpg)
func add<T:IntegerArithmeticType>(v1:T, v2:T)->T {
return value1 + value2 }
122
⚫︎
⚫︎
⚫︎
⚫︎
9
![Page 51: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/51.jpg)
import MyModule1 import MyModule2
let obj1 = MyModule1.MyClass() let obj2 = MyModule2.MyClass()
⚫︎
⚫︎
![Page 52: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/52.jpg)
![Page 53: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/53.jpg)
![Page 54: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/54.jpg)
⚫︎
⚫︎
⚫︎
⚫︎
![Page 55: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/55.jpg)
MyClass* obj = [[MyClass alloc] initWithValue:10];
obj.value;
class MyClass : NSObject { var value:Int init(value:Int) }
![Page 56: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/56.jpg)
⚫︎
⚫︎
let value:NSString = "TEST STRING"
value.stringByReplacingOccurrencesOfString("TEST", withString: "SWIFT", options: NSStringCompareOptions.LiteralSearch, range: NSMakeRange(0, value.length))
![Page 57: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/57.jpg)
![Page 58: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/58.jpg)
![Page 59: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/59.jpg)
![Page 60: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/60.jpg)
⚫︎
⚫︎
⚫︎
![Page 61: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/61.jpg)
let obj = MyClass(value:10) obj.value
@interface MyClass : NSObject
@property (readwrite) NSInteger value; - (instancetype)initWithValue:(NSInteger)value;
@end
![Page 62: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/62.jpg)
![Page 63: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/63.jpg)
![Page 64: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/64.jpg)
![Page 65: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/65.jpg)
![Page 66: 2014年からSwiftを振り返る! #cswift](https://reader031.vdocuments.net/reader031/viewer/2022021814/58f2a9201a28ab7d788b45a3/html5/thumbnails/66.jpg)