ぽこひでブログ

ほのぼの大学4年をやってる [ぽこひで] の学生エンジニアブログ?

Swift初心者がCocoapodsでAlamofireをimportするだけでつまづいた。初心者に伝えたい。いきなりググるな。

どうも ネイティブ初心者のぽこひでです从‘∀‘从

昨日からレベル1の見習いネイティブエンジニアをバイトで始めました。とりあえず現存するWordpressサイトのアプリ版を作ってみようということでシンプルにAPI叩いて取得した記事一覧をアプリ上で見れるようにしようってことで定番らしいAlamofireを入れてみることに。

と、いざやり方を調べたら、githubページに行ってDownload Zipして、展開した中にあるAlamofireのライブラリをXcode内にドラッグアンドドロップで読み込んでdestinationに指定して...なんか色々やって...と。感じたこと。

めんどくさそう(。-`ω-) んー

と調べたらあったのが、CocoaPods。大抵のライブラリをサポートしていて、こいつを使ってやれば結構簡単に入れれるそうなので、早速入れてみた。Macを使っているので、Rubyは標準搭載。このCocoapodsはgemで入れるらしいので早速コマンドかたかた

sudo gem install cocoapods

ダウンロード完了!

ということで、早速Xcodeでnew projectしたフォルダ内に行って

pod init

をしてPodfileというものを作成する。その作成したフォルダは初期状態でこうなっている

# Uncomment this line to define a global platform for your project
# platform :ios, '8.0'
# Uncomment this line if you're using Swift
# use_frameworks!

target 'your_app_name' do
end

今回はテストの方は作っていなかったので 'your_app_name_test' みたいなのは生成されなかった。この 'your_app_name'のところに使うライブラリを書いていくってことで、AlamofireとSwiftyJSONを使う予定だったので、早速書いていく。それと、Swiftで書くのでuse_framework!をコメントから外して、iosも指定すると

platform :ios, '8.0'
use_frameworks!

target 'your_app_name' do
 pod "Alamofire"
 pod "SwiftyJSON"
end

このようになったらあとは、

pod install

めっちゃ読み込んでくれる。終わったら、多分生成されてるはずの.xcworkspace拡張子のファイルを開いてそこ上で作業していく。と、ここまでは結構順調だった。そうimportするまでは。

viewControllerに移動してimport UIKitされている行の下にimport Alamofireを入力してセーブすると早速エラー。

no such module Alamofire

(ノ゜0゜)ノ オオォォォォォォーまいガー

いやいや、cocoapodsで入れたやーっん。(´・ω・`)てなわけでググりまくりました。

vdeep.net

とかなんか色んなサイトを見て、手動でAlamofireを入れたりしたけど無意味。一向にエラーが消えることはなかった。ので、真剣にエラーと向き合ってみることに。

あれ。。とりあえずimport Alamofireコメントアウトしてなにもviewは変更していない状態に戻すと、saveはできる。だが、ビルドするとエラーが。完全にAlamofireのフレームワーク内からエラーが生じている。

ハァ?(゚Д゚)y─┛~~ん

フレームワークぶっこわれてんじゃねぇか!!とか思って、意を決して今更ながらgithubのREADMEとかをちゃんと読む。

github.com

すると書いてあった。

Requirements

解決策

この環境とどこが違うかをみると、platform iOS 8.0+はPodfileで8.0と指定しているので大丈夫そう。じゃあ問題はXcode7.2+だ。Xcodeのバージョンを見てみる。

http://commentphotos.com/gallery/CommentPhotos.com_1406833846.jpg

Xcode 7.1。おい、俺。なぜアップデートしなかった。なら、あとはアップデートするだけじゃん。よーしAppStoreいこーっと。

...

アップデートできないんですけど(´・ω・`) これもググると結構アップデートできない人がいるらしい。

  • iTunes helperというプロセスが邪魔しているとか
  • StoreAgency というプロセスが邪魔しているとか

なんか色々解決策があったけど、どれを試してもダメだった。最終手段として、Xcodeを再インストールすることに。

Xcodeは確か4.0くらいからXcode.appを削除するだけで簡単にアンインストールできるらしいので、削除。これがまぁ時間のかかること。1,2時間ぐらい削除するだけでかかりました。削除し終わってから、App Storeに再度訪問。Xcodeをインストールしてやる〜ダウンロード!

http://commentphotos.com/gallery/CommentPhotos.com_1406833846.jpg

あなたのOSの環境ではXcode 7.1までしかダウンロードできませんがよろしいですか。

はいー。全ての原因は過去の自分にありました。App Store上でXcodeがアップデートできなかったのも、過去の自分がOSをまだYosemiteのままだったから。すぐにOSをバージョンアップ。これがまぁまた時間がかかる。なんかアップデートが終わったらライブ変換とか言って、勝手に変換しまくる個人的にめっちゃ嫌な機能が増えてたからすぐにオフにしたけど、なんとかやっと最新版にMacを更新したので、Xcodeをストアからダウンロードして、先ほど通りcocoapods経由でライブラリを入れたらやっと動きました!!!

嬉しいo(⌒─⌒)o

ということで、今回の教訓はあれですね。

ググるにしても、まずは自分の環境を知っておけ!

ググった結果は必ずしも正しくありません。今回も色々ググっても、2,3年前の古い情報が普通にあふれている。なので、まずは自分の環境を知った上でエラーをちゃんと読んでそれがどこのエラーなのかをちゃんと認識する。今回の自分の恥ずかしいところは

  • 自分の環境をしっかりと認識していなかった
  • 最初のエラーの時点で速攻で 「cocoapods no such module Alamofire」とか調べていた → これは結局エラーをちゃんと見たらAlamofireフレームワーク自体からエラーが出ていた。

以上、初心者ならではのエラーに直面したという話でした。初心者にとって良い情報になればいいな。