GoogleがDart 2.1をリリースした。 このバージョンでは、新たな言語機能、パフォーマンスの向上、型チェックの高速化、型エラーに対するユーザビリティ向上などが実現している。
今年初めにリリースされたDart 2では、モバイルデバイス用のコードを生成する新コンパイラのサポート、Webプラットフォームツールの改訂、複雑なアプリを開発するチームをサポートするサウンドタイプシステム(タイプセーフシステムとも呼ばれる)が提供された。
サウンドタイプシステムは、型によって指定された制限に反した場合に通知することで、開発中のユーザを支援するものだ。今回のDart 2.1では、編集時とコンパイル時の両方の型チェックが完成した。
Dart 2.1では、ミックスインのサポートが改善されている。ミックスイン(mixin)は、クラスのコードを複数のクラス階層で再利用可能にする機能だ。ミックスイン用に新たな構文が追加され、キーワードmixin
を使ってミックスインでのみ使用可能なクラスを定義することが可能になった。新しい構文のmixin
では、ユーザによるmixinクラスの拡張やコンストラクトが禁止される点に注意することも重要だ。
ミックスインは他のクラスを拡張して(これまではObject
のみ拡張可能だった)、スーパークラスのメソッドを呼び出すことができる。非Objectクラスを拡張する例として、FlutterのアニメーションAPIから、SingleTickerProviderStateMixinが汎用的なTickerProviderインターフェースを実装したミックスインを宣言している部分を紹介する。
mixin SingleTickerProviderStateMixin on State implements TickerProvider {
...
}
The new mixin
syntax is required for developers who want to use super
inside a mixin.
class Superclass {
superclassMethod() {
print("in superclass");
}
}
mixin SomeMixin on Superclass {
mixinMethod() {
// This is OK:
super.superclassMethod();
}
}
class GoodSub extends Superclass with SomeMixin {}
class BadSub extends Object with SomeMixin {}
// Error: Since the super() call in mixinMethod() can't find a
// superclassMethod() to call, this is prohibited.
Dart 2.1では、intがdoubleとして評価される可能性があることを推測するようになった。この問題は、double型を想定しているAPIでint型を使用する場合に、Flutter開発者がよく経験するものだ。
(イメージ引用 medium.com/dartlang)
FlutterとWebの開発者には、パフォーマンスの向上というメリットがある。Dart 2.1では、AOTでコンパイルされたコードとJITでコンパイルされてVMで動作するコードの両方で、型チェックのコストが低減されている。Googleによれば、これまで41秒を要した大規模なベンチマークアプリのコード解析の実行が、25秒で可能になった。さらに、dart2jsの最小出力サイズが17パーセント減少し、コンパイル時間も15パーセント速くなった。
プロトコルバッファが正式にサポートされた。プロトコルバッファは、構造化データをシリアライズするための言語非依存かつプラットフォーム非依存なメカニズムだ。サポートされる言語はJava、Python、Objective-C、C++、Dart、Go、Ruby、C#である。プロトコルバッファについての詳細はリファレンス資料にある。
その他の機能には、次のものがある。
- コンストラクタとしてHashMap.fromEntriesとLinkedHashmap.fromEntriesが追加された。
- 演算子 /、|、およびブールに^が追加された。
- 新しいHTTPステータスコードが追加された。
- 最適化レベルを設定する -O フラグが追加された。詳細は dart2js -h -v を実行する。
機能とバグ修正の全リスト、重大な変更はchangelogに記載されている。
Dart SDK 2.1はDartのホームページからダウンロード可能だ。Flutter開発者には、Flutter 1.0リリースの一部としてDart 2.1が含まれている。Googleからは、int-to-doubleとmixinsのサンプルも提供されている。
DartプラグインがAndroid Studio、Visual Studio Code、Intellij IDEA、Atom、 Vim、EmacsなどのIDEやエディタに用意されている。
この記事を評価
- 編集者評
- 編集長アクション