Block Rockin’ Codes

back with another one of those block rockin' codes

サーバサイドJavaScript Node.js入門 を執筆させて頂きました。

intro

本当にお待たせいたしました。


出す出すといってなかなか出せなかった Node.js 本が、ついに出版されました。
共著の一人として、自分も書かせていただいています。


http://pbs.twimg.com/media/A6Q2xmrCAAEsFxi.jpg


サーバサイドJavaScript Node.js入門

サーバサイドJavaScript Node.js入門


これを書いてる時点では、 JavaScript 部門では 1 位プログラミング部門では 4 位 となっているようです。
それなりに、興味を持っていただけているようで良かったです。


自分の記録としても、少しだけ書かせて頂きます。

2 年間の執筆

書き始めたのは、かれこれ 2 年前になります。
その頃はまだ node.js@0.2 とかでした。(今は 0.9, もうすぐ 1.0)


本当は年が明けた春(2011/4 とか)に出そうって話で書き始めたんですが、
実際はそうはいかなかったです。


一番の理由は、僕らが書くと同時に Node とその周辺自体がどんどん新しくなることです。
書いてるそばから内容がどんどん古くなる。これは結構書いてて辛かったです。


なるべく使える情報を届けたいけど、一方で書きなおしを続けててもエンドレスになってしまうということで、
何度も話し合いながら、ここだけは対応したい、というところを直しながら走り続けてきました。


自分が担当した章では、書き始めから(ブランチ数で)約 20 回くらい書きなおした章もあります。


もしただ単純に執筆をサボってて遅れてただけなら、きっとこの本の話自体が消えていたでしょう。
むしろ、この本の企画をゴールまで守って頂いた嘉平さんには、本当に感謝します。


Node@1.0 のリリースとか、学祭の直前云々のタイミングに合わせず、今このタイミングで出版したのも、
今ちょうど、少しでも早く出すための色々な条件が重なったからです。
もしこのタイミングを逃してたら、今頃まだ書き直しを繰り返して、どの段階で出すべきか議論してたかなと思います。


とはいえ、読者の方からすれば中々出なかったという事実だけなので、
そんなのは関係ないですね。その点に関しては本当に申し訳なかったと思っています。

書き直し

ちなみに自分が覚えている、「これは書き直し、書き足しが必要かな。。」ということになった、
大きい変更はざっとこんなのがあったなと思い出します。

  • npm が標準になる
  • windows 対応が始まる
  • libuv が出てくる
  • Cluster が標準になる TJ の Cluster がオワコンになる。
  • Isolate が出そうで無くなる
  • Express が 2.0 になり、色々変わる。
  • Express に routes ディレクトリができる。
  • Expresso がオワコンになり、 mocha + chai になる。
  • Socket.IO に色々機能が増える
  • Domain が入る
  • etc, etc, etc....


思い出すだけでも目から汗が。。

API より考え方

最初の頃は、色々な場面で API について書きすぎたのが間違いだったなと途中で気づきました。
あと、やっぱみんなそれぞれ詳しいモジュールとかあるし、ソースとかも読んでから書いてるので、
ドキュメントに載ってない API についてとか、マイナーな設定方法とか書いてしまっていました。


でも、 API は変わるんですよね。しかも最初の段階は割りと早く。


それがバージョンに追従するための書き直しに大きく響いていたし、
それは同時に内容の寿命を縮めていることに気づきました。


だから、途中からもっと「考え方」にフォーカスして書きなおすようにしてます。


もちろん、モジュールを使ってる章は API について(ときには本家のドキュメントより)詳細な解説をしているんですが、
なるべく「そのモジュールのバージョンが上がっても、変わらないだろう "考え方"」を書くようにしました。


どっちにせよ、この本が出たあとも、ものすごい速さで Node は進んでいくと思いますが、
その流れに乗るために必要なものを、この本から得て頂ければいいなと思っています。


ちなみに、manning のように、電子書籍でアップデートしながら走るという方法については、本当に多くの方に言われます。
実際自分たちも最初の段階から話はしました。ここには書けないですが、それはそんな単純でもないかなと未だに思います。

写経

この本の特に「実践編」は写経されることを意識して Diff で書いています。
この本を読むほとんどの方には、その方がわかりやすいでしょう。
ちょっと慣れが必要かもしれませんが、慣れれば開発の過程を追体験しながら、
写経することができます。


使用する Node と基本全てのモジュールはバージョンが明示されているので、
モジュールがどんどん新しくなっても、
同じバージョンを指定して npm でインストールすれば、同じように動くはずです。


最終形態とその他のリソースは、出版社のサイトから落とせるようになるので、
そちらも合わせて参考にしてみて下さい。

おわりに

今のところ、世界でも珍しいくらい Node についてガッツリ書いてあります。
海外でこの話をすると、みんなに「英訳は出ないのか?」と言われるとか。


必要なことは大体書いてあるはずなので、
これを期に、 Node に少しでも興味を持って頂けるといいなと思います。


書ききれないこと色々あるけど、この辺にしておきます。


最後に、
一緒に執筆させていただいた著者の皆さん
レビューしていただいた皆さん
担当いただいた嘉平さん


本当にありがとうございました。


see also: http://meso.hatenablog.com/entry/2012/10/26/111330