SlideShare a Scribd company logo
1 of 32
Download to read offline
Dartをはじめよう
ながぬまたつみ
Dart
A new platform for structured web
apps
オープンソースで開発中の新言語
Googleが主体
Dart
A new platform for

structured web apps
構造化ウェブ アプリケーション?
現在のWeb
JavaScriptは素晴らしい
● プロトタイプベース オブジェクト指向に
  よる拡張性
● 関数言語としての特性
● 豊富なライブラリ
現在のWeb....だけど
JavaScriptのこんなところが微妙
● 型がない
 ○ 関数の引数、戻り値が分かりづらい
● プロトタイプベースは特殊
  ○ 動的すぎて把握しきれない
● スコープがわかりづらい&弱い
  ○ 他の言語と違う部分が多い
  ○ ライブラリの仕組みがない
Web開発に構造化を
JavaScriptは大きめの開発に向かない
● 並行開発が難しい
 ○ インターフェイスを定義しづらい
● ライブラリ選びが難しい
  ○ 混ぜて使っても大丈夫か



→ 解決したい!
型
● 組み込み型
  ○ int、double、String、List、Map...
  ○ var
● ジェネリクス
  ○ List < int >
  ○ Map < int , String >
チェック モード
● 型はオプショナル
  ○ チェック モード : 型チェックあり
  ○ プロダクション モード : 型チェックなし

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


                     http://try.dartlang.org/s/kRU9
クラスベース
● クラスベース オブジェクト指向言語
 ○ JavaScript より Java に近い

interface Animal {}
class Dog implements Animal {}




               http://try.dartlang.org/s/eF08
ライブラリ機構
● #library (ライブラリ名)
● #import (ライブラリ名 prefix: 接頭子)
● ライブラリ プライベート
  ○ _で始まる変数や関数、クラスなど

#import ('dart:io', prefix:'io')
new io.File('memo.txt');
標準ライブラリ
●   dart:core
●   dart:isolate
●   dom
●   html
●   io
●   json
●   uri
●   utf
もっと便利に 〜

関数
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
もっと便利に 〜

クロージャ
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
もっと便利に 〜

文字列補完
● ${式} で文字列を補完

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
もっと便利に 〜

リスト&マップ
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
もっと便利に 〜

演算子オーバーロード
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
+1
こんなにすばらしい Dart ですが
まだ開発中...
文法は確定していません。
開発環境は完成していません。
実行環境は完成していません。
(2012/4/28 現在)
まだ開発中...
文法は確定していません。v0.8
開発環境は完成していません。
実行環境は完成していません。
(2012/4/28 現在)

でも、今すぐ試せます。
Dartboard
http://try.dartlang.org/
Dartium
Chromium with the Dart VM
frogc
● Dart to JavaScript コンパイラ
● Dartium以外のブラウザで実行
● Dartで実装されている

$ frogc test.dart
$ ls
test.dart test.dart.js
Dart Editor
Dart Editor - 新規アプリ
Dart Editor - 補完
Dart Editor - デバッグ
Dart Editor
● Eclipseベース
● 新規アプリ ウィザード
  ○ Webアプリ、サーバ
● JavaScriptへの変換&実行
● デバッガ
  ○ Webアプリ+Dartiumのみ
Dart & JavaScript
● DartはJavaScriptを置き換えない
  ○ 共存可能
  ○ 適材適所
● JavaScriptは偉大
  ○ でも選択肢があってもいい
● 人気上昇中!
 ○   Dart is the #72 most popular
     language on GitHub
 ○   (JavaScript is the most popular language on GitHub)
Dartのこれから
● Dart本体
  ○ 言語仕様、高速化
● ライブラリ
  ○ 単体テスト、パッケージ システム
● サーバー サイド
  ○ dart:io、フレームワーク
● モバイル
  ○ Android
やってみよう
まだ話していないことも
たくさんあります。

とにかくやってみよう。
ありがとうございました
資料
● http://www.dartlang.org/
● 日経Linux 2012年2月号、3月号
  Dart記事 ... SSS(G) 小山さん執筆
● What is Dart? O'Reilly $0

More Related Content

Similar to Dartをはじめよう

2013-12-08 西区プログラム勉強会
2013-12-08 西区プログラム勉強会2013-12-08 西区プログラム勉強会
2013-12-08 西区プログラム勉強会Takatoshi Murakami
 
Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009Taisuke Shiratori
 
知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数Wataru Terada
 
⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5Nishida Kansuke
 
ウェブから情報をあつめる
ウェブから情報をあつめるウェブから情報をあつめる
ウェブから情報をあつめるShuhei Iitsuka
 
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)Hiroaki KOBAYASHI
 
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-Kazunari Hara
 
Write good parser in perl
Write good parser in perlWrite good parser in perl
Write good parser in perlJiro Nishiguchi
 
15分でわかった気になるdart
15分でわかった気になるdart15分でわかった気になるdart
15分でわかった気になるdartSatoshi KOBAYASHI
 
WordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょうWordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょうHishikawa Takuro
 
Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]Ra Zon
 
eZ Publish勉強会9月〜テンプレート言語〜
eZ Publish勉強会9月〜テンプレート言語〜eZ Publish勉強会9月〜テンプレート言語〜
eZ Publish勉強会9月〜テンプレート言語〜ericsagnes
 
Flutterを体験してみませんか
Flutterを体験してみませんかFlutterを体験してみませんか
Flutterを体験してみませんかcch-robo
 
卒研発表
卒研発表卒研発表
卒研発表yayugu
 
長いの
長いの長いの
長いのemasaka
 
Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]Ra Zon
 
LastaFluteでKotlinをはじめよう
LastaFluteでKotlinをはじめようLastaFluteでKotlinをはじめよう
LastaFluteでKotlinをはじめようShinsuke Sugaya
 

Similar to Dartをはじめよう (20)

Scala on Hadoop
Scala on HadoopScala on Hadoop
Scala on Hadoop
 
2013-12-08 西区プログラム勉強会
2013-12-08 西区プログラム勉強会2013-12-08 西区プログラム勉強会
2013-12-08 西区プログラム勉強会
 
Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009
 
Aizu lt tokyo_luxion
Aizu lt tokyo_luxionAizu lt tokyo_luxion
Aizu lt tokyo_luxion
 
知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数
 
⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5
 
ウェブから情報をあつめる
ウェブから情報をあつめるウェブから情報をあつめる
ウェブから情報をあつめる
 
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
 
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-
 
Write good parser in perl
Write good parser in perlWrite good parser in perl
Write good parser in perl
 
15分でわかった気になるdart
15分でわかった気になるdart15分でわかった気になるdart
15分でわかった気になるdart
 
WordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょうWordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょう
 
Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]
 
eZ Publish勉強会9月〜テンプレート言語〜
eZ Publish勉強会9月〜テンプレート言語〜eZ Publish勉強会9月〜テンプレート言語〜
eZ Publish勉強会9月〜テンプレート言語〜
 
Flutterを体験してみませんか
Flutterを体験してみませんかFlutterを体験してみませんか
Flutterを体験してみませんか
 
卒研発表
卒研発表卒研発表
卒研発表
 
長いの
長いの長いの
長いの
 
ATN No.2 Scala事始め
ATN No.2 Scala事始めATN No.2 Scala事始め
ATN No.2 Scala事始め
 
Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]
 
LastaFluteでKotlinをはじめよう
LastaFluteでKotlinをはじめようLastaFluteでKotlinをはじめよう
LastaFluteでKotlinをはじめよう
 

More from Tatsumi Naganuma

More from Tatsumi Naganuma (8)

Goをえらんだ理由
Goをえらんだ理由Goをえらんだ理由
Goをえらんだ理由
 
EE
EEEE
EE
 
Cross Platform Make
Cross Platform MakeCross Platform Make
Cross Platform Make
 
Antのススメ
AntのススメAntのススメ
Antのススメ
 
NSEG #15
NSEG #15NSEG #15
NSEG #15
 
Node.js で Web アプリ開発
Node.js で Web アプリ開発Node.js で Web アプリ開発
Node.js で Web アプリ開発
 
初めての REST - Representational State Transfer
初めての REST - Representational State Transfer初めての REST - Representational State Transfer
初めての REST - Representational State Transfer
 
FreeBSDで行こう for small server
FreeBSDで行こう for small serverFreeBSDで行こう for small server
FreeBSDで行こう for small server
 

Recently uploaded

TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 

Recently uploaded (9)

TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

Dartをはじめよう