iOS初心者がCarthage導入する💪


![header.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/171702/e28187f4-94a3-cfe6-8b6b-95a7b7e00e31.png)

## Carthageとは🏜

- Swiftで作られたライブラリ管理ツールです。
- https://github.com/Carthage/Carthage
- 読み方はカーセッジやカルタゴといくつか派閥がありますが、自分はカーセッジ派(パッケージとカーセッジの発音が似ている)に加わりました。
- ナウい💪

## Carthageの良いところ🤗

- コンパイル時間が短くなる(TDDがしやすくなるよ！やったね！)
  ライブラリ導入時にのみビルドするため！
- CocoaPodsと違いシンプルな構成

## Carthageの悪いところ😭

- 学習コストが高い
- 使用したいライブラリがCarthage対応していなければならない
- やることがCocoaPodやSwiftPackageManagerより多い

## 動作環境

- macOS Mojave 10.14.6
- Xcode 10.3
- Homebrew 2.1.9
- Carthage 0.33.0

## 前準備編 Homebrew インストール編
<img width="1437" alt="スクリーンショット 2019-08-06 9.58.11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/171702/8c167443-6866-c95b-434b-e4b57378446f.png">

- Homebrew公式ページのコマンドをコピー(コピーする範囲を選択して ⌘ + c )
  https://brew.sh/

  ```shell
  /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  ```

- "⌘ + space" を押して、Spotlight検索で terminal と入力して、エンターキーでアプリを起動します。

<img width="715" alt="スクリーンショット 2019-08-06 10.02.40.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/171702/9761a397-f881-a8bf-d320-e3ba2fd68e61.png">


- 起動したterminalに、先ほどコピーしたコマンドを貼り付けます。(⌘ + v)

- 無事貼り付けることができましたら、エンターキーを押して実行します。

- 終了するまで、コーヒー豆でも挽きながら待ちましょう。

## Carthage インストール編

- terminal で以下を入力します。

```shell
brew install carthage
```

おわりっ！！！

## ライブラリをインストール編

本題です。自分がまだ、曖昧なところです。

大まかな流れは

1. Cartfile(プロジェクトで利用するライブラリを定義するファイル)を作る
2. Cartfileを編集する
3. ライブラリをビルド
4. Xcodeのプロジェクトにビルドしたライブラリを入れる
5. Run Scriptを書く！

## 1. Cartfileを作る

```shell
touch Cartfile
```

## 2. Cartfileを編集する

```shell
vim Cartfile
```

Carthage対応している使用したいライブラリを記述します。

今回は、例としてAlamofireを導入していきたいと思います。
https://github.com/Alamofire/Alamofire

```shell
github "Alamofire/Alamofire"
```

   ※ Vim の基本操作
  `i`キーで入力モードにして、ライブラリの情報を記述
記述ができたら`esc`を押して入力モードを解除、その状態で`:wq`を入力しエンターで保存して終了となります。



## 3. ライブラリをビルド

```shell
carthage update --platform iOS
```

   ※ "--platform iOS"をつけないとwatchOSやOSXの分までビルドしてしまいます。
   コーヒーでも淹れながら待ちましょう。

## 4. Xcodeのプロジェクトにビルドしたライブラリを入れる

   プロジェクトファイルの"Gereral"タブ
<img width="1440" alt="スクリーンショット 2019-08-06 20.59.01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/171702/8a11d030-50b4-5a8f-477d-7a145f262891.png">
AddOther
<img width="1440" alt="スクリーンショット 2019-08-06 21.23.50.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/171702/a1a2e484-0018-59ed-19d8-32b762da56cc.png">
 以下のディレクトリに作成したframeworkが入っています。

```shell
/Carthage/Build/iOS/Alamofire.framework
```
<img width="1440" alt="スクリーンショット 2019-08-06 21.25.07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/171702/176c1622-4587-8181-c398-61b85310060b.png">

プロジェクトファイル > General > Linked Frameworks and Libraries




## 5. Run Scriptを書く！

プロジェクトファイル > Build Phases
の左上の+ボタンから`New Run Script Phase`を選択し、新しいRun Scriptを追加します。
<img width="1440" alt="スクリーンショット 2019-08-06 21.29.12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/171702/b773bdf3-b7e7-41b6-13aa-85bc67753901.png">

「Shell」の下に以下のコマンドを記述します。

```shell
/usr/local/bin/carthage copy-frameworks
```
<img width="1440" alt="スクリーンショット 2019-08-06 21.31.41.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/171702/67a7aac4-119e-1b1a-4cf8-263281ad2463.png">

次に「input Files」にて＋ボタンを押し、以下のようにframeworkの情報を記述します。

```shell
$(SRCROOT)/Carthage/Build/iOS/Alamofire.framework
```
<img width="1440" alt="スクリーンショット 2019-08-06 21.32.52.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/171702/66cd19dc-3307-c1ca-0ee6-b8a4f4f76ac3.png">


これで準備はOK!
あとは、必要な箇所でimportしまくって、使い倒しましょう！

## 参考文献

https://qiita.com/ShinokiRyosei/items/9b856ebdec5379b6c631

https://qiita.com/yutat93/items/97fe9bc2bf2e97da7ec1

https://qiita.com/omochimetaru/items/3a8441be9152ea6619b6

https://egg-is-world.com/2016/02/01/carthage-cartfile/

https://www.slideshare.net/syoikeda/carthagen

https://qiita.com/s-harada/items/47295d653ef0cf34d540

https://qiita.com/nori0620/items/b81ae171f0e82b0c2d8a