酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

Events_jp Atnd/Connpass/Doorkeeper/Zusaarからイベント情報を取得できるGem作りました!

IT勉強会を網羅して、探しやすくしたアプリ『俺の勉カレ』を作るにあたって、 Atnd/Connpass/Doorkeeper/Zusaarのイベント情報を取得する部分をGem『events_jp』 に切り出しました。今回は、Gemに切り出して、登録するまでの手順を紹介します。


Gemの紹介

Atnd/Connpass/Doorkeeper/ZusaarのAPIをラップしたgemは沢山あるんですが、個々のAPIで 仕様が微妙に違ったりで一括で扱うようなサービスを作るときに結構な手間を感じていました。 そこで今回は各APIから取得したJSONをパースして共通フォーマットにした結果を返すラッパーを作りました。

正直に言うと僕のGem制作の基本を勉強するためというのが目的なので、完全に俺得Gemです(^ ^;

でも実際にやってみると、他の人のコードを沢山読んでより良いライブラリの書き方を考えるキッカケに なったり、かなり面白かったです。いつかはみなさんに使ってもらえるようなPlugin Authorになりたいです!

Gemの使い方

インストールはいつもどおり、Gemfileに追加して、bundle install

1
gem 'events_jp'

で使い方として、まずは『キーワードでイベントを検索』する方法。
(残念ながら、Doorkeeperはキーワード検索はできず…orz…)

1
2
3
EventsJp.get_event(keyword: 'Ruby').each do |e|
  puts "#{e.service} - #{e.title}"
end

件数を指定して、イベントを取得。

1
2
3
EventsJp.get_event(service_limit: 100).each do |e|
  puts "#{e.service} - #{e.title}"
end

検索結果のフォーマットなどは『morizyun/events_jp』のREADMEを御覧ください!

Gemの作成

せっかくなので、Gemを作ったときの手順もメモしておきます。

今回はGemの作成部分はこの辺りのリンクが大変参考になりました!

Rubygemsでライブラリを公開したので、手順をまとめてみた | Developers.IO

Jewelerで作ったGemをGithubとRubygemsに登録 - Qiita

あとは、@deeekiさんのGem「deeeki/connpass」 はかなり参考にさせてもらいました。以前@deeekiさんのソースを拝見したことがありますが、すごいわかりやすさで流石な作りでした!

Gemの公開

ではいよいよRubygems.orgに公開します。

まだRubyGemsに登録していない場合は、『sign up | RubyGems.org』から登録します。

登録が完了したら、RubyGemsに登録します。Gemの登録はコマンドラインからできます。

1
2
3
4
5
6
# ソースコードをGemパッケージ化
rake build

# RubyGemsに登録
rake release
# 僕の場合は初回だけは gem push コマンドを実行する必要がありました

たったこれだけで全世界にGemが公開出来てしまいます。素晴らしい^^

ちなみに、修正を行う場合は次のように行います。

1
2
3
4
5
6
7
8
9
# (1) VERSION情報の修正

# (2) Gitにコミット

# (3) ソースコードをGemパッケージ化
rake build

# (4) RubyGemsに登録
rake release

すごい簡単です。github側にタグまでつけてくれます!

TravisとかCoverallとかのバッチを追加する

今回は時間的に間に合いませんでしたが、TravisやCoverallなどのバッチを追加して、 品質をしっかり高めていきたいと思っています!

githubでgemを公開する時に使いたいバッジ - くりにっき

おすすめの書籍