dartをはじめよう
DESCRIPTION
Googleが主体となって開発しているオープンソースのWeb向けプログラミング言語であるDartについて、これから始める人向けに解説しました。NSEG第26回勉強会(2012年4月28日)の発表資料。TRANSCRIPT
![Page 1: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/1.jpg)
Dartをはじめよう
ながぬまたつみ
![Page 2: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/2.jpg)
DartA new platform for structured web appsオープンソースで開発中の新言語
Googleが主体
![Page 3: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/3.jpg)
DartA new platform for
structured web apps 構造化ウェブ アプリケーション?
![Page 4: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/4.jpg)
現在のWeb
JavaScriptは素晴らしい● プロトタイプベース オブジェクト指向に
よる拡張性● 関数言語としての特性● 豊富なライブラリ
![Page 5: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/5.jpg)
現在のWeb....だけど
JavaScriptのこんなところが微妙● 型がない
○ 関数の引数、戻り値が分かりづらい
● プロトタイプベースは特殊○ 動的すぎて把握しきれない
● スコープがわかりづらい&弱い○ 他の言語と違う部分が多い○ ライブラリの仕組みがない
![Page 6: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/6.jpg)
Web開発に構造化を
JavaScriptは大きめの開発に向かない● 並行開発が難しい
○ インターフェイスを定義しづらい
● ライブラリ選びが難しい○ 混ぜて使っても大丈夫か
→ 解決したい!
![Page 7: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/7.jpg)
型
● 組み込み型○ int、double、String、List、Map...
○ var● ジェネリクス
○ List < int >○ Map < int , String >
![Page 8: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/8.jpg)
チェック モード
● 型はオプショナル○ チェック モード : 型チェックあり
○ プロダクション モード : 型チェックなし
int foo = "Hello";Failed type check: type String is not assignable to type int
http://try.dartlang.org/s/kRU9
![Page 9: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/9.jpg)
クラスベース
● クラスベース オブジェクト指向言語○ JavaScript より Java に近い
interface Animal {}class Dog implements Animal {}
http://try.dartlang.org/s/eF08
![Page 10: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/10.jpg)
ライブラリ機構
● #library (ライブラリ名)● #import (ライブラリ名 prefix: 接頭子)● ライブラリ プライベート
○ _で始まる変数や関数、クラスなど
#import ('dart:io', prefix:'io')new io.File('memo.txt');
![Page 11: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/11.jpg)
標準ライブラリ
● dart:core● dart:isolate● dom● html● io● json● uri● utf
![Page 12: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/12.jpg)
もっと便利に 〜
関数
int compare(a,b){return a - b;}col.sort(compare); col.sort((a,b) { return a - b; }); col.sort((a,b) => a - b);
http://try.dartlang.org/s/wtQ9
![Page 13: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/13.jpg)
もっと便利に 〜
クロージャ
counter(c) { return () => c++; } var c1 = counter(1);var c2 = counter(3);for (int i = 0; i < 3; i++) { print(c1()); print(c2());}
http://try.dartlang.org/s/E208
![Page 14: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/14.jpg)
もっと便利に 〜
文字列補完
● ${式} で文字列を補完 String title = 'Test';String s = '''<h1>$title</h1><p>123 + 456 = ${123+456}</p><p>random = ${Math.random()}</p>''';
http://try.dartlang.org/s/0cQ9
![Page 15: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/15.jpg)
もっと便利に 〜
リスト&マップ
var list = [ 1, 2, 3 ];var map = { 'hello': 'world', 'twice': (e) => e * 2};print("${list[0]}");print("${map['hello']}");print("${map['twice'](3)}");
http://try.dartlang.org/s/fq88
![Page 16: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/16.jpg)
もっと便利に 〜
演算子オーバーロード
class Point { Point(this.x, this.y); final x, y; operator + (Point p) => new Point(x + p.x, y + p.y);}var p = new Point(1, 2) + new Point(3, 4);
http://try.dartlang.org/s/w9Q9
![Page 17: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/17.jpg)
+1こんなにすばらしい Dart ですが
![Page 18: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/18.jpg)
まだ開発中...
文法は確定していません。開発環境は完成していません。実行環境は完成していません。(2012/4/28 現在)
![Page 19: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/19.jpg)
まだ開発中...
文法は確定していません。v0.8開発環境は完成していません。実行環境は完成していません。(2012/4/28 現在)
でも、今すぐ試せます。
![Page 21: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/21.jpg)
DartiumChromium with the Dart VM
![Page 22: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/22.jpg)
frogc● Dart to JavaScript コンパイラ● Dartium以外のブラウザで実行● Dartで実装されている $ frogc test.dart$ lstest.dart test.dart.js
![Page 23: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/23.jpg)
Dart Editor
![Page 24: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/24.jpg)
Dart Editor - 新規アプリ
![Page 25: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/25.jpg)
Dart Editor - 補完
![Page 26: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/26.jpg)
Dart Editor - デバッグ
![Page 27: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/27.jpg)
Dart Editor● Eclipseベース● 新規アプリ ウィザード
○ Webアプリ、サーバ● JavaScriptへの変換&実行● デバッガ
○ Webアプリ+Dartiumのみ
![Page 28: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/28.jpg)
Dart & JavaScript● DartはJavaScriptを置き換えない
○ 共存可能○ 適材適所
● JavaScriptは偉大○ でも選択肢があってもいい
● 人気上昇中!
○ Dart is the #72 most popular language on GitHub
○ (JavaScript is the most popular language on GitHub)
![Page 29: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/29.jpg)
Dartのこれから
● Dart本体○ 言語仕様、高速化
● ライブラリ○ 単体テスト、パッケージ システム
● サーバー サイド○ dart:io、フレームワーク
● モバイル○ Android
![Page 30: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/30.jpg)
やってみよう
まだ話していないこともたくさんあります。 とにかくやってみよう。
![Page 31: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/31.jpg)
ありがとうございました
![Page 32: Dartをはじめよう](https://reader034.vdocuments.pub/reader034/viewer/2022042813/54968f62b479595b208b466c/html5/thumbnails/32.jpg)
資料
● http://www.dartlang.org/● 日経Linux 2012年2月号、3月号
Dart記事 ... SSS(G) 小山さん執筆● What is Dart? O'Reilly $0