本日、
Dart 2を発表しました。これは、Webおよびモバイルプラットフォームでのクライアント開発向けに独自に最適化された言語としてのDartのビジョンをより完全に反映した言語のリロードです。
ダッシュ-公用語のマスコットDart 2では、型システムを大幅に強化および簡素化し、構文をクリアし、ほとんどのツールをゼロから書き直して、モバイルおよびWeb開発をより楽しく生産的にしました。 Dart 2では、
Flutter 、
AdWords、 AdSenseなどの初期言語ユーザーから学んだ教訓と、顧客からのフィードバックに応じて行われた大小さまざまな改善も考慮されています。
Dartの基礎
Dart 2の技術革新について話す前に、Dartがクライアントコード開発者のすべてのニーズを満たしていると考える理由を理解することは価値があります。
現代の汎用言語に必要なプロパティに加えて、クライアント開発用の言語は次のようにする必要があります。
- 生産的 。 構文は明確で簡潔で、ツールキットはシンプルで、開発サイクルはほぼ瞬時に行われる必要があります。
- クイック 。 起動とランタイムのパフォーマンスは、低速のモバイルデバイスでも優れており、予測可能である必要があります。
- ポータブル 。 クライアントアプリケーション開発者は、今日、iOS、Android、およびWebの3つのプラットフォームを検討する必要があります。 言語はすべての言語でうまく機能するはずです。
- 手頃な価格 。 数百万人の開発者が理解できるようにしたいのであれば、言語は馴染みのあるものからかけ離れすぎません。
- 反応する 。 言語は、リアクティブプログラミングスタイルをサポートする必要があります。
Dartは、Googleや他社のWeb、iOS、Androidでミッションクリティカルな高品質のアプリケーションを作成するために使用され、モバイルおよびWeb開発に最適です。
- Dartは明確で簡潔な構文を持ち、JITコンパイラーを備えた仮想マシンで動作できるため、開発速度が向上します。 これにより、モバイル開発プロセス中のホットリブートをサポートできます。これにより、デバイス上で実行中のアプリケーションのコードを編集、コンパイル、および置換できる非常に高速な開発サイクルにつながります。
- 事前にソースコードを効率的にコンパイルできるため、Dartはモバイルデバイスでの予測可能かつ高いパフォーマンスとクイック起動を提供します。
- Dartは、モバイルデバイスでの高速な作業のためのネイティブコード(ARM、x86など)へのコンパイル、およびWeb用の効果的なJavaScriptコードへの変換をサポートしています。
- Dartは、オブジェクト指向の側面と構文により、ほとんどの開発者にとって理解しやすいものであり、ユーザーによると、C ++、C#、Objective-C、またはJava開発者は数日でDartコードを書くことができます。
- SDKを備えたDartは、リアクティブプログラミングに最適であり、スレッドとフューチャーを含みます。 また、クイックガベージコレクタを使用して、短命のオブジェクトを管理するための優れたサポートを提供します。
Dart 2:顧客サポートの改善
Dart 2では、クライアント側のコードを記述するための優れた言語にするためにいくつかのことを行いました。 特に、強力な型指定や、コードを介したユーザーインターフェイスの定義方法の改善など、いくつかの新機能を追加しました。
強い型付け
Dartを使用したAdWordsとAdSenseの背後にあるチームは、Googleの最大かつ最先端のWebベースの広告管理アプリケーションの1つを作成し、これらのサービスはGoogleの収益のかなりの部分を占めています。 これらのチームと緊密に協力して、Dartタイプシステムを強化することにしました。 これにより、Dartプログラマーは開発プロセス中にエラーを検出し、大規模なチームによって作成されたアプリケーションのスケーリングを改善し、コード全体の品質を向上させることができます。
もちろん、これは一意ではありません。 また、Webエコシステムでは、JavaScriptに型を追加する傾向があります。 たとえば、
TypeScriptと
Flowは、注釈と型推論を使用してJavaScriptを拡張し、コード分析機能を向上させます。
以下の小さな例では、Dart 2は暗黙的なエラーを検出し、その結果、コードの全体的な品質の向上に役立ちます。
void main() { List<int> prices = ['99', '27', '10000', '20000000'];
このコードは何をしますか? 彼は「27」を印刷することを期待できます。 しかし、Dart 2タイプシステムがないと、彼は「10000」を印刷しました。これは、辞書順に並べられた文字列のリストの最初のアイテムだからです。 ただし、Dart 2では、このコードは入力エラーを生成します。
コードを介したユーザーインターフェイス
ユーザーインターフェイスを作成するとき、別のマークアップ言語とアプリケーションで使用するプログラミング言語を切り替える必要があることがしばしば面倒です。 コンテキスト切り替えの必要性を減らすことを目指しています。 Dart 2はオプションの
newと
constを導入します。 この機能はそれ自体非常に価値があり、他の
可能性も開きます。 たとえば、オプションの
newおよび
constのおかげで、ウィジェット定義をより簡潔でシンプルにすることができます。
// Dart 2 Widget build(BuildContext context) { return new Container( height: 56.0, padding: const EdgeInsets.symmetric(horizontal: 8.0), decoration: new BoxDecoration(color: Colors.blue[500]), child: new Row( ... ), ); } // Dart 2 Widget build(BuildContext context) => Container( height: 56.0, padding: EdgeInsets.symmetric(horizontal: 8.0), decoration: BoxDecoration(color: Colors.blue[500]), child: Row( ... ), );
クライアント側ダーツを使用する
モバイルプラットフォーム
Dartの最も重要な用途の1つは、iOSおよびAndroid用のユーザーインターフェイスを作成するためのGoogleの新しいモバイルプラットフォームである
Flutterです。 大人気の
Hamilton:The Musicalショー
の公式アプリは、Flutterが開発者が記録的な速さでアプリを構築する方法を示す例です。 Flutterはリアクティブプログラミングスタイルを使用し、ユーザーインターフェイスをピクセルごとに制御します。 Flutterにとって、Dartはトレーニングの容易さ、リアクティブプログラミング、高速開発、高速ガベージコレクターを備えた高性能実行システムの点で理想的です。
Web
Dartは、ミッションクリティカルなWebアプリケーションのプラットフォームとしての地位を確立しています。
dart:htmlなどのWebライブラリと、完全なDartベースの
Web環境があります 。 Dart for the Webを使用しているチームは、開発速度の向上に熱心でした。 Google AdWordsの開発担当副社長であるManish Gupta氏によると:
AdWordsのインターフェースは大きく複雑であり、Googleの収益にとって重要です。
Dartを選んだ理由は、 生産性と予測可能性の優れた組み合わせ、トレーニングの容易さ、タイプシステム、およびWebおよびモバイルデバイスでのサポートです 。
エンジニアの生産性は以前の2〜3倍になり 、Dartに切り替えたことをうれしく思います。
次は何ですか
FlutterとDartにより、開発者は最終的に、共通のコードベースを使用して、妥協することなくAndroid、iOS、およびWeb用の高品質なアプリケーションを作成する機会を得ました。 その結果、チームメンバーはプラットフォーム間をスムーズに移動し、コードのチェックなど、お互いに助け合うことができます。
AdWords Expressや
AppTreeなどのコマンドは、モバイルデバイスとWebでコードの50%〜70%を再利用します。
Dartは
、オープン ECMA標準をサポート
するオープンソースプロジェクトです。
コアDartプロジェクトと成長しているDart
パッケージのエコシステムの両方への貢献を歓迎し
ます 。
Flutterの Dart 2と
Dart SDKをコマンドラインから直接試すことができ
ます 。 Dart SDKの場合、devチャンネルからDart 2をダウンロードし、フラグ
--preview-dart-2を使用してコードを実行します。 また、
Gitterコミュニティに参加することもできます。
本日発表された改善のおかげで、Dart 2は生産的でクリーンで現場で実証済みの言語であり、最新のアプリケーション開発の問題を解決します。 彼はすでに地球上で最も要求の厳しい開発者の一部に愛されており、あなたもそれを気に入ってくれることを願っています。
翻訳者注 :ロシア語を話すダートコミュニティの
Telegramまたは
Slackに参加して
ください 。