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です。