nabeliwonote

Railsをどうしても認められないこの気持ち、恋かな

JavaScript一筋のフロントエンドエンジニアだった僕がサーバーサイドにコンバートしてRailsを触るようになってもう少しで1ヶ月が経ちます。
この記事はそんな僕の現在の気持ちを吐き出すためのものです。

Ruby、意外と良い

そりゃあもちろんいろんな言語のチュートリアルくらいはやったことあるし、思想くらいはわかってるっていう言語は多い。
しかしJavaScript以外の言語を真面目に勉強したことないし業務で使ったことがないっていうそんなステータスでした。

今の業務で、「サーバーサイドが足りてないしちょうど君いろいろ触りたいって言ってたしよかったらやってみないか」くらいのノリで誘われたのでまあチャンスかなと思って快諾したのが4月の頭。
そこからしこしことRubyを書いている。

今作っているものはRailsのWebアプリケーション。
環境としてはとても恵まれていて、すごく簡単で小さいチケットから始まって、しっかりレビューしてくれて着実に成長できるような道筋を用意してもらっている。
まだまだわからないことだらけだけれどRubyの文法には大分慣れてきたと言った感じ。

初めてRubyでコードを書いたときにはJavaScriptとの違いに色々不満を持ったものだけれど今では良いなあと感じる点は多くある。

  • メソッド名の最後が?だとbooleanを返して!だと破壊的な処理をするってのはわかりやすい
  • メソッド呼び出しの括弧の省略やハッシュの中かっこの省略など、慣れてくると気持ち良い
  • nil含めて全てがオブジェクトで全部元をたどればBasicObjectに辿り着くきれいさ
  • to_**による型変換はとても楽

とかとか。

Railsはどうしても許せない

何が許せないかってRailsを導入することでRubyの組み込みクラスが勝手に拡張されていること。

例えば present? とかはその例。
blank? の反対の意味を表してる。Railsを導入するだけでこのメソッドが追加される。

いや、確実に便利になっているけれどね、ばりばり使っているけれど。思想としてどうなのかって話だけです。

機能拡張をするのであればプラグインでやるべきだし組み込みクラスの拡張をしれっとやっちゃうのは良いとは言えないと思うんだけれど、こういう考え方はおかしいのだろうか。
ネットに転がっているいろんなRailsの教材を読んだけれど、RailsのRubyと通常のRubyは別物だと思ってくださいみたいな言葉はよく見る。いやいやってなる。
そういうものって思ったらそれで終わりなんだけれど、なかなか認めるのが難しい。まあRailsに乗っかって仕事してるんだから認めるしかないから慣れるだけって話でした。

今日の話

僕みたいなRails初心者がいることもあって、今の職場では週一でRuby勉強会をやっている。
そこで今日起きたことを話す。

今日やったことはすごく基礎的なところで、Rubyの組み込みクラスどんなのがあるか知りましょう的な。
その中で { hoge: 'hoge' }.to_json みたいな処理を実行してみましょうっていう流れがあって。

たったこれだけの短いコードが動く人と動かない人がいて、あれ??ってなった。
話は簡単で、irbを起動してた人とrails consoleを起動していた人とがいたために結果が変わってしまっていた。
to_json はRailsが拡張しているメソッドだからirbだと動かないってだけの話で。

あーなるほどねーって感じで納得したんだけれど、そのときに「まあRuby使っててRailsじゃないときってもはやないから気にしなくていいねー」って発言が出た。
まあ確かにそうだ。Webアプリケーション以外でRubyを使うことってあるのだろうか、RailsじゃなくてSinatraを使うことってあるのだろうか。

もちろんあると思う。でもなかなか無いと思う。
少なくとも僕が触れるRubyは全部Railsだ。だから今日起こったような問題は業務の中では起こり得ない話。

でもそれはわかってないとだめだろって思う。
なんでかって聞かれると納得させられる言葉は出てこないけれど。Rubyの思想があってRailsの思想があって、その思想を理解した上で使ってないのであればそれはエンジニアじゃなくて作業者だなーって。

そして僕はまだRailsの思想に納得していない。
ある程度理解はしているとは思うけれど。ストレスなく高速にWebアプリケーション作れるように工夫してるんだなーって。でもJavaScriptずっとやってた身からすると、冗長であることは悪ではなくてぱっと見わかりづらい方が悪だろと思う。

まとめ

全てがJavaScriptから移動してきてまだ慣れてない半人前エンジニアの愚痴でしかないっていう、そういう話でした。
多分あと1ヶ月後にはRailsラブって言ってる。

初めて第二言語を学んだことで、確実に成長につながっていると思う。
こういう話はまったくパラダイム違う言語じゃないとだめだろって言われるかもしれないけど僕の中では既にびっくりすることがたくさんあったので十分意味があると思われる。そんなわけで今後もRubyやっていく。終わり。

心はいつでもフロントエンドエンジニア。