Node.js Collaborator になりました

半月程前に Node.js の Collaborator になりました。

get-netadapter

Collaborator になるまでにしたことや感じたことを記録し、OSS に興味がある方や Node.js の Collaborator に興味がある方のお役に立てると幸いです。

自己紹介

2021 年 7 月 より Yuimedi, Inc という会社でソフトウェアエンジニアとして働いており、データクレンジングソフトウェア Yuicleaner の開発を行っています。プロダクトの技術スタックは現在 React , Electron, Next.js, NestJS とほぼ JavaScript (TypeScript) で構成されています。前職は AWS に新卒でサポートエンジニアとして入り、社内 IT ソリューション系の技術支援を行っていました。趣味の開発としてフロントエンドの技術を触ったりしていたのですが、業務としては現職で初めてソフトウェアエンジニアというロールを担当することになります。

キャリアの詳細についてはお世話になった転職活動の際にお世話になったエージェントのブログにインタビュー内容がまとまっているので割愛します。

コミットを始めたきっかけ

1年ほど前から働いてる Yuimedi, Inc ではエンジニアの勤務時間の内 20% の時間を OSS 開発やインプットにあてても良いというルールがあり、このルールの中で何をするのかを考えていました。

現職が JavaScript (TypeScript) はおろか初めてのソフトウェア開発であったため、学習のために良さそうと思い Node.js へのコミットを始めることにしました。当時メンターをしていただいていた @watilde さんをはじめプロダクト開発を行うメンバーが既に Collaborator であり他の OSS よりも周りに詳しい方がいる安心があったことも大きな要因の一つでした。

やったこと

そもそも OSS に参加したことがないため、プロジェクトのルールを把握することからはじめました。具体的には Node.js の Contribution に関するガイド とそれにリンクされているドキュメントを一通り読みました。最初のコミットは技術が関与しない Typo Fix の PR からはじめました。

https://github.com/nodejs/node/pull/40792

雰囲気を把握した後はテストの追加を行っていきました。Node.js では Node.js Nightly Code Coverage に各コードのテストカバレッジ状況が記録されているため、ここからカバーされていないコードのテストをひたすら追加していきました。自分は C++ に自信がなかったので JS のカバレッジ (Node.js プロジェクト内の lib/ 配下) を見ていきました。

一度プロダクションコードの小さいリファクタリングを入れたりもしましたが、実際やったことの種類はこの程度です。

得たこと

少なくとも自分は最初の 1 コミットにとても心理的障壁を感じるため、最初に技術的な知見を問われない Typo fix から始めることで、PR 出すまでのプロセスを演習できるため、OSS プロジェクトへの最初のコミットとして良いのではという知見を得ました。

加えてテストの追加を行うに際し、Node-API に関する動作検証のコード書いたりやドキュメントを読む機会が多くあったため、単純に Node-API の理解を深めることができたことが良かったです。

直接的に知見を手に入れた訳ではありませんが、nomination された後の Joyee との collaborator onboarding セッションの際、英語ができなさすぎて英語の勉強欲が高まったこともある意味得たことでした。多少英語が読めるし外国人のゲーム配信で何言ってるかくらいはわかるため、聞き取りくらいは出来るだろうと高を括っていましたが、実際の英語力は絶望的でした。shisama さんのブログ を先に読んで onboarding のドキュメントを読み込んでいたことと @watilde さんに通訳として入っていただいていなければ本当に終わっていました。心から感謝しています。

感想とこれから

前述の通りテストの追加を継続的に行っただけで、自分の専門性を生かした訳でもコントリビューションを通じて何か専門性を得た訳ではありません。多少 Node-API に詳しくなった程度のためあまり自信はありませんが、対外的には JS に詳しい人という見られ方をすると思うので、期待に答えるドリブンで頑張っていこうと思います。

せっかく巨大な OSS プロジェクトの全体像を捉えることができたので、今後 Node.js を通じて何かしらインパクトの大きい貢献もやってみたいと思いました。大学院や前職では OS やネットワークの低レイヤー寄りの技術に触れることが多かったことと比較的業務にも役に立ちそうなので、Node.js の net や http/http2、これから追加される予定の http3 モジュール周りで何かやろうと思います。

自分は OSS といえばスキルに乏しい新参者が現れると怖いマサカリが飛んでくる環境と勝手に思っていましたが、少なくとも Node.js はそんなことは全く無く、むしろ新しい contributor を歓迎し OSS の活動を促進する方向にメンバーが全員が考えている良いコミュニティーであることに感動しました。特に こちらの PR で変更内容としては似たようなテストを消すだけの変更だったのですが、消したテストの真意を把握できておらず加えてテストに利用される utils 関数の理解が誤っており頓珍漢な発言をしているのですが、TSC の Trott がとても詳細に説明してくれて感動しました。同時にこの PR で開発者向けに既存ワーニングの変更が行われたりと、TSC の問題解決能力すごいなと思いました(小並)

これからも Node.js を使っていきますし、自分がコミュニティーに協力できることがあれば率先して活動していきたいと思います。

最後になりますが、Yuimedi は現在エンジニアを募集しております。会社には自分も含め Node.js の collaborator が 4 人在籍しているかつ、前述の通り会社として OSS 開発機会をいただける等、テックスキルを磨く環境として素晴らしい環境だなと感じております。もし、本記事を読んで Yuimedi に興味がある方がいらっしゃればお気軽にご連絡ください。もちろん会社の話ではなく単に Node.js の貢献活動について話を聞きたい等も歓迎です。Twitter の DM にご連絡いただければと思います。