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

gem 'events_jp'

で使い方として、まずは『キーワードでイベントを検索』する方法。

(残念ながら、Doorkeeperはキーワード検索はできず。..orz…)

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

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

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の登録はコマンドラインからできます。

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

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

たったこれだけで全世界にGemが公開できてしまいます。すばらしい^^

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

# (1) VERSION情報の修正

# (2) Gitにコミット

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

# (4) RubyGemsに登録
rake release

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

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

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

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

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍