sosukesuzuki.dev

February, 13 2021

はじめて自分で作ったリポジトリを OSS の Organization に移管した

過去のブログ記事で紹介した prettier-regression-testing というツールを Prettier Organization に移管した。

Prettier のユーザーにとって何かが変わるとかそういうことは全くないのだが、自ら作成したリポジトリを OSS の Organization に移管したのは初めてだった。

他のメンテナーにとっても便利だったらしい

もともと prettier-regression-testing は自分がリリースするときにリグレッションが発生しないことを確認するのを簡単にするためのツールだった。

大規模 Closure Tools プロジェクトに Prettier を導入するまでの道のり - Cybozu Inside Out | サイボウズエンジニアのブログ

こちらの記事でも紹介したように、Prettier のリリース前リグレッションチェックはすべて手動で行われており面倒だったので、自動化するため prettier-regression-testing を開発した。

基本的には自分ひとりで使う想定で開発したが、他のメンテナーたちも使ってくれてより便利にするための PR を投げてくれた。

コードが汚すぎた

しかし prettier-regression-testing はありえないくらいメンテナビリティの低いコードになっていた。

GitHub Actions 上で動作する JavaScript のコードを書くのがはじめてだったため手探りで書きなぐってしまい、結果としてワンファイルの JavaScript で、書いた本人ですら一ヶ月後には読めなくなってしまうようなコードが誕生した。

その状態でも PR を投げてくれた他のメンテナーたちの適応力には驚いたが、さすがに「このままではだめだ...」と思い始めた。そんな気持ちを抱えたまま 4 ヶ月が経過し、そしてメンテナーの一人によって CLI で動かすためのかなり大きな PR が作成された。

「このまま PR を受け入れてしまってはもう取り返しのつかないことになる」と思ったので、そのメンテナーには「本当に申し訳ないんだけど、週末に TypeScript でこの機能までカバーできるように書き直すから、そのときにレビューをしてほしい」という旨を伝え、週末に本気で書き直した。

移管する

意外と上手く書き直すことができ、「みんなにとっても便利そうなら、Prettier Organization に移管したいんですがどう?」と尋ねたところ賛成してもらえたので、移管した。

移管作業自体は簡単で、GitHub のドキュメントに従って操作したらすぐ終わった。

感想と教訓

自分が自分のために作ったものが他人にも使ってもらえるというのは嬉しかった。また Prettier Organization のような公式の場所に自分の作ったリポジトリが置かれているのもなんとなく嬉しくなれる。

自分しか使わないようなツールでも誰かの役に立つことがあるというのは色々なところで言われていることなので知識としては頭に入っていたが、それを実感できて良かった。今後も自分のためのツールであっても積極的に公開していきたいと思う。

そして今回の件から得られた教訓としては、それがたとえ自分のためのものであろうが、長期的に使うかどうかわからないものであろうが、できるだけコードは丁寧に書いた方が良いということだ。こちらも当たり前のことかもしれないが、実際にそれで困ったという経験が得られたのは結果として良かったかもしれない。

「丁寧に書く」というのは曖昧で難しいが、Node.js での開発においてはまず TypeScript を使うということと、少なくとも入出力の再現が容易である操作に関してはユニットテストを書いておくというのは意識したほうが良さそうだ。