Windows 10で、スモウルビー３の開発環境をセットアップする


## はじめに

この記事では、スモウルビーの開発に必要なソフトウェアをWindows 10にインストールする手順を説明します。

対象とするOSはWindows 10で、この記事を書いた時点で最新のWindows Updateを適用済みのものを対象とします。

この記事でインストールするソフトウェアは次のものです。各種ファイルのダウンロード先はどこでも問題ないとは思いますが、この記事ではデスクトップを指定しています。

 * 7-Zip 16.04 (2016-10-04) 32-bit x86
 * MSYS2 x86_64-20180531
 * ruby 2.4.6-1(x86)
   * [RubyInstaller for Windows](https://rubyinstaller.org/) で配布されているものを使います。
   * 2.4以降のものであれば、おそらく同じ手順でバージョンだけを変えればインストールできるのではないかと思います。もしインストールに失敗する場合はコメント等で教えていただけますと幸いです。
 * Git 2.14.2 (MSYS2)
 * bundler 1.15.4
 * DXRuby 1.4.5
 * smalruby3 0.0.1

スモウルビーのインストール先は、Cドライブ直下の「smalruby」フォルダとします。

## インストール

それでは、順番にソフトウェアをインストールしていきます。

なお、この記事の「\」記号は半角の「￥」記号に読み替えてください。

### 7-Zip

この記事では7-ZIP形式で圧縮して配布されているrubyを利用します。そのため、まずは7-ZIP形式のファイルを展開するためのソフトウェア [7-Zip](http://www.7-zip.org/) をインストールします。

[7-Zip](http://www.7-zip.org/) から次のソフトウェアをダウンロードします。

 * [7-Zip 16.04 (2016-10-04) 32-bit x86](http://www.7-zip.org/a/7z1604.exe)

ダウンロードしたファイルを実行します。このとき、ユーザー アカウント制御のダイアログに警告が表示されます。「プログラムの場所」が先程ダウンロードしたファイルと一致することを確認して、「はい」を選びます。
<img src="https://qiita-image-store.s3.amazonaws.com/0/4197/fe88c3e6-f3c0-7a50-2559-e3d7c009f13c.png" style="border: 1px solid gray">

すると、7-Zip 16.04 Setupダイアログが表示されますので、「Install」ボタンを押します。少し待つとインストールが完了して、「Close」ボタンが表示されますので、「Close」ボタンを押します。
<img src="https://qiita-image-store.s3.amazonaws.com/0/4197/745ca48a-2417-e929-345c-e5c345446a77.png" style="border: 1px solid gray">

これで、7-Zipのインストールができました。

さらに、インストールした7-Zipと拡張子7zを関連付けます。
スタートメニューから「7-Zip」 - 「7-Zip File Manager」を選択して7-Zipを起動します。
<img src="https://qiita-image-store.s3.amazonaws.com/0/4197/31fa4624-4c67-716a-a903-a44f40ebd01e.png" style="border: 1px solid gray">

7-Zipのメニューの「ツール」-「オプション」を選びます。
<img src="https://qiita-image-store.s3.amazonaws.com/0/4197/2e54271b-278b-0fce-1519-24fd45c98a25.png" style="border: 1px solid gray">

オプションダイアログの「システム」タブの一覧の「種類」-「7z」の自分のアカウント名(スクリーンショットではkouji)をクリックします。すると、「7-Zip」と表示されます。この状態でOKボタンを押します。これで、7-Zipと拡張子7zのファイルを関連付けることができました。
<img src="https://qiita-image-store.s3.amazonaws.com/0/4197/37c4d012-31a0-af1c-1fee-89c97bdfb1b2.png" style="border: 1px solid gray">

これで、これからダウンロードするrubyを展開できるようになりました。

### MSYS2

[MSYS2 installer](http://www.msys2.org/)で配布されているOne click installer for msys2を利用して、MSYS2をインストールします。

スモウルビーのインストールに必要となるソフトウェアのいくつかは、MacやLinux等のWindows以外のOS向けに作られています。それらをWindowsでも動作できるようにするソフトウェアがMSYS2です。

[msys2-x86_64-20180531.exe](http://repo.msys2.org/distrib/x86_64/msys2-x86_64-20180531.exe) をダウンロードし、実行します。MSYS2 64bitのセットアップダイアログの指示に従ってインストールします。まずは次へボタンを押します。
<img src="https://qiita-image-store.s3.amazonaws.com/0/4197/ac5662f1-73f2-e034-6559-8a3703c52530.png" style="border: 1px solid gray" width="500px">

次のダイアログではあらかじめ入力されている *「C:\msys64」を「C:\smalruby\msys64」に変えてから* 次へボタンを押します。
<img src="https://qiita-image-store.s3.amazonaws.com/0/4197/1651a41d-2293-c289-ceb1-535992fed0e9.png" style="border: 1px solid gray" width="500px">

次のダイアログは、そのまま次へボタンを押します。
<img src="https://qiita-image-store.s3.amazonaws.com/0/4197/8468ed76-3a83-7c01-602a-3988f8136aec.png" style="border: 1px solid gray"  width="500px">

すると、ファイルのコピーが始まります。コピーするファイルがとても多いため、インストールにはしばらく時間がかかります。
<img src="https://qiita-image-store.s3.amazonaws.com/0/4197/37bc209a-e075-f24f-0148-ff2381d9aca9.png" style="border: 1px solid gray" width="500px">


ファイルのコピーが終わると完了ボタンが表示されます。「MSYS2 64bit を実行中」をチェックした状態で完了ボタンを押します。
<img src="https://qiita-image-store.s3.amazonaws.com/0/4197/b16904f4-e981-964d-f0b7-f4095ab832d1.png" style="border: 1px solid gray">

すると、黒い画面のウインドウが表示されます。これがMSYS2の画面です。
<img src="https://qiita-image-store.s3.amazonaws.com/0/4197/ae92ae4f-6e3c-a1f8-80ab-4c1feafb1e7b.png" style="border: 1px solid gray">

ここからは、この画面にキーボードでコマンドを入力してコンピュータを操作します。

まずは、

```bash
pacman -Syu
```

と入力して、最後にEnterキーを押して、コマンドを実行します。

「インストールを行いますか？[Y/n]」と表示されたら、何も入力せずにEnterキーを押します。
<img src="https://qiita-image-store.s3.amazonaws.com/0/4197/c66d9646-bb9a-7e53-8aa2-b734b8b4cf64.png" style="border: 1px solid gray">

しばらくして、以下のように表示されたらMSYS2のウインドウのXボタンを押して閉じます。理由は分かりませんが、簡単に閉じることはできず、強制的に閉じますか的なダイアログが表示されるので、何度かXボタンを押して強制的にウインドウを閉じます。
<img src="https://qiita-image-store.s3.amazonaws.com/0/4197/1690e98b-961c-8c6c-f060-9d691cc7f3ad.png" style="border: 1px solid gray">

もう一度、MSYS2を起動します。スタートメニューから「MSYS2 64bit」-「MSYS2 MSYS」を選びます。
先程のコマンドと似ていますが、今度は、

```bash
pacman -Su
```

というコマンドを実行します。

「インストールを行いますか？[Y/n]」と表示されたら、何も入力せずにEnterキーを押します。
![スクリーンショット 2017-10-26 13.26.57.png](https://qiita-image-store.s3.amazonaws.com/0/4197/95a65ec8-8344-6b98-7bed-847879eb5e63.png "スクリーンショット 2017-10-26 13.26.57.png")

しばらくして、「$」と表示されてカーソルが点滅していたらMSYS2のインストールは完了です。Xボタンを押してMSYS2を終了させます。
![スクリーンショット 2017-10-26 13.38.12.png](https://qiita-image-store.s3.amazonaws.com/0/4197/84da91cd-ae2f-c5e5-73c7-a796a699139d.png "スクリーンショット 2017-10-26 13.38.12.png")

### ruby 2.4.6

[RubyInstaller for Windows](https://rubyinstaller.org/) の [Downloadページ](https://rubyinstaller.org/downloads/) の Other Useful Downloadsの一覧から、

 * 7-ZIP ARCHIVES
   * [Ruby 2.4.6-1(x86)](https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.4.6-1/rubyinstaller-2.4.6-1-x86.7z)

をダウンロードします。

ダウンロードした [rubyinstaller-2.4.6-1-x86](https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.4.6-1/rubyinstaller-2.4.6-1-x86.7z) をダブルクリックして、7-Zipで開きます。

ツールバーの展開ボタンをクリックします。
<img src="https://qiita-image-store.s3.amazonaws.com/0/4197/d3c33ba8-19fa-733e-b1ec-b5758ece3260.png" style="border: 1px solid gray">

コピーダイアログが表示されるので、あらかじめ入力されている *「C:\Users\kouji\Desktop\」を「C:\smalruby」に変えてから、* OKボタンを押します。しばらくすると、すべてのファイルが展開されて、コピーダイアログが自動的に閉じられます。
<img src="https://qiita-image-store.s3.amazonaws.com/0/4197/c970e304-2ddf-fc80-eeba-c781606c2f08.png" style="border: 1px solid gray" width="500px">

7-ZIPを終了します。

エクスプローラを使って、展開したフォルダ「rubyinstaller-2.4.6-1-x86」の名前を「ruby_2.4.6-1-x86」に変更します。
<img src="https://qiita-image-store.s3.amazonaws.com/0/4197/c41b56b1-ec60-ad3f-d51a-8397ccd0201a.png" style="border: 1px solid gray" width="500px">

スタートメニューから「Windows システム ツール」-「コマンド プロンプト」を選び、コマンド プロンプトを起動します。MSYS2と同じようなウインドウが表示されますが、少し見た目が違います。
<img src="https://qiita-image-store.s3.amazonaws.com/0/4197/fb88496e-86be-cb5b-e8d1-3d8540c176a0.png" style="border: 1px solid gray" width="600px">

MSYS2のときと同じように、コマンドを入力してコンピュータを操作します。

```.bat
cd \smalruby\ruby_2.4.6-1-x86\bin
```

すると、画面の表示が次のように変わるはずです。ここで、「指定されたパスが見つかりません。」と表示された場合は、入力したコマンドに間違いがあるか、rubyを展開したり、フォルダの名前を変更する手順が間違っている可能性があります。
<img src="https://qiita-image-store.s3.amazonaws.com/0/4197/535b33e3-ca61-6afb-4d32-0b195a007f73.png" style="border: 1px solid gray" width="600px">

次に

```.bat
ridk install
```

を実行します。

すると、次のように表示されますので、「3」を入力して、Enterキーを押します。
<img src="https://qiita-image-store.s3.amazonaws.com/0/4197/439fab36-7722-e83f-5d0c-e51fa43eb85b.png" style="border: 1px solid gray" width="600px">

しばらくすると、次のように表示されますので、何も入力せずにEnterキーを押します。
<img src="https://qiita-image-store.s3.amazonaws.com/0/4197/1760a1f7-acbe-b629-6105-f91cf568ab41.png" style="border: 1px solid gray" width="600px">

最後に、rubyを使えるようにしたコマンドプロンプトを起動するためのバッチファイルを「smalruby」フォルダに「cmd.bat」という名前で作成します。バッチファイルはメモ帳等で次の内容のファイルを作成して、「C:\smalruby\cmd.bat」に保存します。

```.bat:cmd.bat
@setlocal

call %~dp0ruby_2.4.6-1-x86\bin\ridk.cmd enable

@if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH%
@if not exist "%HOME%" @set HOME=%USERPROFILE%

@cd /d %~dp0
@start %COMSPEC%
```

(cmd.batの[Gistはこちら](https://gist.github.com/takaokouji/9537f22c930e9af504c6924bebe948ae))

今後は、Cドライブの「smalrubu」フォルダにある「cmd.bat」ファイルをダブルクリックするとrubyが使えるようになります。

これで手元のコンピュータでrubyを実行できるようになりましたね。

以降の操作は、cmd.batを使って行います。

### Git

TODO: Gitの説明を記述する。一言でOK。

(cmd.batを起動して)次のコマンドを実行します。

```.bat
pacman -S git
```

次のように表示されますので、何も入力せずにEnterキーを押します。
<img src="https://qiita-image-store.s3.amazonaws.com/0/4197/bb1ca7e9-353b-b13e-22a5-970e5ebd723f.png" style="border: 1px solid gray" width="600px">

しばらくすると、次のように表示されればインストールは完了です。
<img src="https://qiita-image-store.s3.amazonaws.com/0/4197/9ff7ab25-d0f7-5236-a17c-57c3f5b2b7f3.png" style="border: 1px solid gray" width="600px">

### bundler

TODO: bundlerの説明

(cmd.batを起動して)次のコマンドを実行します。

```.bat
gem install bundler -v 1.16.6
```

すると、次のダイアログが表示されます。パスが「C:\smalruby\ruby_2.4.2-2-x86\bin\ruby.exe」であることを確認したら、アクセスを許可するボタンを押します。使っているコンピュータによっては、キャンセルボタンしか押せないかもしれません。その場合は、キャンセルボタンを押します。
<img src="https://qiita-image-store.s3.amazonaws.com/0/4197/1f8cf04a-a3ed-a367-d6b2-a9e6abc3ef2c.png" style="border: 1px solid gray" width="500px">

### smalruby3

smalrubyは、[Scratch](https://scratch.mit.edu)の命令ブロックをRubyのメソッドとして使えるようにするためのライブラリです。例えば、「[10]歩動く」命令ブロックは、Characterクラスの「move」メソッドとして提供しています。

(cmd.batを起動して)次のコマンドを実行します。

```.bat
git clone https://github.com/smalruby/smalruby3.git

(以下のように表示されればOK。数値は違うかもしれません。)
Cloning into 'smalruby3'...
remote: Counting objects: 1844, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 1844 (delta 3), reused 3 (delta 1), pack-reused 1833
Receiving objects: 100% (1844/1844), 1.83 MiB | 220.00 KiB/s, done.
Resolving deltas: 100% (1035/1035), done.
```

```.bat
cd smalruby3
```

```.bat
bundle

(ずらずらと英語が表示されて、最後のあたりに以下のように表示されればOK。数値は違うかもしれません。)
Bundle complete! 11 Gemfile dependencies, 55 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
Post-install message from yard:
--------------------------------------------------------------------------------
As of YARD v0.9.2:

RubyGems "--document=yri,yard" hooks are now supported. You can auto-configure
YARD to automatically build the yri index for installed gems by typing:

    $ yard config --gem-install-yri

See `yard config --help` for more information on RubyGems install hooks.

You can also add the following to your .gemspec to have YARD document your gem
on install:

    spec.metadata["yard.run"] = "yri" # use "yard" to build full HTML docs.

--------------------------------------------------------------------------------
```

```.bat
bundle exec rake spec

(ずらずらと英語や日本語が表示されて、最後のあたりに以下のように表示されればOK。数値は違うかもしれません。)
Finished in 1.08 seconds (files took 4.22 seconds to load)
146 examples, 0 failures

Randomized with seed 58798

[Coveralls] Outside the CI environment, not sending data.
```

ここでもし、以下のエラーが発生する場合は、本文章の下部にある「付録1. dxruby.soの作り方」を参考にして、dxruby gem の再インストールをしてください。

```text
C:/smalruby/ruby_2.4.2-2-x86/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:133:in `require':LoadError: 126: 指定さ れたモジュールが見つかりません。   - C:/smalruby/ruby_2.4.2-2-x86/lib/ruby/gems/2.4.0/gems/dxruby-1.4.5/lib/2.4/dxruby.so
```

```.bat
bundle exec ruby examples\event.rb
```

これでねこが左右に往復するサンプルプログラムが動作すればOKです。

```.bat
cd ..
```

これでsmalruby3をインストールできました。また、ソースコードが「C:\smalruby\smalruby3」にあるのでsmalruby3そのものを改修する準備も整いました。

## 動作確認

### smalruby

WIP: 実際にソースコードを編集して、それが反映されたことを確認するための手順を記述する。簡単な命令を追加して、それを実行できるかどうかを確認すればOKですね。