東京Node学園 1時限目

~サーバサイドJavaScriptの幕開け~

http://atnd.org/events/13529

Togetter - #tng1のまとめ

http://togetter.com/li/115851

 

タイムテーブル

  <td>
    <p>
      題目
    </p>
  </td>
  
  <td>
    <p>
      発表者
    </p>
  </td>
  
  <td>
    <p lang="en-US">
      Ust
    </p>
  </td>
</tr>

<tr>
  <td>
    <p>
      19:00-19:25
    </p>
  </td>
  
  <td>
    <p>
      開場
    </p>
  </td>
  
  <td>
    <p>
      &nbsp;
    </p>
  </td>
  
  <td>
    <p>
      &nbsp;
    </p>
  </td>
</tr>

<tr>
  <td>
    <p>
      19:25-19:30
    </p>
  </td>
  
  <td>
    <p>
      ご挨拶 / 5分でわかるNode.js
    </p>
  </td>
  
  <td>
    <p>
      <a href="http://twitter.com/meso">@meso</a>
    </p>
  </td>
  
  <td>
    <p>
      #1 <a href="http://www.ustream.tv/recorded/13530001">04:42AM</a>
    </p>
  </td>
</tr>

<tr>
  <td>
    <p>
      19:30-20:00
    </p>
  </td>
  
  <td>
    <p>
      ECMAScript5時代のJavaScript再入門
    </p>
  </td>
  
  <td>
    <p>
      <a href="http://twitter.com/masuidrive">@masuidrive</a>
    </p>
  </td>
  
  <td>
    <p lang="en-US">
      &#8230;
    </p>
  </td>
</tr>

<tr>
  <td>
    <p>
      20:10-20:40
    </p>
  </td>
  
  <td>
    <p>
      『非同期プログラミングの改善』のエッセンス
    </p>
  </td>
  
  <td>
    <p>
      <a href="http://twitter.com/koichik">@koichik</a>
    </p>
  </td>
  
  <td>
    <p lang="en-US">
      &#8230;
    </p>
  </td>
</tr>

<tr>
  <td>
    <p>
      21:50-21:20
    </p>
  </td>
  
  <td>
    <p>
      Nodeにおけるテスト手法
    </p>
  </td>
  
  <td>
    <p>
      <a href="http://twitter.com/Jxck_%E3%80%80">@Jxck_</a>
    </p>
  </td>
  
  <td>
    <p>
      #2 <a href="http://www.ustream.tv/recorded/13530917">05:49AM</a>
    </p>
  </td>
</tr>

<tr>
  <td>
    <p>
      21:30-21:50
    </p>
  </td>
  
  <td>
    <p>
      LT大会
    </p>
  </td>
  
  <td>
    <p>
      &nbsp;
    </p>
  </td>
  
  <td>
    <p>
      &nbsp;
    </p>
  </td>
</tr>

<tr>
  <td>
    <p>
      &nbsp;
    </p>
  </td>
  
  <td>
    <p>
      Kinect + node.js + Audio Data API でテルミンみたいな楽器を作る
    </p>
  </td>
  
  <td>
    <p>
      <a href="http://twitter.com/hakobera">@hakobera</a>
    </p>
  </td>
  
  <td>
    <p lang="en-US">
      &#8230;
    </p>
  </td>
</tr>

<tr>
  <td>
    <p>
      &nbsp;
    </p>
  </td>
  
  <td>
    <p>
      「node.jsによるマルチプレイヤーネットワークゲームの可能性」
    </p>
  </td>
  
  <td>
    <p>
      <a href="http://twitter.com/ndruger">@ndruger</a>
    </p>
  </td>
  
  <td>
    <p lang="en-US">
      &#8230;
    </p>
  </td>
</tr>

<tr>
  <td>
    <p>
      -22:00
    </p>
  </td>
  
  <td>
    <p>
      完全撤収
    </p>
  </td>
  
  <td>
    <p>
      &nbsp;
    </p>
  </td>
  
  <td>
    <p>
      &nbsp;
    </p>
  </td>
</tr>

時間

 

ご挨拶

http://tng1.mesolabs.com/

Node.jsについては著者のブログを読む

Node.jsの目的はスケーラブルなネットワークプログラムを作成する

既存のI/Oライブラリがないため、位置からブロックしないライブラリを作成することができる。

 

ECMAScript5時代のJavaScript再入門

増えた機能

JSONサポート

配列のイテレーター

Getter, setter

Strict mode

5thは誰のためのもの

独自仕様の整理してAjaxなどから大規模なものも増えてきた。

多人数の開発やコードのりユーズのための整理

非同期処理

JavaScriptは非同期処理を書きやすいけどネストが深くなる。

JSDeferredライブラリで縦に非同期処理がかけるのとエラー処理を最後にまとめて書くことができる。

Property Descriptor

Setter/Getter

ObjectFreeze/Sealでアクセスレベルの指定

Object.create(),cloneなど

Objectの拡張はライブラリでも似たようなことが可能だが、ESでの仕様としてあることで共通知識として利用できるため可読性などが向上する。

PhotoShare

サーバー側はRuby

HTTP経由でアプリテストすると時間がかかる。

 

ES5によって独自から共通へ

 

『非同期プログラミングの改善』のエッセンス

http://www.slideshare.net/koichik/node1

Node.jsの非同期スタイル

イベントリスナ・スタイル

onメソッドでイベント

コールバック・スタイル

APIの最後にコールバック関数を渡す

(プロミス)

今はない

Deferredみたいなメソッドチェーンもできた

 

コールバックスタイルの問題

無名関数を使うとネストが深くなってしまう

関数名をつけて使うとgotoもどき

try..catchがうまくいかない

改善するには

コールバックと無名関数を分離する

コールバックの役割は「次」の無名関数を読み出す

その無名関数は「アクター」と呼ばれる

アクターとコールバックを結びつける

フロー制御モジュールライブラリを使う

複数のアクターを受け取ってって、アクターにコールバック(next)を提供する。

フロー制御を導入すると

ネストが深くならない

可読性が向上する

エラー時のルーティング

アクターごとのエラー処理をしたくない

エラーが起きたら途中のアクターを飛ばす

 

Nodeにおけるテスト手法

Nodeにおけるテストの考え方

Assertion

require(“assert”);

Testing フレームワーク

 

require(“should”);

obj.should.test(“”)

Objectを拡張して、列挙されないようにしてる

require(“expresso”);

赤いシャツの人が作った

jscoverageの出力

tearDownとかない

require(“nodeunit”)

Unit系のモジュール

qunitみたいな感じ

ブラウザでも動作する

exportの代わりにthisを使うことで、どちらでも動作するコードがかける

sandbox機能

CI的な機能もあるよ

クライアントとサーバサイドどちらも同じようにかけるのは大きな利点になる

require(“Vows”);

非同期に適してる作り

 

require(“tobi”)

ブラウザ的なものをシミュレートしてテスト(envjsみたいな)

 

 

LT大会

Kinect + node.js + Audio Data API でテルミンみたいな楽器を作る @hakobera

http://d.hatena.ne.jp/scalar/20110324/1300983209

kinnect hackatonではXBOX360所有者がで2/20

kinect+node.js+Socket.IO

Kinect -TCP/IP - NodeJS – Socket API – ブラウザ

 

Kinect.jsの作成

C++実装 -> Javaラッパー -> Rhino -> JavaScript

JavaScriptkinectで動くものが帰る

DSJ(デバイスサイドJavaScript)

現在の欠点

遅い

使ってるラッパーの制限

node.jsではない

 

node.jsによるマルチプレイヤーネットワークゲームの可能性 @ndruger

http://www.slideshare.net/ndruger/nodejs-7375453

リアルタイム→Node.jsなら簡単

サーバークライアントで693行程度で簡単にかける

敷居が高かったものが手軽に作成できる時代

 

 

他の参加者のまとめ

東京Node学園 1時限目 メモ – すぎゃーんメモ

2011-03-25 – のりーごのアミーゴ日記

東京Node学園 1時限目にいってきた – Web::Service::Blog->new( user => ’hide_o_55’ )

東京Node学園1限目行ってきましたメモ – y-kawazの日記

詳細に書かれているので参考になる

 

感想

会場(リクルートアネックス1ビル B1F)も伴ってか何かゆったり広々な感じであんまりガツガツとした雰囲気がなかった。角度、距離(文字サイズなども)的にスライドを見るのがつらい部分もあった。

『非同期プログラミングの改善』のエッセンスLTが面白かった。


タイムテーブル

時間

題目

発表者

Ust

19:00-19:25

開場

19:25-19:30

ご挨拶 / 5分でわかるNode.js

@meso

#1 04:42AM

19:30-20:00

ECMAScript5時代のJavaScript再入門

@masuidrive

20:10-20:40

『非同期プログラミングの改善』のエッセンス

@koichik

21:50-21:20

Nodeにおけるテスト手法

@Jxck_

#2 05:49AM

21:30-21:50

LT大会

Kinect + node.js + Audio Data API でテルミンみたいな楽器を作る

@hakobera

「node.jsによるマルチプレイヤーネットワークゲームの可能性」

@ndruger

-22:00

完全撤収