2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Windows に ruby-processing を入れるのは大変でござるの巻

Last updated at Posted at 2018-07-05

はじめに

Windows 上に ruby-processing の環境を作ろうとしたらひどく苦労したのでメモ。(2018年7月現在)

概要

  • 必要なもの: Ruby, JRE, JRuby, Processing, ruby-processing, UNIXライクなシェル
  • 問題点
    1. ruby-processingのメンテナンスがされていないため?インストーラがアクセスするURLがリンク切れ。
    2. Rakefile が UNIXコマンドを使う (cpとか)。
    3. Ruby と Jruby で一部のコマンド(gem)が競合するので、環境変数Pathを適切に設定する必要がある。

Java のインストール

シェルから java と打ってみて command not found 的なエラーが出たらhttps://java.com から JRE 最新版をインストールします。いや、エラーでなくても JRuby が比較的新しい Java (JRE)を必要とするみたいなので念のため最新版に更新しておいたほうが良いかも。

Ruby のインストール

https://rubyinstaller.org/から最新版をダウンロードして、デフォルトのままインストール。ダウンロードするのは WITHOUT DEVKIT の方でいいです。(というか、DEVKITつきの方をダウンロードしたらWindows Defenderにトロイの木馬だと言われて隔離されてしまった。)

ruby-installerでrubyをインストールするとMSYSというUN*Xライクな環境が同時インストールされますが、このMSYSのシェルがruby-processingインストールでは決定的に重要になります。MSYSじゃなくても (Git for Windows のオマケシェル等でも) いいのですが、標準的なUNIXシェルコマンドが動かせるシェル環境が必要です。

MSYSがWindowsのパスを見るように

環境変数MSYS2_PATH_TYPEの値をinheritにするとWindowsのパス等がMSYSのシェルに引き継がれるそうなのでそうしておきます。
環境変数の設定はスタート画面 > Windowsシステムツール > コントロールパネル > システムとセキュリティ > システム > システムの詳細設定 > 詳細設定 > 環境変数から行います。ユーザの環境変数を新規(N)...で追加し、変数名をMSYS2_PATH_TYPEに、値をinheritにしてください。

(MSYSのウィンドウが開いている場合は一度閉じて) スタート画面からシェル(MSYS2 MSYS)を起動して、rubyと打ち込んで command not found じゃなければ ok.

JRuby のインストール

https://jruby.org → Download → 最新版の Windows Executable をダウンロードし、インストールします。アーキテクチャはインストール済みの Java に合わせる必要があります。その他の質問には例によってデフォルト回答で構いません。

パス確認

Ruby と JRuby の両方にパスが通っているのですが、Ruby の方を優先する必要があります。最新のPathを反映させるためにシェルのウインドウを一度閉じて開きます。続いて以下のように入力します。

コマンドプロンプト
C:\Users\anonymous>where gem
bash
anonymous@erewhon MSYS ~
$ which gem

ここで、/c/jruby-9.2.0.0/bin/gemのように、jruby の方の gem が(最初に)出るようであればパスの修正が必要です。この記事の手順で作業すると必要になると思います。ふたたび環境変数のPathを編集して、JRubyのエントリを一番下に持っていってください。編集したら念のためにシェルのウィンドウを一度閉じて、再度開いて確認しましょう。

ruby-processing をインストール

  • bash のウィンドウで gem install -N ruby-processing を実行
  • 続けて rp5 setup install を実行…するもダウンロードで失敗 (404: Not Found.) する。

はい、失敗するけどそれは織り込み済みです。

JRubyのjarの準備(大変ややこしい)

最大のトリックです。ruby-processing には ruby-complete-1.7.26.jar というファイルが必要なのですが、

  • インストーラにハードコードされたURLがリンク切れで自動では落とせない。(前項のエラーの原因)
  • 手動インストールでもなぜかリンク切れの場合が多い。

という問題があります。そこで以下のようにします。

  • jruby.org → Download → All Releases を開きます。
  • if ruby-complete-1.7.26.jarダウンロードできれば それをダウンロードします。
  • else バージョン 1.?.? 系で、できるだけ新しいもの(1.7.27とか)の中でダウンロードできるものをダウンロードして、ファイル名を jruby-complete-1.7.26.jar変更して (1.7.26 と偽って)保存します。
  • それを c:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\ruby-processing-2.7.1\vendors\ に移動します。(2.5.0の部分は実際にインストールしたRubyのバージョンで。)

processing のインストール

  • processing.org から バージョン 2. 系の最新版(2.2.1)をダウンロード。
  • 展開したフォルダの中にあるprocessing-2.2.1メインで使う予定のUN*Xライクシェルのホームディレクトリ に置きます。この記事で前提としている MSYS2 の場合は C:\msys64\home\ユーザ名\ です。Git for Windows のおまけの git bash の場合は Windows のホームと同じ C:\Users\ユーザ名\ だったと思います。

あらためて ruby-processing をインストール

bashのウィンドウで rp5 setup install を実行します。

bash
anonymous@erewhon MSYS~
$ rp5 setup install
mkdir -p ../lib/ruby
cp -v ruby-complete-1.7.26.jar ../lib/ruby/jruby-complete.jar
'ruby-complete-1.7.26.jar' -> '../lib/ruby/jruby-complete.jar'

とこんなふうになれば ok です。

.rp5rcの確認

UNIXライクシェルのホームディレクトリに作られているはずの .rp5rc を確認し、processing-2.2.1の置き場が正しく指定されていれば ok です。違っていたら修正してください。

bash
anonymous@erewhon MSYS~
$ cat .rp5rc
---
PROCESSING_ROOT: C:\msys64\home\anonymous/processing-2.2.1
JRUBY: true

インストールはここまでです。お疲れ様でした。

epilogue: 試してみる

bash
anonymous@erewhon MSYS~
$ cat > hinomaru.rb
def setup
  size 640, 480
end
def draw
  background 255, 255, 255
  fill 255, 0, 0
  ellipse 320, 240, 200, 200
end
^D
anonymous@erewhon MSYS~
$ rp5 run hinomaru.rb
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?