プログラミング言語

Ruby

まつもとゆきひろ(Matz) / 1995年登場

「書いて楽しい」を重視した日本生まれのオブジェクト指向言語。Ruby on Rails により Web 開発で一世を風靡し、今もスタートアップで人気。

3つの要点
TL;DR
  1. 「書いて楽しい」を重視した純 OOP 言語。
  2. Rails で Web 開発の生産性を一変させた。
  3. 素早く Web を立ち上げるなら今も有力。

基本情報

仕様と特徴

Ruby のロゴ
製品・技術の概要Ruby「書いて楽しい」を重視した日本生まれのオブジェクト指向言語。Ruby on Rails により Web 開発で一世を風靡し、今もスタートアップで人気。
型付け
動的強い型付け
実行方式
インタプリタYARV)
パラダイム
オブジェクト指向純粋)
登場
1995年まつもとゆきひろ(Matz)
この言語の強み
人間中心で書きやすく表現力が高いRails により Web 開発が高速
活躍する領域
Web アプリRuby on Rails)スタートアップの高速開発 / スクリプト・自動化

選定ガイド

選定ポイント

採用する理由と、事前に受け入れるべきトレードオフを分けて確認します。

採用に向く条件

選ぶ理由

  1. 人間中心で書きやすく表現力が高い
  2. Rails により Web 開発が高速
  3. メタプログラミングが強力

事前に確認する条件

考慮すべき点

  1. 実行速度は速くない
  2. 並列処理は不得手(GVL)
  3. 近年は他言語に押される面

向いている用途

こんな用途に向く

Web アプリ(Ruby on Rails)スタートアップの高速開発スクリプト・自動化

詳しい解説

もっと詳しく

どんな言語か

Ruby は 1995 年にまつもとゆきひろ(通称 Matz)が公開した、日本生まれの純オブジェクト指向言語です。設計思想の中心は「プログラマが書いていて楽しいこと」。数値や nil まで含めてすべてがオブジェクトで、メソッド呼び出しの連なりとして自然にコードを書けます。

横にスクロール

CRuby が Ruby ソースを Prism で解析して YARV 命令列を作り、インタプリタまたは YJIT で実行する経路と、Thread・Ractor・Process、Gem、例外、計測の境界
CRuby は AST から YARV の命令列を作り、通常はインタプリタ、YJIT 有効時は熱い経路だけを機械語で実行します。並行処理は GVL、共有状態、IPC の要件で選び、Gem の版とネイティブ ABI も成果物として固定します。

表現力とメタプログラミング

Ruby の魅力は、コードを実行時に組み立て直せる柔軟さにあります。メソッドを動的に定義したり、ブロックで処理を渡したりと、少ない記述で意図を表現できます。

# ブロックを渡して繰り返す(each が主役)
[1, 2, 3].each do |n|
  puts n * 2
end

この表現力が、ドメイン固有言語(DSL)風の読みやすい記述を可能にし、Rails の宣言的な書き味を支えています。

仕組み・特徴

  • 動的型付け・すべてがオブジェクト: 実行時に型が決まり、メタプログラミング(method_missingdefine_method など)で柔軟に振る舞いを変えられる。
  • ブロックと Enumerable: eachmapselect などをブロックで簡潔に書ける。
  • 実行系と並行性: 標準実装(CRuby/MRI)は GVL(グローバル VM ロック)により、1 プロセス内で複数スレッドが CPU を同時に使い切れない。I/O 待ちの並行は効くが、CPU バウンドはプロセス分割や別実装(JRuby 等)で対応する。近年は性能改善(YJIT)も進む。
  • gem とバンドラ: RubyGems と Bundler で依存を管理する成熟したエコシステム。

得意・不得意

  • 得意: Web アプリ開発。フレームワーク Ruby on Rails は「設定より規約(CoC)」を掲げ、素早い立ち上げと生産性で一時代を築いた。
  • 不得意: 実行速度は最速級ではなく、GVL の制約で CPU 並列を要する用途には不向き。

Python との違い

観点RubyPython
思想書いて楽しい・表現力読みやすさ・一つのやり方
代表分野Web(Rails)データ/AI・汎用・スクリプト
メタプロ強力で多用される可能だが控えめ
並行(標準実装)GVL ありGIL あり(類似の制約)

つまずきやすいところ

自由度は諸刃の剣

同じ処理を何通りにも書けるため、チームでスタイルが割れがちです(RuboCop 等の規約整備が有効)。メタプログラミングを多用したコードは定義箇所が追いにくく、読み解きに苦労します。規約に沿って書くと、Rails の生産性を最大化できます。

総じて Ruby は、表現力とメタプログラミング、そして Rails の生産性を武器に、素早いプロダクト開発で根強い人気を持つ言語です。

言語選定

Rubyを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

Web アプリ(Ruby on Rails)

比較で見る軸

型付け: 動的・強い型付け / 実行方式: インタプリタ(YARV) / パラダイム: オブジェクト指向(純粋)

導入後に効く点

Rails により Web 開発が高速

先に潰すリスク

実行速度は速くない

数字・仕様の読み方
型付け
動的・強い型付け
実行方式
インタプリタ(YARV)
パラダイム
オブジェクト指向(純粋)
登場
1995年
まつもとゆきひろ(Matz)

判断チェックリスト

  • 自社の用途が「Web アプリ(Ruby on Rails) / スタートアップの高速開発」に近いか確認する。
  • 強みである「人間中心で書きやすく表現力が高い」が本当に評価軸になるか確認する。
  • 注意点の「実行速度は速くない」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

Web アプリ(Ruby on Rails)スタートアップの高速開発スクリプト・自動化

最初の一歩

Hello, World!

puts "Hello, World!"
公式ドキュメント