和洋風KAI

objc2swift-webを使って、Objective-CのアプリをSwiftにコンバートしてみた。

Photo by: Ruiwen Chua

去年の年末に素晴らしいサービスが登場しました。

その名も「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化がとても楽にできました。同じ重さを感じている開発者の方々、ぜひ使ってみてはいかがでしょうか?↓↓