iPhone
iOS
Swift

SwiftでiOSアプリ開発をしてみて(#^ω^)ピキピキ な点4つ(2014/12現在)

More than 3 years have passed since last update.


Swift自体の不満というよりも環境への不満が大きいですが

最近になってようやく、SwiftでiPhoneアプリ開発を始めました。

やはり慣れない言語と環境に変わって、色々と不満な点が出てきて、たまに(#^ω^)ピキピキ しながら開発しています。そんな(#^ω^)ピキピキ なところをまとめてみました。

どっちかというとSwift自体の問題よりも、Xcodeとかライブラリとかへの不満が多いですけどもね。


1.Xcodeが SourceKitService Crushed エラーを出しまくる

これ、ほんとーーに頻発するので(#^ω^)ピキピキ 度は高いです。

普通にコードを書いていると、SourceKitService Crushedエラーが表示されて、テキストエディタ部の色が単色になり、補完が効かなくなります。


解決方法?

stackoverflowにも問題が上がっていました。

ios - Swift SourceKitService Crashed - Stack Overflow

上の記事によれば、


~/Library/Developer/Xcode/DerivedData


を削除すると治ると書いてあったんですが、自分の場合は改善せずでした。

Xcodeはバージョン6.1です。同じXcodeでObjective-Cアプリを書いていた時はまったく問題なかったんですけどねえ。最近はエラーを無視してそのままコードを書き続けられるようになりました...w。


Xcode6.1.1で修正された?(2014/12/03 追記)

2014/12/03に正式リリースのXcode 6.1.1で、"Fixes SourceKit crushes when working with Swift" となったようです。

しかし、2時間ほど使ってみたところ、何度かSourceKit crushが発生..。

まだ(#^ω^)ピキピキ は続きそうです...。


2.Xcodeのリファクタリング機能に対応していない

これも Xcode6.1の問題。

「変数名をわかりやすい名前に修正したいなー」という時、Edit > Referctor > Rename とやると…。

cant_refactor_swift_code.png

"Xcode can only refactor C and Objective-C code.”

"Xcode can only refactor C and Objective-C code.”

うーん、せっかくApple自ら新しい言語作ったのだから、そこは対応して欲しい(#^ω^)ピキピキ


3.サンプルコードが少ない

iOS開発関連で検索を行うと(例えば「UIView Animation」とか)、ヒットするのはサンプルコードがObjective-Cで書かれたサイトが大半です。やはり、長年使われてきたObjective-Cの資産は蓄積されていますね。

で、サイトの情報を参考にして自分のプロジェクトに取り入れるわけですが、この時にSwiftに書きなおすのが面倒です。「Objective-Cで書いていたら、移植の手間がなかったのにな(#^ω^)ピキピキ」と思うこともしばしば。

ある程度ソースコードがまとまっているなら、Objective-CをBridgeしてそのまま利用すればいいのですけどもね。


4.いい感じのライブラリ管理ツールがない

Alamofire の作者さんが書いてましたが、


Due to the current lack of proper infrastructure for Swift dependency management, using Alamofire in your project requires the following steps:


今のところ、CocoaPods並みにいい感じのライブラリ管理ツールが無いみたいです。

で、代わりにGitのsubmodule機能を使ったりするんですが、これがわりと面倒(#^ω^)ピキピキ

まあ、今のところSwift製のライブラリが少ないということもあり、CocoaPodsを使ってObjective-Cのライブラリを使用する機会が多いので、そんなには気にならないですけども。。


結論:新言語への移行期なので、まだ我慢は必要かも

急に新しい言語が導入されたということで、周辺環境が追い付いていない感じですね。発表されてから、まだ半年ですし。

Xcode自体も十分なSwift対応ができていない(リファクタリングできない等)ですし、今までObjective-Cで開発していた人にとっては、ストレスが溜まるかもしれません。

ただ、これから環境が整っていけば、Swiftの方が生産性も良くなるんじゃないですかねー。個人的には、あと1年もすれば、状況はだいぶ変わると思います。