objc2swift (続・自動変換の野望)

22
Obj-C Swift 自動変換の野望 @taketo1024 2015/06/16 potatotips #18

Upload: taketo-sano

Post on 28-Jul-2015

1.415 views

Category:

Software


1 download

TRANSCRIPT

Page 1: objc2swift (続・自動変換の野望)

Obj-C → Swift 自動変換の野望

@taketo1024

2015/06/16 potatotips #18

Page 2: objc2swift (続・自動変換の野望)

次なるプロジェクトに取り組み中

Page 4: objc2swift (続・自動変換の野望)

WWDC2015 参加してきました!

SwiftPanel @ Realm で Swift の生みの親 Chris Lattner に会えて感激!

Page 5: objc2swift (続・自動変換の野望)

本題

Page 6: objc2swift (続・自動変換の野望)
Page 7: objc2swift (続・自動変換の野望)

動機• 新しいプロジェクトなんだから Swift で書きたい!

• 過去のコード資産はできるだけ使い回したい。

• でもコードを全部書きなおすのは面倒臭い。

→ 機械的な作業は機械がやるべきに決まってる。

Page 9: objc2swift (続・自動変換の野望)

ANTLR文法ファイル Parser

2秒でわかる ANTLR

Page 10: objc2swift (続・自動変換の野望)

@interface A : NSObject

@end

Obj-C

class A : NSObject {

}

Swift

あのときのDEMO

Page 11: objc2swift (続・自動変換の野望)

かなり進化しました!

Page 12: objc2swift (続・自動変換の野望)

@interface A : NSObject

@end

Obj-C

class A : NSObject {

}

Swift

.h / .m ファイルの merge

@implementation MyClass

@end

Page 13: objc2swift (続・自動変換の野望)

Obj-C

self.somethingWithArg1("hello", arg2: 0)

Swift

method-call

[self somethingWithArg1:@"hello" arg2:0];

Page 14: objc2swift (続・自動変換の野望)

Obj-C

for var i = 0; i < 10; i++ { for var j = 0, k = 1; j < 5; j++ { foo = self.hoge() } }

Swift

control-flow

for (int i = 0; i < 10; i++) { for (int j = 0, k = 1; j < 5; j++) { foo = [self hoge]; } }

Page 15: objc2swift (続・自動変換の野望)

many many more!• primitive-types

• class-method

• enum

• protocol

• property

• block -> closure

• stringWithFormat

• error reporting

Page 16: objc2swift (続・自動変換の野望)

実際に現プロジェクトで使ってます

• iOS 開発メンバー 4人(including me)

• 既存コードを変換し、まずビルドが通るように修正する。

• その上で Swift っぽくいい感じに書き直していく。

→ だいぶ開発効率が上がるし、機械的な変換作業から解放されエンジニアとしての生きがいを感じられる。

Page 17: objc2swift (続・自動変換の野望)

まだできてないこと

• 宣言後1回しか代入してなかったら let にする

• Optional 周りの改善

• Foundation / UIKit など既存 API への最適化

Page 18: objc2swift (続・自動変換の野望)

OpenSourced!

https://github.com/yahoojapan/objc2swift

Scala Programmer Wanted!!!

Page 19: objc2swift (続・自動変換の野望)

and also...

Page 20: objc2swift (続・自動変換の野望)

Web UI

近日公開 & OSS 化!

Page 21: objc2swift (続・自動変換の野望)

DEMO