本文へスキップ
totonoe.tech

プログラミング言語を整える

中級

Ruby を整える

= 本物の Ruby 3.4 がブラウザ内で動く——配列・ハッシュ・ブロック・クラスを書いて確かめる練習場

初回のみ約17MBをダウンロードします(Ruby 3.4.1 の実行環境 ruby.wasm 本体)。 2回目以降はブラウザのキャッシュが効くので速く起動します。「実行」を押すまで通信は発生しません。

サンプルコード(クリックでエディタに挿入)

RUBY EDITOR Ruby 3.4.1(ruby.wasm)

OUTPUT

Ruby コードを書いて「実行」を押すと、ここに puts / print / p の出力が出ます。

使い方

6 ステップ + 応用で Ruby の骨格をつかむ。

  1. 1

    Hello World — puts / print / p

    puts は改行つき、 print は改行なし、 p はデバッグ用に値をそのまま表示します。

  2. 2

    変数と文字列補間

    = で値に名前をつける。文字列の中に #{式} と書くと値がそのまま埋め込まれます。

  3. 3

    配列と each / map

    順番のある値の集まり。each で1つずつ処理、 map で変換した新しい配列を作ります。

  4. 4

    ハッシュ — キーと値のペア

    { name: "太郎" } のように、名前をつけて値を取り出せます。

  5. 5

    メソッドとブロック

    def で処理に名前をつける。 do...end(ブロック)は「処理そのもの」を引数のように渡す、Ruby らしい仕組みです。

  6. 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の「#」以降に入るためサーバーには送信されません。リンクを開くと同じ状態を復元します。

続けて整える

KOINOBORI ECOSYSTEM

私たちが運営するサイト