iOSのUIライブラリをCocoaPodsに登録してみたら予想以上にスターがついた件

f:id:cyberz-dev-writer:20160314214158p:plain

はじめに

どうも。OPENREC事業部でゲーム実況動画共有プラットフォームサービスOPENREC.tviOSエンジニアをしている辰己です。 OPENREC.tvでは、有名実況主さんの実況動画が毎日たくさんアップされて盛り上がっていますので、ぜひAppStoreGooglePlayからダウンロードしてみてくださいね!

 
さて、みなさんは自分で作ったライブラリをOSSとして公開したことはありますか?

Wikipediaのライブラリの項目の書き出しには以下のように記されています。

ライブラリ(Library)は、汎用性の高い複数のプログラムを、再利用可能な形でひとまとまりにしたものである。
 
ライブラリ - Wikipediaより

_人人人人人人人人_
> 汎用性の高い <
 ̄Y Y Y Y Y Y Y Y Y ̄

汎用性が高いということは、使いやすくて便利な、まさに先人の知恵ともいうべき産物をライブラリと称するのではないだろうか、、、。
ライブラリ、、、恐ろしい子、、、(ガクッ)
この汎用性の高いという言葉にビビって、自分のライブラリをOSSとして公開するのはとてもハードルの高いことなのだと、そう考えてなかなか踏み出せずにいました。
 
しかし、ついに僕は人生で初めてiOSのライブラリをGithubで公開してみました!
その名も、TKParallaxScrollView
TKParallaxScrollViewとは、スクロールビューのヘッダービューとミドルビューにパララックス効果を付与したインタラクションを簡単に実現出来るコンテナークラスです。
要は下のGIF画像のように、ヘッダー領域のUIViewパーツにスクロール量に応じた視差効果を付与できるライブラリです。

f:id:cyberz-dev-writer:20160314213821g:plain

さらに、僕はこのライブラリをCocoaPodsにも登録しました。
CocoaPodsとは、rubyでいうbundlerのようなもので、Podfileというテキストファイルに必要なライブラリを書いてpod installコマンドを打つだけで、 記述したライブラリがインストールされて使えるようになるライブラリ管理ツールです。
まあ、CocoaPodsに登録したからといって、そう簡単にGithubスターが付くことはないだろうと思っていたのですが、公開から2日後、なんとスターが13個もついているじゃないですか!?
これにはさすがに驚きました!
でも、結局ライブラリをCocoaPodsに登録するのって難しいんでしょ〜?っていう方のために、今回はCocoaPodsにライブラリを登録する方法を解説していこうと思います。

CocoaPodsへライブラリを登録するまでの流れ

CocoaPodsへのライブラリ登録は以前、GithubでPull Requestを送って、CocoaPodsに登録してもらうという方式だったのですが、2年ほど前にTrunkというAPIサービスを利用して登録する方式に変わりました。
このTrunkを利用することで、CocoaPodsへの登録がとても簡単になったのです。
初めてライブラリの登録を行う場合は下記のような流れになります。
2回目以降では1番と2番と7番の作業は必要なくなります。

  1. gitにライブラリ名のリポジトリを作成
  2. pod lib create ライブラリ名
  3. ライブラリの追加
  4. podspecファイルの修正
  5. タグの追加
  6. pod lib lint
  7. pod trunk register 登録メールアドレス ユーザー名 —description=‘ユーザーの概要’
  8. pod trunk push .podspecファイルのパス

1. gitにライブラリ名と同じ名前のリポジトリを作成

まずは、git上にライブラリ名と同じ名前のリポジトリを作成します。
この時点では作成だけで大丈夫です。初期設定はライブラリの追加の章で行います。

2. pod lib create ライブラリ名

次に、pod lib create ライブラリ名コマンドでローカル環境にライブラリのベースを作成します。
途中でライブラリの構成に関する質問がありますので、自分のライブラリに合った内容で回答してください。

f:id:cyberz-dev-writer:20160314212018p:plain:w600

完了すると下記のような構成でディレクトリが自動で作成されます。

f:id:cyberz-dev-writer:20160314212108p:plain:w600

3. ライブラリの追加

次に、実装したライブラリをPod/Classesディレクトリ内に追加します。また、ライブラリ内で使用するアセットがある場合、Pod/Assetsディレクトリ内に必要なアセットを追加します。
それと、使い方を説明するためのプロジェクトはExampleディレクトリの中で実装しておきましょう。
ここまでできたら、初めの章で作成したgitリポジトリをライブラリのリモートリポジトリとして登録しましょう。
登録できたら、コミットして一度プッシュしておいてください。

4. podspecファイルの修正

続いて、podspecファイルの修正を行います。
podspecファイルとは、ライブラリの概要や作成者、リポジトリの場所など、ライブラリに関する細かな設定情報を書き記してあるものです。
下記は僕が公開したTKParallaxScrollViewの場合です。

Pod::Spec.new do |s|
  s.name             = "TKParallaxScrollView"
  s.version          = "1.0.1"
  s.summary          = "TKParallaxScrollView is the interactive moving library for header and middle views on scrollview."

  s.homepage         = "https://github.com/cztatsumi-keisuke/TKParallaxScrollView"
  s.license          = 'MIT'
  s.author           = { "cztatsumi-keisuke" => "tatsumi-keisuke@cyber-z.co.jp" }
  s.source           = { :git => "https://github.com/cztatsumi-keisuke/TKParallaxScrollView.git", :tag => s.version.to_s }
  s.social_media_url = 'https://twitter.com/TK_u_nya'

  s.ios.deployment_target  = '8.0'
  s.requires_arc = true

  s.source_files = 'Pod/Classes/*.{h,m}'
  #s.resource_bundles = {
  #  'TKParallaxScrollView' => ['Pod/Assets/*.png']
  #}

  # s.public_header_files = 'Pod/Classes/**/*.h'
  s.frameworks = 'UIKit'
end

5. タグの追加

次に、podspecファイルで定義したバージョン番号でタグを切ります。
これを忘れると次章のバリデーションでエラーが出るので気をつけましょう。
以下のコマンドでタグを切り、pushすることで、リモートリポジトリに反映できます。

git tag タグ名
git push origin タグ名

6. pod lib lint

このコマンドでライブラリの公開前のバリデーションチェックを行います。
主に確認されることは、LICENSEファイルがあるか、.podspecファイルの文法は正しいか、リモートリポジトリは存在するかなどです。
バリデーションに使われるソースコードはリモートリポジトリ内のものが対象となりますので、ローカルでの修正がある場合は、必ずpush後にlintしましょう。

f:id:cyberz-dev-writer:20160314213132p:plain:w600

7. pod trunk register 登録メールアドレス ユーザー名 —description=‘ユーザーの概要’

ここでついにTrunkの登場です。
初回の場合はユーザーアカウントの登録が必要になりますので、このコマンドを実行します。
実行すると確認メールが登録メールアドレス宛に届きますので、確認用のURLをクリックして登録を完了させてください。

8. pod trunk push .podspecファイルのパス

最後に、このコマンドでライブラリを登録すると無事にCocoaPodsに公開されます。
また、公開後に実際にPodfileに記述してpod installすると、インストールできることが確認できます!

f:id:cyberz-dev-writer:20160314213153p:plain:w600

最後に

今回はTrunkを利用したCocoaPodsへのiOSライブラリの登録方法について記しました。ライブラリを公開するということは、自分のコードをいろんな方に読んでもらえて、あわよくばスターやフィードバックまでもらえるというメリット満載の行為だと思います。
たった少しの勇気とやる気さえあれば、誰でも公開できるので、この記事を読んでぜひ挑戦してもらえればと思います。
今回も最後まで読んでいただき、ありがとうございました。