去年の年末に素晴らしいサービスが登場しました。
その名も「objc2swift-web」。
なんと、Objective-Cコードをペーストすることで、自動でSwiftに変換してくれる便利なウェブサービスで、いつかはしなきゃと思っていたコンバート作業を大きく背中を押してくれるサービスとなりました。
今回、コンバートしたのはこのアプリです。ほぼObjective-Cで書いたアプリでした。(本日Swift版に書き換えてリリースしました!)↓↓
Swiftにコンバートする前のプロジェクトのコード行数は約2800行。(自分で書いたコードを対象。フレームワークは除く。)
コンバートに費やした時間は、エラー修正、デバッグ、休憩も含めて大体丸1日くらいですね。慣れればもっと早くできると思います。Foundationだけでなく、UIKitのコードも、バシバシSwift化してくれるのが嬉しいですね。(以前、人力で全てやったことがありますが、あの時は地獄だった・・・。すごく勉強にはなったけど。)
コンバートした結果、やはりSwiftによって.hファイルや宣言がいらなくなった恩恵もあって、プロジェクトのコード行数は約2020行まで減らせました。ファイル数もぐっと減り、約41ファイルあったものも、26ファイルにまで落とせました。
やはりSwift化するとXcodeがめちゃくちゃ使いやすくなりますね。関数へジャンプするときは直接処理に飛んでくれますし、見た目もめちゃめちゃ視認性が高くなりました。
Before
After
ただ、今回使ってみたことで、要望も出てきました。
例えば、NSURLを作る際、Objective-Cではこのように書きます。↓↓
[NSURL URLWithString:urlStr]
objc2swiftは、このように変換します。↓↓
NSURL.URLWithString(urlStr)
Swift2だと正しくはこのように書きます。↓↓
NSURL(string: urlStr)
つまり、WithString系のメソッドだと、まだうまくコンバートできないんですね。
ただ、これらの問題は、開発者の@taketo1024さんにご報告させていただいたところ、快く聞き入れていただき後日対応していただけるそうです。感激!(githubにて要望を受け付けているそうです!)
この辺がうまくコンバートされたら、またさらにコンバート作業が捗ることになりそうです。
というわけで、objc2swift-webによって、重い重い作業だったObjective-CアプリのSwift化がとても楽にできました。同じ重さを感じている開発者の方々、ぜひ使ってみてはいかがでしょうか?↓↓