RUBY

Ruby入門ガイド:開発者の幸福のために設計された言語

Rubyは日本の松本行弘(Matz)が1995年に設計した言語で、「開発者の幸福」を最優先の設計原則としています。簡潔で表現力の高い文法、強力なメタプログラミング、Railsフレームワークとの相性の良さで、今日でも高い生産性を誇ります。

Rubyの哲学:最小驚きの原則

Matzが強調した最小驚きの原則(Principle of Least Astonishment)とは、コードが開発者の直感的な期待通りに動作すべきという考えです。

# すべてがオブジェクト
puts 5.class        # Integer
puts "hello".class  # String
puts nil.class      # NilClass
puts true.class     # TrueClass

# 数値にもメソッド呼び出し可能
puts 5.times.map { |i| i * 2 }.inspect  # [0, 2, 4, 6, 8]
puts -5.abs  # 5
puts 3.14.ceil  # 4

ブロック(Block)、ラムダ(Lambda)、Proc

Rubyのブロックはコードを引数として渡す強力なメカニズムです。yieldキーワードでブロックを呼び出せます。

# ブロック:do...endまたは{ }を使用
[1, 2, 3].each do |n|
  puts n * 2
end

# Proc:ブロックをオブジェクトとして保存
double = Proc.new { |n| n * 2 }
puts double.call(5)  # 10

# Lambda:Procと似ているが引数チェックとreturnの動作が異なる
square = lambda { |n| n ** 2 }
puts square.call(4)  # 16
cube = ->(n) { n ** 3 }
puts cube.call(3)  # 27

メタプログラミング

Rubyの最も強力な機能の一つです。コードが実行時に他のコードを生成・変更できます。

class Person
  attr_accessor :name, :age  # getter/setterを自動生成

  def initialize(name, age)
    @name = name
    @age  = age
  end

  def method_missing(method_name, *args)
    if method_name.to_s.start_with?("say_")
      word = method_name.to_s.sub("say_", "")
      puts "#{@name} says: #{word}"
    else
      super
    end
  end
end

person = Person.new("Alice", 30)
person.say_hello   # Alice says: hello
person.say_goodbye # Alice says: goodbye

Ruby on Rails:設定より規約

Railsの核心哲学であるCoC(Convention over Configuration)DRY(Don't Repeat Yourself)により、繰り返しの設定作業なしに素早い開発が可能です。

# 新規Railsプロジェクト作成からサーバー起動まで3行
rails new myapp --database=postgresql
cd myapp
rails server

# スキャフォールディングでCRUDを即座に生成
rails generate scaffold Article title:string body:text
rails db:migrate
# モデル、マイグレーション、コントローラー、ビュー、ルートが自動生成

Rubyを選ぶ場面

  • 適している:Web App MVP、スタートアップのプロトタイピング、スクリプト作成、CLIツール、社内管理ツール
  • 参考:高い並行性や極限のパフォーマンスが必要な場合はGoやRustを検討
F

Fit System

10年以上のソフトウェアエンジニアリング経験を持つ開発者です。高性能システム設計とクラウドネイティブアーキテクチャを専門としています。