VEGA Scope

世界規模のNullポインタ障害

先日(2024/07/19)、全世界でWindowsのブルスクリーンが表示される、という事象が発生しました。

全世界で発生のブルースクリーンエラー、850万台のWindowsマシンに影響─米マイクロソフトが状況を説明
https://it.impress.co.jp/articles/-/26608

この原因は、WindowsのドライバソフトでNullポインタ参照が発生したためでした。 Nullポインタ参照は、プログラミングにおいて注意されるべき基本的かつ重要な事柄ですが、あらためて3つのポイントを述べます。

ポイント1 変数の初期化を徹底する

変数 を宣言したら、必ず初期値を代入しましょう。
状況に応じて、初期値としてNull以外の適切な値(例えば、空文字列、0など)を設定することが必要です。

ポイント2 Nullチェックを徹底する

変数を使う前に、必ずNullかどうかをチェックしましょう。
if文や三項演算子などを用いて、Nullの場合とNullでない場合で処理を分岐させることが必要です。

String result = str != null ? str.toUpperCase() : "null string";

ポイント3 Nullを許容しない設計にする

可能な限り、Nullを返すメソッドは避けるべきです。Nullを返す代わりに、空のリストや空のオブジェクトを返す、例外をスローする、などの方法を検討しましょう。
また、 Nullable、optionalなど、値が無いことを表現する型を使うことも重要です

まとめ

これらの3つのポイントを意識しながら、Nullポインタ参照の発生を未然に防ぐことが、プログラミングにおいて重要です。
また、Rustのような、Nullポインタ参照が発生しないプログラミング言語を採用するのもひとつの方法です。

(IT事業部門 T.H)

RECRUIT

採用情報

採用情報はこちら

CONTACT

お問い合わせ

Web問い合わせはこちら