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

Post on 28-Jul-2015

1.415 Views

Category:

Software

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

@taketo1024

2015/06/16 potatotips #18

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

WWDC2015 参加してきました!

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

本題

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

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

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

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

ANTLR文法ファイル Parser

2秒でわかる ANTLR

@interface A : NSObject

@end

Obj-C

class A : NSObject {

}

Swift

あのときのDEMO

かなり進化しました!

@interface A : NSObject

@end

Obj-C

class A : NSObject {

}

Swift

.h / .m ファイルの merge

@implementation MyClass

@end

Obj-C

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

Swift

method-call

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

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]; } }

many many more!• primitive-types

• class-method

• enum

• protocol

• property

• block -> closure

• stringWithFormat

• error reporting

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

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

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

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

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

まだできてないこと

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

• Optional 周りの改善

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

OpenSourced!

https://github.com/yahoojapan/objc2swift

Scala Programmer Wanted!!!

and also...

Web UI

近日公開 & OSS 化!

DEMO

top related