プログラミング言語を整える
中級Ruby を整える。
= 本物の Ruby 3.4 がブラウザ内で動く——配列・ハッシュ・ブロック・クラスを書いて確かめる練習場
初回のみ約17MBをダウンロードします(Ruby 3.4.1 の実行環境 ruby.wasm 本体)。 2回目以降はブラウザのキャッシュが効くので速く起動します。「実行」を押すまで通信は発生しません。
サンプルコード(クリックでエディタに挿入)
OUTPUT
Ruby コードを書いて「実行」を押すと、ここに puts / print / p の出力が出ます。
使い方
6 ステップ + 応用で Ruby の骨格をつかむ。
- 1
Hello World — puts / print / p
putsは改行つき、printは改行なし、pはデバッグ用に値をそのまま表示します。 - 2
変数と文字列補間
=で値に名前をつける。文字列の中に#{式}と書くと値がそのまま埋め込まれます。 - 3
配列と each / map
順番のある値の集まり。
eachで1つずつ処理、mapで変換した新しい配列を作ります。 - 4
ハッシュ — キーと値のペア
{ name: "太郎" }のように、名前をつけて値を取り出せます。 - 5
メソッドとブロック
defで処理に名前をつける。do...end(ブロック)は「処理そのもの」を引数のように渡す、Ruby らしい仕組みです。 - 6
クラス — 「もの」を作る設計図
classでものの型を定義。attr_accessorで属性の読み書きメソッドを自動生成できます。
💡 このページの実行環境は Ruby 3.4.1(ruby.wasm)。
書いたコードと実行結果は、どこにも送信されません(実行はすべて Web Worker の中、ブラウザ内で完結)。
ファイルの読み書きやネットワーク通信、gets によるキーボード入力は使えません(この練習場には「外」がないためです)。
🌐 補足: このページを開いただけでは外部通信は発生しませんが、
「実行」を押した最初の1回だけ、Ruby の実行環境(ruby.wasm・約17MB)を配信元の
cdn.jsdelivr.net から取得します。
これはプログラムを受け取るだけの通信で、あなたが書いたコードや実行結果が送られることはありません。
ただし通信である以上、配信元にはお使いの回線の IP アドレスが見えます。
「入力は端末から出さない」という当サイトの原則に関わる点なので、隠さずに書いておきます。
⏱ 無限ループ(loop { } の書き忘れなど)を書いてしまっても、5秒で自動的に止まります。
「時間切れで止めました」と出たら、コードを直してもう一度「実行」を押してください(次回実行時に環境を作り直します)。
このツールについて
Ruby は「書きやすさ」を大事に設計された言語。ブラウザ内で本物の Ruby(CRuby)が動くので、書いて → 実行 → 出力を安全に何度でも試せます。
ブラウザ内で本物の Ruby 3.4(ruby.wasm)が動く Playground。Hello World → 変数 → 配列 → ハッシュ → メソッド → クラス の6ステップ+Ruby らしい応用1本。無限ループは5秒で自動停止。初回のみ約17MB。
主な機能
- 7本のサンプル(変数と文字列補間・配列と each/map・ハッシュ・メソッドとブロック・クラス・Ruby らしい書き方)
- Web Worker で ruby.wasm(Ruby 3.4.1)を実行、画面は固まらない
- 無限ループは5秒で自動停止・次回は作り直し
- puts/print/p の出力とエラーを表示・変数は実行をまたいで持ち越し(リセット可)
- CodeMirror 6 の Ruby ハイライト・Ctrl/⌘+Enter で実行
- 初回のみ約17MBダウンロード(2回目以降はキャッシュ)・gets やファイルは使えない・送信ゼロ
よくある質問
Q. 入力した Ruby コードはサーバーに送られますか?
A. 送られません。実行環境(ruby.wasm・Ruby 3.4.1 の CRuby 公式 WASM 版)が Web Worker 内に読み込まれ、実行も出力も端末内で完結します。外へ出る通信は初回のみの実行環境ダウンロード(約17MB)だけです。
Q. なぜ Web Worker で動かしているのですか?
A. 独立した WebAssembly の Ruby 処理系を、画面とは別のスレッドで動かすためです。無限ループを書いても画面本体は固まらず、Worker だけを止められます。
Q. 無限ループを書いたらどうなりますか?
A. 5秒で自動的に Worker を終了させ「時間切れで止めました」と表示します。次に実行を押すと Worker を作り直すので、ページの再読み込みは不要です。
Q. 変数やクラスの定義は実行のたびに消えますか?
A. 消えません。同じ Worker を使い続ける限り、前回定義した変数やクラスは次の実行でも使えます(Python の練習場と同じ挙動)。全部消したいときは「リセット」を押してください。
Q. gets でのキーボード入力やファイル操作はできますか?
A. できません。この練習場には「外部」がなく、ファイルの読み書き・ネットワーク通信・gets は動きません。標準出力(puts/print/p)だけを対象にしています。
入力値はURLの「#」以降に入るためサーバーには送信されません。リンクを開くと同じ状態を復元します。