#cto_sushi でChangeLogを追う技術、Sitespeed.io、DDDなどの話をした
#cto_sushiでChangeLogやIssueを追う技術、reftest、GitHubスパムなどについて話してきた。(この中に現在CTOはいなかった気がします)
久々に を食べるSushiイベントだった気がします。
これからの Web について真剣に議論している。 #cto_sushi pic.twitter.com/c3xXrkasVi
— Jxck (@Jxck_) May 26, 2015
#cto_sushi pic.twitter.com/oAts18i7O3
— Yosuke FURUKAWA (@yosuke_furukawa) May 26, 2015
クリップボード API - kyo_ago
机が埋まる前にLTスタート。
クリップボードについて kyo_ago #cto_sushi
— azu (@azu_re) May 26, 2015
- クリップボードAPIを使ってキレイにコピーさせるには
- コピーする瞬間にDOMを入れ替えて、コピー後に戻す
- 普通にやると表示がガタつく
- requestAnimationFrameを使って入れ替えると綺麗にできる
- Clipboard API+DOMの入れ替え、DOM Range+requestAnimationFrameについて
クライアントサイドのパフォーマンスメトリクス - Jxck
「sitespeed.ioがすごい」 #cto_sushi
— azu (@azu_re) May 26, 2015
詳細: graphite, grafana, sitespeed.io, diamond で継続 Web パフォーマンスモニタリング - Qiita
- Sitespeed.ioがすごい
- 本物のブラウザを仮想環境で動かしてTiming APIなどを元にしたメトリクスを取れる
- リアルなリクエスト/レスポンス/レンダリングの情報が得られる
- サーバのレスポンスなどはある程度枯れた計測方法があるけど、クライアントからのデータはまだまだ発見の余地がある
- 時系列データベースのGraphiteにデータを保存
- Grafana
- Dockerも用意されててセットアップが簡単
- 継続的にクライアントとサーバのメトリクスをとっておくことと
- Grafanaに両方を同時に表示して、どういうことが起こっているのかをクライアントとサーバ両面から見ることがdけいる。
みんなウェブのパフォーマンスってどうやって測ってる? #cto_sushi
— azu (@azu_re) May 26, 2015
契約プログラミング - Jxck
JavaScriptでもdecoratorをつかえば契約プログラミングできるのではという話 #cto_sushi
— azu (@azu_re) May 26, 2015
詳細: ES7.decorator で契約プログラミング(design by contract) - Qiita
- ECMAScriptに提案されてるDecoratorを使って契約プログラミング
- D言語では言語機能として契約プログラミングができる
- JavaScriptでも
@contract
というDecoratorを実装して事前条件、事後条件、不変条件のチェックをできないか -
@contract(Rule)
のようにDecorator関数には引数を渡すことができる - これを使ってルールを定義して使う
#cto_sushi JavaScriptこそ実行時Asssertが必要なのでは
— azu (@azu_re) May 26, 2015
Issueを読む技術 : ChangeLogの追い方 - azu
#cto_sushi sushiです pic.twitter.com/nmXtJEdo4F
— 償いは終わった (@kyo_ago) May 26, 2015
スライド: われわれは、いかにして変更点を追うか
われわれは、いかにして変更点を追うかという発表をしました。
最近ずっと考えているIssueを読む技術 · Issue #66 · efcl/efcl.github.ioの一部を取り出したもので、どうやってChangeLogからより深く、正しい情報を得ていくかについての内容となってます。
自分はJSer.infoという情報のサイトもやってるのもあってChangeLogを正しく追う必要がありよくChangeLogを見ています。 その中でのChangeLogからIssue/Pull Reuqest、コミットと深掘りしていく方法や、追いやすいChangeLogについて書いた内容になっています。
- ChangeLogの追い方
- ChangeLogの書き方
の2編からなっていて、一番言いたかったのは追いやすいChangeLogがわかると、読みやすいChangeLogを書くことができるのではないかという話でした。 ChangeLogもそれ単体ではなくIssue、Pull Request、コミットとそれぞれが上手く繋がるような仕組みになっているとより機能すると思います。
io.jsとES6 - 会長
io.jsの内部コードはハックなコードが多い。速度のため。
V8はまだES6の最適化が進んでない #cto_sushi
— azu (@azu_re) May 26, 2015
- V8はまだES6に最適化されてない
- io.jsのコードはかなりハック的な書き方がされてる
- パフォーマンスのため
- 単純にclassやlet、constなど使ってもパフォーマンスが得られない場合がある
isomorphic
#cto_sushi この話 "Isomorphism · Issue #17 · nodejs/NG" https://t.co/Q4LAOHX3LT
— azu (@azu_re) May 26, 2015
DDD
フロントでDDDやるの面倒臭い問題 #cto_sushi
— azu (@azu_re) May 26, 2015
DDD 面倒くさい原因はライブラリがない、Scalaに慣れてる。 #cto_sushi
— azu (@azu_re) May 26, 2015
JavaScriptでライブラリの範囲で開発してしまってるのでは。
DDDみたいな設計の話してないのでは。
でかいのやろうとするとフレームワークから探してしまう感じになってしまってる #cto_sushi
— azu (@azu_re) May 26, 2015
- 設計の話をもっとしようよ という話
- 小さなライブラリを繋ぐ事に集中してしまってる感
- 逆に大きな事をやろうとするとフレームワークを探し始めてしまう点
- もっと設計的な議論があっても良いのでは
- DDD - 持続可能な開発を目指す ~ ドメイン・ユースケース駆動(クリーンアーキテクチャ) + 単方向に制限した処理 + FRP - Qiita
test
#cto_sushi reftestについて発表した "azu/reftest-runner" https://t.co/shg1iuHcnM
— azu (@azu_re) May 26, 2015
zuul、testem、karma #cto_sushi
— azu (@azu_re) May 26, 2015
- 扱うブラウザの中でPhantomJSがもっとレガシーなブラウザになってるのでは
- Xvfbがなくていいのはメリットだけど、Sitespeed.ioみたいに今は実ブラウザを動かしたほうがいいのでは
PhantomJSはレガシーなブラウザという話 #cto_sushi
— azu (@azu_re) May 26, 2015
TypeScript
TypeScriptとエコシステムの問題 #cto_sushi
— azu (@azu_re) May 26, 2015
- TypeScriptを使うならTypeScriptべったりなってしまうのか、なってしまったほうが楽なのでは
- TypeScript における ES6 との兼ね合いで避けているパーツ ::ハブろぐ
おわり
久しぶりの sushi がリアル sushi でだいぶ満足している。 #cto_sushi
— Jxck (@Jxck_) May 26, 2015
お知らせ欄
JavaScript Primerの書籍版がAmazonで購入できます。
JavaScriptに関する最新情報は週一でJSer.infoを更新しています。
GitHub Sponsorsでの支援を募集しています。