ES2015強化月間

特にそういうつもりはなかったのだが、6月はめちゃくちゃ ES2015 書いてた。

作ったやつ

細かいものを作っては壊してを繰り返してた中でそれなりに満足したやつを出す

Chromeプラグイン

50分くらいでさくっと書いた、URLに紐づけてノートが書けるやつ。
ブコメみたいに使えるし保存はローカルだから他人には見えない。

f:id:Dolpen:20160622122411p:plain

リポジトリはこれ。

github.com

babel + React で書いてて、 EventEmitter を必要最低限にラップした Store を作って、Store からコンポーネントツリーに直接全 state を流し込むようにしたオレオレ flux にした。これにより

  • コンポーネントは state の書き戻し操作に関与せず、与えられた state / props から VDOM を吐く map 操作となる
  • 上記に関連して、 state の書き換え処理を一ヶ所に集約できる
  • そもそもの構造として、完成品の state をプッシュし続けるだけで良くなる

みたいな点が良さそうだった。

スペクトラムアナライザのデモ

https://dolpen.net/labs/sa/

6時間くらいかかった。これも babel + React +Rx 。モチベーションは、

  • 音源を Observable ベースのローダーを作って読み込みたかった
  • 画面更新の tick 処理も Observable から定期的に実行したかった
  • Web Audio API のラッパー作りたかった
  • React で SVG レンダリングしてみたかった

という感じだ。おおむね満足している。 SVG上のクリック座標の取得が、(おそらく)グローバル座標系からの差分計算になったりしてコンポーネントのモジュラリティを破壊しかけたり、Web Audio APIFFT の結果を返すとき、周波数を均等割して返すため、一般的に良くあるスペクトラムアナライザのように表示するために対数ベースに変換するなどのドメイン知識の部分で苦労したりでもう二度とやりたくない感じだった。

ES以外

  • Knife Solo → Knife Zero (できることできないことがわかってきてやっと実用できそうになった)
  • Capistrano2 → Capistrano3 (できることできないことがわかってきてやっと実用できそうになった)
  • netty4 でwebsocket のサーバー実装する ( WebRTC のシグナリングに使いたかった)

みたいな感じで、レガシーになりかけてた環境の刷新に向けて動けそうなところまで来た。

この先

まず痩せる。あと右手首が壊れたっぽい(曲げに加えて引っぱりに対して痛みが出るので靭帯の可能性がある)ので適切な対処をする。必然的にイカとかFPSの頻度を下げざるを得ないかもしれない。