LoginSignup
14
8

More than 3 years have passed since last update.

Swiftの自作ライブラリの公開方法(iOS)

Last updated at Posted at 2019-10-05

はじめに

いくつか自作のライブラリをgithubにあげていたのですが、いまいちフォルダ構成とかREADMEの書き方とか定まっていなかったのでそこらへんまとめようと思います。

とりあえずいつもお世話になっているSVProgressHUDを主に参考にしました。

CocoaPodsとCarthage, SwiftPM対応

CocoaPodsの対応とCarthage、SwiftPMは手前味噌ですが下記参考にどうぞ

フォルダ構成(2019/10/15 SwiftPM用に修正)

フォルダ構成は下記のような感じです。

参考:Swiftでライブラリを公開する

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のテンプレは下記。

参考:わかりやすいREADME.mdを書く

# Name
shields.io

Overview

## Description

## Demo

## Usage

## Installation

## Licence

Name

ライブラリ名を記載。ロゴなどあればここに表示。

shields.io

よくみるこういうやつ
Carthage Compatible

参考: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)

Pod Platform

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)

Pod Platform Pod License Pod Version Carthage Compatible Swift Package Manager compatible

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に対応するだけでも宣伝になりますが私は下記を使っています。

  1. Cocoa Controls
    簡単に登録できます。ここに登録するだけでわりとスター数が増えます。
    この記事がわかりやすかったです。

iOS Cookiesも使ってたんですが閉鎖したんですかね...

おわりに

なんとなくふわっとやってたので自作ライブラリの方針を定めてみました。
他にもタグのつけ方とかリリースノートの書き方とか定まってない部分も多いです...

どなたかもっとこうした方がいいとかあればアドバイスください:bow::bow::bow:

参考

14
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
8