こんにちは。
GMOアドマーケティングのR.Sです。
以前からDeviseやChartKickといった簡単に実装できて実用的なgemを紹介しているのですが、
今回は、絶対必要というわけではないけど使ってみたら楽しかったgemを紹介します。
動作環境
-
Ruby 2.4.4
-
Rails 5.2.4
紹介するgem
gemインストール
1 2 3 |
gem 'trigram' gem 'holiday_japan' gem 'happybirthday' |
$ bundle install
さくっとインストールします。
trigram
文字列がどれだけ似ているかを計算してくれるgemです。
このgemは文字列を3文字ずつに区切って重複率を計算してくれます。
コンソールで確認してみました。
1 2 3 4 5 6 7 8 9 10 11 |
Trigram.compare("私は今日パスタを食べます。", "私は今日パスタを食べます。") => 1.0 Trigram.compare("私は今日パスタを食べます。", "今日私はパスタを食べます。") => 0.4666666666666667 Trigram.compare("私は今日パスタを食べます。", "今日私はうどんを食べます。") => 0.2222222222222222 Trigram.compare("私は今日パスタを食べます。", "あなたは明日うどんを食べるでしょう。") => 0.038461538461538464 |
出来ているっぽい。こういう計算はちょっと楽しい。
trigramはN-gramという計算方法のN = 3の方法らしく、N-gramのgemもありました(ruby-ngram)
holiday_japan
日本の祝日を表示できるgemです。使い方が日本語で嬉しい。
祝日に関するgemは世界基準のものや、日本の祝日に特化したものが割とある印象ですが、
READMEをざっと見た感じの直感で使いやすそうなものを選んでみました。
法改正による祝日変更への対応が容易という点は大きなメリット。
使い方通りにコンソールで確認してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
HolidayJapan.name(Date.new(2019,2,23)) => nil # 祝日がない日はnilが返る HolidayJapan.name(Date.new(2020,2,23)) => "天皇誕生日" HolidayJapan.list_year(Date.today.year) => [[Wed, 01 Jan 2020, "元日"], [Mon, 13 Jan 2020, "成人の日"], [Tue, 11 Feb 2020, "建国記念の日"], [Sun, 23 Feb 2020, "天皇誕生日"], [Mon, 24 Feb 2020, "振替休日"], [Fri, 20 Mar 2020, "春分の日"], [Wed, 29 Apr 2020, "昭和の日"], [Sun, 03 May 2020, "憲法記念日"], [Mon, 04 May 2020, "みどりの日"], [Tue, 05 May 2020, "こどもの日"], [Wed, 06 May 2020, "振替休日"], [Thu, 23 Jul 2020, "海の日"], [Fri, 24 Jul 2020, "スポーツの日"], [Mon, 10 Aug 2020, "山の日"], [Mon, 21 Sep 2020, "敬老の日"], [Tue, 22 Sep 2020, "秋分の日"], [Tue, 03 Nov 2020, "文化の日"], [Mon, 23 Nov 2020, "勤労感謝の日"]] |
天皇誕生日やスポーツの日も反映されている…!しっかりメンテナンスされているのが窺えます。
happybirthday
誕生日を入力すると年齢を返してくれるgemです。
名前が可愛いのでとりあえず使ってみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# 1900/1/1生まれの人の今の年齢 Happybirthday.born_on('1900-1-1').age.years_old => 120 # 1900/1/1生まれの人の100年後の年齢 Happybirthday.born_on('1900-1-1').age.years_after(100).years_old => 220 # 1900/1/1生まれの人の100年前の年齢 Happybirthday.born_on('1900-1-1').age.years_before(100).years_old => 20 # うるう年でも大丈夫そう Happybirthday.born_on('2016-2-29').age.years_old => 4 |
ユーザーの生年月日しかわからない場合に年齢を計算してくれるので便利そうです。
まとめ
たまには業務で使っていない、今のところ使う予定もなさそうなgemを使ってみたかったので、この記事を楽しく書くことができました。