Help us understand the problem. What is going on with this article?

Rubygemsのススメ | Rubyに慣れていない初心者さんへ

More than 5 years have passed since last update.

Rubygemsとは?

RubyGemsは、Ruby言語用のパッケージ管理システムであり、Rubyのプログラムと("gem" と呼ばれる)ライブラリの配布用標準フォーマットを提供している。
gemを容易に管理でき、gemを配布するサーバの機能も持つ。
Wikipedia : RubyGems

要は、Ruby言語で書かれたプログラムをより便利にするためのツール(ライブラリ)が簡単に使えるように配布されている場所、機能です。
使ってみないとわからないと思うので、使ってみましょう!

Rubygems にある ActiveSupport を使ってみよう

今から1時間前の時間を調べて表示する(Rubygemsを使わない場合)

こんなコードで、

1_hour_ago.rb
# 現在時刻
p Time.now
# 1時間前(60秒*60分)の時刻
p Time.now - 60*60

下記のような結果が得られます。

2013-05-25 17:24:13 +0900
2013-05-25 16:24:13 +0900

実行時間と、その1時間前の時間ですね。
Ruby言語では標準で時間の引き算(秒単位)が出来るので、こんなに簡単なコードで時間の引き算が出来るんです。

今から1時間前の時間を調べて表示する(Rubygemsを活用する場合)

1_hour_ago.rb
# Rubygemsを使用することを明示
require 'rubygems'
# ActiveSupportを使用することを明示
require 'active_support'
# ActiveSupportに含まれる時間系の拡張機能(ライブラリ)を使用することを明示
require 'active_support/time'

# 現在時刻
p Time.now
# 1時間前(60秒*60分)の時刻
p 1.hours.ago

どうでしょうか?
Time.now - 60*60 よりも 1.hours.ago の方が分かりやすく無いですか?
Time.now - 1.hour などでも大丈夫です。
分かりやすいと思う方を使ってください。

RubyGemsで配布されている「ActiveSupport」というライブラリを使っています。

Ruby on RailsはRubygemsを沢山使っているFramework

ActiveSupportはRubygems上で配布されている、Ruby言語用のライブラリです。
時間だけでなく、他にも色々な機能があります。ActiveSupport便利!
Ruby on RailsといったFrameworkではActiveSupportが標準でrequireされていますので、「Railsすごい便利!と言っている方に話を聞いてみたら、実はActiveSupportの事だった」と言ったケースもままあるかなというほどです。

たとえば、オブジェクトがからかどうか判別する
object.blank? といったコマンドも、
require 'active_support/core_ext'
すれば使えます。つまり、Railsの機能ではなく、ActiveSupportの機能なわけです。

ActiveRecordなど、その他のライブラリーも沢山標準装備して、整えた結果が、Ruby on RailsというFrameworkだったりするわけです。

Rubygemsには他にも便利なツールがたくさんある

Railsに標準装備されていない、RubyGemもたくさんあります。

  • TwitterのAPIをRubyから超簡単に実行できるgem(ライブラリー)
    RubyGems : twitter

  • データの管理画面を自動生成するgem(ライブラリー)
    RubyGems : ActiveRecord
    こちらは、RubyOnRailsでしか使えない(Rubyのみでは使えない)仕様です。

注意事項 : ライセンス

一応、ライセンスが「自由に使って良い」ものでないかどうかだけ、ホームページなどでご確認ください。ほとんどは

Active Record is released under the MIT license.

と言った風に書いてあると思います。MITライセンスは自由に使ってOKです。

その他のgem(ライブラリ)の探し方

  • RubyGems
    • こちらのサイトで探せます
    • 日本語NGです。欲しい機能の類似の英単語などを駆使して探しましょう。
    • ただし、タイトルぐらいしか検索に引っかからなかったりするため、基本は、Googleで日本語や英語で検索するのが良いです。
  • StackOverflow
    • プログラマ用QAサイトです。
    • 結構、「Best way to …」といった感じで、こういった実装をしたいんだけどどうするのがベスト?って質問にgemが紹介されていたりします。
  • Google
    • 英語、日本語で頑張って検索してみてください。

まとめ

  • rubyを使ってる人はたくさんいるので、オープンソースライブラリがたくさんあるので、ガンガン使いましょう。
  • 機能を実装しようと思った時に、それがオープンソースライブラリで既にあるかどうか、探すようにしましょう
  • 探す時は、Googleで英語で探すのがオススメです。行き着く先はたいていRubyGems.orgです。
sideci
コードレビュー支援サービス「SideCI」を運営
https://sideci.com/ja
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした