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を検討