Week 46 - 2018
The weeknote for 11/12 - 11/18.
OSS
denoland/deno
deno は新しい V8 runtime.
-
Installer にちょっとコントリビュート (python)
-
deno 0.2.0 がリリース
- https://github.com/denoland/deno/releases/tag/v0.2.0
- 外部コマンド実行ができるようになった. shebang も解釈(無視)できるようになった. 簡単な CLI ツールが割と現実的に作れるようになったという感じ.
-
CodeFetch 周り (import 文から発動される Op) でちょっと直したい部分があるので, 来週は時間があったらその辺を見てみたい.
MyProject
kt3k/buttons
🌱buttons は毎日やるタスクのボタンを作って, その記録をカレンダーヒートマップ表示する web サービス.
- ちょっと使ってくれる人が増えてきたイメージ. yuzutas0 さんという人に誘われて技術書典6でこのサービスについての章を書く事になったので, そろそろ原稿を書き始めたい.
capsidjs/capsid
💊 capsid はコンポーネントベースの DOM プログラミングをするための超軽量フレームワーク
- nicolo が実装してくれた babel 7.1 の decorator plugin を手掛かりに, 新しい decorator に対応する修正を進めた.
- https://github.com/capsidjs/capsid/pull/133
- 途中何回も decorator proposal のレポジトリの方も再確認しながら, 新 decorator の挙動を探り探り実装した.
- 新 decorator は基本的に旧 decorator より複雑になっていて, 旧に無かった新しい ClassDescriptor / ElementDescriptor という 2種類の descriptor の中にデコレートするターゲットの情報が格納されていて, より細やかな decoration が出来るようになっている. たとえば kind には, その decorator が class decorator として呼ばれたか, method decorator として呼ばれたか, field decorator として呼ばれたかを区別する識別子が入っていて, 作者が意図しない利用をされた時に例外を投げる事ができる. また placement というプロパティが追加されていて, その メソッド/field が static であるか, prototype 上であるか, own プロパティであるか, の区別が出来るようになった. 区別できるだけでなく, placement を変える事も出来て, 字面上ただの method 定義だけど, decorator の効果でそれが static や own プロパティに変わるというような事が実現可能になった. 若干トリッキーなのが constructor の扱いで, 旧メソッドdecorator では、まず第1引数で、そのクラスの prototype が渡って来ていたため, そこから constructor を取り出したり, prototype に直接好きな作用を加えたりという事が可能であった. 新 decorator では ElementDescriptor には constructor も prototype も含まれておらず, class 自体にアクセスする事が出来ない. では, どうするのか, というと, finisher というプロパティを使う. ElementDescriptor に finisher というプロパティを作成し, そこに callback 関数を登録する. この callback 関数はその class の constructor 引数で実行されるため, ここに, 従来の decorator 実装で行なっていた処理を書く事で, 大体問題なく移行する事が出来る.
仕事
React Hands-on
- 簡単な React のハンズオンをやった. レベルのバラツキが大きい audience に対して hands-on するのはなかなか大変という感想. 一番後ろからついて来ている人が stuck しないようにケアしつつ, 一番前に進んでいる人が退屈しないレベルを維持するという事が必要で, レベル差が大きければ大きいほど, きちんと回すのが難しくなる.
生活
風邪
- 土曜(11/10)の夜から風邪を引いて火曜日ぐらいまで長引いた. 火曜はまだ歩くのが辛かった. 日曜日月曜日あたりは久しぶりに PC をほとんど開けないぐらいに辛い状態だった. 普段 OSS だの Web サービスだのややこしい事を考えている事が奇跡のように感じた.