Rustで『安全』と言い切れるか?Cloudflare 障害と unwrap() のリアル
BRANK
はじめに2025年11月18日、インターネットインフラ大手 Cloudflare にて、世界規模のサービス障害が発生しました。その原因として、Rust 製プロキシサービス内で起きた panic の一撃が引き金になったことが報じられています。中でも注目されたのが、Rust 標準ライブラリの Option::unwrap() または Result::unwrap() の呼び出しです。しかし、この「unwrap が原因」という一言だけで終わる話ではありません。今回は、Rust における unwrap() の意味・使いどころ・今回の障害が教えてくれたことを丁寧に振り返ります。Rust における unwrap() とはまず、Rust 標準ライブラリにおける Option<T> および Result<T, E> 型からおさらいしましょう。Option/Result 型Rust では、値が存在しない可能性やエラーの可能性を型として表現します。Option<T> は Some(T) または None の二択。Result<T, E> は Ok(T) または Err(E) の二択です。Rust の設計思想では、「ヌルポインタ」や「例外(Exceptions)」に頼るのではなく、処理可能な値として可能性を明示することが推奨されています。unwrap() の振る舞いOption<T> や Result<T, E> に .unwrap() を使うと以下のようになります:let…