Windows上でRuby初心者向け学習環境を作る

Posted by Hidekazu Nozaka on January 11, 2017 · 1 min read

NaClの野坂です。

普段は松江市にある本社オフィスで、主にRubyを使ったシステム開発をしつつ、時々Ruby関連のセミナー講師なども務めています。
また、週末は地元のサッカーチームを応援するサポーター活動などしています。

サッカー大好きな私としては、いつか松江市が「サッカーの街」として有名になってくれたらいいなぁ、などと密かに念じていたり
しますが、やっぱり業界的には「Rubyの街」という印象が圧倒的かと思います。
実際、地元のクラブの試合を応援していても、ハーフタイムの雑談中に、IT業界とは無縁なはずのサポーター仲間から、

「Rubyってヤツを勉強しようと思ったら、どう始めればいいの?」

なんて普通に聞かれたりする街です。

本稿では、そんなRuby初心者に実際にRubyが実行できる環境を提供する方法についてご紹介したいと思います。

意外と存在するハードル

初心者向けのセミナー受講者や、ちょっとRubyってどんなものだか興味を持った一般の人に対して、実際にRubyに触れてもらおうと
思った場合、その相手が保有するPC上に何とかしてRubyの実行環境をインストールしてもらわねばなりません。
そして、そうした初心者ユーザーが手軽に用意できるPCというと、たいていの場合OSがWindowsになります。

もちろん、RubyInstaller を始め、世の中にはWindows環境向けのRuby実行環境を提供してくれる
サイトは複数存在しているわけですが、

  • 学校(または職場)のPCで、認められていないプログラムのインストールが禁止されている
    • あるいは環境変数の変更が禁止されている(PATHが通せず、初心者が躓くポイントになる)
  • そもそもインターネット接続環境が無い

等々の理由で、意外とハードルを感じて挫折してしまう初心者が少なくないことに気づきました。

また、仕事でRubyのセミナーをする場合では、セットアップする台数が多い時などはインストーラーから導入する方法は採りづら
いのも事実です。
(※ セミナーで使用するgemなどを事前に導入しておきたいため)

解決方法

でも、せっかく松江という街で、IT業界と無縁のはずの一般の人もRubyに興味を持ってくれている現状を考えると、なるべくなら
多くの人にRubyに触れてもらいたいものです。
一方、現実問題としてあまりサポートに時間を取られるわけにもいきません。

これらの点を考えた時、浮かんでくる解決方法は「予めWindows上でRuby実行環境を構築しておき、それをフォルダごとコピーして
もらう」というものでした。

長々と引っ張った割には捻りの無い結論ですが、

  • 柔軟に、必要最低限の環境を構成できる
  • 一度構築したら、容易に使い回しができる
  • テキストエディタやサンプルファイルなど、同梱ファイルも自由に編成できる
  • 環境変数の変更など、OSの設定を修正したりする必要がなくなる
    • 不要になった際の後片付けが楽(コピーしたフォルダを丸ごと削除するのみ)

などの理由から、この方法で作った実行環境をCDなりUSBなりに保存して渡し、

「これコピーして、中の○○ってファイルをダブルクリックしてね!」

とやるのが、私の経験の範囲では一番問題が起きにくいと感じています。

以下、実際に環境を準備する手順をご紹介します。

準備

※ 以下の説明は全てWindows上でCドライブを操作ドライブとして前提しています。

まず、Ruby実行環境一式を収めるトップディレクトリを作ります。
ここでは、仮に「C:\ruby_env」と名付け、以下本ディレクトリを「トップディレクトリ」と呼称します。

この時、パス名にはマルチバイト文字(日本語等)やスペースを含めないよう注意してください。

Ruby実行環境の導入

次に、Ruby実行環境を導入します。

Windows上のRuby実行環境であれば何でも支障ありませんので、自分でコンパイルしても問題はないのですが、
ここではRubyInstallerを利用させて貰います。
ダウンロードページから、必要となるRubyの実行環境をダウンロード
し、トップディレクトリ直下に展開します。

※ 本例では「ruby-2.3.3-x64-mingw32.7z」を使いました。
インストーラー形式でも7zip形式でもどちらでも問題ありませんが、7zip形式の方が解凍するだけで済む(インストーラーの場合は後でアンインストールする必要がでる)のでお勧めです。

展開後のディレクトリ構造は、以下のようになります。

c:\
 └─ ruby_env
         └─ ruby-2.3.3-x64-mingw32
                  ├─ bin
                  ├─ include
                  ├─ lib
                  └─ share

学習者用作業ディレクトリの用意

学習者が作成したプログラムを配置するためのディレクトリを作成します。
名称は何でもいいのですが、ここでは仮に「src」と名付け、トップディレクトリ直下に用意します。

c:\
 └─ ruby_env
         ├─ ruby-2.3.3-x64-mingw32
         └─ src

以下、必要に応じてサンプルソースを配置する「examples」などを作っていくことが多いです。

起動用ファイルの準備

上記の構造ができたら、トップディレクトリ直下に「cmd.bat」という名称のテキストファイルを作りましょう。
内容は、メモ帳などで以下のように記述します。

@echo off

set PATH=%~dp0ruby-2.3.3-x64-mingw32\bin;%PATH%

cd %~dp0src

%COMSPEC%

ここで、バッチファイルの各行は次のような意味です。

  • 「@echo off」
    • 無くても構いませんが、コマンド実行結果などの出力を抑制するために付けています。
  • 「set PATH=...」
    • 本実行環境のRubyインタプリタへのPATHを環境変数に一時的に追加します。
    • 追加された環境変数は、コマンドプロンプトを終了すると消え、OS上の設定として残ることはありません。
    • 「%~dp0」とは、Windowsが用意している変数で、コマンドライン引数のパスを返します。ここではバッチファイルのカレントディレクトリ(即ちトップディレクトリ)が返されます。
  • 「cd %~dp0src」
    • トップディレクトリ(%~dp0)直下の「src」ディレクトリにカレントを移します。
    • 「%~dp0」が返す値には、末尾に「\」が含まれるため、「\」の明示は不要です。
  • 「%COMSPEC%」
    • Windows標準で用意されている環境変数「COMSPEC」を参照し、そこに格納されているコマンドプロンプトの実行ファイルを起動します。

このように「%~dp0」を使うことで、バッチファイルが置かれたディレクトリ名を参照することができるため、トップディレクトリは
任意のパスに配置することができるようになります。
ただし、トップディレクトリに至るまでのパス中に、

  • マルチバイト文字列
  • 半角スペース

のいずれかを含むディレクトリが存在すると、正しくRubyインタプリタが実行できないため、ご注意ください。

ここまで実行すると、トップディレクトリの下は以下のようになっているはずです。

c:\
 └─ ruby_env
         ├─ ruby-2.3.3-x64-mingw32
         ├─ src
         └─ cmd.bat

必要gemの導入

もし、同梱しておきたいgemなどがあれば、この段階でcmd.batを実行し、インストールしておきます。
こうしておけば、大量のPCに配布する場合も楽に行うことができるようになりますし、インターネット環境が無いPCにも必要なgem
を同梱したRuby実行環境を導入できるようになります。

完成&配布

後は、適宜必要なファイル(readme.txt等)を追加した上で、トップディレクトリを丸ごとコピーし、目的のPC上の
任意のパスに(前述の注意点を守った上で)コピーすれば完成です。
ファイルをコピーするのみで、インストーラーの実行も環境変数などのOSの設定変更もなく、初心者向けのRuby学習環境をWindows
上に構築できます。

場合によってはUSBメモリに収めたまま利用することもできるので、初心者の方のPCにRuby実行環境を構築する手段の一つとして、
何らかの参考にでもなれば幸いです。