Hatena::ブログ(Diary)

四角革命前夜

2012年10月29日(月)

サーバサイドJavaScript Node.js入門を読んだよ

発売日にジュンク堂でまだ品出しされていない、カートに平積みになったものを「これください」と言って買ってきました。

読む時間がかなりあったのでじっくり読めました。とか言いつつ、少し読み飛ばしたところもあるけれど……

Node本発売日に運良く買えた上にじっくり読む時間があるなんて、なんて幸運なんでしょう。

でもこの記事を書くのに2日かかってるのはちょっと、こう、なんというか。まあメモなのでいいか。


第1部 導入編

Nodeの説明やインストール、開発環境について。

第1章 Nodeとは何か

Nodeってなんぞやって人や、Nodeを使っているけど何が良いのかよくわかっていない人——自分とか——に良いかと。

特性や使い道がわかっている場合は、詳しく読む必要はないかもしれません。

第2章 インストール

Nodeのインストール方法について。nodebrewでインストールしてばかりなので、本来のインストール方法をすっかり忘れていたりw

Windows, OS X, Ubuntuへのインストール方法の他に、nvmとnaveを使ったインストール方法。

あとnpmの使い方かな。

第3章 開発環境

EmacsVimのほか、WebStorm, EclipseとCloud9の解説。


VimはBetter JavaScript Indentation使うと良いよ!とかjsl.vimとかquickrun使おう!的なことが書いてある。

(quickrunのURIがujihisaさんの方なのが若干気になるのはthincaさんのvim-quickrun使ってるからでしょうか)


Eclipseの開発環境について書いてあるのがちょっと良いかなーと。

Eclipse使いの人たちにはここ読んでねー、で済むのでw(私自身Eclipseよく知らないし)


第2部 基本編

Nodeそのものの使い方、モジュールの作り方、イベント関連、ストリーム、ソケット、HTTP/HTTPS、ドメイン、ユニットテストデバッグ

第4章 Node入門

REPLとかスクリプトファイルの実行とかイベントループ、HTTPサーバについてなど基本的なところについて。


REPLコマンドなんてあるの知らなかったよ……

> .exit

で終了とか知らなかったよ…… C-dしてたよー。


REPLコマンド以外のところは大体知ってたかなー。

第5章 モジュール

モジュールの作り方、使い方とか。


ここではメインモジュールって単語を初めて知った!

$ node index.js

で呼ばれたスクリプトをメインモジュールって言うみたい。

if (require.main === module) {
}

でメインモジュールかどうか判断できるみたい。

Expressとか、コマンドにもなるモジュールとかで使ってるのかなあ?

第6章 イベント

イベント駆動についての説明と、イベントの使い方、かな?

まあそれなりに知ってたかなー。

第7章 イベントループとprocess.nextTick

Node内部でどういう処理のループを行なっているかなど。

第8章 ストリーム、バッファ、ファイルシステム

タイトルの通りの章。

特にストリームの説明が詳しいので、ストリームをあまり扱ったことのない私にとって良い章でした。

第9章 ソケット(TCP/UDP)

ソケット関連の章。

netモジュールだったり、エコーサーバを作ってみたり、drainイベントの使い方だったりとか。

あとSSL/TLSの使い方も含んでいたり。この辺の層の知識がかなり怪しいのでわからない部分も多かったw

第10章 HTTP/HTTPS

http, httpsモジュールの説明と使い方等に加えて、url, querystringモジュールについての説明もある章。

この章もいくつか知らないことが書いてあったりしたので、読んでみると新しい発見とかあるかも。

第11章 Domain

ver.0.8から導入されたDomainの使い方の章。

最近使う機会があったし、詳しく知りたいと思っていたので良いタイミングで読んだなあと。

基本的な使い方だけなのでページ数は多くないけど、知らない人には手っ取り早く使えるかも。

最後の「ドメインを利用したエラーページの表示」はおおお、と思った。

第12章 ユニットテスト

assertモジュールに加えてshould, chai, mocha, vowsの解説とか。

mochaをブラウザで実行できるのは知らなかった!

第13章 デバッグ

組み込みデバッガとnode-inspectorとEclipse + Chrome Developer Toolsの使い方とか。

組み込みデバッガよく使うけど、詳しくは知らないので良い章でした。忘れていたコマンドとかも結構あったし。

あとはvisionmedia/debugとかjoyent/node-panicとかcloudhead/eyes.jsの紹介など。他にスタックトレースを分析するモジュールの紹介もあったり。


第3部 実践編

ExpressやSocket.IOを使ったアプリケーション作成とかの章。

第14章 実践編導入

実践編で使う、技術の説明など。WebSocketとかNoSQLの説明の他に、Express, Connect, Socket.IOの説明。

第15章 Express入門

インストールからスケルトンの作成の他に、いろいろな解説とか。

結構詳しく書いてあるので、Express, Connectをよく使うなら読んでおくと良いかも。

第16章 Expressを用いたフォーラムアプリケーションの作成

ここは大分読み飛ばした気がする。

でも相当なページ数を割いているので、MongoDB + Expressでアプリ作りたいと思っているなら読んでおいた方が良いかも。

第17章 Socket.IOを使ったファイル共有アプリケーションの作成

ここも大分読み飛ばした。こっちは前の章と違ってMongoDBでなくCouchDBを使ってる。

ユーザ管理とかSocket.IOでのファイル送信?をしているので参考になるかも。

第18章 外部APIとの連携

Twitter絡みのアプリ作成。完全に読み飛ばしたので内容はよくわからない……


第4部 応用編

Nodeの内部的なところに関する章、なのかな。

第19章 Nodeはどう作られているか

JavaScriptに関してのことと、内部で使用しているライブラリの説明の他に、

CGI, FastCGI, ApacheモジュールとNodeの比較など。

第20章 非同期プログラミングの改善

caolan/asyncの章。コールバック地獄でソースコード見づらいのをどう解決するか、というのが書いてある。

第21章 アドオンの作成

C++でのアドオンの作成方法やgypの使い方(?)についての章。

"Hello, World!"から始まるので、アドオンを作ろうとしている人は読んだ方が良いかなーと。

第22章 npmパッケージ

package.jsonについて、とパッケージの公開などの章かな。

知らないこともいくつかあったので読んでおいてよかったかなーと。

第23章 スケーラビリティ

child_process, clusterのほか、node-http-proxy, connect-redisに関して。

スケールアウトとかのお話なので、あとで読み直したい。

第24章 運用

Apache, Nginxとの連携、foreverでのプロセスの起動などなど。あとNodeの使えるPaaSの説明とか。

ここもforeverに関して読み直したいかなー。

付録A 開発ガイド

これに関してはこの辺のサイト見ましょう、的な。


書くのが面倒になってきて、後半がかなりいい加減になっているのがちょっとなあ……