dartをはじめよう

32
Dartをはじめよう ながぬまたつみ

Upload: tatsumi-naganuma

Post on 21-Dec-2014

1.023 views

Category:

Technology


1 download

DESCRIPTION

Googleが主体となって開発しているオープンソースのWeb向けプログラミング言語であるDartについて、これから始める人向けに解説しました。NSEG第26回勉強会(2012年4月28日)の発表資料。

TRANSCRIPT

Page 1: Dartをはじめよう

Dartをはじめよう

ながぬまたつみ

Page 2: Dartをはじめよう

DartA new platform for structured web appsオープンソースで開発中の新言語

Googleが主体

Page 3: Dartをはじめよう

DartA new platform for

structured web apps 構造化ウェブ アプリケーション?

Page 4: Dartをはじめよう

現在のWeb

JavaScriptは素晴らしい● プロトタイプベース オブジェクト指向に

よる拡張性● 関数言語としての特性● 豊富なライブラリ

Page 5: Dartをはじめよう

現在のWeb....だけど

JavaScriptのこんなところが微妙● 型がない

○ 関数の引数、戻り値が分かりづらい

● プロトタイプベースは特殊○ 動的すぎて把握しきれない

● スコープがわかりづらい&弱い○ 他の言語と違う部分が多い○ ライブラリの仕組みがない

Page 6: Dartをはじめよう

Web開発に構造化を

JavaScriptは大きめの開発に向かない● 並行開発が難しい

○ インターフェイスを定義しづらい

● ライブラリ選びが難しい○ 混ぜて使っても大丈夫か

→ 解決したい!

Page 7: Dartをはじめよう

● 組み込み型○ int、double、String、List、Map...

○ var● ジェネリクス

○ List < int >○ Map < int , String >

Page 8: Dartをはじめよう

チェック モード

● 型はオプショナル○ チェック モード : 型チェックあり

○ プロダクション モード : 型チェックなし

int foo = "Hello";Failed type check: type String is not assignable to type int

http://try.dartlang.org/s/kRU9

Page 9: Dartをはじめよう

クラスベース

● クラスベース オブジェクト指向言語○ JavaScript より Java に近い

interface Animal {}class Dog implements Animal {}

http://try.dartlang.org/s/eF08

Page 10: Dartをはじめよう

ライブラリ機構

● #library (ライブラリ名)● #import (ライブラリ名 prefix: 接頭子)● ライブラリ プライベート

○ _で始まる変数や関数、クラスなど

#import ('dart:io', prefix:'io')new io.File('memo.txt');

Page 11: Dartをはじめよう

標準ライブラリ

● dart:core● dart:isolate● dom● html● io● json● uri● utf

Page 12: Dartをはじめよう

もっと便利に 〜

関数

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をはじめよう

もっと便利に 〜

クロージャ

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をはじめよう

もっと便利に 〜

文字列補完

● ${式} で文字列を補完 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をはじめよう

もっと便利に 〜

リスト&マップ

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をはじめよう

もっと便利に 〜

演算子オーバーロード

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をはじめよう

+1こんなにすばらしい Dart ですが

Page 18: Dartをはじめよう

まだ開発中...

文法は確定していません。開発環境は完成していません。実行環境は完成していません。(2012/4/28 現在)

Page 19: Dartをはじめよう

まだ開発中...

文法は確定していません。v0.8開発環境は完成していません。実行環境は完成していません。(2012/4/28 現在)

でも、今すぐ試せます。

Page 20: Dartをはじめよう

Dartboardhttp://try.dartlang.org/

Page 21: Dartをはじめよう

DartiumChromium with the Dart VM

Page 22: Dartをはじめよう

frogc● Dart to JavaScript コンパイラ● Dartium以外のブラウザで実行● Dartで実装されている $ frogc test.dart$ lstest.dart test.dart.js

Page 23: Dartをはじめよう

Dart Editor

Page 24: Dartをはじめよう

Dart Editor - 新規アプリ

Page 25: Dartをはじめよう

Dart Editor - 補完

Page 26: Dartをはじめよう

Dart Editor - デバッグ

Page 27: Dartをはじめよう

Dart Editor● Eclipseベース● 新規アプリ ウィザード

○ Webアプリ、サーバ● JavaScriptへの変換&実行● デバッガ

○ Webアプリ+Dartiumのみ

Page 28: Dartをはじめよう

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をはじめよう

Dartのこれから

● Dart本体○ 言語仕様、高速化

● ライブラリ○ 単体テスト、パッケージ システム

● サーバー サイド○ dart:io、フレームワーク

● モバイル○ Android

Page 30: Dartをはじめよう

やってみよう

まだ話していないこともたくさんあります。 とにかくやってみよう。

Page 31: Dartをはじめよう

ありがとうございました

Page 32: Dartをはじめよう

資料

● http://www.dartlang.org/● 日経Linux 2012年2月号、3月号

Dart記事 ... SSS(G) 小山さん執筆● What is Dart? O'Reilly $0