Umi Uyuraのブログ

プログラミング関連の作業ログ

定形の.gitignoreを出力してくれるツールを比較してみた

いつも新しいサービスやツールを紹介してくれるMOONGIFTさんで、joeという.gitignoreの定形ツールが紹介されていました。

joe·多くのプログラミング言語、フレームワークに対応した.gitignoreを出力 MOONGIFT

それまで gitignore.ioコマンドラインで使って いたのですが、若干レスポンスが悪いところが気になっていたので、どちらが良さそうか・乗り換えた方が良いのか、比較してみることにしました。

比較してみた

2015.02.11時点のものです。

使い方

できることは、ほぼ同じです。

対応している.gitignoreの一覧

$ gi list           # gitignore.io
$ joe list          # joe

.gitignoreを出力

# Titanium用の.gitignoreを出力する場合

$ gi appceleratortitanium       # gitignore.io
$ joe appceleratortitanium      # joe

複数の場合の指定は、少し異なります。

$ gi appceleratortitanium,node      # gitignore.ioはカンマ区切り
$ joe appceleratortitanium node     # joeはスペース区切り

それにしてもTitanium用の引数、長過ぎですね…

詳しくはそれぞれのドキュメントを参照。

対応.gitignore数

どちらも各種.gitignoreの元データとして、GitHubが公開している github/gitignore を参照しているようです。

ただgitignore.ioの方は GitHubのものに独自の分も追加している ため、対応している言語の数としてはgitignore.ioの方が多いです。

対応している.gitignoreの一覧から差分をとってみたところ、gitignore.ioのみ対応しているものには以下のようなものがありました。

appcode, appengine, basercms, bluej, bower, carthage, codeio, crashlytics, django, dotsettings, elasticbeanstalk, 
freepascal, greenfoot, grunt, intellij, jabref, joe, jspm, justcode, kirby2, komodoedit, latex, liberosoc, 
librarian-chef, m2e, nette, openfoam, ph7cms, phpstorm, premake-gmake, puppet-librarian, pycharm, rubymine, 
senchatouch, silverstripe, stellar, synopsysvcs, tarmainstallmate, tower, wakanda, webstorm, xamarinstudio

データの所在

gitignore.ioの場合、 Webサイト からの生成できることもあり、元となるデータはオンラインにあるようです。 そのため、gitignore.ioはインターネットに繋がっていないと何も出力されないという弱点はあります。

f:id:umi-uyura:20150211222845p:plain

対して、joeの場合はコマンドに同梱されているので、オフラインでも使うことができる点はメリットです。

そのかわり、新しい.gitignoreが追加された場合、joeの方はコマンドのアップデートを待たなければいけませんが、gitignore.ioはサイト側のデータに反映されれば使えるようになります。

独自リポジトリを持っている点も考慮すると、こうした新しい言語のサポートはgitignore.ioの方が早そうな気がします。

応答速度

先の通り、gitignore.ioは通信が必要なせいか、コマンドを打ってから少し間があって、結果が表示されます。 対応している言語やプラットフォームの一覧を表示する gi list だけでも時間がかかります。

対して、joeの場合はローカルのデータを表示しているだけなので一瞬で完了します。

使い方として、必要な言語の.gitignoreがあるかを確認したり、内容を確認したいだけの場合があるので、その場合は特に応答速度は重要です。

まとめ

まとめるとこんな感じでしょうか。

  gitignore.io joe 補足
対応数 多い 少ない gitignore.ioには独自分が追加されている
データの所在 オンライン ローカル giはネットに繋がっていないと使えない
応答速度 遅い 早い joeはローカルにデータを持っているので早い

よって、定番のものはjoeを使いつつ、対応していない言語のものが欲しい時はgitignore.ioを使うという感じで補完するのが良さそうです。

注意点

joeコマンドはHomebrewでインストールできるのですが、 brew install joe ではインストールできません。

これもMOONGIFTさんの昔の記事で発見しましたが、 軽量でWordstarに似た操作性をもつテキストエディタ·Joe MOONGIFT がインストールされてしまうようです。

Homebrewでインストールする場合は、 brew tapリポジトリを追加後に、 brew install gitignore となります。

$ brew tap karan/karan
$ brew install gitignore

でもコマンドは joe です。 ややこしいですね。

Pythonを使っている方であればpipでインストールでき、こちらはjoeで通じるようでした。

$ pip install joe