「Go アプリがパニックした時のログで、キチンとシークレットをマスクできるか?」
![ログへ流れる紙に鍵が載っており、Gopher が [embargoed] の判子を押して止めている](/weeknotes/2026-11-16/embargo-gopher_hu_a5faa9ffaeae0332.webp)
原作:The Go Gopher — Renée French、CC BY 4.0。
パニック時のメッセージが stderr を経由してログ収集基盤へ流れてしまうのではないか。この疑問から nao1215/embargo というライブラリを作ったが、競合に勝てるだけの魅力がなかった。値を Secret 型で包んで表示をマスクする方式は、一般的すぎた。競合ライブラリと比較して、強い機能差異が作り出せなかった(注:テスト周りの機能は充実させていたが、それだけでは弱かった)。
そこで、以前開発した nao1215/sensitive を embargo にリネームし、今回作った機能を統合した。sensitive は、テキストからクレジットカード番号などを検出してマスクするライブラリである。シークレットを探索するライブラリに、明示的に指定したシークレットが漏洩しないようにする機能を足した形だ。競合に負けないように、テストや設計、性能計測を突き詰めている最中だ。
ちなみに embargo は、報道の世界で使われる単語であり、解禁日時まで情報を外に出さない取り決めを指す。シークレットを外へ出さないという意味に使えて、さらに go で終わる。sensitive より好ましいので、リネームした。
完全に下ネタだが、「私達は LLM のコンドーム」という発言を最近聞いたので、真っ先に gondom(go + condom)が思い浮かんでいた。意味的には完璧だった。漏れてはいけないもので、漏れても一発で終わるわけではない。しかし、重大な事態に繋がる。使えば安心。シークレット漏洩と、もう一つの漏洩。近しいものがある。
採用する勇気がなかった。