みゆっき☆ThinkでNode.jsについてしゃべりました

みゆっき☆Thinkというドワンゴ研究開発チャンネル上の生放送番組に出演してきました。Node.jsについてその背景の説明からサンプルコードの解説までを行いました。タイムシフトでの視聴もできますし、アーカイブもそのうち公開されると思うので、是非チェックしてみてください。

番組内で使用した資料はこちら。資料とサンプルのソースコードこちら

また、番組内でも言いましたが、今月発売のSoftwareDesign2011年9月号にNode.jsの記事を執筆しました。こちらも今日の内容をより詳細に解説したもの+また違ったサンプルのコード解説になっているので是非ご覧ください。

追記)アーカイブ公開されました http://www.nicovideo.jp/watch/1313051884

Node.js Knockout 2011の参加登録が開始されました

申し込みは http://nodeknockout.com/

Node.js Knockoutとは、48時間でNode.jsを使ったアプリケーションを作成し、その出来映えを競い合うコンテストです。
去年の模様はTechcrunchの記事をどうぞ。

今年は日本からの参加チームも増えるでしょうから、Node.js日本ユーザグループとしても東京に参加者が集まれる場所を提供することを考えています。詳細は決まり次第お伝えします。

Node.jsとCommonJSについて

日経ソフトウェア8月号にJavaScriptの特集がありまして、そこでNode.jsが紹介されていました。
それを読んで、僕は以下のようなツイートしました。

*1だと言わざるをえません。Node.jsはCommonJSの仕様のうち「Module 1.0」と「Unit Testing 1.0」には一応準拠していることになっています(http://wiki.commonjs.org/wiki/CommonJS#Implementations)。が、Node.jsのその他のAPI(たとえばfsモジュールのwrite()など)はCommonJSに従った形で実装されているわけではありません。

さらに準拠していることになっている「Module 1.0」にしても、CommonJSで規定されているモジュールの作り方は

exports.hoge = function() {...};

なのですが、Node.jsではそれに加えて以下の2通りでもモジュールを作ることができます。

module.exports.hoge = function() {...};
this.hoge = function() {...};

よって、Node.jsにはCommonJSにない独自仕様が存在していると言えます。
また「Unit Testing 1.0」にしても、CommonJSで規定されているAssertとTestのモジュールのうち、Node.jsにあるのはAssertモジュールだけなので、実際には準拠しているとは言いがたい状態です。

結局、Node.jsがCommonJSの一部仕様に準拠していると主張しているのは(上のWikiがそうであるように)CommonJS側であって、Node.js側ではそのような主張は(昔はしていたこともありましたが)積極的にはしていません。公式サイトAPIドキュメントにもそのような記述はないはずです(GithubのWikiには一部残ってるかもしれませんが)。

さらに先日Node.jsの作者のRyan DahlがRedditに降臨して「Node.jsの作者だけど何か質問ある?」スレを立てたときに、「CommonJSはもうオワコンだから、今後NodeのAPI変えるときにはCommonJSのことなんて一切気にしないよ」宣言がありました。

以上のように、Node.jsとしてはすでにCommonJSのことは眼中にないといった感じです。なので、今後Node.jsをCommonJSと絡めて論ずるときには十分注意を払った上で行った方がよろしいと思います。

*1:「嘘」っていうのはちょっときつい表現だったかもしれませんね。すみません。140字ギリギリだったので(言い訳)。

「東京Node学園 2時限目」が無事に終わりました

今回はNode.js Knockout 2011に向けたアイデアソンということで、アイデアの盗用を防ぐためにもUstreamの配信はいたしませんでした。

僕の発表資料は http://tng2.mesolabs.com/ でご覧いただけます。

次回のイベントもよろしくお願いします。

さくらVPS上のUbuntuにx2go経由で接続

x2goとは何か?については http://www.x2go.org/ を見てください。

さくらVPS上のUbuntuのバージョンは10.04です。

$ gpg --keyserver pgp.mit.edu --recv-keys C509840B96F89133
$ gpg -a --export C509840B96F89133 | sudo apt-key add -
$ sudo vim /etc/apt/sources.list # deb http://x2go.obviously-nice.de/deb/ lenny main を追記
$ sudo apt-get update
$ sudo apt-get install x2goserver-home
$ sudo apt-get install ubuntu-desktop #GUI環境(X)を入れるため

クライアント側にはそれぞれのOS用のx2goclient入れる。今回はWindows XPから試してみた。

Host: IPアドレス又はホスト名
Login: ログインID
SSH port: サーバのSSHポート番号
User RSA/DSA key for ssh connection: 秘密鍵
Session type: GNOME

を選んで接続すると、無事接続できた。
あとは、

  • キーボードがUSAになってたのでSystem>Preferences>KeybordからJAPANに変更した
  • 日本語IMEを有効にすべく、System>Administration>Language Supportで日本語をinstallして一番上にして、System>Preferences>iBus PreferencesでiBusの設定をした

速度は、体感ではローカルのVirtualBoxとかとほとんど変わらない。これはかなり快適だな。

JJUG CCC 2011 Springに参加します

Node.js日本ユーザグループとして、2011/5/24に行われる日本Javaユーザグループ主催のJJUG CCC 2011 Springに参加いたします。

タイムテーブルにあるとおり、Node.js日本ユーザグループとしては2枠いただいております。

1枠目はid:badatmath(@bad_at_math)による「Node.jsとはなにか」とid:Jxck(@Jxck_)によるNodeConf報告会
2枠目はコミュミティメンバによるLT大会

という形で行います。

そこで、LT大会で発表する方を大募集いたします。希望者は https://groups.google.com/d/topic/nodejs_jp/3R6RIHN_Xx8/discussion に返信するか、もしくは@mesoまで連絡ください。締め切りは応募状況を見て考えます。

Ubuntu 11.04 Natty Narwhal に Node と npm をインストール

nvmを使う

$ sudo apt-get install git curl build-essential libssl-dev
$ git clone https://github.com/creationix/nvm.git ~/.nvm
$ . ~/.nvm/nvm.sh
$ nvm install v0.4.7

". ~/.nvm/nvm.sh" は .bashrc などに記述しておくと吉
以後、Nodeを使うときには

$ nvm use latest

を実行する

naveを使う

$ sudo apt-get install git curl build-essential libssl-dev
$ git clone https://github.com/isaacs/nave.git ~/.nave
$ ~/.nave/nave.sh use latest
$ curl http://npmjs.org/install.sh | sh

"~/.nave/nave.sh" へのシンボリックリンクをパスの通ったところに置いておくと吉
以後、Nodeを使うときには

$ nave use latest

を実行する

ツールを使わずに

$ sudo apt-get install git curl build-essential libssl-dev
$ curl http://nodejs.org/dist/node-v0.4.7.tar.gz | tar xz
$ cd node-v0.4.7
$ ./configure --prefix=~/local
$ make 
$ make install

~/local/bin にパスを通す

$ curl http://npmjs.org/install.sh | sh