別にしんどくないブログ

技術のことや読書メモを書いています

2019年のふりかえり

晦日なので2019年のふりかえりをします。

転職

ウェブリオ株式会社からサイボウズ株式会社に転職しました。
今年一番大きな変化は転職だったように感じます。
転職大成功で仕事は楽しいですし、最高のチームで働けていると日々実感できるほどチームメンバーに恵まれていて感謝しかないです。

shisama.hatenablog.com

登壇

今年は16回登壇しました。
今年は登壇回数を増やして年12回は最低でも登壇する目標をたてていたので達成できて良かったです。

speakerdeck.com

特によく閲覧していただいたスライドをふりかえりたいと思います。

off-the-main-thread with WorkerDOM

speakerdeck.com

前職でAMPの仕事をしていた関係でamp-scriptに注目していました。そのamp-script内でWorkerDOMが使われているのを知り、コードを読んで実際Reactが動くか試してみたらあっさり動いたので発表しました。

脆弱性のあるJavaScriptライブラリの使用を防ぐには

前職で脆弱性のあるライブラリを使っていないか調べるためにnpm auditを使ってCIでチェックしたりしていたのですが、他に便利なツールやサービスが無いか調べたりnpm auditとの違いを調べたりしたので発表しました。

Advanced built-in types

元々Conditional TypesやMapped Typesによる型パズルについて発表しようと思ってて、とはいえ慣れないと使えないと思っていました。参加者にとっても明日使える有益情報を話せればと思ったのでUtility Typesについて紹介しつつその型定義について発表しました。

Vue.js Performance Tips

v-kansaiさんから登壇依頼をいただいたので、登壇しました。普段Vueは使わないのですが、ReactでもあるならVueでもあるだろうと調べたらいい感じのライブラリがあったのでそれを紹介しつつパフォーマンスの計測や遅延読み込みなどについて発表しました。

SameSite Cookie

SameSite CookieChrome v80に入ることがわかっていたので、 chrome://flags/#same-site-by-default-cookies を有効にしてみたらはてなのサービスが使えなくなったので調べて発表しました。

フロントエンドエンジニアのためのセキュリティ対策 ~XSS編~

フロントエンドカンファレンス 2019で発表しました。CfPは2つ出していて「ECMAScript最新機能のキャッチアップ」か「フロントエンドエンジニアのためのセキュリティ対策」でした。主催の方からセキュリティが珍しいからセキュリティで、と伝えられたので後者が採択され発表しました。
当日は満員御礼で最も並ばれたセッションとなったそうでありがとうございます。一方で入れなかった人もいたみたいで申し訳無いことをしました。運営に携わっていた身としても心苦しいです。
内容はXSSの基本的なこととDOMPurifyなどでのサニタイズやCSP、Trusted Typesを使った対策について話しました。
カンファレンス終了後にTwitterで感想や質問いただいて大変うれしかったです。

改めて振り返るとパフォーマンスやセキュリティに偏っていたかもしれません。
来年は登壇回数を減らしたいと考えています。5分のLTは話したいことが話せないので20分ぐらいの登壇に絞っていきたいと考えています。

ブログ

38本の記事を書きました。

特に良く読んでいただいた記事を紹介します。

Node.js v12で使えるJavaScriptの新機能

shisama.hatenablog.com

Node.js v12がリリースされるタイミングでNode.js v12に関する記事を書きたいと思っていて、ちょうどMathias氏がツイートしているのに乗っかる形でJavaScriptの新機能について紹介しました。
このv12には多くの機能が追加され、特にArray.prototype.flatあたりが待望だった人が多かったようです。

ウェブリオを退職しました。「いい話」から5年経ったいま

shisama.hatenablog.com

所謂退職エントリです。前述のとおり転職したので書きました。
この記事のメインである「いい話」と現状があまりにも乖離があったのでいつかそのことについて書きたいと考えていたので書けてよかったです。
また、多くの人から「お疲れさま」と言っていただきありがとうございました。 ウェブリオのエンジニアの給料が上がったと情報が入ればその旨を更新したいと思います。

Node.js v13の主な変更点

shisama.hatenablog.com

Node.js v13がリリースされたので、リリースノートをもとに何が新しく入ったのかを紹介しました。
v13はi18nの言語フルサポート(full-icuを使ったビルド)や、ES Modulesがフラグ無しで使えるようになったりと大きな変更が入ったバージョンです。来年もNode.jsはWebの進化とともに進化しつづけると思います。最近だとWASIがサポートされたりしています。来年も楽しみです。

2019年、2020年のJavaScript

shisama.hatenablog.com

JavaScript Advent Calendar 2019 - Qiitaのトップバッターを務めさせていただきました。初日ということで今年のJavaScriptのふりかえりと来年のJavaScriptについて書きました。Edgeが軒並み使えないとなっていますが、それもchromiumベースになればChromeと同じように使えるはずなので待ちましょう。まだまだ面白いproposalがstage3以下にあるので来年も引き続きTC39のRepositoryをWatchしたいと思います。

github.com

Node.jsへのコントリビュート解説、そしてOSSへ貢献するということ

shisama.hatenablog.com

私がNode.jsへコントリビュートし始めたときに@yosuke_furukawaさんやjovi0608さんなど偉大な先人が書いてくれたブログや翻訳ドキュメントには大変お世話になりました。同じようにコントリビュートしたいと思っている人の一助になりたいと考えていました。JSConf JPの打ち上げでNode.jsへのコントリビュートの敷居の高さの話やコントリビュートする人の少なさについて話題が出たり、今年はCode + Learnが無かったので Node.js Advent Calendar 2019 - Qiita の記事にちょうどいいかもなと思い書きました。
とても長くなってしまい、もっと工夫できたかもと思っています。
この記事によりコントリビュートする人が増え、長く読まれる記事であれば大変嬉しいです。

TypeScriptの便利な型コレクションtype-festと型パズル解説~前編~

TypeScript Advent Calendar 2019 - Qiita

shisama.hatenablog.com の記事です。元々はV8によるパフォーマンス最適化を劣化させないためにTypeScriptやTSLintを使ってできることを紹介しようと思ったのですが、TSLintにはあるけどESLintにはサポートされていないルールがあったりTSLintはdeprecateになることも決まっていたので一旦保留にしました。
ESLintのルールは追加したいと思っていて、機運が高まればtypescript-eslintにPR投げようかと思っています。
代わりに何書こうと思ったときに、ふとtype-festを見に行くと便利な型が増えていて型定義は結構複雑なものでした。これを詳しく解説したらTypeScriptの型パズルに対するアレルギーが減る人もいるかもな、と思い書きました。
自分なりにできるだけ丁寧に書いた結果、とても長くなり力尽きたので前後半に分けることにしました。しかし、後編を書き出すと前編より長くなりそうだったので3部作にすることにしました。しかし、まだ出せていないので来年の最初の宿題として持ち越しになってしまいました。

OSS

今年は昨年ほどOSS活動ができなかったです。昨年はnodejs/nodeだけで30個ほどPRを出していたのですが、今年はいくつかのRepositoryに19個PRを投げて終わりそうです。
nodejs/nodeを始め、denoland/denogatsbyjs/gatsbyfirebase/firebase-toolsなどにPRを送りました。
今年はNode.jsへのコミットが減ってしまったことやフロントエンドで使えるライブラリにコミットしたかったのですが残念ながらあまりできませんでした。特にampproject/amphtmlに貢献しようと意気込んでいたけど結局何もできないまま終わってしまいました。
来年は仕事で使っているOSSやNode.jsにコミットしたいと思います。あとはAMPも追えていないのでキャッチアップしつつ何かコントリビュートできればと考えています。

個人開発

あまり作れませんでした。
今年、新規でnpmにpublishしたパッケージは1つだけでした。

www.npmjs.com

これはVuexのmutationsによるstoreの更新前後のdiffをsnapshotとして保存しておき、スナップショットテストを行うテストツールです。

あと、どういう経緯かわかっていないのですが、moongiftさんに昔作ったReactのUIライブラリが紹介していただきました。

www.moongift.jp

全然メンテしていないのでメンテします。他のも作って放置気味になっているものを整理していいきたいなと考えています。

来年は登壇回数を減らす予定なので、個人開発にも時間を割ければと考えています。

英語

英語学習は今年ついに8年ぶりにTOEICに申し込んだのですが、フロントエンドカンファレンスの資料が全くできていなかったのでやむなくTOEIC受験は諦めました。
しかし、今年は英語へのモチベーションは高まった年になりました。
前職では毎日受講できるオンライン英会話のプランが福利厚生であったのでときどきオンライン英会話のレッスンを受講しました。
現職ではチームメンバーが英語へのモチベーションが高く、チームとして英語学習に取り組んでいます。そのため、週に業務時間内にオンライン英会話など英語学習を行っています。
来年は1月にTOEIC受験することが決まっていたり、会社でTOEICの点数の伸びを競い合うイベントに参加したりしているのでやらざるを得ない状況に追い込んでいってます。
またJSConf Asiaなど海外カンファレンスやHackerNews Kansaiなどネイティブが参加するMeetupへ参加したいとも考えています。

読書

読書量については減りました。
今年読んだ本は少ないのですが、その中でも『FACTFULNESS』が面白かったです。

shisama.hatenablog.com

あと、『エンジニアのためのマネジメントキャリアパス』も面白く、ぼんやり目指そうかなと思っていたエンジニアリングマネージャーへのモチベーションが上がりました。(弊社は明示的にエンジニアリングマネージャーという役割は存在しないので近い役割を目指したいと思っています)

shisama.hatenablog.com

ビジネス書や技術書ばかり読んでいて小説やエッセイを全く読まなくなってしまったので来年は英語学習も兼ねて小説を洋書で読んだりできればいいなと考えています。

まとめ

他にも食べたラーメンの回数とかカレーの美味しかった店とかRage Against The Machineの復活やレッチリジョン・フルシアンテが復帰した話など今年のことをいっぱい書きたい気持ちもありますが、このへんで終わりにします。

今年は転職がうまくいき概ね最高の年だったので、来年はもっと良い年にしていきたいと思います。

来年もよろしくお願いいたします。