東京Node学園8に参加してきました
「パフォーマンスチューニングを行うことができるparamtuner」@muddydixon
「NodeとPromiseと時々関数型」 @okapis
- Javascriptコミュニティに道場破りに来ました
- Scalaの非同期RPCライブラリ「Finagle」の基本はfuture/promise
- 「Node.jsはコールバックではなくpromissを採用すべきだった」というブログが公開される
- コールバックは処理をモジュール化するのが難しい
- 逐次処理か非同期処理の区別が必要
- ネスト地獄は本質ではない
- 正しく動くコードを書くのが大変
- メンテナンス性が低い
- プロミス
- 完了していないかもしれない計算の入った箱
- 計算が完了すると特定の処理をしてくれる場合が多い
- 言語やライブラリによって機能や実装、名前も異なる
- 「とりあえず関数型プログラミングと融合したケースを扱います」
- 手続き型はhow、関数型はwhat
- 値同士の関係を表現するのに関数を使う
- プロミスで記述することで、処理の順番はコンピュータに考えてもらうことができ、非常にシンプルになる
- プロミスは難しい?
- 動作を調べる必要があるのでは?
- シンプルである方が大事
- 動作を調べる必要があるのでは?
- まとめ
- コールバックは簡単
- だけど拡張性に乏しい
- 関数型はプログラマの芸風を広げてくれる
- 会場から
- 元々Node.jsはプロミスを採用していた
- javascriptの書き方として嫌悪されていた
- エラー処理のために、結局コールバックが必要
- エラーコールバックの数が現実のアプリケーションでは増えて汚くなる
- 結局、コールバックの第一引数にエラーを使うことに
- 現在はベースはシンプルにして、その上で好きなものを実装する形に
Let It CRASH @koichkさん
- Earlangの耐障害性のポリシー
- あえて失敗を備えない
- 特別なプロセスが再起動させる
- エラー処理とアプリが分離する
- NodeではuncaghtException
- そのまま続けちゃダメ
- 最近ではdomain.on(err)
- ここで時間切れ(^^;)
Object.defineProperty
- オフジェクトのプロパティの性質を制御する関数
- 変更できなくしたり、プロトタイプ汚染を防いだり
- ゲッター、セッターを定義できる