CocoaPodsにライブラリを公開したときの手順

# はじめに

初めてCocoaPodsにライブラリを公開した際に、すんなりいかなかったのでその手順についてメモしておきます。参考になったら嬉しいです。

#### 実行環境
- OS X El Capitan 10.11.6
- git version 2.8.3
- CocoaPods 1.1.1
- Xcode version 8.1

# 手順
### 1. ライブラリの作成

任意のディレクトリ配下で以下のコマンドを叩く。
`$ pod lib create [任意のライブラリ名]`

いくつか質問されます。

```
What language do you want to use?? [ Swift / ObjC ]
> Swift                     

Would you like to include a demo application with your library? [ Yes / No ]
> Yes

Which testing frameworks will you use? [ Quick / None ]
> None

Would you like to do view based testing? [ Yes / No ]
> No
```

今回はテストについては考えていなかったので`None`、`No`にしました。分からなければこれで大丈夫です。

`Demo application`を用意する場合は`Yes`にする。これはだいたい用意してるんじゃないですかね。

ここまでやるとライブラリの雛形が作られる。（[任意のライブラリ名]のディレクトリがあるはずです。）


### 2. Githubに公開
この段階でなくても構いませんが、早いうちにGithubにあげておきましょう。

Githubに生成したライブラリ名と同じ名前でリモートリポジトリを作成する。
確か生成された[ライブラリ名]ディレクトリはGit管理されていなかったので、

```
$ git init
```

してからリモートにプッシュします。

```
$ git add .
$ git commit -m "commit message"
$ git remote add origin https://github.com/[User Name]/[ライブラリ名].git
$ git push origin master
```


### 3. ライブラリの編集

`/Pod/Classes/ReplaceMe.swift`を削除し、ここにライブラリの機能として提供するファイルを挿入していきます。

`/Example/[ライブラリ名].xcworkspace`を開く。基本ここからプロジェクトを開きましょう。

この時、私の場合はtest関係のエラーがいくつか出ました。
明確な解決方法はわかりませんでしたが、test部分のコードを適当にコメントアウトしたり、`Podfile`のtest部分の記述を削除したらエラーが消えました。

Xcodeの`/Example for [ライブラリ名]`グループ内に`ViewController.swift`などが用意されているので、追記してデモアプリを作成する。

`$ pod install`

`Podfile`に以下のようなコードを追加しておく。`['SWIFT_VERSION'] = '3.0'`は適宜変更してください。

```
post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['SWIFT_VERSION'] = '3.0'
        end
    end
end
```

`import`はうまくできるかなど確認する。Runで実行できたらひとまずOKです。

### 4. READMEを記述

最低限記述すべき内容はテンプレートで書かれているので、部分的に訂正したり、他のライブラリから引用する。

### 5. podspecの修正

これも部分的な変更になる。`/Podspec Metadata`グループから編集できます。

バリデーションチェックを行う。`podspec`が適切かどうか判断してくれます。
`$ pod spec lint [ライブラリ名].podspec`

エラーが出れば対応していきます。私の場合以下の変更を加えました。

1. `Xcode/Preferences/Locations/CommandLineTools`でXcodeのバージョンを指定する。

2. `.swift-version`ファイルを作成し、バージョン番号を指定する。(例：`3.0`を記述)
参考：　[CocoaPodsへのライブラリのアップロードと注意点](http://qiita.com/shoheiyokoyama/items/a419c69114c2e6725f95)

3. `podspec`の`description`を修正する。

```
    - WARN  | description: The description is shorter than the summary.

[!] The spec did not pass validation, due to 1 warning (but you can use `--allow-warnings` to ignore it).
```

`summary`はライブラリの短い説明で、`description`はより詳細な説明になるようなので`summary`よりも長く記述しなければなりません。

### 5. タグをつける

commitコメントを"Release `1.0.0`.”にしてプッシュする。(または `0.1.0`)
`$ git add -A && git commit -m "Release 1.0.0.”`
こうすることでGithubでcommitの確認をした時にReleaseの状況がわかりやすいです。

最新のcommitにタグをつけてプッシュする。CocoaPodsで指定できるバージョンはtagで管理されるので忘れずにやってください。

```
$ git tag 1.0.0
$ git push --tags
```

### 6. CocoaPodsに登録・公開

Githubに登録しているAddressとNameで登録します。(初回だけになります。)
`$ pod trunk register [your mail address] [your name]`

以下のコマンドで、このように自分の情報が返るようになります。

```
$ pod trunk me
  - Name:     Kyohei-Sakai
  - Email:    nico_f00tb@yahoo.co.jp
  - Since:    November 9th, 16:26
  - Pods:
    - SimpleCustomizableTextView
  - Sessions:
    - November 9th, 16:26 - March 17th, 2017 17:53. IP: 133.10.212.29
```

CocoaPodsに公開
`$ pod trunk push [ライブラリ名].podspec`
これでリリース完了になります。

今回CocoaPodsに公開したライブラリは[こちら](https://github.com/Kyohei-Sakai/SimpleCustomizableTextView)