Contents
はじめに
iOSアプリ開発において、だいたいのアプリには何かしらのライブラリが入っているのではないかなと思います。初心者の場合わりとこのあたりで躓いてしまう人が多いのではないのかなと思います。そこで今回はiOS開発において避けて通ることはできないライブラリの導入の仕方をまとめていきます。
ライブラリとは
ライブラリというのは、便利機能をまとめてくれて使いやすくしてくれているものです。色んな人が公開してくれていて、ありがたいことに自由に使うことができます。作るの大変だなーって思ってたとしても選ぶライブラリ次第ではそれさえ導入してしまえば自分で実装する部分は一瞬なんてことも合ったりします。多くのライブラリはgithub
で公開されています。
ライブラリ導入ツール
開発しているアプリに使いたいライブラリを導入するためにはそれ用のツールが用意されています。
iOS開発で主流なのが、
- CocoaPods(ココアポッド)
- Carthage(カルタゴ or カーセッジ)
の2つです。
今回はCocoaPods
を利用してライブラリを導入したいと思います。
CocoaPodsのライブラリをインストールするまでの手順
CocoaPodsをインストールする
まずはCocoaPods
をインストールします。
これにはRuby
の環境が必要になりますが、Mac
を使っている場合はデフォルトで備わっているので大丈夫です。
最初にターミナルで以下のコマンドを打ちましょう。
sudo gem update --system
ちなみにですがこのgem
というコマンドがRuby
のコマンドになっています。
次に、
sudo gem install cocoapods
または、エラーになる場合は、
sudo gem install -n /usr/local/bin cocoapods
を打ちましょう。
その後に、
pod setup
このコマンドを叩けば完了です!
この手順はパソコンが同じであれば1回やってしまえば他のアプリを作成する場合でも2回め以降はやる必要はありません。
Podfileの設定
ここから実際に、ライブラリを入れる手順になってきます。
CocoaPods
の場合、Podfile
というファイルでどのライブラリをいれるかなどの管理をしていきます。
まずはこのPodfile
を作成していきます。
ターミナルでプロジェクトファイルがある場所へと移動した状態で、
pod init
と叩いてください。
それによって自動的に中身もテンプレが入った状態のPodfile
が作成されます。
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'SampleApp' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for SampleApp
target 'SampleAppTests' do
inherit! :search_paths
# Pods for testing
end
target 'SampleAppUITests' do
inherit! :search_paths
# Pods for testing
end
end
こんなかんじのファイルが作成されました。
僕はバージョン1.3.1
を使用しています。
1.0.0
より以前のものはこれとは違った形で作成されるのでバージョンアップすることをおすすめします。
Podfile
に関して今回のようにpod init
しなくても作成することはできなくはないのですがもろもろの設定をこの1つのコマンドでやってくれるのでこれでやるほうがいいと思います。
これで準備が整いました。
実際にライブラリをインストールする
SDWebImageをインストールする
今回SDWebImage
というライブラリを入れてみたいと思います。
これは画像をURLから表示させたり画像をキャッシュさせたりするときに便利なライブラリでよく使われます。
ライブラリを導入したい場合はそのライブラリのgithub
のページに飛びます。
SDWebImageのgithubのページはこちらです
Readme
の部分に導入の仕方がおそらく書いてあると思うので、CocoaPods
での導入の仕方が書いてある部分を探します。
pod 'SDWebImage', '~> 4.0'
というように書くようにという部分がありました。
だいたいの場合は、
pod '「ライブラリの名前」', '「バージョン指定」'
で書かれていて、「,」移行のバージョン指定の部分は指定があるだけで大丈夫です。指定しない場合は最新版が入ります。
バージョン指定の仕方ですが、いろいろな仕方があって、
条件 | 指定 |
---|---|
完全一致 | ‘1.0’ |
1.0より上 | ‘> 1.0’ |
1.0以上 | ‘>= 1.0’ |
1.0未満 | ‘< 1.0’ |
1.0以下 | ‘<= 1.0’| |1.0.1以上1.1未満|’~> 1.0.1’ |
というようになっています。
Podfileに追加
今回は先程の、
pod 'SDWebImage', '~> 4.0'
をPodFile
に追加していきます。
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'SampleApp' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for SampleApp
pod 'SDWebImage', '~> 4.0' // この行に追加しました
target 'SampleAppTests' do
inherit! :search_paths
# Pods for testing
end
target 'SampleAppUITests' do
inherit! :search_paths
# Pods for testing
end
end
上の例のように書き換えてください。
これが完了したらターミナルでprojectファイル
がある階層で
pod install
と打ちましょう。
そうするとライブラリのインストールが始まります。
このようになればインストール完了です!
SDWebImage
を使って画像をいれることができました。(出典:https://moshimodogu.com/)
他にもライブラリをインストールしたい場合
さらに追加したい場合は同様にしてPodfile
に導入したいライブラリを書いて、pod install
をすれば大丈夫です。
Podfile.lockとは
ところで、先程SDWebImage
を導入しましたが、その際に行ったpod install
の後にPodfile.lock
というファイルがいつの間にか出来上がっています。
これは現在どのバージョンのどのライブラリがインストールされているかを記録しているファイルです。
PODS:
- SDWebImage (4.1.0):
- SDWebImage/Core (= 4.1.0)
- SDWebImage/Core (4.1.0)
DEPENDENCIES:
- SDWebImage (~> 4.0)
SPEC CHECKSUMS:
SDWebImage: 0e435c14e402a6730315a0fb79f95e68654d55a4
PODFILE CHECKSUM: f707910419a4ae47e7ede6817a45eeef6ba8a928
COCOAPODS: 1.3.1
こんなかんじになっています。
pod install
をする場合は、このPodfile.lock
をみて、インストールされていないものがあればインストールをしてくれるという仕組みになっているわけですね。
ライブラリのバージョンを更新する方法
一度インストールしたライブラリのバージョンを変更したい場合はどうすればよいでしょうか。
その場合は、
pod update
というコマンドを叩きます。ただし、これをするとPodfile
にかかれているライブラリ全てがバージョン指定の範囲内で最新バージョンにアップデートされてしまうので注意です。
個別にアップデートしたい場合は、
pod update [ライブラリ名]
複数指定したい場合は
pod update [ライブラリ1] [ライブラリ2]
のようにスペースで区切ってつなげていけば大丈夫です。
まとめ
- インストールしたいライブラリは
Podfile
で管理 pod install
でインストールpod update
でアップデート(個別指定もできる)
このようなかんじでした。どこかのタイミングでCarthage
についても記事を書こうかなと思います。