初めてOSSにプルリクエストを出した話

最終更新日:

初めてプルリクエストを外部に出したので記念に記事にしました。

OSSにプルリクエストと聞くと大層なことをした感じがありますが、バグを直しただとか新機能を実装したとかではなく、DenoのThird Party Modulesに自分で書いたライブラリを追加するリクエストを出しただけです。

Deno1.0.0リリースの記事を見て、いい機会だしTypeScript書くかぁ〜と思い立ってSHA-2を実装し、プルリクエストを送りました。教職員に送るメールみたいに送信前に何度も確認して、プルリクエストボタンを震える手で押しました。コンマ忘れてCI落としたの少し恥ずかしかった。

https://github.com/denoland/deno_website2/pull/704

そう大したことはやってないのですが、個人や自分が所属しているチーム以外でプルリクエストをやったのは初めてだったので、送る前はガチガチに緊張し、寝る前にマージされているのを見たときは小躍りしました。そしてその、数日後に別のライブラリを書いてまたプルリクエストを出しました。二度目なので若干抵抗感が薄れて送りやすかったです。

https://github.com/denoland/deno_website2/pull/856

ここからはTypeScriptで書いたライブラリの話です。

まず1つ目のプルリクエストで追加してもらったSHA-2の実装ですが、これはRustでもともとハッシュ関数を色々実装してたのと、Denoの標準ライブラリと他の外部ライブラリにSHA-2ファミリーを全て実装したのがなかったことから書きました。ちなみにこのライブラリがTypeScriptで始めた書いたプログラムです。

TypeScriptでの実装

Rustでの実装

次に2つ目、これは1つ目のSHA-2の実装のときに「ビット長の決まった整数型が欲しいなぁ」、と思い実装したものです。四則演算やビット演算、バイト列との相互変換機能などを各整数型に実装、TypedArrayとの併用が面倒だったので追加した専用配列(?)型のTypedVectorなど、いろいろと実装した結果、テストコードの量が過去最大規模になりました(コピペが大半を締めているが約9300行のコードのうち約5900行がテストコード)。それと細かく最初のリリースタグを切ってから10日も立たない間に6回もバージョンが上がりました。現状小数型がないのでIEE754-2019をどうにかして入手して、それに準拠する形で実装したい。

数値型ライブラリ