スキップしてメイン コンテンツに移動

Ruby標準ライブラリで便利ツール

Ruby標準ライブラリで便利ツール

Ruby実践で使える標準ライブラリ

Rubyの標準ライブラリは、外部gemを導入せずに多くの機能を実装できる点が魅力です。標準ライブラリは require で簡単に読み込むことができ、プロジェクトの依存関係を最小限に抑えることができます。例えば、ファイル操作には File、日時処理には Time、正規表現は Regexp などが用意されています。

標準ライブラリの中でも特に便利なのは OpenStructSet です。OpenStruct は属性を動的に追加できる構造体で、簡易的なデータオブジェクトを作る際に重宝します。Set は重複を許さない集合を扱うクラスで、ユニークな要素の管理に最適です。

以下に OpenStructSet を使った簡単な例を示します。

require 'ostruct'
require 'set'

user = OpenStruct.new(name: 'Alice', age: 30)
puts user.name  # => Alice

tags = Set.new
tags.add('ruby')
tags.add('gem')
tags.add('ruby')  # 重複は無視される
puts tags.to_a  # => ["ruby", "gem"]

requireで組み込み以外の機能を拡張

Rubyの require は標準ライブラリだけでなく、外部gemや自作モジュールも読み込むために使われます。require_relative を使えば、現在のファイルから相対パスでモジュールを読み込むことができます。

例えば、プロジェクト内に lib/utils.rb がある場合、以下のように読み込むことができます。

require_relative 'lib/utils'
# utils.rb 内で定義されたメソッドを呼び出せる
Utils.say_hello

外部gemを利用する場合は、まず Gemfile に依存関係を記述し、bundle install でインストールします。その後、require で読み込むだけです。

# Gemfile
gem 'httparty'

# 使い方
require 'httparty'
response = HTTParty.get('https://api.example.com')
puts response.body

DigestとBase64でデータ処理

セキュリティやデータ整合性を扱う際に欠かせないのが DigestBase64 です。Digest はハッシュ関数(MD5, SHA1, SHA256 など)を提供し、データの改ざん検知に利用されます。Base64 はバイナリデータをテキストに変換するエンコーディング方式で、メールやJSONでバイナリを扱う際に便利です。

以下は SHA256 と Base64 を組み合わせて、文字列のハッシュをエンコードする例です。

require 'digest'
require 'base64'

text = 'Hello, Ruby!'
hash = Digest::SHA256.digest(text)
encoded = Base64.encode64(hash).strip
puts encoded
# => "XUFAKrxLKna5cZ2REBfFkg=="

逆に Base64 でエンコードされたハッシュをデコードして元のバイナリに戻すことも可能です。

decoded = Base64.decode64(encoded)
puts decoded == hash  # => true

OpenStructとSetで便利ツールを作る

標準ライブラリの OpenStructSet を組み合わせると、軽量なデータ構造とユニークな要素管理を同時に実現できます。例えば、タスク管理ツールの簡易実装を考えてみましょう。

require 'ostruct'
require 'set'

class Task
  attr_accessor :id, :title, :tags

  def initialize(id, title)
    @id = id
    @title = title
    @tags = Set.new
  end

  def add_tag(tag)
    @tags.add(tag)
  end

  def to_struct
    OpenStruct.new(id: @id, title: @title, tags: @tags.to_a)
  end
end

task = Task.new(1, 'Write blog post')
task.add_tag('ruby')
task.add_tag('tutorial')
task.add_tag('ruby')  # 重複は無視される

puts task.to_struct.inspect
# => #

このように、標準ライブラリだけで柔軟かつ高速にツールを構築できる点が Ruby の魅力です。外部依存を減らし、保守性を高めるために、まずは標準ライブラリを活用してみることをおすすめします。

この記事はAIによって作成されました。

コメント