2015-12-16Swiftでライブラリを公開するQiitaに投稿した記事です。自分のブログにも貼っておきます。managerが出てきたり色々変化が起こりそうな(というか起こる)昨今ですが、今日(もう直ぐ朝)は、今現在使えるツールを利用してSwiftで書いたライブラリを公開する僕なりの方法を書いておこうと思います。オープンソース活動が趣味なので、書きます。対象読者は、ライブラリをまだ公開したことがない人です。ライブラリを公開できる同時にCocoapodsでライブラリを公開できるライブラリを公開するときのディレクトリ構成のイメージができるライブラリを公開するときに必要なREADMEやLICENSEファイルについてわかるライブラリについて公開と書きましたが、Cocoapodsなどのディレクトリに登録して大げさにやる必要はありません。普段開発をしている際に、よく使うツールを「本体から独立させて」、「ちょっと整理して」「利用しやすくする」というだけです。自分用ライブラリや、チーム用ライブラリなども全然ありです。Xcode7系になってビルド時間がだいぶ短くなりましたが、コードを分離して管理することでビルド時間をさらに削減できるという効果もあります。小さな単位で分離することで自然と綺麗にしようという気持ちが働き、コードもスッキリします。公開して嬉しいことただ、やはり公開すると嬉しいことも増えます。スターがついたりフォークが増えたりすると単純に嬉しいです。プルリクが来ると嬉しいです。使ってくれてるんだなと感じます。有名なエンジニアからIssueなどでコメントがつくと嬉しいです。Githubのトレンドに載ったりすると嬉しいです。Githubのページが派手になって嬉しいです。TwitterやSafariで定期的にライブラリ名を検索してしまいます。ディレクトリ構成ディレクトリ構成はこんな感じになるのが良いと思います。README.md特徴としては、ライブラリのフレームワークがあるprojectがトップレベルにあって、Demo用のprojectがディレクトリ下にあるというものです。Carthageで配布する場合projectがトップレベルにある必要があるのでこのような構成にしています。こんな構成になるように作っていきます。KeyboardObserver.xcodeprojまずはこういうディレクトリ構成になりました。次にDemoプロジェクトを作ります早速、Demoプロジェクトを作ります。いつも通り、Xcodeからプロジェクトを生成します。プロジェクトの場所は、KeyboardObserver.xcodeprojと同階層に配置します。Demoプロジェクトは開発するのにも便利だし、利用者にも親切なためです。プロジェクトを分ける理由は、ライブラリの動作確認をする際などに分離されていると何かと便利なことが多いためです。KeyboardObserver.xcodeprojこんな感じになったと思います。Githubに配布プロジェクトと同名のリポジトリを作るのですが、この段階で、READMEとMITのライセンスを選択します。作成完了すると、下記のようにSSHのURLが生成されるのでこれを宛先にします。その後、Github上で作成したREADMEとLICENSEファイルをpullします。masterこの段階で、下記のようなディレクトリ構成になったと思います。README.md開発の準備が整いました。開発はDemoプロジェクトで行う基本的に開発はすべてDemoプロジェクトで行います。下)に配置することを忘れないようにしましょう。Swiftはプロジェクトごとにmoduleという単位で分けられています。つけて他のmoduleからも見えるようにしておきましょう。LICENSEライセンスはGithubのリポジトリを作るときに追加できるのでそれをそのまま使えば良いと思います。Githubで公開されているものはMITが多い印象なので、それにしています。READMEスターを獲得するには重要な部分です。未来の自分や他人に理解してもらうためにも大事な部分です。簡易的なドキュメントと思えば気楽にかけます。最初は、どういう項目があれば良いかイメージできないと思うので有名なライブラリを参考にして書くと良いと思います。最低限あったほうが良いと思う項目は以下の通りです。SetupLicenseLicenseはなくても良いような気もしますが、これがあると使う人の気が楽になるという効果があると思います。Carthageで配布するライブラリのプロジェクトを開き、schemeをsharedにします。--no-skip-currentコマンドを叩いて、出来上がったファイルを確認します。詳しくは、Carthageの配布の仕方(すっごい簡単!)を見ていただくと良いと思います。githubにpushしてバージョンをつけます。これでCarthage配布は完了です。先ほどのDemoプロジェクトのコピーを作ったり、Targetを分けたりして実際に動かしてみて想定どうりに動くか確認します。Carthageは個人用としても管理がとても簡単だし、Cocoapodsのようにprojectを書き換えたりされないので、とても便利に簡単に使えます。現在のCocoapodsはコマンドがとても充実していてコマンドだけで簡単に公開することができます。Cocoapodsは公開するための、podspecというファイルが必要なので、まずそれを用意します。下記のコマンドを叩く際に初回はユーザー登録などが必要になるかもしれません。KeyboardObserver.podspecこれを書きます。KeyboardObserverのPodspecはこちらです。書き終えたら、公開できるかチェックします。s).公開できました〜。Qiita説明のために一通り書いた通りになるかライブラリを一つ作ってみました。iOSのキーボードの扱いはNSNotificationをキャッチして挙動を変える必要があって面倒くさいです。コードも散らかります。そのイベントを簡単に扱えるようにラップしたようなライブラリです。使ってみてください〜。コメントデータの処理方法の詳細はこちらをご覧ください。