訳者 はじめに
FltuterとDartの3ヶ月ごとのバージョンアップに対してブログ記事がありますので、そちらの日本語訳をさせていたただいております。誤訳・改善点があればご連絡いただけると助かります。
Amanda Fitchさんによる「Announcing Dart 3.9」(原文)の日本語訳です。
はじめに
こんにちは、Dart開発者の皆様!最新の安定版、Dart 3.9が正式にリリースされました!
今回のリリースは、皆様の作業を効率化し、アプリケーションのパフォーマンスを向上させることに焦点を当てています。null安全性の重要な更新、Dart CLIのパフォーマンス向上、そしてAIアシスタントの強化を可能にするDartとFlutter MCP Serverの追加など、多くの新機能が含まれています。Dart 3.9のすべての新機能について、以下で詳しくご覧ください。

Dart 3.9 の発表
言語のアップデート
Null Safety
Dart 3.9 は、型変換、到達可能性、確定割り当ての計算時にNull Safetyを仮定します。これらの改善を活用するには、パッケージのSDK制約の下限を3.9以降(sdk: ^3.9.0
)に設定してください。この変更により、dead_code 警告がより多く生成される可能性があります。
型システムの健全性に関する修正
getter から返された値を、getter の返り値型が dynamic または Function としてインスタンス化されたジェネリック型引数である場合に、実行時チェックなしで直接呼び出すことが可能な型システムの健全性(soundness)に関する修正 の問題を修正しました。この問題は dev-compiler DDC で発生し、他のツールには影響しません。
修正前、以下のゲッターは直接呼び出しで問題を引き起こす可能性がありました。例:
// 以下のゲッターは、直接呼び出しで問題を引き起こす可能性がありました。
// 直接呼び出し
// ゲッター
class Container<T> {
T get value => ((int i) => i.isEven) as T;
}
// 直接呼び出し
Container<dynamic>().value(『Invocation with missing runtime checks!』);
ツールの更新
DartとFlutter MCP Server
DartとFlutter MCP Serverはブリッジとして機能し、Gemini CLI、Cursor、GitHub CopilotなどのAIコーディングアシスタントに、Dartプロジェクトのコンテキストへのアクセスを提供します。単にコードを提案するだけでなく、AIアシスタントはプロジェクトを深く理解し、代わりにアクションを実行できます。
DartとFlutter MCP Serverを使用すると、AIアシスタントに次のようなことを依頼できます:
DartとFlutter MCP Serverは、Dart SDKの安定版チャネルで利用可能です。

DartとFlutter MCP Serverによりレイアウト問題を修正(この録画の一部は速度調整されています)
より高速なDart CLI
以前は、dart analyze
やdart fix
などのDart CLIコマンドを実行すると、コンピュータは実行直前に分析サーバー用のコードをコンパイルする必要がありました。現在、これらのツールは分析サーバーの Ahead-Of-Time (AOT) コンパイル済みスナップショットを使用するため、サーバーは高速なネイティブマシンコードに事前コンパイルされています。
結果はお使いのソースコードによって異なりますが、サンプルパッケージで一般的なコマンドを実行し、興味深い結果を得ました。dart format
のような短いコマンドは、以前の数分の1の時間で完了し、dart analyze
のような長時間実行されるコマンドは、ほぼ50%高速化されました。

pubクライアントの更新
Git依存関係は、gitタグに基づいてバージョン解決が可能になりました。
descriptorでtag_pattern
を使用し、version
制約がある場合、パターンに一致するすべてのコミットが解決時に考慮されます。次の例では、my_dependency
のバージョン2.0.1以降のみが考慮されます:
dependencies:
my_dependency:
git:
url: https://github.com/example/my_dependency
tag_pattern: v{{version}}
version: ^2.0.1
言語バージョン 3.9 以降、flutter
制約の上限がルートパッケージで尊重されるようになりました(dart
制約は既に尊重されていました)。DartまたはFlutterの制約を狭く設定することは、開発チームが共同でアプリを開発する際、全員が同じSDKバージョンを使用するように確保するのに役立ちます(詳細については、issue #95472を参照してください)。
例えば、次のようなルートpubspecの場合、pub get
は、Flutter SDKのバージョンが3.33.0でない場合、失敗します:
name: my_app
environment:
sdk: ^3.9.0
flutter: 3.33.0
Dartネイティブコンパイラ
ターゲットOSがLinuxの場合、arm
(ARM32)とriscv64
(RV64GC)のターゲットアーキテクチャに対するクロスコンパイルサポートを追加しました。
廃止予定機能と互換性変更
32ビット x86 アーキテクチャ
Dart は 32ビット x86 アーキテクチャを廃止しました。ほとんどの開発者には影響はありません。主に古い x86 ベースの Android エミュレーターと一部の物理デバイスに影響します。32ビット ARM と 64ビット x86_64 エミュレーターおよびデバイスは引き続きサポートされます。詳細な技術的な説明は、Dart GitHub 非推奨機能のイシューで確認できます。
dart build
dart build
はベータチャネルでプレビュー中です。
dart build -f exe <target>
は現在、dart build cli — target=<target>
に置き換えられました。詳細については、dart build cli — help
を参照してください。
-
Next
記事がありません