みずラテ

牛乳と水を2対1で。

【Ruby】初めてGemを作って公開してみた

初めてRuby Gemを作って公開してみましたのでそのことについてまとめてみます。

作成したもの

非常に簡単な作りですが、引数に西暦を入れると日本の元号に変換してくれるクラスを作りました。

rubygems.org

動機

  1. RubyやRailsを勉強し始めてGemを作ってみたくなった
  2. 今年は改元の年であり、せっかくなので自分も少しでも改元対応する何かを作ってみようと思った

工夫点

二分探索

Ruby初心者で大したことはしていませんが、元号のデータをCSVからロードして、西暦のサーチをする際に二分探索してます。元号データが昇順になっているのでせっかくだからということで試してみました。数百レコードレベルなので、先頭から順に参照してもスピードは変わらないとは思います。

英語で公開

README.mdの説明は英語で書いてます。日本人以外で誰が使いたいかわかりませんが、せっかくなので全世界に公開しました。

一人プルリク

GitHubも使い方に慣れていないので、Issueがあったときに一人でブランチ切って一人でプルリクする練習をしました。

初めてのRspec

Railsチュートリアルを進めていると基本的にはminitestを使用していたので、Rspecは初めて触ることになりました。テストケースも初めて書いているので、観点が足りないと思いますが、Rspecの使い方を学ぶ良いきっかけになりました。

はまったところ

いろんな日本語のサイト様を参考にさせてもらって作っていきましたが、Rubyのmoduleについてまだよくわかってないです。特にgemの最初のテンプレート作成する部分

bundle gem xxxxx -t

すると、まずmoduleが生成されますが、単純にclassで書きたかったのに、「GengoSearch is not a class」とエラーが出てきて進まなかったので結局

module GengoSearch
  class Gengo
  end
end

みたいな構成で進めました。
なのでrequireしたあとインスタンスの生成で

gengo = GengoSearch::Gengo.new(1900)

という書き方になってます。

OSSです

新元号が制定されたらcsvデータに1行追加する対応が必要になります。どなたかお暇で聖人な方がいたらプルリクをしてみてください。喜んでマージします!
(もちろん誰も見向きもしなかったら自分で対応します)


以上です。


github.com