プログラミング言語Dartの基礎

2012110日(初版)

2016111日(最新更新)

株式会社 クレス

 

 

PDF版はここから (Adobe Readerを使用のこと)

Open Office用のODT版はここからダウンロード

Microsoft Office用のDOCX版はここからダウンロード

Dart言語仕様書邦訳版はここから

 

この資料は多少でもJavaJavaScriptの経験を持つ技術者向けにDartの基礎をDart言語仕様書に沿って説明する為のものである。不明な箇所はDart言語仕様書を参照されたい。また構文の記述は仕様書の「本仕様書の表記(Notation)」の節を見て頂きたい。この資料は非同期、アイソレート、IO以外のAPIに関しては特に説明していないので、この言語を試すときにはDart API Referenceも見て頂きたい。

 

大規模で構造化されたウェブ・アプリケーションに対応可能なプログラミング言語であるDartは、JavaJavaScriptの経験を持つ技術者には馴染みやすい言語である。オブジェクト指向の要素としてクラスとインターフェイスを使っている。デフォルトではJavaScriptと同じ動的な型づけを使っているが、静的な型づけも可能で、複雑化するアプリケーションをより構造化でき、またより厳格にチェックできるようになる。

 

Dartの開発の中心になっているのがChromeブラウザのV8エンジンを担当したLars Bak(ラース・バーク)等であり、従ってDartJavaScriptの技術がベースになっている。彼とJava言語仕様の作成者の一人であるGilad Bracha(ジラード・ブラーカ)が201110月にデンマークのArchauz(オーフス)で開催されたGOTO会議でこの言語を公式に発表したときのプレゼンテーションでは、この言語のことを「シンプルで意外性のないオブジェクト指向プログラミング言語」(A simple and unsurprising OO programming language)だと述べている。即ち:

 

  • クラス・ベース、単一継承、インターフェイスつき

  • 静的な型づけはオプショナル

  • 真の構文スコープ

  • 単一スレッド

  • なじみのある文法

 

が特徴だとしている。

 

Dartの発表からちょうど1年後の2012103日におなじGOTO会議で今度はMicrosoftの技術フェローのAnders Hejlsbergが「アプリケーション規模のJavaScript開発のための言語」というタイトルでTypeScript発表した。これはDartとは違ってJavaScriptの型づけスーパーセットという位置づけである。Googleは早速選択肢が増えるとして歓迎のコメントを出している(アメリカ人は通常このような場合に良く行う反応)が、Dartコミュニティの中では優劣比較の議論がなされている。革新性という点ではDartは魅力的ではあるが、JavaScript主体のユーザにとってはややハードルが高いので、その点ではTypeScriptは普及の潜在性を持っているといえよう。

 

20131213日にGoogleECMADartの標準化のための新しい技術委員会TC52を設立したと発表した。TC52の委員長はGoogleデンマークのAnders Thorhauge Sandholmである。ECMA20146月末の第107回全体会議で正式に1.3版を承認している。

 

 

*** 内容 ***

 

1  概要

2  変数とその型(Variables and Types)

3  関数(Functions)

4  関数リテラル(Function Literal)

5  クラス(Classes)

6  総称型(Generics)

7  ミクスイン(Mixins)

8  インターフェイス(Interfaces)

9  メタデータ(MetaData)

10  式(Expressions)

11  文(Statements)

12  ライブラリ(Libraries)

13  Dartの型処理と型チェック(Types)

14  組込み識別子、予約語およびコメント(Reserved Words and Comments)

15  Dartの実行(Dart Execution)

16  パッケージ・マネージャ(Pub)

17  イベント処理(Asynchronous Processing)

18  並行処理(Concurrent Processing)

19  HTTPサーバ(HttpServer)

20. HTTPSサーバ(HTTPS Servers)

21  WebSocketサーバ(WebSocket Servers)

22  ファイル・アップロード(File Upload Servers)

23  ミドルウエア・フレームワーク(shelf)

24. RESTfulウェブ・サービスとDart (Dart with RESTful web services)

25. Googleのウェブ・サービスの為のAPI (googleapis)

26. Google App EngineDartを走らせる

27  本資料作成にあたってこれまでにDart開発チームに行った指摘と提案

28  推奨IDE (IntelliJ / WebStorm)のインストール

29  本資料に含まれているプログラムのダウンロード

 

本資料に示したサンプル・プログラムたちは現時点で動作が確認されたものである。これらはGithubのレポジトリから取得できる。読者は28章「本資料に含まれているプログラムのダウンロード」の章を読めば、これらのサンプル・プログラムをダウンロードして自分で容易に実行して確かめることができる。なお、これらのサンプルを商用に使用すること及びその結果については当社はその責を負わない(MITライセンス)。

 

添付コード・サンプル

 

Github

対応する節

dart_code_samples

このレポジトリは2つのフォルダで構成されている:

codes : 「プログラミング言語Dartの基礎」の各章にあるcode_xx.yy.dartの名前(xxは章番号、yyは節番号)で表示されたコード・サンプル

apps : 「プログラミング言語Dartの基礎」のなかにあるアプリケーションで、以下に記したものを除く

mime_type

「パッケージ・マネージャ(Pub)」の章の「pubの概要」の節(16.1)の「筆者が公開したライブラリ mime_type」の項にあるPubライブラリ

file_server

HTTPサーバ (HttpServer)」の章の「ファイル・サーバ」の節(19.7

GooSushi

HTTPサーバ (HttpServer)」の章の「セッション管理」(19.8)及び「ショッピング・カートのアプリケーション・サーバ」の節(19.9)

https_servers

HTTPSサーバ (HTTPS Servers)の章の「簡単なHTTPSサーバの実験」の節(20.2)

websocket_chat_server

WebSocketサーバ (WebSocket Servers)」の章の「チャット・サーバ」の節(21.3)

file_upload_test

「ファイル・アップロード(HTTP File Upload Servers)」の章(22章)

shelf_test

「ミドルウエア・フレームワーク (shelf)」の章(23章)

weather_forecast_server

RESTfulウェブ・サービスとDart (Dart with RESTful web services)」の章(24章)

 

この資料はページ数が多いので、PDFでは下図のようにしおりを、ODTではナビゲータを、DOCXでは見出しマップを利用されたい。