Carthage で Framework を公開する

先日 Framework を作って Carthage でインストールできるようにしたので、その手順を書いておきます。
作ったものはこちらで紹介しています。

komaji504.hateblo.jp

Workspace や Project を作る

ディレクトリ構成

Workspace や Project のディレクトリ構成ですが、今回は以下のようにしてみました。
あくまで一例なので、他の方が作られたものを参考にしたりして、自分好みでわかりやすい構成にしていけば良いのかなと思います。

GradientAnimationView
├── Demo
│   ├── Demo.xcodeproj
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace
│   │       └── contents.xcworkspacedata
│   ├── Source
│   │   ├── AppDelegate.swift
│   │   ├── Assets.xcassets
│   │   │   └── AppIcon.appiconset
│   │   │       └── Contents.json
│   │   ├── Base.lproj
│   │   │   ├── LaunchScreen.storyboard
│   │   │   └── ViewController.storyboard
│   │   ├── Info.plist
│   │   └── ViewController.swift
│   └── demo.gif
├── GradientAnimationView
│   ├── GradientAnimationView.xcodeproj
│   │   ├── project.pbxproj
│   │   ├── project.xcworkspace
│   │   │   └── contents.xcworkspacedata
│   │   └── xcshareddata
│   │       └── xcschemes
│   │           └── GradientAnimationView.xcscheme
│   └── Source
│       ├── GradientAnimationView.h
│       ├── GradientAnimationView.swift
│       └── Info.plist
├── GradientAnimationView.xcworkspace
│   ├── contents.xcworkspacedata
│   └── xcshareddata
│       └── WorkspaceSettings.xcsettings
├── LICENSE
└── README.md

Workspace を作る

Workspace は必須ではないのですが、作ってその中に Framework とそれを使ったデモアプリを入れておくと、Framework を開発しながらすぐにデモアプリで動作確認ができるので開発が楽になります。
利用者もデモアプリを実行して Framework がどんなものかを簡単に触ることができるので親切かと思います。

Demo Project を作る

デモアプリとなる Project で、 Framework の開発時にはこの Project を実行して動作確認しながら進めて行きます。
今回は Single View App の Project を Demo という名前で作りました。

Framework Project を作る

Cocoa Touch Framework として Project を作ります。

開発する

あとは思いのままに Framework を作っていきます。 インタフェースには Public や Open を適切に付与します。これらを付与したもの以外は外部から参照できません。

ビルド対象を Framework に変更してビルドすることで、 Public や Open が付与されたものを Demo Project から参照できるようになるので、 Demo Proejct の方で Framework を使ったアプリを作っていきます。

動作確認する際には、ビルド対象を Demo に変更して実行するだけです。

Cathage でインストールできるようにする

以下の手順で開発した Framework の Scheme を Shared にすることでインストールできるようになります。

ビルド対象を選択するところから Manage Schemes を選択します。

f:id:komaji504:20180614235738p:plain

Framework Project の右端にある Shared のチェックボックスにチェックを入れます。

f:id:komaji504:20180614235733p:plain

READEME を書く

概要や使い方を書きます。

Shields.io: Quality metadata badges for open source projects

こちらから適切なバッジを選んだり作ったりしてつけるとそれっぽくなります。 以下のようなバッジを簡単に作ることができます。

Language Platform Carthage compatible License

また、View 系の Framework の場合、動作がわかる GIF を載せておくと親切と思います。 GIF ファイルは Quick Time Player と ffmpeg から簡単に作れます。雑ですが、以下のようにして作れます。

動画を撮影する

  • Quick Time Player を起動
  • メニューバー
    • ファイル
      • 新規画面収録 (または Control + Command + N)
  • 録画ボタンをクリック
  • 録画対象を選択して録画
    • 全体であればクリックするだけ
    • 一部であればドラッグすることで録画対象を選択できる
      • その後録画ボタンをクリック
        • 録画ボタンをクリックすると同時にカーソルを素早く移動すればカーソルを映さないこともできる
  • 録画を止める
    • Control + Command + Esc

動画をGIFに変換する

brew install ffmpeg
ffmpeg -i input.mov -r 10 output.gif

リリースする

タグをアップロードする

git コマンドでタグをつけてリモートリポジトリにプッシュします。

git tag 0.1.0 -m "コメント"
git push origin 0.1.0

リリースノートを作成する

GitHub の Release ページの Draft a new release ボタンをクリックするとリリース作成画面が開きます。 f:id:komaji504:20180615001135p:plain


リリース対象のタグ・リリースの名前・リリース内容を埋めます。 f:id:komaji504:20180615001132p:plain


すると以下のようなリリースノートが作成されます。 f:id:komaji504:20180615001139p:plain

※上の画像は以前 LabelPicker という Framework を作ったときのものです。

おわりに

以上で作業は完了です。
初めて作った時は色々と手こずったのですが、 carthage update で自分が作った Framework がインストールできた時は感動しました!
初めての方もぜひチャレンジしてみてください〜