PHPerがRubyとJavaScriptを同時に使い始めたら混乱した話

最近参画したプロジェクトでは、主にRubyとNode.jsを使っている。

自分はこれまで95%ぐらいPHP、3%ぐらいJava、フロントの実装をちょこっとやるためにJavaScript (jQuery) を使ってきた。 Rubyは昔バイトで触ったが、だいぶ忘れた。 なので、JavaSciptもRubyも経験が浅い。

そんなプロジェクトに参画し、同時に使い始めて混乱したのがPHPで言うところの foreach 文。 JavaScriptではforEachメソッド、Rubyではeachメソッドやmapメソッドだ。

JavaScriptRubyでコードはそれぞれこんな感じ。

JavaScript

some_array.forEach(function(var, index) {
  // 処理
})

Ruby

num = [1, 2, 3]
# 要素を単純に繰り返し処理
num.each do | var | 
  var + 1
end
# 繰り返し処理をした結果を再度使う
new_num = num.map do | var |
  var + 1
end
new_num # => [2, 3, 4]

JavaScriptは自分で実装することは稀だったが、PHPでの書き方にも似ていてそれなりにすんなりと覚えることができた。

だがRubyのeach、mapは正直なところ実際のコードを見てもすぐには腑に落ちなかった。

特にmapはトリッキーだった。 「PHPでいうところのforeachね。」という認識でいたので、 mapメソッドは返却値の配列を返す という仕様に面を食らった。

PHPJavaなど、C言語系のコードを長年見てきたエンジニアにはわかるのではないだろうか。

こういった普段使わない、あるいは未経験の言語のプロジェクトに入ると、こういった発見があって面白い。

正直今はわからないことだらけで苦しいところではある。

しかし知見も広がっていくのを感じられそういった楽しみがあるのは恵まれているなと思っており、 いち早くいろんなわからないことを覚え成果を上げられるようにしたい。