LoginSignup
176
171

More than 5 years have passed since last update.

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

Last updated at Posted at 2013-05-25

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です。
176
171
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
176
171