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

# はじめに

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](https://java.com) から JRE 最新版をインストールします。いや、エラーでなくても JRuby が比較的新しい Java (JRE)を必要とするみたいなので念のため最新版に更新しておいたほうが良いかも。

# Ruby のインストール

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

ruby-installerでrubyをインストールするとMSYSというUN*Xライクな環境が同時インストールされますが、このMSYSのシェルがruby-processingインストールでは決定的に重要になります。MSYSじゃなくても ([Git for Windows](https://gitforwindows.org) のオマケシェル等でも) いいのですが、標準的な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](jruby.org) → Download → 最新版の Windows Executable をダウンロードし、インストールします。アーキテクチャはインストール済みの Java に合わせる必要があります。その他の質問には例によってデフォルト回答で構いません。

# パス確認

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

```shell-session:コマンドプロンプト
C:\Users\anonymous>where gem
```
```shell-session: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](https://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](https://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` を実行します。

```shell-session: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 です。違っていたら修正してください。

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

```

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

# epilogue: 試してみる

```shell-session: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
```