6 年ほど前の話です。ぼくは元々 Java の技術者でしたが、転職を機に VB.NET に触れ、その後 C#をよく使うようになっていきました。
C#にだいぶ慣れた頃、「スクリプト言語の一つでも覚えてみようかな?」という軽い動機で Ruby の学習を始めました。
しかしこの時泥沼に嵌るとは思いもよりませんでした…
Windows 環境の罠
家には Windows の PC しか無かったので、Windows に環境を作りました。
Ruby のインストール自体はうまくいきました。RubyInstaller
が既に整備されていたので、Windows での環境構築自体は手順通りで問題なかったんですね。
その後 Rails のインストールで問題は起きました。therubyracer
という gem が動かなかったのです。
当時はlibv8
がどうとか、環境毎にコンパイルがどうとか、「オレはこの設定で動いたぜ!」とか、2~3日調べまくった結果、「あぁ…これはぼくの PC じゃ動かないな」という諦めに達してしましました。
これに関しては現在に至っても根強く残る問題です。(therubyrace
の件はNode.js
の登場で解決しましたが…)
今でも「Windows 向けの gem だけ上手く動かない」「バージョンが変わったら動かない」なんてのはよくあることで、1 日~数日がエラーの解消で潰れるなんてことはよくあります。
Ruby に限らない話ですが、プログラミング界隈はあくまで Unix(Mac)や Linux 中心に回っていて、Windows はあくまで後から移植される環境
であるという事を理解させられました。
エディタで疲弊
VB.NET や C#であればエディタはVisualStudio
一択です。しかし Ruby のエディタにスタンダードと呼べるものは無く、当時の選択肢としては以下のものが主流(?)でした。
- Eclipse
- RubyMine
- Vim
もともと Java 技術者だったぼくは、Eclipse に慣れていたのでそのまま Eclipse に Ruby のプラグインを入れて使ってみました。しかし非常に動作が悪く、使い物になりませんでした。
Eclipse に慣れていたぼくは「まぁ Eclipse だしな」と思い次のエディタを探しました。
RubyMine は有料だったので一旦選択肢から外し、Vim を使ってみました。というのも、エディタを調べている中で「Vim はなんでもカスタマイズできる」「プログラマなら Vim」「Vim じゃないと死んじゃう」といった声が結構な割合であって、「学習コストは高いらしいけど、長い目で見たら覚えて損は無いかな」と思ったからです。
Vim の操作自体はチートシートを使って「徐々に慣れていこう」で良かったのですが、まともな Ruby の開発環境を整えるとなると、色々なプラグインを入れなければなりません。
…が、早々にプラグイン管理で疲弊しきってしまいました。プラグインが動いたり動かなかったり、何故動かないのか調べるのに時間を使っているうちに「あれ…Ruby のコーディング全然できてないぞ!」という気持ちになり、Ruby をやる気力自体が無くなってしまいました。
実際当時 Ruby のコードを書いた記憶がほとんどありません。
Ruby をやりたかったのに、Vim の勉強を始めてしまったのが失敗だったのだと思います。
そもそもなんで覚えたかったの?
そもそも「スクリプト言語を覚えたい」という動機は、「JavaScript が苦手」という苦手意識が発端だったと思います。
当時(10 年くらい前)は JavaScript を取り巻く環境は本当に貧弱で、まともなフレームワークやエディタはほぼほぼなかったと記憶しています。(もしかしたらあったかもしれませんが、今ほど手軽でも一般的でも無かったと思います)
なのでコードを書いていてもフォーマッタも Linter も無く、テストもまともに書けず、デバッグもブラウザの貧弱なコンソールで行うしかなかったりと、Java と比べて「なんなんだこの言語は!?」という気持ちがあったのです。
Ruby でその苦手意識を払拭したかったのですが…方向性は違えど JavaScript と同じ末路を辿ってしまったのです。
現在の状況
2018 年現在、環境は驚くほど良くなっています。
Windows で Ruby を動かす時に上記のようなエラーに当たることは、少なくなってきているとは思いますがまだまだあります。強い心を持ってエラーに立ち向かってもいいんですけど、今は他にも色々な選択肢があります。
ぼくのおすすめはWindows Subsystem for Linux(WSL)
です。ファイルシステムの共有もできるし、切り替えも簡単です。WSL 特有の問題があったり、100%Linux 互換ではありませんが、Windows 上で Ruby を動かすよりははるかにマシです。
他にも仮想環境で Linux を動かしてもいいです。VirtualBox
だったりHyper-v
だったり…あるいはDocker
でもいいかもしれません。
エディタも種類が増えました。既に慣れているのであればVim
でいいと思いますが、言語の初心者であれば「エディタの習得」よりも「言語の習得」に重きを置きたいはずです。なのでおすすめはAtom
かVSCode
ですね。どちらもクロスプラットフォームで OS を選びませんし、インストールすればすぐにコードが書き始められます。(Ruby プラグインは入れる必要があるので、オールインワンというわけでは無いですが、数分で出来るので環境構築の負担はほとんど感じません)
そういえば JavaScript を取り巻く環境も驚くほど良くなっていますね!
ES6
に始まりnpm
でeslint
を入れたり、mocha
やjasmine
でテストしたり、babel
やwebpack
、gulp
などなど、久しぶりに触れると覚えることの多さにびっくりしますが、当時の貧弱な環境に比べるとあまりの進化ぷりにびっくりでした。Node.js
は偉大です。
Windows における Ruby の環境はここ数年で大分マシになりました。が、あくまで「Windows という環境は Ruby に向いていない」ということを承知の上で「なんとか頑張ればギリギリ実用に耐えうる環境を作れる」ということでしかないかもしれません。(実行環境なんかは結局 Linux ですし)
これから Ruby を始めるキミ、素直に Mac か Linux にしとけ!