Swift ハジメマシタ


金曜日の夜、帰宅したら<a href="http://www.amazon.co.jp/gp/product/4797380497/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=4797380497&linkCode=as2&tag=neira-22">詳解 Swift</a><img src="http://ir-jp.amazon-adsystem.com/e/ir?t=neira-22&l=as2&o=9&a=4797380497" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />が届いてた！この著者にはObjective-C本でもお世話になりました。


[![詳解 Swift](https://qiita-image-store.s3.amazonaws.com/0/4107/f7e3cc19-efa9-5bcc-4da8-b6e756b1f1a6.jpeg "1978703_827978367245565_7254007887600960909_n.jpg")](http://www.amazon.co.jp/gp/product/4797380497/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=4797380497&linkCode=as2&tag=neira-22)


家族とMacとネット環境さえあれば、どこでも生きていける[@neiraza](http://blacksheep.hatenablog.com/)です。
今年の10月から[サイバーエージェント](https://www.cyberagent.co.jp/)のアドテク本部AdTech NativeUnitてとこで、iOSおよびAndroid向けのSDKをつくってます。

### 自分のアプリをSwiftで書きなおしてみよう
自分の[iOSアプリ ココ天気](https://itunes.apple.com/us/app/koko-tian-qi/id917156854?l=ja&ls=1&mt=8)をObjective-CとSwiftの混在で書けば、滞っていた更新作業も捗り、Advent Calendarのネタも書けて一石二鳥じゃん！っておもったわけです。

![icon-40@2x.png](https://qiita-image-store.s3.amazonaws.com/0/4107/19611706-8807-a970-c1d1-ad3c54683746.png "icon-40@2x.png")


## 開発時に見たリンクなど

Obj-CとSwiftを両方みれる所が便利なような気がする
[iOS Developer Library](https://developer.apple.com/library/ios/navigation/#section=Resource%20Types&topic=Reference)

Swiftって、どうやって書くのかなーとか分からない時に読みながら書いてた
[The Swift Programming Language](https://developer.apple.com/library/ios/documentation/swift/conceptual/Swift_Programming_Language/index.html#//apple_ref/doc/uid/TP40014097-CH3-XID_0)

一箇所だけハマったのでコレつかっちゃいました
[stackoverflow](http://stackoverflow.com/)
全然関係ないけど、stackoverflow JP private betaって、みんなやってます？

## SwiftとObjective-Cの連携

最初の挿絵がカッコ悪いけど、読まないと始まらない！
[Swift and Objective-C in the Same Project](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html)

### そして、Objective-CからSwiftを呼び出そうとして激ハマりへ

>The name of this header is your product module name followed by adding "-Swift.h".

前述した公式ドキュメントに記載があったので、
呼び出し元であるObjective-C側にimport文を書いても怒られる。

__なんでだよ。。。__

つうか僕のアプリのmodule nameって *underscore* じゃなくて *hyphen* が入ってるな。
そういやJavaでpackage nameに使うdomainにhyphenが入ってると怒られるから、underscoreで置き換えたりしたっけかと思い、探してたらこんなの見つけた。

[Swift to Objective-C header not created in Xcode 6](http://stackoverflow.com/questions/24062618/swift-to-objective-c-header-not-created-in-xcode-6)、こいつによると *hyphen* がダメぽみたい。
なので、これで解決した。
![スクリーンショット 2014-11-29 22.54.28.png](https://qiita-image-store.s3.amazonaws.com/0/4107/2ae807f3-8536-9629-030d-cbce03875b94.png "スクリーンショット 2014-11-29 22.54.28.png")

## AFNetworkingを使い続ける？、それともAlamofireを使い始める？
既存、AFNetworkingを使っている場合、あえて変更する必要がなさそうに思えるのですが、どうなのかな。
僕は今回はAFNetworkingのままにしました。

ちなみに下記は僕が使用している主なライブラリです。
他のライブラリとか、どんな状況になっているんだろ・・・。
みなさん、どうしてるか教えてくださーい！

* [AFNetworking](https://github.com/afnetworking/afnetworking)
* [SDWebImage](https://github.com/rs/SDWebImage)
* [Bolts-iOS](https://github.com/BoltsFramework/Bolts-iOS)

## CocoaPodsを使うしかない？
[Carthage](https://github.com/Carthage/Carthage)とか他のツールを使うのもありなんですが、ライブラリ管理ツールは安定したやつを使いたいなって、つい思ってしまいます。
でもやっぱり、Swift用のやつを使いたいので、__他にもこんなのを使ってるよ！とかあれば教えてください！__

## Swiftでアプリの一部を書き直した感想

Objective-Cを理解していれば、Optionalの所とライブラリ管理（ライブラリの選択含む）以外は書いて実行するだけなら、特に苦になるところはなかったです。
ただし、まだまだSwift用のライブラリが豊富なわけではなく、既存の資産を使っていくわけだし、IDEが強くサポートしてくれないと厳しい所もある感じ。


とはいえ、まだまだv1.1とか若い言語なので、これから！これから！