[iOS]「CocoaPods」を使用したライブラリのセットアップ方法

# CocoaPodsとは
CocoaPodsとは、SwiftとObjective-Cに置ける**ライブラリ管理ツール**。
52,000を超えるライブラリを扱っているみたい。（すごいね！）

# セットアップ方法
今回は、TableViewを使った入力フォームや設定画面などを簡単に作成できるライブラリである、Eurekaをインポートするところまで行う。

Eurekaについて知りたい場合は以下を参照してください。
https://github.com/xmartlabs/Eureka


##動作環境
- CocoaPods 1.5.3
- Eureka ~~3.0.0~~ 4.3.0 (Swift 4.2, Xcode 10 and iOS 12に対応)
- macOS High Sierra 10.13.6
- Swift 4.2
- Xcode 10.0

##インストール
```
sudo gem install cocoapods
```
これだけで完了


##セットアップ
1.使用するプロジェクトファイル（xxx.**xcodeproj**）がある場所に移動し、以下のコマンドを実行

```
pod init
```

すると、以下のようなPodfileが作成される。

```plaintext:Podfile
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'MyProject' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for MyProject

  target 'MyProject_DemoTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'MyProject_DemoUITests' do
    inherit! :search_paths
    # Pods for testing
  end

end
```


2.Podfileを以下のように編集

```plaintext:Podfile
source 'https://github.com/CocoaPods/Specs.git'   #追加
platform :ios, '9.0' 　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　#コメントアウト解除

target 'MyProject' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for MyProject
  pod 'Eureka', '~> 3.0.0'　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　#追加

  target 'MyProject_DemoTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'MyProject_DemoUITests' do
    inherit! :search_paths
    # Pods for testing
  end

end
```

3.プロジェクトにライブラリをインストール

```
pod install
```
※なお、初期設定用のコマンドとして`pod setup`が用意されているが、**実行する必要はない**。
（`pod install`を初めて実行する際に、setupを実行してくれるから）

`pod install`の実行結果は以下。

```
$ pod install
Analyzing dependencies
Setting up CocoaPods master repo
  $ /usr/bin/git clone https://github.com/CocoaPods/Specs.git master --progress
  Cloning into 'master'...
  remote: Enumerating objects: 375, done.        
  remote: Counting objects: 100% (375/375), done.        
  remote: Compressing objects: 100% (322/322), done.        
  remote: Total 2496653 (delta 140), reused 35 (delta 35), pack-reused 2496278        
  Receiving objects: 100% (2496653/2496653), 578.42 MiB | 902.00 KiB/s, done.
  Resolving deltas: 100% (1457041/1457041), done.
  Checking out files: 100% (273050/273050), done.

CocoaPods 1.6.0.beta.1 is available.
To update use: `sudo gem install cocoapods --pre`
[!] This is a test version we'd love you to try.

For more information, see https://blog.cocoapods.org and the CHANGELOG for this version at https://github.com/CocoaPods/CocoaPods/releases/tag/1.6.0.beta.1

Setup completed
Downloading dependencies
Installing Eureka (3.0.0)
Generating Pods project
Integrating client project
Sending stats
Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.
```
はい、setupも一緒に実行してくれていることが確認できますね。

4.作成されたXcode workspaceを開く
（今後は、xcodeprojではなく、xcworkspaceを開いて編集、実行を行うようにする）

```
open MyProject.xcworkspace
```

5.ライブラリをインポート
Eurekaを使用するファイルに、以下を追記。

```
import Eureka
```

---
これで無事、Eurekaライブラリを使用して、コードを記述することが可能になりました！

なお、他のライブラリを追加したい場合は、Podfileにライブラリを追記した後に、

```
pod update
```
を実行することで、使用可能になります。

#追記（2018/10/9）
Eureka 3.0.0は、Swift 4.2, Xcode 10.0に対応していなかったため、最新版(2018/10/9 現在)である 4.3.0へアップデート

```plaintext:Podfile
source 'https://github.com/CocoaPods/Specs.git' 
platform :ios, '9.0' 　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　

target 'MyProject' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for MyProject
  pod 'Eureka', '4.3.0'　　　　　　　　　　　　　　　　          #<<<<<<<<<<<<<<<<<<<　変更

  target 'MyProject_DemoTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'MyProject_DemoUITests' do
    inherit! :search_paths
    # Pods for testing
  end

end
```

実行結果

```
$ pod update
Update all pods
Updating local specs repositories
  $ /usr/bin/git -C /Users/e9d26/.cocoapods/repos/master fetch origin --progress
  remote: Enumerating objects: 195, done.        
  remote: Counting objects: 100% (195/195), done.        
  remote: Compressing objects: 100% (83/83), done.        
  remote: Total 307 (delta 130), reused 104 (delta 104), pack-reused 112        
  Receiving objects: 100% (307/307), 44.61 KiB | 214.00 KiB/s, done.
  Resolving deltas: 100% (163/163), completed with 63 local objects.
  From https://github.com/CocoaPods/Specs
     c624420c5d6..628aca22090  master     -> origin/master
  $ /usr/bin/git -C /Users/e9d26/.cocoapods/repos/master rev-parse --abbrev-ref HEAD
  master
  $ /usr/bin/git -C /Users/e9d26/.cocoapods/repos/master reset --hard origin/master
  HEAD is now at 628aca22090 [Add] Valley 1.0.0

CocoaPods 1.6.0.beta.1 is available.
To update use: `sudo gem install cocoapods --pre`
[!] This is a test version we'd love you to try.

For more information, see https://blog.cocoapods.org and the CHANGELOG for this version at https://github.com/CocoaPods/CocoaPods/releases/tag/1.6.0.beta.1

Analyzing dependencies
Downloading dependencies
Installing Eureka 4.3.0 (was 3.0.0 and source changed to `https://github.com/CocoaPods/Specs.git` from `https://github.com/cocoapods/specs.git`)
Generating Pods project
Integrating client project
Sending stats
Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.

```

# 参考リンク

- https://cocoapods.org/
    - CocoaPods公式サイト
- https://eurekacommunity.github.io/
    - Eureka公式サイト