翻訳:僕が Node に残る理由

原文:Why I’m staying in with Node

なによりもまず、T.J. に敬意を表したい。これからは Go を推していくという大ニュースと、Node.js への別れの挨拶 とに感謝したい。ある問題に長く取り組んできた人は、時期が来たら別の場所へ進んでいく。そして彼の場合は、それが「仕事にふさわしいツールを使う」ことだった。

いいね。尊敬せずにはいられない。あいつはできる奴で、ヤバい。

僕はというと、まだ Node.js との付き合いを続けている。まだざっくりとした未来しか思い描けていないけれど、僕はずっと昔から JavaScript に賭けてきたし、ああ、なんというか、英語みたいなものかな。JavaScript はあらゆる所にある。

もちろんこれは喩えにすぎないのだけれど、T.J. が指摘した Node.js の問題点は、僕たちが英語に対して抱く問題に良く似ていると思う。エラーハンドリングのやり方はそもそも間違いやすいし、コールバックは同期的なトランザクションよりも難しい。エラーに次ぐエラー。英語でも、文法をミスするなんて日常茶飯事だ。まあでもお互いのことは理解し合えるし、間違いを直す方法だって知っている。

あくまでネタとして話すと、JavaScript を英語とするなら、Go はハワイ語あたりになるのかな。英語よりシンプルで、こじんまりとしていて、有能で、間違えにくい。英語より無名で、孤高。ちなみに Java はドイツ語あたりかなあ……このへんでやめておこう。

まあ喩え話はさておき、それに重箱の隅のつつき合いをつつき合って Go 対 Node の比較をするのもさておくとして、それでもいくつかの点で Node.js を使い続けるに足る理由があると思う。

Web アプリケーション

Node を使うと、システムのフロントエンドとバックエンドでコードを文字通り使い回せる。僕がこれまで作ってきた Change.orgOpenLikes 、あとあなたが今記事を読んでいるこのサイトもそう。Node のおかげで、ユーティリティやモデル、テスティングライブラリ、あとルーティングのロジックさえも共有できた。当然より DRY なアプリケーションを書けるようになる。メンテナブルなアプリケーションには強く求められるプログラミングの原則だ。

人材の採用

これは JavaScript の大衆的な人気のおかげだ。JavaScript ならどんな人でも少しは知っている。Go を使える人材を集めようとしたら、どこからスタートしたらよいのか見当もつかないよ。まあこれは個人的な問題なのだけれど、とはいえ Node を使っていれば簡単に避けられる問題だ。Node と Go はだいたい同じくらいの歴史しかないけれど、JavaScript は 19 歳で、もう独り立ちしてる。Node 未経験のプログラマでも、JavaScript を知っていれば、特にハマりどころもなくすぐに順応できる。

今週職場の違うチームに入ってきた 2 人の新人は、4 時間も経たずにコードベースに慣れて、最初のコミットを反映。2011 年なら数週間はかかっていたと思う。(Bill Scott @billwscott のツイート

ツールは仕事の内容によりけり

まあ、良くある話で、時と場合によるよね。高い並行性が求められる複雑な知能アルゴリズムを作りたいなら、Node 以外の何かを使うのが良いと思う。まあ僕ならそれを Node から呼び出せるようなサービスにするけれど。Go と Node で並行性と速度を競うなんて、for ループを先頭から回すのと後ろから回すのとでどちらのパフォーマンスが良いかを比べるようなものだと思う。この手のマイクロベンチマークは全然参考にならないね。プログラミング言語やフレームワーク、ライブラリを選ぶときには、いつだってプロダクトの ROI のことを考えるべきだし、ユーザとチーム、そして自分自身との間で、自分がどれだけ力を発揮できるのかを考えるべきだ。

教訓

長々と後ろを振り返るような文章にはしなくない。だから、まあ TJ のアドバイスに似てるんだけど、外の世界を眺めると、すごい方法っていくらでもあるんだよね。自分がうまくやっていける方法を選ぶこと。そうすれば、ユーザも、会社も、そして自分もまた、究極的には幸せになれると思うよ。