ニュース

ぬるぽエラーを撲滅 ~100%NULL安全になった「Dart 3」がリリース

UIキットは「Flutter 3.10」に

100%NULL安全になった「Dart 3」がリリース

 プログラミング言語「Dart」の新バージョン「Dart 3」が、5月10日(米国時間)にリリースされた。2018年8月以来、5年ぶりのメジャーバージョンアップとなる。

 「Dart」は、Googleが主導で開発を進めているオープンソースのプログラミング言語。クロスプラットフォーム対応のUIツールキット「Flutter」の開発言語として根強い支持を集めている。「Google I/O 2023」で発表された「Dart 3」で注目すべきポイントは、3点だ。

 まず1つ目は、100%の「健全なNULL安全性」(sound null safety)が達成されたこと。移行を円滑に進めるため、従来の「Dart」では変数に「null」を代入する運用を許可することができたが、「Dart 3」ではそれが許されなくなる。これにより、nullポインター例外をはじめとするコーディングエラーを根絶することが可能だ。

100%の「健全なNULL安全性」(sound null safety)までの道のり。3年の歳月をかけて達成

 2つ目はレコード、パターンマッチ、クラス修飾子といった新しい言語機能だ。

 レコード(records)は、型指定されていないデータ構造。これまでの「Dart」関数は1つの値しか返せなかったため、複数の値を返す場合はリストにしたり、専用のデータ型を作成する必要があった。レコード型があれば、こうした煩雑な手間を省くことができる。

複数の戻り値を手軽に扱えるレコード(records)

 レコードに含まれるデータを分解して変数に格納したい場合は、パターンマッチの出番となる。パターンはswitch文のパワーと表現力を広げるうえでも有用で、複雑な条件分岐を従来よりも簡素に記述することができる。

レコードを分解
パターンはswitch文のパワーと表現力を広げるうえでも有用

 クラス修飾子はパワーユーザー機能で、主に大規模なAPIを作成したり、エンタープライズクラスのアプリを構築したりする「Dart」開発者のニーズに応えたものだ。「final」や「sealed」といった修飾子が新たにサポートされ、アクセスレベルをきめ細かく指定できる。

 3つ目は、WebAssembly(WASM)への対応だ。これはまだプレビューの段階で、実用は推奨されていないが、いずれはWebプラットフォームでネイティブコードを実行できるようになる。インラインクラスやプライマリコンストラクター、マクロを利用したメタプログラミングなどに取り組んでいくとのこと。

 そのほかにも、ユーザーインターフェイスツールキット「Flutter 3.10」も発表されている。こちらでは壁紙などから生成されたカラーテーマや新しいウィジェットを含む「Material 3」デザインシステムへの対応、SLSAレベル1コンパイルによるセキュリティ強化、リソース消費の削減、パフォーマンスと安定性の向上などが図られている。

壁紙などから生成されたカラーテーマなど、「Material 3」デザインシステムへ対応