ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
概要
Ruby(ルビー) は、日本人プログラマ まつもとゆきひろ(通称 Matz)が 1993 年に開発を開始し、1995 年 12 月に最初の公開版(0.95)をリリースしたオブジェクト指向スクリプト言語です。「Perl の実用性、Smalltalk の純粋さ、Lisp の表現力」を取り入れることを目指し、何より 「プログラマが書いていて楽しい言語」 を理念に据えました。名前の由来は同僚の Perl からの連想で、宝石名つながりです。
Ruby の設計の根幹は 「すべてはオブジェクト」。整数 1 も nil も true/false もすべてオブジェクトでメソッドを持ち、1.times {|i| puts i} のように記述できます。動的型付け・強い型・ダックタイピング で、コードは英語の文章に近い読みやすさになるよう細かな構文糖が随所に施されています(unless、until、5.times、arr.each do |x| ... end など)。
実行モデルは インタプリタ+バイトコード VM。最も普及しているリファレンス実装は MRI(Matz Ruby Interpreter)、別名 CRuby で、1.9 以降 YARV(Yet Another Ruby VM) がバイトコードを実行します。3.0(2020)では Ractor(並列実行)や Fiber Scheduler、3.x で YJIT(Shopify 製の JIT)が導入され、長年の課題だった実行速度を大きく改善しました。代替実装には JRuby(JVM)、TruffleRuby(GraalVM)、mruby(組込み向け)があります。
ファイル種類とビルド成果物
| 拡張子 / ファイル | 役割 | 備考 |
|---|---|---|
.rb | Ruby スクリプト | UTF-8 が標準。# encoding: utf-8 の magic comment(1.9 以前互換) |
.rake | Rake タスク定義 | 事実上 Ruby スクリプト。rake コマンドで実行 |
.gemspec | Gem パッケージ仕様 | 名前・バージョン・依存・ファイル一覧を Ruby DSL で記述 |
.gem | Gem パッケージ | gem build の出力。gem push で RubyGems.org に公開 |
Gemfile | 依存定義 | Bundler が読む |
Gemfile.lock | 依存ロック | 本番と開発で同一バージョンに固定するため 必ずコミット |
Rakefile | Rake のエントリ | プロジェクトルートに配置 |
.erb | 埋め込み Ruby テンプレート | HTML 内に <%= ... %> を埋め込む |
「Hello, World」
#!/usr/bin/env ruby
# encoding: utf-8
# hello.rb — 最小の Ruby プログラム
def greet(name)
"Hello, #{name}!"
end
# シンボルキーを使ったハッシュ
users = [
{ id: 1, name: "Alice" },
{ id: 2, name: "Bob" }
]
users.each do |user|
puts greet(user[:name])
end
#{...} は文字列内の式展開、:name はシンボル(一意のラベル)、do |user| ... end はブロック構文です。Ruby らしさを凝縮した数行で、メソッド呼び出しの括弧を省略できる点も特徴的です。
パッケージ管理・ビルドツール
- gem:Ruby 標準のパッケージマネージャ。
gem install railsで RubyGems.org から取得 - Bundler:プロジェクトごとの依存解決。
bundle install/bundle exec - rbenv / rvm / asdf / mise:複数 Ruby バージョンの切替
- Rake:タスクランナー。
rake db:migrate、rake testなど - rspec / minitest:テストフレームワーク
- rubocop:リンタ/フォーマッタ
- YARD:API ドキュメント生成
関連言語との比較
| 項目 | Ruby | Python | Perl | PHP |
|---|---|---|---|---|
| 登場年 | 1995 | 1991 | 1987 | 1995 |
| パラダイム | オブジェクト指向中心 | マルチパラダイム | マルチパラダイム | 主に手続き+OO |
| 主用途 | Web(Rails)・スクリプト | AI・科学計算・Web | テキスト処理 | Web |
| ブロック / クロージャ | do...end ブロック | 関数オブジェクト | サブルーチンリファレンス | クロージャ |
| パッケージ | gem | pip | CPAN | Composer |
| 並行モデル | Thread + GVL / Ractor / Fiber | Thread + GIL | Thread / fork | マルチプロセス |
注意点・落とし穴
- GVL(Giant VM Lock):MRI も Python 同様にスレッド並列実行を制限する。CPU バウンドは Ractor / プロセス並列で対応
- シンボル vs 文字列:
:nameと"name"は別オブジェクト。シンボルは GC されない期間が長いので動的生成は注意(3.x で改善) nilの伝播:obj.foo.barの途中でnilが出るとNoMethodError。&.(safe navigation)やdigで回避- モンキーパッチ:標準クラスを後から変更できる強力さは諸刃の剣。
refinementsを使えばスコープ限定可能 - マジックコメントとエンコーディング:1.9 以降は UTF-8 既定。古いコードや特殊な処理では
# encoding: ...が必要 - Gemfile.lock のコミット:アプリは必ずコミット、Gem ライブラリではコミットしない(運用差)
- Rails 依存への傾倒:Ruby 学習が「Rails の知識」と混同されやすい。素の Ruby としての挙動を理解しておく
関連リンク
- 親カテゴリ:プログラミング・スクリプト
- 概論:ファイル拡張子とは
- IT サイト共通カテゴリ:プログラミング言語(カテゴリ)
- 外部:ruby-lang.org / Ruby on Rails
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?