objc2swift (続・自動変換の野望)
TRANSCRIPT
![Page 1: objc2swift (続・自動変換の野望)](https://reader033.vdocuments.net/reader033/viewer/2022042818/55b6e330bb61eb75268b4870/html5/thumbnails/1.jpg)
Obj-C → Swift 自動変換の野望
@taketo1024
2015/06/16 potatotips #18
![Page 4: objc2swift (続・自動変換の野望)](https://reader033.vdocuments.net/reader033/viewer/2022042818/55b6e330bb61eb75268b4870/html5/thumbnails/4.jpg)
WWDC2015 参加してきました!
SwiftPanel @ Realm で Swift の生みの親 Chris Lattner に会えて感激!
![Page 5: objc2swift (続・自動変換の野望)](https://reader033.vdocuments.net/reader033/viewer/2022042818/55b6e330bb61eb75268b4870/html5/thumbnails/5.jpg)
本題
![Page 6: objc2swift (続・自動変換の野望)](https://reader033.vdocuments.net/reader033/viewer/2022042818/55b6e330bb61eb75268b4870/html5/thumbnails/6.jpg)
![Page 7: objc2swift (続・自動変換の野望)](https://reader033.vdocuments.net/reader033/viewer/2022042818/55b6e330bb61eb75268b4870/html5/thumbnails/7.jpg)
動機• 新しいプロジェクトなんだから Swift で書きたい!
• 過去のコード資産はできるだけ使い回したい。
• でもコードを全部書きなおすのは面倒臭い。
→ 機械的な作業は機械がやるべきに決まってる。
![Page 8: objc2swift (続・自動変換の野望)](https://reader033.vdocuments.net/reader033/viewer/2022042818/55b6e330bb61eb75268b4870/html5/thumbnails/8.jpg)
ANTLR v4
![Page 9: objc2swift (続・自動変換の野望)](https://reader033.vdocuments.net/reader033/viewer/2022042818/55b6e330bb61eb75268b4870/html5/thumbnails/9.jpg)
ANTLR文法ファイル Parser
2秒でわかる ANTLR
![Page 10: objc2swift (続・自動変換の野望)](https://reader033.vdocuments.net/reader033/viewer/2022042818/55b6e330bb61eb75268b4870/html5/thumbnails/10.jpg)
@interface A : NSObject
@end
Obj-C
class A : NSObject {
}
Swift
あのときのDEMO
![Page 11: objc2swift (続・自動変換の野望)](https://reader033.vdocuments.net/reader033/viewer/2022042818/55b6e330bb61eb75268b4870/html5/thumbnails/11.jpg)
かなり進化しました!
![Page 12: objc2swift (続・自動変換の野望)](https://reader033.vdocuments.net/reader033/viewer/2022042818/55b6e330bb61eb75268b4870/html5/thumbnails/12.jpg)
@interface A : NSObject
@end
Obj-C
class A : NSObject {
}
Swift
.h / .m ファイルの merge
@implementation MyClass
@end
![Page 13: objc2swift (続・自動変換の野望)](https://reader033.vdocuments.net/reader033/viewer/2022042818/55b6e330bb61eb75268b4870/html5/thumbnails/13.jpg)
Obj-C
self.somethingWithArg1("hello", arg2: 0)
Swift
method-call
[self somethingWithArg1:@"hello" arg2:0];
![Page 14: objc2swift (続・自動変換の野望)](https://reader033.vdocuments.net/reader033/viewer/2022042818/55b6e330bb61eb75268b4870/html5/thumbnails/14.jpg)
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 (続・自動変換の野望)](https://reader033.vdocuments.net/reader033/viewer/2022042818/55b6e330bb61eb75268b4870/html5/thumbnails/15.jpg)
many many more!• primitive-types
• class-method
• enum
• protocol
• property
• block -> closure
• stringWithFormat
• error reporting
![Page 16: objc2swift (続・自動変換の野望)](https://reader033.vdocuments.net/reader033/viewer/2022042818/55b6e330bb61eb75268b4870/html5/thumbnails/16.jpg)
実際に現プロジェクトで使ってます
• iOS 開発メンバー 4人(including me)
• 既存コードを変換し、まずビルドが通るように修正する。
• その上で Swift っぽくいい感じに書き直していく。
→ だいぶ開発効率が上がるし、機械的な変換作業から解放されエンジニアとしての生きがいを感じられる。
![Page 17: objc2swift (続・自動変換の野望)](https://reader033.vdocuments.net/reader033/viewer/2022042818/55b6e330bb61eb75268b4870/html5/thumbnails/17.jpg)
まだできてないこと
• 宣言後1回しか代入してなかったら let にする
• Optional 周りの改善
• Foundation / UIKit など既存 API への最適化
![Page 18: objc2swift (続・自動変換の野望)](https://reader033.vdocuments.net/reader033/viewer/2022042818/55b6e330bb61eb75268b4870/html5/thumbnails/18.jpg)
OpenSourced!
https://github.com/yahoojapan/objc2swift
Scala Programmer Wanted!!!
![Page 19: objc2swift (続・自動変換の野望)](https://reader033.vdocuments.net/reader033/viewer/2022042818/55b6e330bb61eb75268b4870/html5/thumbnails/19.jpg)
and also...
![Page 20: objc2swift (続・自動変換の野望)](https://reader033.vdocuments.net/reader033/viewer/2022042818/55b6e330bb61eb75268b4870/html5/thumbnails/20.jpg)
Web UI
近日公開 & OSS 化!
![Page 21: objc2swift (続・自動変換の野望)](https://reader033.vdocuments.net/reader033/viewer/2022042818/55b6e330bb61eb75268b4870/html5/thumbnails/21.jpg)
DEMO
![Page 22: objc2swift (続・自動変換の野望)](https://reader033.vdocuments.net/reader033/viewer/2022042818/55b6e330bb61eb75268b4870/html5/thumbnails/22.jpg)
Thanks!
Twitter: taketo1024Blog: http://taketo1024.hateblo.jp/