気付いたら.gitignoreはgiboで自動生成する時代になっていた

いままで.gitignoreはちまちま手で書いてたけど、<a href="https://github.com/simonwhitaker/gibo">gibo</a>という便利ツールを発見したのでメモ。

giboは、様々な言語、フレームワーク、ツールに対応していて、大抵のメジャーなものについては、簡単に.gitignoreを生成できる。


## インストール

Macの場合は、Homebrewで一発でインストールできる。

```bash
$ brew install gibo
```

これで使えるようになった。

```bash
$ gibo --version
gibo 1.0.4 by Simon Whitaker <sw@netcetera.org>
https://github.com/simonwhitaker/gibo
```

## 使い方

### .gitignoreの生成

例えば、Javaのプロジェクトの場合はこんな感じで作成できる。

```bash
$ gibo java
### https://raw.github.com/github/gitignore/8c9b77cb5c85f6464c0bb31abdf4cfcfdf6833bb/java.gitignore

*.class

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.ear

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
```

見ての通り、結果は標準出力されるので、通常は.gitignoreにリダイレクトして使うことになるだろう。

```bash
$ gibo java >> .gitignore
```


### giboで自動生成可能なモノ一覧

何がgiboで自動生成できるか知りたい時は、-l オプションを使おう。

少し長いが、本記事執筆時の一覧は下記の通り。メジャーなものがほとんど網羅されていると思う。

```bash
$ gibo -l
=== Languages ===

Actionscript		EPiServer		Lua			Scala
Ada			Erlang			Magento			Scheme
Agda			ExpressionEngine	Maven			SCons
Android			ExtJs			Mercury			Scrivener
AppceleratorTitanium	Fancy			MetaProgrammingSystem	Sdcc
AppEngine		Finale			Nanoc			SeamGen
ArchLinuxPackages	ForceDotCom		Nim			SketchUp
Autotools		Fortran			Node			Smalltalk
C++			FuelPHP			Objective-C		Stella
C			Gcov			OCaml			SugarCRM
CakePHP			GitBook			Opa			Swift
CFWheels		Go			OpenCart		Symfony
ChefCookbook		Gradle			OracleForms		SymphonyCMS
Clojure			Grails			Packer			Terraform
CMake			GWT			Perl			TeX
CodeIgniter		Haskell			Phalcon			Textpattern
CommonLisp		Idris			PlayFramework		TurboGears2
Composer		IGORPro			Plone			Typo3
Concrete5		Java			Prestashop		Umbraco
Coq			Jboss			Processing		Unity
CraftCMS		Jekyll			PureScript		UnrealEngine
CUDA			Joomla			Python			VisualStudio
D			Julia			Qooxdoo			VVVV
Dart			KiCad			Qt			Waf
Delphi			Kohana			R			WordPress
DM			LabVIEW			Rails			Xojo
Drupal			Laravel			RhodesRhomobile		Yeoman
Eagle			Leiningen		ROS			Yii
Elisp			LemonStand		Ruby			ZendFramework
Elixir			Lilypond		Rust			Zephir
Elm			Lithium			Sass

=== Global ===

Anjuta			Ensime			Mercurial		SVN
Ansible			Espresso		MicrosoftOffice		SynopsysVCS
Archives		FlexBuilder		ModelSim		Tags
Bazaar			GPG			Momentics		TextMate
BricxCC			JDeveloper		MonoDevelop		TortoiseGit
Calabash		JEnv			NetBeans		Vagrant
Cloud9			JetBrains		Ninja			Vim
CodeKit			Kate			NotepadPP		VirtualEnv
CVS			KDevelop4		Otto			VisualStudioCode
DartEditor		Lazarus			Redcar			WebMethods
Dreamweaver		LibreOffice		Redis			Windows
Dropbox			Linux			SBT			Xcode
Eclipse			LyX			SlickEdit		XilinxISE
EiffelStudio		macOS			Stata
Emacs			Matlab			SublimeText
```

## .gitignoreのテンプレートファイル

### .gitignore-boilerplates

実は、giboをインストールすると、自動的にホームディレクトリ配下に、.gitignore-boilerplatesディレクトリというのが作成される。

ここには、.gitignoreのテンプレートファイルが格納され、gibo実行時にはココが参照されるようになっている。

で、このディレクトリの正体だが、<a href="https://github.com/github/gitignore">GitHubが公開している.gitignoreテンプレート集</a>が元ネタである。

### テンプレートのアップデート

giboでは、テンプレートのアップデートは自動では行われないので、必要な場合は手動で行う必要がある。

ただ、アップデートは簡単でこれだけでよい。

```bash
$ gibo -u
```

## gitignore.ioとの比較

類似ソリューションとして、<a href="https://www.gitignore.io/">gitignore.io</a>というWebサービスがある。

APIも公開されており、エイリアスを定義してあげれば、gibo同様にコマンドラインだけで完結させることもできる。

が、毎回通信が発生するので、ローカルで完結するgiboと比較すると、通信分の時間が余計に必要になる。


## まとめ

とりあえず、gibo入れとけ。