Dart とは?

Dart

Dart

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

Dartの保守サポートサービスの内容はこちら Dartの導入については、こちらのフォームからお問い合わせ下さい OSS全般の事例紹介はこちら

Dartバージョンアップ情報

すべてを見る

更新日:2022-09-27

Dartの概要

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

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

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

TOPに戻る

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)

TOPに戻る

Dartの動作環境

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

OS アーキテクチャ
Windows10
Windows11
x64、IA32、ARM64(※)
Debian stable
Ubuntu LTS
x64、IA32、ARM64、ARM、RISC-V(RV64GC) (※)
macOS 10.15(Catalina)
macOS 11(Big Sur)
macOS 12(Monterey)
x64、ARM64
(※) BetaチャネルやDevチャネルのみで利用できる実験的サポートです。
(参考URL:https://dart.dev/get-dart#system-requirements)

TOPに戻る

類似の機能をもつOSS

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

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

TOPに戻る

Dartのライセンス

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

TOPに戻る

Dartの公式サイト

Dart programming language | Dart

TOPに戻る

Dartのダウンロードサイト

Get the Dart SDK
Dart SDK archive

TOPに戻る

OpenStandiaに関する
資料請求・お問い合わせはこちら

  • 資料請求
  • お問い合わせ

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

  • OpenStandiaサポート対象オープンソース|50種類以上のOSSのサポートをご提供します。
  • 人気midPoint
  • 人気Keycloak
  • 注目MongoDB
  • ForgeRock AM(OpenAM)
  • ForgeRock IDM(OpenIDM)
  • MongoDB
  • Postfix
  • Apache HTTP Server
  • ZABBIX
  • PostgreSQL
  • Apache Struts
  • Apache Kafka
  • Apache Hadoop
  • Apache Spark
  • Spring Framework
  • Apache Tomcat
  • Solr
  • iBATIS
  • DRBD
  • MySQL
  • JBoss
  • Ruby on Rails
  • Jaspersoft
  • OpenLDAP
  • Apache log4j
  • Apache Subversion
  • ForgeRock DS(OpenDJ)
  • Pacemaker
  • Samba
  • Red Hat Enterprise Linux
  • Nginx
  • BIND
  • Dovecot
  • Pentaho
  • sendmail
  • Courier-IMAP
  • ForgeRock DS(OpenDJ)
  • Heartbeat
  • Hibernate
  • Hinemos
  • MyBatis
  • MySQL Cluster
  • Apache Axis2
  • Squid
  • OpenSSO