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

  • 121
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

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です。
  • この記事は以下の記事からリンクされています
  • Bundlerの使い方からリンク