東京Node学園1時限目行ってきましたメモ


Node.jsの勉強会イベント『東京Node学園1時限目』に行ってきました。Nodeの集まりはこれで3回目だと思いますが飲み会ばっかでまともな勉強会はこれが初めてですねw
参考になる話がたくさん聞けて良かったです。

@meso

  • 資料リンク 『5分でわかるNode.js』
  • 最初なのでNodeとは?を語る。以上。

@masuidrive

  • 『ECMAScript5時代のJavaScript再入門』
  • JSLintすると良いらしいのであとで試す
  • jsdeferredとか使うと右に長くなるインデントを縦に伸ばせるし、エラー処理を .error でかけたり色々素敵とのこと
  • ECMA5 Tips
    • Object.definePropertyでgetter/setter定義ができる。
    • Object.freeze/sealで変更不可のオブジェクトが作れる、でもこれは便利な点も殺しちゃうから良し悪し。
    • 追記)このへんの話はこの記事が詳しい。
    • 追記)ECMAScript 5th Edition (pdf)
  • Promiseは黒歴史(しつこくパッチを送ってたら遂に取り込まれるも、その5日後にはRyanによりNodeから機能ごと削除されたとかなんとか)
  • Titanium Mobileの中の人(プロダクトにパッチやIRCで文句を言い続けてたら、そんなに言うならユー入社しちゃいなよって入社したらしい)

@koichik

  • 資料リンク 『「非同期プログラミングの改善」のエッセンス』
  • 非同期プログラムの問題=例外処理、深いインデント
  • var args = Array.prototype.slice.call(arguments) 引数を配列にするお約束的コード(メモ
  • 続きはNode本で!(早くだしてくだしあ

@Jxck_

  • 資料リンク 『Nodeにおけるテスト手法』
  • Testのお話
    • 選択肢がいっぱい、今日は掘り下げじゃなく紹介を中心に
    • require('assert') が標準である。こいつは AssertionError を投げてくれる関数を提供してくれる。
    • テスティングフレームワークは基本みんなこれを使って便利にテストがかけるようにするもの。
    • assertを拡張した require('should') ってのもある。Objectにshouldというメソッドが追加されてBDDスタイルでアサーションが書けるようになる。shouldはenumeratableがfalseなのでprototypeが汚染されず他のコードへの影響は少ないようになっている。
  • 紹介モジュール
    • require('expresso') by Tj(赤Tの人)
      • パラレル実行するの軽量で早い。-s付ければシリアル実行も出来るよ。
      • node-jscoverage でカバレッジもカバー
      • 基本はパラレル実行を主眼にしてるんだが、setupやteardown辺りが整備不十分か(シリアル実行モードでしか使えない)
      • assert.response でサーバレスポンスの試験も書ける→でもこの辺りはあとで紹介するtobiっていうのを使ったほうが便利とのこと
    • require('nodeunit')
      • いい所:setup/teardownのサポート、悪いとこ:基本シリアル実行なので早くはない
      • クライアントサイドテストも出来るのが特徴
      • sandbox機能で複数スクリプトが結合された状態のテストが出来る(ブラウザ動作のエミュレート)
    • require('vows')
      • 高機能でいろいろできて便利そう
      • だがスライドの字が小さくて見づらいの&話に出てくる言葉も結構聞き取れなかったので、詳細はあとで調べる…
      • callbackの試験とかを上手くやる仕組みがある
      • @koichik が連載を書いてるのでそれを見るとよく分かるらしい
    • require('tobi') by Tj
      • browserってオブジェクトを使って高度なサーバ試験ができる
      • 一番の特徴は、asssertでjQueryオブジェクトを渡してくれるのでjQueryスタイルでスクレイピングして試験が書ける!
      • 追記) browserって名前から想像される期待通りにformに値をセットしてsubmitやclickしたりといったマニプレーションも出来るぽ。
  • その他よさげモジュール
    • sinon - mock,stub,fake,sandboxを扱える
    • soda - selenium adapter
    • kyuri - cucumber実装
    • jake - make,rakeのJSバージョン、テスト実行のタスクをJSで書ける
    • ready.js -
    • require.js - モジュールローダ
    • jsdom − DOM on Node
    • jshint - jslintのfork、jslintが固すぎなので使いやすいようにしたもの
    • gjslint/fixjsstyle - Googleスタイルのlint
    • jscoverage - カバレッジツール
    • node-dev - これは便利、ファイル保存するとリロードしてくれるよ。要はホットリローディング。
    • node-inspector - ブラウザでNodeのデバグするツール

LT by @hakobera

  • 資料リンクKinectテルミン
  • Kinect+AudioAPI+Nodeでテルミン
  • KinectドライバってC++なのがやだよねー
  • そこで kinect.js を作ってみました!
  • と言ってもNodeネイティブではなくlibfreenectのJavaラッパ+processing+Rhinoな代物らしいです。
  • RGBと深度のピクセルイメージが取れる!これは嬉しい。でもピクセル操作すると超遅い1fpsもでないらしい…、Kinectの各種ドライバやライブラリが統合される未来に期待。
  • libfreenect ラッパーなのでボーンとかは取れない(>_

LT by @ndruger


以上まとめ by @kawaz
皆さんお疲れ様でしたー。