はじめに
いくつか自作のライブラリをgithubにあげていたのですが、いまいちフォルダ構成とかREADMEの書き方とか定まっていなかったのでそこらへんまとめようと思います。
とりあえずいつもお世話になっているSVProgressHUDを主に参考にしました。
CocoaPodsとCarthage, SwiftPM対応
CocoaPodsの対応とCarthage、SwiftPMは手前味噌ですが下記参考にどうぞ
フォルダ構成(2019/10/15 SwiftPM用に修正)
フォルダ構成は下記のような感じです。
AMClockViewを例にします。
.
├── .gitignore
├── SampleAMClock
│ ├── SampleAMClock
│ │ ├── Assets.xcassets
│ │ ├── Base.lproj
│ │ ├── Info
│ │ └── Classes
│ │ ├── AppDelegate.swift
│ │ └── ...
│ └── SampleAMClock.xcodeproj
├── AMClockView
│ ├── Info.plist
│ └── AMClockView.h
├── AMClockView.xcodeproj
├── Source
│ └── AMClockView.swift
├── AMClockView.podspec
├── Package.swift
├── .swiftpm
├── LICENSE
├── README.md
└── logo
- .gitignore
とりあえずgitignore - SampleAMClockView
ライブラリを利用したサンプルプロジェクトのフォルダです。 - AMClockView.xcodeproj
Carthage用のプロジェクトです。 - AMClockView
Carthage用のフォルダです。 - Source
ライブラリの中身のフォルダです。ここにソースやリソースを置きます。 - AMClockView.podspec
- Package.swift
- .swiftpm
- LICENSE
- README.md
- logo
READMEに使いたいロゴとかのリソース用フォルダです。
READMEの書き方
READMEのテンプレは下記。
# Name
shields.io
Overview
## Description
## Demo
## Usage
## Installation
## Licence
Name
ライブラリ名を記載。ロゴなどあればここに表示。
shields.io
参考:shields.io経由でだいたいなんでも自由にバッジ表示する
基本的には下記の形式でかけるみたいです。
https://img.shields.io/badge/<SUBJECT>-<STATUS>-<COLOR>.svg
- SUBJECT:左側の文字
- STATUS:右側の文字
- COLOR:右側の背景色
他にもいろいろ書き方があるみたいでCocoaPodsに対応しているなら下記のような記載もできるみたいです。Shields.IO
![Pod Platform](https://img.shields.io/cocoapods/p/AMClockView.svg?style=flat)
AMClockView.svgのところをライブラリ名にすれば表示できるようです。(おそらくpodspecの記載の表示に変わるはず)
CocoaPods、Carthage、SwiftPMに対応していれば下記の記述でよさそうです。
![Pod Platform](https://img.shields.io/cocoapods/p/AMClockView.svg?style=flat)
![Pod License](https://img.shields.io/cocoapods/l/AMClockView.svg?style=flat)
[![Pod Version](https://img.shields.io/cocoapods/v/AMClockView.svg?style=flat)](http://cocoapods.org/pods/AMClockView)
[![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)
[![Swift Package Manager compatible](https://img.shields.io/badge/Swift%20Package%20Manager-compatible-brightgreen.svg)](https://github.com/apple/swift-package-manager)
AMClockView
の部分を自作のライブラリ名に変更して使ってください。
Overview
概要を書く。なるべく短く簡潔に。
Description
概要の補足など、丁寧に説明を書く。(なければ省略)
Demo
UI系のやつならGIFや画像を貼り付ける。(なければ省略)
Usage
簡単に使い方を書く。(コードなど記載する。)
Installation
CocoaPods、Carthageでの利用方法を書く。
Licence
ライセンスを書く。
tagの付け方(2019/10/15 追記)
リリースするたびにタグをつけますがとりあえず下記の形式で良さそう。
1.0.0
適当に1.0とか付けてましたがこれだとSwiftPMで認識されないみたいです。とりあえず上記のx.x.xの形式であればCocoapods, Carthage, SwiftPMで問題なく動作しました。
作った後の宣伝
自作ライブラリを作ったらとりあえず宣伝しましょう。
CocoaPodsに対応するだけでも宣伝になりますが私は下記を使っています。
-
Cocoa Controls
簡単に登録できます。ここに登録するだけでわりとスター数が増えます。
この記事がわかりやすかったです。
iOS Cookiesも使ってたんですが閉鎖したんですかね...
おわりに
なんとなくふわっとやってたので自作ライブラリの方針を定めてみました。
他にもタグのつけ方とかリリースノートの書き方とか定まってない部分も多いです...
どなたかもっとこうした方がいいとかあればアドバイスください