Dartエディタのバイナリビルドを使うことでGoogle Dartはより試しやすくなった。このSWT/EclipseベースのツールにはDartCコンパイラ、プロジェクトマネジメント、アプリケーションウィザードなどが含まれている。DartCでコンパイルしたDartアプリケーションが実行できる。
このエディタでは型チェッカーですべてのコードをチェックでき、問題のあるコードに注釈が付けられる。型アノテーションがあるので型チェッカーはより使い安くなる。
Dartエディタに付属するDartCはDartをJavascriptに変換するコンパイラであり、Javaで書かれている。"なぜDartCはDartで書かれていないのか"という問いはDartリポジトリの新しいプロジェクトのおかげですぐに消滅するだろう。FrogはDartをJavascriptに変換するコンパイラであり、Dartで書かれている。このプロジェクトはDartリポジトリで管理されており、改善と進化が進められている。Dartそのもののサンプルにもなっている。
Frogプロジェクトは始まったばかりだ。このプロジェクトは現在Googleで働いているJim Hugunin氏によって始められた。氏はJythonとIronPythonの作者でもある。氏はDartについて下記のように書いている。
私は自分のキャリアのほとんどの間、動的な世界と静的な世界の間の戦いを終結させようとしてきました。2つの世界が互いの利点を享受できるようにするためです。Dartでこのコンパイラを書くことで、私は初めて、探求していた2つの世界の融合が簡単にできると感じました。
[..]
とてもダイナミックな方法でコードを書き始め、設計がしっかりし始め複雑になってきたら次第に静的なチェックを加えていくというコーディングの仕方はDartで初めて経験しました。
GoogleはDartを"テクニカルプレビュー"として発表し、コミュニティからフィードバックとコメントを得ようとしている。まだ完成にはほど遠い。リフレクションのような重要な機能は現在実装されているところだ。コミュニティはDartのメーリングリストやウェブでフィードバックを提供し始めている。
例えば、Bob Nystrom氏(GoogleのDartチームのメンバ)はDartにnullable型の提案を行っている。基本的なアイディアは、すべての型は非nullableだが、型アノテーションに?
を追加することで null
値を許容するようになる、というものだ。
詳細は提案内容を見ればわかるが、nullable型が必要な理由のひとつは、
GiladはDartについて"ドキュメンタリ"型システムを持っていると説明しています。nullableと非nullable型があると、型アノテーションを使うことでnullを受け付けるかどうかをユーザに教えることができます。他の言語ではドキュメントで教えるしかありません。こうすることでメソッドの型シグネチャも正しくなります。例えば、メソッドmethod(Foo a, Foo? b)を呼ぶとき、第一引数はnullを受け付けないが第二引数は受け付けるというのがはっきりわかります。
Nullable型や類似のアイディアは新しいものではなく他の言語にもある。例えば、Javaの@NotNull
アノテーションだ。null
が引き起こす問題を考えると、これはとても便利な機能だ。
DartチームのGilad Bracha氏は、最近Dartと選択的型システムの背後にあるアイディアについて説明している。氏はドキュメンテーションが最も重要な貢献だと考えている。JavaのアノテーションやC#の属性のようにDartの型アノテーションは選択的でシステムのランタイムの挙動に直接影響しない。Giladの説明のビデオは見られる。GiladへのインタビューはChannel9で見られる。
DartについてニュースはDartWatchブログで確認できる。このブログはDartについての様々なニュースを紹介している。