トップ OSS紹介 Dart

Dart

NRIのOpenStandiaが提供するDart最新情報

バージョンアップ情報

Dart情報

Dartとは

Dart(ダート、ダーツ)は、2011年にGoogle社により、ブラウザ上で動作するJavaScriptの後継を目指して開発された比較的新しい言語です。JavaScriptはスクリプト言語の仕組み上、動作が遅かったり、動的型付けに起因するバグを生じやすいといった、大規模開発には向かないという欠点がありました。このようなJavaScriptの欠点を改善すべく、Dartの開発が行われました。しかし、2012年にMicrosoft社によって、同じくJavaScriptの欠点を補うべく新たに開発されたTypeScriptの出現により、JavaScriptは勢いを取り戻すことになりました。結果的には、Google社によるDartのブラウザへの組み込みは叶いませんでした。

そのような結果もあってか、Dartは2018年には「最も学ぶ価値のない言語」という不名誉なイメージを持たれたこともありました。しかし、この同じ年に、Dartの特徴でもある複数のプラットフォーム用のアプリケーションをビルドできるという機能を大いに生かした"Flutter"フレームワークが開発されました。これにより、Dartはそれまでの不遇を取り返すかのごとく、一気に有望性や将来性が高まっています。特にマルチプラットフォームでアプリケーションの開発が必要なシーンでは、JavaScript(TypeScript)により開発を行うフレームワークである"React Native"と肩を並べるほどの人気があります。

参考: Google Trendsでの"React Native"と"Flutter"の比較(2022年08月)
参考: Google Trendsでの"React Native"と"Flutter"の比較(2022年08月)

Dartの特徴

型システム

Dartはタイプセーフの言語です。基本的に、コンパイル時に静的型チェックが行われるため、コンパイル時にバグを検出できます。また、明示的な型を指定せず、アナライザーによる型推論を利用することもできます。コンパイル時に型を決められない場合は、実行時型チェックが行われます。

nullセーフティ

Dartでは、デフォルトでnullを許容しないようにできます。明示的にnullを許可していない変数にnullを設定しようとすると、エラーとなります。そのため、実行時のnull例外からユーザーを保護できます。

豊富なライブラリ

デフォルトで下記のようなライブラリセットが提供されます。

  • ビルトイン型、コレクション、その他コア機能(dart:core)(※自動でインポートされます)
  • キュー、リンクリスト、ハッシュマップ、バイナリツリーなどの豊富なコレクションタイプ(dart:collection)
  • JSONやUTF-8などの異なるデータを変換するためのエンコーダー/デコーダー(dart:convert)
  • 数学定数、関数や乱数生成(dart:math)
  • ファイル、ソケット、HTTPおよびその他のI/Oのサポート(dart:io)
  • 非同期プログラミングのサポート(dart:async)
  • 固定サイズのデータとSIMD数値型を処理するリスト(dart:typed_data)
  • C プログラミング言語との相互運用性のための外部関数インターフェイス(dart:ffi)
  • メモリを共有しない並行プログラミング機能である"アイソレート"(dart:isolate)
  • HTML要素およびその他のリソースの処理(dart:html)

上記以外にも、Dartチームが公開する補足パッケージや、サードパーティが開発する数千を超えるパッケージが提供されています。

(参考:https://dart.dev/guides/libraries/useful-libraries)

マルチプラットフォーム対応

Dartのプログラムは単一のコードで、下記のような様々なプラットフォームで動作するアプリケーションを開発することができます。

  • ネイティブプラットフォーム
    モバイルもしくはデスクトップデバイスをターゲットとするアプリでは、Dart Nativeを利用します。
    イテレーション開発において有用な増分再コンパイル(ホットリロード)やライブメトリックコレクションを備えたJITコンパイラが提供されます。また、本番環境では、AOTコンパイラを利用してアーキテクチャに応じたマシンコードへの事前コンパイルを行うことができるので起動を早くすることが可能です。また、Dartランタイムにより、世代別メモリ管理や実行時型チェック、アイソレートの管理が行われます。
  • Webプラットフォーム
    Webプラットフォームでは、Dart Webを利用します。DartコードをJavaScriptコードにコンパイル(トランスパイル)し、それをブラウザで実行できるようにします。こちらも、迅速な開発サイクル用のインクリメンタル開発コンパイラと、最適化されたJavaScriptコードへのコンパイルを実施するプロダクションコンパイラの双方があります。

Flutterの開発言語

様々なプラットフォームで動作するアプリケーションを開発・ビルドできる"Flutter"フレームワークのメインプログラム言語として利用されています。開発したDartのアプリケーションコードを、それぞれのプラットフォーム用に展開できるため、マルチプラットフォームに対応したアプリケーションの展開・保守が容易になります。

(参考URL:https://dart.dev/overview)

類似プロダクト

類似の機能をもつOSSとしては、下記のようなものがあります。

  • Java / Kotlin / Swift
  • C / C++ / C#
  • JavaScript
  • TypeScript

動作環境

Dartのプログラム開発に使用するDart SDKは以下のOS/アーキテクチャの環境で動作します。

OS

アーキテクチャ

Windows10
Windows11

x64、IA32、ARM64(※)

Debian stable
Ubuntu LTS

x64、IA32、ARM64、ARM、RISC-V(RV64GC) (※)

macOS 12(Monterey)
macOS 13(Ventura)
macOS 14(Sonoma)

x64、ARM64

(※) BetaチャネルやDevチャネルのみで利用できる実験的サポートです。

(参考URL:https://dart.dev/get-dart#system-requirements)

Dartのライセンス

Dartは、三条項BSDライセンス(BSD-3-Claus)と共に配布されています。三条項BSDライセンスは、「無保証であること」、「著作権、ライセンス条項」の明記を条件としています。条件を満たせば、ユーザーはそのソフトウェアの使用や頒布、修正、派生版の頒布(修正したソースコードを公開すること無く、オブジェクトコードの頒布が可能)をすることに制限を受けません。

製品ダウンロード

オープンソース年間サポートサービス

OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。

お気軽にお問い合わせください

関連OSS

  • Vue.js
    サポート対象

    Vue.js

    ヴュー・ジェイエス。SPA(シングルページアプリケーション)に向いたJavaScriptフレームワークです。

  • React
    サポート対象

    React

    リアクト。Facebookが作成したMVCモデルのView領域を担当するJavascriptのUIライブラリです。

  • Angular
    サポート対象

    Angular

    アンギュラー。Googleが開発を行っているMV*モデルのJavaScriptのアプリケーションフレームワークです。

オープンソースに関するさまざまな課題、OpenStandiaがまるごと解決します。
下記コンテンツも
あわせてご確認ください。