2020/9/19 Dart: Sound null safetyの訳

Sound null safety

Dart言語にnull安全が導入されます。(現在ベータ版です(2021年2月時点))

null安全を導入した場合、デフォルトでは普通に型宣言したら、それはnon-nullable型になります。つまり普通に宣言した変数は、nullを持つことができない。普通に宣言した変数の値がnullということはない。

null安全を導入することで、null-dereference errorが実行時に発生することがなくなり、代わりにコード編集時の静的解析エラーとなります。

次のスクリーンショットに示すように、通常の開発環境でnullセーフティを試すか、既存のコードを移行してnullセーフティを使用するか、WebアプリDartPad with NullSafetyでヌルセーフティの使用を練習できます。

Screenshot of DartPad null safety snippet with analysis errors

important

null安全はまだテクニカルプレビューなので、製品版で使用しないでください。特にFlutterフレームワークはまだnull安全に対応していません。(2020年9月19日時点)(2021年2月時点で削除されている。)


Null safety principles

Dart null安全サポートは、次の3つのコア設計原則に基づいています。

Non-nullable by default.明示的にnull値をとることができると示さない限り、non-nullable型とみなされます。このデフォルトは、APIでnull以外が断然最も一般的な選択であることが調査で判明した後に選択されました。

Incrementally adoptable. 何をnull safetyにマイグレートするか、そしていつマイグレートするかを選択できます。同じプロジェクトでnull-safeなコードとnon-null-safeなコードを混在させることができます。徐々にマイグレートしていくことが可能です。マイグレーションを助けるツールを提供しています。

Fully sound. Dartのnullセーフティは健全であり、コンパイラの最適化を可能にします。型システムがnullではないと判断した場合、値がnullになることはありません。プロジェクト全体とその依存関係をnullセーフティに移行すると、健全性のメリットを最大限に活用できます。バグが少なくなるだけでなく、バイナリが小さくなり、実行が高速になります。


A tour of