Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

3,453 views

Published on

ObjC -> Swift 自動変換器の開発

Published in: Software
  • Be the first to comment

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

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

×