今まで作ったgemの話（社外公開版）

元々は社内LT大会の資料ですが、無駄に資料的価値が高いような気がしたので社内gemの部分だけ除いて公開してみます

* 日付は初リリース日
* 僕が作ったgemはこの辺 https://rubygems.org/profiles/sue445

---
## 2013/3/29  dio_tests
https://github.com/sue445/dio_tests

* 「お前は今まで書いたテストの個数を覚えているのか？」の一発ネタ
* gitのlogから書いたテストの個数を集計
* 最初はgemじゃなかったけど何を血迷ったかgem化した

- - -
Versions
v0.0.1

---
## 2013/12/15 rubicure
https://github.com/sue445/rubicure

* Ruby + Precure = Rubicure
* プリキュアのRuby実装
  * 意味不明な説明だけどこれ以外に言いようがないｗ
* 僕の代表的プロダクト
* Rubygems.orgのダウンロード数も一番多い (6500)

- - -
Versions
v0.0.1
v0.0.2
v0.0.3
v0.0.4
v0.0.5
v0.0.6
v0.0.7
v0.1.0
v0.1.1
v0.1.2
v0.1.3
v0.1.4
v0.2.0
v0.2.1
v0.2.2
v0.2.2.1
v0.2.3
v0.2.4
v0.2.5

---
## 2013/12/21 rm_xattr
https://github.com/sue445/rm_xattr

Macでlsした時につくアットマークを消すやつ

```sh
$ ls -l
total 129208
-rw-r--r--@ 1 sue445  staff  66150602 12 21 22:10 jenkins.war

$ rm_xattr jenkins.war

$ ls -l
total 129208
-rw-r--r--  1 sue445  staff  66150602 12 21 22:10 jenkins.war
```

- - -
Versions
v0.0.1
v0.0.2

---
## 2014/1/7 heart_seed
https://github.com/sue445/heart_seed

* xlsをyamlにしてdb:seedするgem
* rubygems.orgのダウンロード数もrubicureの次に多い(2800くらい)のでそれなりに使われてるっぽい
* 社内のコピペロジックを抽出してgem化したのに社内では全然使われてないのが悲しい

- - -
Versions
v0.0.1.beta1
v0.0.1.beta2
v0.0.1
v0.0.2
v0.0.3
v0.0.4
v0.0.5
v0.1.0

---
## 2014/1/14 rspec-temp_dir
https://github.com/sue445/rspec-temp_dir

* テスト実行時に毎回tempディレクトリを作り直すgem
* ファイルを出力するメソッドのテストに最適
* 自分が作ったgemの中では一番使用頻度高い

- - -
Versions
v0.0.1
v0.0.2
v0.0.3

---
## 2014/1/25 fluent-plugin-out_chatwork
https://github.com/sue445/fluent-plugin-out_chatwork

* fluentdからchatworkに投稿するためのfluentdプラグイン

- - -
Versions
v0.0.1
v0.0.2
v0.0.3

---
## 2014/1/27 rspec-every_item
https://github.com/sue445/rspec-every_item

* 配列の各要素に対してmatcherを適用するやつ
* rspec 3で全く同じ機能を持つallがあるのを知らずに作った（恥

- - -
Versions
v0.0.1

---
## 2014/2/23 google_holiday_calendar
https://github.com/sue445/google_holiday_calendar

* Googleカレンダーの日本の祝日を取得するためのgem
* APIの仕様が変わってtokenが必須になったのがつらい

- - -
Versions
v0.0.1
v0.0.2
v0.1.0

---
## 2014/3/22 pebbles-tokyu_ruby_kaigi
https://github.com/sue445/pebbles-tokyu_ruby_kaigi

* TokyuRubyKaigi開催候補日を取得するためのgem
  * 直近の29日（肉の日）の土日祝日

- - -
Versions
v0.0.1
v0.0.2

---
## 2014/4/22 faker-precure
https://github.com/sue445/faker-precure

* プリキュアの名前でランダムなテストデータを作るためのgem

- - -
Versions
v0.0.1
v0.0.2
v0.0.3

---
## 2014/8/13 byndler
https://github.com/sue445/byndler

* gem install bundler しようとしてtypoした人をm9(^Д^)ﾌﾟｷﾞｬｰするためのgem
* 1000人以上ダウンロードしてるのでみんなtypoしてるのか。。

- - -
Versions
v0.0.1
v0.0.2

---
## 2014/11/1 paraduct
https://github.com/sue445/paraduct

* Travis CIっぽいマトリクステストを行うためのgem
* 渋谷RubyKaigi01でライブリリースした
* Jenkinsのマルチ構成プロジェクトの方が結果が見やすいので最近は全然使ってない。。。

- - -
Versions
v0.0.1.beta1
v0.0.1.beta2
v0.0.1.beta3
v0.0.1.beta4
v0.0.1.beta5
v0.0.1.beta6
v0.0.1.beta7
v0.0.1.beta8
v0.0.1.beta9
v0.0.1.beta10
v0.0.1.beta11
v0.0.1.beta12
v0.0.1.beta13
v0.0.1.beta14
v0.0.1.beta15
v0.0.1.beta16
v0.0.1.beta17
v0.0.1
v0.0.2
v0.0.3.beta2

---
## 2014/11/30 date_discreter
https://github.com/sue445/date_discreter

* [dpoint](http://sue445.hatenablog.com/entry/2014/12/01/000000)内の日付歯抜けチェックをgemにして外出しにした

- - -
Versions
v0.0.1

---
## 2014/12/4 tweet_validator
https://github.com/sue445/tweet_validator

* ツイートの文字列長をチェックするためのgem
* 中にURLが含まれていたら短縮URLに換算後の長さで140文字以内かどうかチェックする優れもの
  * 実際に短縮URL化のAPIを叩いているわけではないのでオーバーヘッドは皆無 [参考](https://github.com/sue445/tweet_validator/blob/v0.0.2/lib/tweet_validator/tweet_length_validator.rb#L39-L41)
* `valid_tweet?` を直接使えばActiveRecordやActiveModel以外でも使えます

- - -
Versions
v0.0.1.beta1
v0.0.1.beta2
v0.0.2
v0.0.3

---
## 2015/1/1 sengiri_yaml
https://github.com/sue445/sengiri_yaml

* 正月で実家帰省中に作った年越しgem
* 巨大なyamlを要素単位で千切りにしたり、ディレクトリの中に入ってるyamlを1つの巨大なyamlとして扱うgem
* rubicureの900行近いyamlファイルを分割するためにgemを作った
* たまたま社内で使われてるのを見て吹いたｗ

- - -
Versions
v0.0.1.beta1
v0.0.1
v0.0.2

---
## 2015/3/29 itamae-plugin-resource-encrypted_remote_file
https://github.com/sue445/itamae-plugin-resource-encrypted_remote_file

* 暗号化されてるファイルを復号化してリモートに転送するitamaeプラグイン

- - -
Versions
v0.0.1

---
## 2015/6/3 capistrano-around_chatwork 
https://github.com/sue445/capistrano-around_chatwork

* cap taskの開始と終了にそれぞれChatWorkに通知する
* capタスクに動的にbefore/afterを追加する部分は他のgemでも参考になりそう
  * https://github.com/sue445/capistrano-around_chatwork/blob/v0.1.0/lib/capistrano/around_chatwork.rb#L20-L34

- - -
Versions
v0.1.0

---

# 余談
社内・社外合わせると2年間で33個gemを新規で作っていて、5分間のLTではおさまりませんでしたｗ