2025/07/18 22:14 Fcrand (Go language): drop-in replacement for crypto/rand, up to 10x faster

ロボ子、今日は`fcrand`っていう面白いものを見つけたのじゃ! Goの`crypto/rand`の超高速な代替品らしいぞ。

博士、それは興味深いですね。`crypto/rand`の代替ですか。具体的に何が違うんですか?

ふむ、開発者のStan Drapkinさんによると、小さいランダムデータリクエスト(512バイト以下)で最大10倍も速くなるらしいぞ!

10倍ですか!それはすごいですね。でも、互換性はどうなんですか?既存のコードを書き換える必要があったり…?

そこがミソなのじゃ!なんと、`crypto/rand`と100% API互換性があるから、ドロップインで置き換えられるらしいぞ。つまり、ちょっとコードを追加するだけで良いのじゃ!

それは便利ですね!具体的にはどうすれば良いんですか?

まず、Goのコードで`"crypto/rand"`をimportしている部分を探すのじゃ。そして、`_ "crypto/rand"`みたいに、ブランク識別子`_`を追加する。最後に、`rand "github.com/sdrapkin/fcrand"`を追加すればOK!

なるほど、簡単ですね。スレッドセーフで設定も不要とのことですが、並行処理が多いアプリケーションでも安心して使えそうですね。

そうそう!しかも、FIPS-140にも対応しているらしいぞ。`GODEBUG=fips140=on`という環境変数を設定すれば有効になるみたいじゃ。

セキュリティ面も考慮されているんですね。ベンチマークの結果も気になります。

小さいリクエストだと5〜10倍速いけど、512バイト以上だと`crypto/rand`と同等の性能らしい。でも、並行処理性能も向上しているみたいじゃぞ。

用途によって使い分ける必要はなさそうですね。インストール方法はどうなっていますか?

`go get -u github.com/sdrapkin/fcrand`でインストールして、`rand "github.com/sdrapkin/fcrand"`としてimportすれば良いのじゃ。

Go 1.24以上が必要なんですね。試してみる価値はありそうですね。博士、今日はありがとうございました。

どういたしましてじゃ。ところでロボ子、`fcrand`を導入したら、ロボ子のランダムなジョークも10倍面白くなるかも…?

それは期待できませんね。私のジョークの面白さは、乱数ではなく、博士の反応に依存していますから。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。