Dartとは
2011年にGoogleから発表された1オブジェクト指向のプログラム言語で、
- 任意型アノテーション
- Hot reload
- ネイティブコードやJavaScriptへのコンパイル
と言った特徴を持つ。
JavaScriptの代替を目指して開発され、DartVMがChromeにも統合される予定だったが思ったように普及が進まなかったため断念。2また、TypeScriptがGoogleの標準言語として採用されたという少し悲しい経緯を持つ。3
現在は主にFlutterフレームワークの言語としてアプリケーション開発に使われている。
Dartによる開発のメリット
- 型付けにより実行時のエラーを減らし、可読性を高めることができる。
- 開発時と公開時で利用するコンパイラを分けることで効率よく開発ができる
- Pubと呼ばれるパッケージ管理を利用することができる
任意型アノテーション
Dart1までは任意型付けの言語であったが、
Dart2からは強い静的型付けの言語となっている。4
型アノテーション(と呼ばれる型orクラス名)をつけない場合は型推論により型が決まり、
// 型をつけない場合
main() {
var a = 1;
var b = 1.2;
var s = 'strings';
}
つけるとc言語などと同じように静的に型を指定できる。
// 型をつける場合
void main() {
int a = 1;
double b = 1.2;
String s = 'strings';
}
コンパイラ
- 開発時にはデバッグやHot reloadといった豊富な開発サポートを可能としている。
- 公開時にはARMやx64といったネイティブコードに変換することでアプリの高速化が期待できる。
表にすると以下のようになっており、必要なコンパイラを利用する形になる。
Dart native | Dart web | |
---|---|---|
開発時 | Dart VM (JIT compiler) | Dart development compiler |
公開時 | Dart AOT compiler | Dart to js compiler |
- JITコンパイラとはJust-In-Time compilerの略であり、JavaやJavaScriptなどがこの方式を利用している
- AOTコンパイラとはAhead-Of-Time compilerの略であり、cやc++などがこの方式を利用している
Pub (package manager)
- パッケージとは他の開発者のプログラムを再利用できるようにまとめられたもの
-
pubspec.yaml
というファイルに記載し、パッケージを管理する -
node.js (JavaScript) でいう
npm
である
例えば、アプリケーションでemail_validatorというパッケージを使いたい場合はpubspec.yaml
に
# 以下を追加
dependencies:
email_validator: ^1.0.5
を追記し
$ pub get
とすることで、簡単にパッケージを導入することができる。
注意:サーバサイド と クライアントサイド
Dartには__サーバサイド__用と__クライアントサイド__用のライブラリがあり、サーバサイドで利用できる機能がクライアントサイドで利用できないことがある。(目的が違うのでね...)
サーバーサイドDart | クライアントサイドDart | |
---|---|---|
ライブラリ | dart:io など | dart:html など |
操作 | 端末のI/OのAPIなどにアクセス | ブラウザのDOMやAPIにアクセス |
目的 | ファイル操作など | シングルページWebアプリケーションなど |