#葉桜JS に参加してきたので記憶メモ。

(脳内記憶で書いたので、何かと解釈が間違ってる場合があります)

葉桜JSとは

唐突にネタを持ち寄って食事とかする場所です。
@kyo_agoさんとかが適当に投げた、
それっぽいハッシュタグに反応した人を適当に呼んで開始しました。


kyo_ago

Buster.JSはどうなってるのか

  • dwittnerさんがメンテしてる
  • ドキュメントよりの人なので、あんまり機能開発は進んでてない
  • Buster.JSにみたいにSinon.JSが統合されてると、stubの開放処理をミスらない
  • テストコードをASTパースして自動的に開放処理を入れられるか?
    • 非同期処理の時に何時終わったのか分からない

テストのコスト、メトリクス

  • 重要なテストといらないテストを見分けたい
  • テストコードを読むときにどれが重要なのか分からない
  • 不要なテストが多いとテスト実行時間がかさむ
  • Seleniumはテストの実行時間の増加が顕著
  • バグを修正するときにそれのSeleniumのテストを書くべきか問題
  • テストにラベル/タグ付けをして、必要なテストをグループで実行出来るような仕組みが有用?
  • YUIのテスト構成について
    • CIではたっぷりテストを回す、テストを回す効率について書かれてる
    • Testing YUI Everywhere
  • 昔のテストといえば、特定のディレクトリにまとまってたのでディレクトリ単位だった
  • 今は色んな所にテストがある
    • そのためテストにタグ付けをしていくの主流かも?
    • テストカテゴライズ

sourcemapを複数回変換する問題

  • 現状だと特に複数回に対する仕様はない
  • a -> b -> c みたいにそれぞれがちゃんとやってることを期待するしかない
  • ウンヨウデカバー
  • a – …. -> c みたいなマッピングならできるはず

teppeis

TypeScript用フルスタック型付きライブラリのご提案

TypeScript用フルスタック型付きライブラリのご提案 #葉桜JS

  • 「我々には型が必要な事は明白です」
  • Closure Library という型を持ったライブラリがある
  • JSDoc から TypeScriptの d.ts 型宣言ファイルへと変換するツールを書いてみた
  • Esprimadoctrineを使った

言語に依存しない汎用型定義

  • 特定の言語に依存しない、型を定義するだけの物体が欲しい
  • doctrineではJSDocをパースした時にJS ASTのように定義をASTっぽい感じにする

現実問題

  • 現実的な問題として、言語によってそのものが等の扱いがバラバラ
  • JSXとTypeScriptでさえnullable等の違いがある
  • d.ts -> 他 は TypeScriptの型が少ない目なので意外とできなくはない
  • 「汎用型定義生成の夢」
  • write once run anywhereや!

azu

Test Runner Tips

大体はスライドTest Runner Tips書いてあります。

  • Mocha
    • 実質的な覇者
    • やってる範囲は狭いので他と合わせて使う
    • mocha.optsという謎の設定ファイルのユースケース
    • Node.jsとブラウザで同じものを動かしたい
    • mochaオブジェクトを直接弄ってテストの設定を動的に変更する
  • testem
    • まっとう
    • 既存ツールと連携しやすい
    • testem2の進捗どうですか?
  • Karma
    • 大きい
    • プリプロセッサという拡張について
    • sourcemapを使ってスタックトレースの書き換えまでサポートしてる
    • Karmaの未来について
      • よりコミュニティを意識するという話

jxck

テストライブラリ

  • QUnitは最近どうですか?
  • 深刻なバグ(requireで使えない)のfixが中々マージされなかった
  • QUnitの基本的な使い方 – Block Rockin’ Codesの記事が未だに参照されまくってる話
    • この記事の時に非同期のテストサポートなかった
    • Mochaの記事にかえてしまおうか?
  • substack/tapeについて
  • assertの数を最初に書くのはperl文化っぽい
  • 本当にそのassertがテストで実行されたのかを保証したい
    • spyとやりたい事は似てる
    • けど、単純にassertの数を数えるだけでそれが実現できる
  • QUnitはその辺もあって、テストが失敗してもテストが続く(今だとQunitだけ?)
  • QUnitの歴史、どのようなテストフレームワークに影響を受けてうまれてたかについて

nanotest

  • 最小のテストを目指してた
  • assertの数を数えるメソッドをassertに拡張してた
  • assertを書き換えるのは難しい
    • power-assertでもやってて難しい話
  • requireを盗むのはやめましょう」

mochaのdoneについて

  • doneは非同期に対するテスト?
  • それともコールバックに対するテスト?
  • Promiseみたいな例外はテストライブラリがサポートしてないと上手くいかない感
    • 本当にthenが呼ばれたのかが心配になる
    • assertのカウントがやっぱり必要?

「人類は Harmony を使いこなせるか? – Generator 編 」

  • generatorを直接使いたいか?
  • ライブラリ側で使って、直接は使いたくないかもという話
  • テストだけでgeneratorを使いたい?
  • コードとテストのパラダイムが違うのは問題かどうか?
    • テストをどうしたいかの方針によって違う
    • できるだけ簡単に書きたい => 別パラダイムあり
    • できるだけ読みやすくしたい、サンプルとしてのテスト => 同じパラダイム

テストの課題

  • テストはドキュメント or テストを簡単に書きたい
  • 相反する課題
  • テストを簡単に書きたい => 極論はaltjsでテストを書くようなモノになっていく

FormのPUT/Delete 再び

  • Formの場合はクッキーを送ってしまう所がXHRでやるのと異なるケースが出てくるかも
    • イントラネットでFormからPut/Deleteがコない前提のものとか
  • JavaScriptが発展する前に、Formの拡張の話がきてたら流れは違ったかも。
  • 現実面ではサポートコストが大きすぎる部分が多い
  • HTMLの仕様としては欠けてる感がある
  • Amayaの話まで戻る
  • 「ホントにPOSTあってよかった」

t-wada

「power-assertができるまで」

power-assertができるまで

  • power-assertが出来るまでの背景
  • Pythonの人がPythonでもPOWER ASSERTができると言ってた
  • PythonでできるならJavaScriptでも出来るはず
  • Node学園でsubstackやIsaacの話を聞いてNodeにもUnix文化があると知った
  • 最初はC1以上のカバレッジツールを作りたかった
  • SQLアンチパターンが忙しかった
    • 現実逃避 -> power-assertのプロトタイプ作成
  • 最初はQunitと合わせてた、assert互換になるのは結構後
  • SimpleとEasyは別もの
  • Rich Hickeyの話を聞いて、power-assertの構造を決めていった
    • それぞれsimpleのレイヤーを分けた
  • AST < -> AST、Source < -> Source、File < -> Fileをやる所がある

power-assert 0.6.0

  • 今まで一番大きなアーキテクチャ変更
  • ASTのメタ情報を生成してASTに埋め込む
    • 実行時にメタ情報を取り出して、解釈する
    • メリットとしてはレポーター等からもメタ情報を利用できる
    • estraverseのpathを使う事で一意にASTのnodeを得られる
    • 実行時にそこを見る

Concrete Syntax Tree

  • CSTについて
  • ASTだとBinaryExpression(+)の+の位置等の情報そのものはない(tokenとか駆使)
  • CSTはそういった情報やコメントについても定義しようというプロジェクト
  • 議論がどこまで進んでいるのか気になる

yosuke_furukawa

Docker Node Tester

Docker Node Testerの話 in 葉桜js // Speaker Deck

Docker Node Testerを使ってNode.jsをバージョン毎にテストする #葉桜js – from scratch

  • Node.jsの v0.10と0.11を一緒にテストしたい
  • Githubのtag等を直接checkoutしてテスト環境を作れる
  • 多分Node.js以外でもいける
  • TravisだといちいちPushしないといけない、Dockerなのでローカルで出来る

Docker

  • Dockerが突然死ぬことがある
  • JenkinsおじさんからDocker職人へ
  • まだ脆い部分もあるので、Docker一本だと難しい所がある
  • Ubuntuについて
    • 本番環境がUbuntuならデスクトップもUbuntuで合わせると楽
    • CentOSツライ
    • 最近は色んなソフトがUbuntuサポートしてる

mala

なぜAngular.jsを使ってXSSがおきるのか


メモ: Twitterに直接と脳内記憶

その他

後、自分は作って発表する時間なかったので発表してませんでしたが、
power-assertの記事が出来るまでというスライドを作りました。

という2つの記事を書くまでに至った思考の流れとかをまとめた感じです。

調査しながら記事書く時の話みたいな感じです。