読者です 読者をやめる 読者になる 読者になる

qsonaのブログ

プログラマーです。Node.jsでのサーバサイド開発の国内事例を増やすのが目標。

Node.jsだけで2年半生きてきた自分が、そろそろRuby on Railsをやってみようと思う話

Node.jsをやってきて良かったこと

職業プログラマとして2年半、Node.jsだけをやってきた。Node.jsで特に良かったと思えるのは以下の2つかなと思っている。

OSSへの貢献

大層なことではないが、この1年で、lodash, neo-async, xto6, などいくつかOSSへの貢献ができたこと。

2年目に新規開発チームに異動し、自分がチームで最もNode.js経験が長いという状態になった。弊社はGitHubEnterpriseを利用していて、このプロジェクトではメンバ全員がForkして基本はPull Request駆動(ガチガチではないが)という、基本OSSにそのまま応用できる形でやっていて、ここでgitのコマンドもきちんと使えるようになった(2年目にして初めてgit rebaseやgit cherry-pickを使った)。

ちょうど、我々の開発中にlodash3系が出そうということで、npmではなくGitHubの最新に向けておいた。おかげでいくつかバグを踏んだりもして、issueやPRを送るのはほぼ必然だった。ユーティリティ系のライブラリだから決してハードルは高くないが、それでも大御所に貢献できるのは嬉しかったし、自身の成長を感じることもできた。それ以外にも、いろんなライブラリのソースコードを読むのは日常的だった。

趣味レベルからOSS貢献に繋げられる人はすごいなと素直に思う。でも、業務のレベルでしっかり使うと、それだけ色々な課題も見えやすいし、OSS貢献のハードルは下がると思う。OSS貢献は一つの分かりやすい技術レベル指標だと思うので、それが出来やすい環境にいたのは良かった。

プログラミングの力がついた

Railsはプログラミングじゃないみたいな記事が最近あった。それはともかくとして、Node.jsはそれ自体microだしフレームワークもその大体が薄いから、自分で考えて実装する量が多いと思う。ブラウザゲームのサーバサイドは定形処理みたいなのが少ないし、フルスタックな言語やフレームワークを生かせないという判断で、Node.jsを使ってきていたのだろうと思う。いずれにしても、課題に対して実際にコードを書いて解決するのは自分にとっても性にあっていたし、いい経験になったと思う。

あとは、非同期処理が当たり前、というのもよかった。

そろそろRailsをやりたいという話

今なら先人のフルスタックな知恵を十分理解できるんじゃないか、と思ったということ。もうだいぶ前から、サーバサイド開発といえば筆頭に上がる存在だし、今だってそうだ。それほど価値を認められているものを、このまま知らずにいるのはもったいないんじゃないかと思った。今ここでRailsを十分知ることは、Web技術者としての視野を拡げることに繋がると思っている。

これからも仕事はNode.jsだけど、一旦趣味レベルでRuby on Railsをはじめてみよう。

みちすじ

やるやる詐欺にならないように。一旦、勉強しながら、簡単なゲームをRailsで実装してみようかと。ついでに最近流行りのマイクロサービスっぽく、フロントサーバとバックエンドサーバを分離してみよう。

作るもの

7 hand pokerという、昔MSN Messengerにあったゲーム。ユニークなルールですごい好きだったんだけどMSN Messengerつかわなくなってゲーム自体もやってないから、自分が遊びたいというモチベーションがある。あと、一度対戦ゲーム(トランプとかボードゲーム的な)をちゃんと実装したいと思ってた。

構成

ブラウザ(js) <=> Node.js(リアルタイム, ルーム機能とか) => Rails(7 hand pokerのロジック+REST? API) => MySQL

作らないけど、例えばチャットからやりたかったら chat client <=> bot server => Rails => MySQL みたいな感じに、Railsからは完全にそのまま流用できるイメージ。作らないけど。

いつもいつも(プログラミングに限らず)企画だけ立派にやって完成せずに終わるので、ここに書いておけば、出来なかったらちょっとは恥ずかしい、だからがんばる、という狙い。rubyも書いたことないしrailsも起動しかしたことないので、まずは手を動かしてみる。