クラウドサービスを活用して README にバッジをペタペタ貼る

最近の GitHub に上げてある OSS リポジトリには、README にいろんなバッジが貼られています。リポジトリに連携しているクラウドサービスのステータスを表すものがほとんどです。
自分は README にバッジを貼りたい派です。たとえば [dtan4/terraforming](https://github.com/dtan4/terraforming) だとこういう感じです。

![dtan4_terraforming.png](https://qiita-image-store.s3.amazonaws.com/0/17508/4a576b64-2d6e-f908-3ee9-d7c6a71b7edf.png)

最近はバッジの種類も増えているので、整理のためにもどういうのがあるかまとめてみようと思います。

# 自分がよく README に貼っているバッジ

自分が書く RubyGems については、以下の6個のバッジを必ずつけるようにしています。

## [Travis CI](https://travis-ci.org/)
[![Build Status](https://travis-ci.org/dtan4/terraforming.svg?branch=master)](https://travis-ci.org/dtan4/terraforming)

言わずと知れた CI サービス。現在の master が CI 通っている (passing) かコケている (failed) かがわかります。リポジトリのメンテナンス状況を把握するのによいです。

クリックすれば、そのリポジトリのテスト結果を見ることができます。

## [Code Climate](https://codeclimate.com)
[![Code Climate](https://codeclimate.com/github/dtan4/terraforming/badges/gpa.svg)](https://codeclimate.com/github/dtan4/terraforming)

ソースコードの品質チェックをしてくれるサービスです。リポジトリ内のコード重複や複雑性を解析して GPA (最高 4.0) を算出してくれます。このリポジトリのコード品質がどうであるか、をひと目で確認できます。Ruby の他にも Node.js や PHP, Python に対応してます。

[![Test Coverage](https://codeclimate.com/github/dtan4/terraforming/badges/coverage.svg)](https://codeclimate.com/github/dtan4/terraforming)

最近はテストカバレッジの取得にも対応しました。Travis CI のテスト後にテストカバレッジが Code Climate へアップロードされます。
以前はテストカバレッジの表示に [Coveralls](https://coveralls.io/) を使っていましたが、Code Climate でひとまとめに見られるようになったので最近はこっちを使うようにしています。

クリックすれば、そのリポジトリの詳細な解析結果と行単位のテストカバレッジを見ることができます。

## [Gemnasium](https://gemnasium.com/)
[![Dependency Status](https://gemnasium.com/dtan4/terraforming.svg)](https://gemnasium.com/dtan4/terraforming)

アプリケーションの依存管理をチェックしてくれるサービスです。Ruby だと `Gemfile`, `Gemfile.lock`, `*.gemspec` を解析し、指定されている依存ライブラリのバージョンが古くなったら警告を出してくれます。Ruby の他にも Node.js や PHP, Python に対応してます。
RubyGems だと `Gemfile.lock` がなく gemspec で大まかなバージョン範囲指定を行っている場合が多いのでそう変化はないかもしれません。Rails アプリの場合だと `Gemfile.lock` でバージョンが決め打ちされているためよく怒られます。
定期的に `bundle update` しましょう。

クリックすれば、そのリポジトリの依存管理を確認できます。

## [RubyGems.org](https://rubygems.org/)
[![Gem Version](https://badge.fury.io/rb/terraforming.svg)](http://badge.fury.io/rb/terraforming)

RubyGems 本家が提供しているバッジ。現在公開している最新の Gem バージョンを表示してくれます。バッジ自体は [Version Badge](http://badge.fury.io/) というサービスで生成されています。

クリックすれば、その RubyGem のページへ飛びます。

## LICENSE
![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat)

これはどこかのサービスが提供しているものではないですが、リポジトリのライセンスを表すバッジです。上のバッジではリンクを省いてますが、自分はリポジトリルートに置いた LICENSE ファイルにリンクさせるようにしています。

```markdown
[![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat)](LICENSE)
```

# その他自分が使っているバッジ

## [Quay.io](https://quay.io/)
[![Docker Repository on Quay.io](https://quay.io/repository/dtan4/terraforming/status "Docker Repository on Quay.io")](https://quay.io/repository/dtan4/terraforming)

Docker Image をホスティングするサービスです。Docker Image Registry といえば [Docker Hub](https://hub.docker.com/) がメジャーですが、Quay.io のほうが UI が綺麗だったりイメージの階層構造をツリービューで見られるので自分は好きです。
バッジには最新の Docker Image が使える状態にあるか現在ビルド中であるかが表示されます。

## [wercker](http://wercker.com/)
(2015-12-02 00:30 バッジの対象リポジトリを変更)
[![wercker status](https://app.wercker.com/status/78b9a07a73b1ccb5e2d6eb9b00372b0c/m "wercker status")](https://app.wercker.com/project/bykey/78b9a07a73b1ccb5e2d6eb9b00372b0c)
[![wercker status](https://app.wercker.com/status/78b9a07a73b1ccb5e2d6eb9b00372b0c/s "wercker status")](https://app.wercker.com/project/bykey/78b9a07a73b1ccb5e2d6eb9b00372b0c)

無料でプライベートリポジトリの CI もできるサービス。
以前は小さいバッジのデザインも大きいのに似た独特のものだったのですが、最近は他のサービスと同じようなデザインに変更されました。

## [CircleCI](https://circleci.com/)
[![Circle CI](https://circleci.com/gh/dtan4/dockerfile-terraforming.svg?style=shield)](https://circleci.com/gh/dtan4/dockerfile-terraforming)

こちらも CI サービス。OSS だと Travis CI が圧倒的ですが企業が自社リポジトリの CI に使う例が多いようですね。他の CI との差別化か circleci と明示されています。

## [Inch CI](https://inch-ci.org)
[![Inline docs](http://inch-ci.org/github/dtan4/ajw2.svg?branch=master)](http://inch-ci.org/github/dtan4/ajw2)

リポジトリにどれだけドキュメントが用意されているかを測ってくれるサービスです。Ruby であれば YARD 形式に対応しています。Inch CI 上で HTML 整形されたドキュメントを読むこともできます。

# バッジを自作したい

[shields.io](http://shields.io/) で自作バッジを作ることができます。
たとえば `https://img.shields.io/badge/dtan4-hdmi-green.svg` という URL からこんなバッジが生成されます。

![](https://img.shields.io/badge/dtan4-hdmi-green.svg)

shields.io では他サービスのバッジ生成もやっているようで、一覧を見ることができます。
RubyGem のダウンロード数を表示するバッジもあるらしいので、これからはこいつも貼るようにします。

![](https://img.shields.io/gem/dt/terraforming.svg)

# おわりに
README に貼るいろいろなバッジを紹介しました。バッジがあると、リポジトリのメンテナンス状況がひと目でわかるので便利です。バッジを貼るようになることで、テストやコード品質により気を使うことができるようになります。
貼っている事自体も楽しいです。ラップトップの背中にサービスのステッカーを貼りまくるのと一緒です。
みなさんもいろんな便利サービスを駆使してバッジを貼りまくりましょう！

![](https://img.shields.io/badge/thank-you-brightgreen.svg)