タイムテーブルに戻る
標準パッケージに uuid が追加された背景から見る Go らしい意思決定
Go 1.27 からは標準パッケージに uuid 実装が追加されることが予定されています。 が、この uuid 実装の追加についてのプロポーザル自体は 2018 年ころから出ており、一度クローズされています。 https://github.com/golang/go/issues/23789 https://go.dev/doc/faq#x_in_std にもある通り、Go がある処理を標準パッケージとして実装するためには、それが標準パッケージたりうる理由を満たす必要があります。これらを説明しつつ、このプロポーザルがクローズされた理由に触れます。 しかし Go 1.27 でリリース予定なことからわかる通り、その後別の uuid 実装のプロポーザルが再提案され、そちらは議論を経て accept されています。 https://github.com/golang/go/issues/62026 時を経てどのように状況が変化し標準パッケージで実装するに足る価値を示したのか、またどのような議論を経て accept され実装につながったのかを解説します。 また、上記プロポーザルでは言及されていませんが、uuid に関するありがちな実装ミスとしては rand source の選択や利用方法の誤りがなど挙げられます。例えば著名なOSSである https://github.com/satori/go.uuid では過去に rand 処理の誤った利用に起因する CVE-2021-3538 が発生しました。この内容についても軽く触れ、セキュリティの目線でも標準ライブラリとして実装することの意義を補強することを試みます。 実際に実装された処理群なども非常に Go らしい特徴を備えていて、主に uuid v4 および uuid v7 のサポートのみとなっています。これらについては実際の利用傾向などを踏まえてメンテ可能な必要最小限の仕様を実装するような議論がありました。関連する議論の流れやどのように意思決定したのかをご紹介できればと思います。 総じて標準パッケージへの uuid の追加を例に取り上げながら、 Go が標準パッケージに価値ある処理群を実装していくための考え方などを紹介できればと思います。
convto convto

株式会社LayerX

低レイヤや暗号関連の技術に興味があります