Windows環境でのRubyの環境構築は時間コストがかかりすぎる

#始めに
Windows環境でRubyで
・DBにアクセスする
・Webアプリケーションを作る
といったまともにアプリケーションを作れる環境を構築するには、JavaやC#(※１)に比べて時間がかかりすぎるというお話。

※１いや、C#やJavaはともかく、F#やGroovyといったマイナーな言語よりも面倒くさいです

#開発環境
- windows10
- ruby2.4.0
- jdk1.8
- ecliplse Neon Release (4.6.0)
- oracle12c

#Ruby on Railsがどうやってもインストールできない
Ruby on RailsあたりでWebApiモジュールを作ろうと思いRailsを導入しようとしたが・・・

```
C:\DevKit>gem install rails
Building native extensions.  This could take a while...
ERROR:  Error installing rails:
        ERROR: Failed to build gem native extension.

    current directory: C:/Ruby24/lib/ruby/gems/2.4.0/gems/nio4r-2.1.0/ext/nio4r
C:/Ruby24/bin/ruby.exe -r ./siteconf20170720-6112-ak25be.rb extconf.rb
checking for unistd.h... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.
```
がどうしても解消できない。
Ecliplseを使ってWebモジュールがサクッと動かせる開発に慣れてしまうと、こういう環境周りでうまくいかないことに相当なフラストレーションを感じてしまう。
Webで調べてもたいていはUnix系のOSかMacOsの記事ばかりで、
Windows系のサイトの情報は極論すれば
`gem install railsすれば簡単に出来る`
というものばかりで役に立ちませんでした。
そういうのもフラストレーションがたまる一因だ
というか、今のご時世、環境構築するためにCモジュールをWindows上でコンパイルさせるフレームワークってどうよと思うのだが。

#Oracleへのアクセス
ruby-oci8-2.2.4-x64-mingw32.gemをインストールし、oracleに接続するプログラムを書いてみた

```Oracle.rb
require 'oci8'
sid = "//localhost:1521/triple_pb.co.jp"

sql = 'select table_name from user_tables'

oracle = OCI8.new("triple","triple",sid);

oracle.exec(sql) do |row|
    puts row.join(',')
end
```
で結果は

```
C:/Ruby24/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require': OCI.DLL: 193(%1 �͗L���� Win32 �A�v���P�[�V�����ł͂���܂���B  ) (LoadError)
	from C:/Ruby24/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from C:/Ruby24/lib/ruby/gems/2.4.0/gems/ruby-oci8-2.2.4.1-x86-mingw32/lib/oci8.rb:107:in `<top (required)>'
	from C:/Ruby24/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:133:in `require'
	from C:/Ruby24/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:133:in `rescue in require'
	from C:/Ruby24/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:40:in `require'
	from C:/Users/takayoshi/workspace/MyRuby/OracleTest.rb:1:in `<main>'
```
OCI.DLLが読み込めないらしきエラーが発生している。
JDBCのthinでDBに接続するのが当たり前だった私からすると、clientの設定に依存する形でしかDBアクセスにできないとなると、率直に言って不便すぎる
ちなみに、JRubyでthinで接続してDBアクセスするプログラムを書いてみた

```OracleTest.rb
require 'java'

java_import 'oracle.jdbc.OracleDriver'
java_import 'java.sql.DriverManager'

sid = "jdbc:oracle:thin:@//localhost:1521/triple_pb.co.jp"   

oradriver = OracleDriver.new
DriverManager.registerDriver oradriver
conn = DriverManager.get_connection(sid,'triple', 'triple')
sql = 'select table_name from user_tables'
conn.auto_commit = false
stmt = conn.prepare_statement(sql);
rowset = stmt.executeQuery()

while (rowset.next()) do
  puts rowset.getString(1)
end
```
こっちは```
WORD_DICTIONAY
WEBPAGE_WORD
EMP
PARKINGATTIME```
出力されと正常にDBにアクセスできる
ただ、上記のプログラミングだとPreparedSteatmentやResultSetを生で使わないといけないJavaライクな書き方になってしまうので、Rubyを使う意味がまったくなくなってしまう。
これだったら、Groovyでプログラムを書くほうがまだましだ

#おわりに
Web上だと
「Rubyを使って簡単にWebアプリ開発」
というページがあふれているが、個人的には
「どこが簡単？環境構築が面倒くさすぎる」
というのが正直なところ
JavaのEclipse、C#のVisualStudio並の統合開発環境がないと
「簡単に開発できる」
なんて言ってはいけないと思う