20ヶ月を取り戻す

わかめ まさひろ
わかめ まさひろ @v vakame
GAE
TypeScript
Android
Glass

AngularJS
2012年05月12日
Dartハッカソン!
Winner!
うちのチーム勝ちました!
BDDテスト的なの作った
#library('teaolive_introduction');

!

#import('dart:html');
#import('packages/teaolive/teaolive.dart');
#imp...
時は流れ…

20 month later…
Version History
• 2012/10/16 M1!

• 2013/08/27 M6-Beta!

• 2012/12/18 M2!

• 2013/10/02 M7-Beta!

• 2013/02/20 M3!

• 2013...
コンパイル
できない…

ハッカソン当時は0.0.8とか
当時の思い出
• unittestのライブラリ!
• bleeding_edgeにしかない!
• 使い方もよくわかんない!
• pub (Dartパッケージ管理システム)!
• 立ち上げるぞ!みたいな時期!
• まだ影も形もほとんどなかった
T...
直した
library teaolive_introduction;

!

import 'dart:async';
import 'package:teaolive/teaolive_browser.dart';

!

void main...
途中経過

だいたい4時間で
直せた!
古いDart Editorを使おう
• 古いコードのMigration機能がある!
• http://goo.gl/ae2KIL!
• 誰の提供か なので少し怖い!
• build 12784, 18717!
• M4くらいから無くなったぽい!...
1.1.3に対応しよう
• ちゃんと最新のDartEditor使う!
• とりあえずコンパイルを通す!
• http://goo.gl/PLIASf!
• API変更による修正が主!
• 構文上の修正は少ない!
• デフォルト値付き省略可能引数...
まだまだ…
• 文法的に正しくてもWarningが残る!
• Runtime ErrorになるWarning多い!!
• なぜErrorにしてくれないのか!!
• 文化が変わったところに対応!
• ちょっとやりきってないけど><
文化の変化

おやじギャグではない
pub
• パッケージマネージャ!
• RubyGems, CPAN, npm, Mavenとか!
• かなりよく出来てる!!
• pubを中心とした規約!
• pubspec.yamlとか!
• フォルダ構成とか
pub build するとここに出る

標準構成!
web/ に置くと決まってる
TodoMVC
サンプルコードより

goo.gl/nFDqwu
配布ライブラリはlibに置く
直接公開しないコードは
srcの下に置く

標準構成!

teaoliveより

goo.gl/nFDqwu
組込ライブラリとpub
組込ライブラリとpub
#import('dart:io');
#import('dart:uri');
void main() {
String payload;
HttpClient client = new HttpClient();
H...
組込ライブラリとpub
import 'package:http/http.dart' as http;
void main() {
var client = new http.Client();
client.get("http://vvak...
Future oriented language
• DartはFuture(Promise)を基盤に据えた!
• っぽい!
• 個人の感想かも!?教えて偉い人!!
• http://goo.gl/ru2Tu6!
• (取組みが)ES6 Pro...
言語の変化

細かい事はわからん!
ナウくなった
• Editor上で簡単な型推論とかできるぽい!
• var client = new http.Client() 的な!
• ライブラリを複数ファイルで構成可能!
• library hoge と part of hoge!
•...
dart:js
• http://goo.gl/GOktnP!
• 頑張ればJavaScript呼べるようになった!
• すごい!postMessageとかじゃない!!
• TypeScriptの型定義ファイル役に立つ?!
• .d.tsからD...
dart:mirrors
• Mirror based reflection!
• ちゃんと実装されたらしい!
• あれっ!? goo.gl/S9bRCg!
• JavaのJSR269感を感じる…!
• 同じ考え方のものかな?!
• シンボルが導...
更に詳しくしりたい時

Dart(流行れば)良い言語
参考資料
• 株式会社クレスさんがヤバい!
• Dartの基礎!! goo.gl/M1Nul8!
• Dart仕様邦訳!goo.gl/MAl6SN!
• Cheat Sheet!
• goo.gl/ceTqb
超初期からコツコツと…!
お時間どうですかー?
    宣伝

(しかしAndroidだ
クレスさん資料より
• 抽象クラス増えた!
• mix-in 増えた!
• Stream 導入!
• java.util.stream, Node.js EventEmitter!
• 関数エミュレーション!
• TypeScriptでいうca...
Upcoming SlideShare
Loading in...5
×

20ヶ月を取り戻す Dart flight school

1,028

Published on

Dart Flight School セッション資料です

Published in: Technology
0 Comments
11 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,028
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
5
Comments
0
Likes
11
Embeds 0
No embeds

No notes for slide

20ヶ月を取り戻す Dart flight school

  1. 1. 20ヶ月を取り戻す わかめ まさひろ
  2. 2. わかめ まさひろ @v vakame GAE TypeScript Android Glass AngularJS
  3. 3. 2012年05月12日
  4. 4. Dartハッカソン!
  5. 5. Winner! うちのチーム勝ちました!
  6. 6. BDDテスト的なの作った #library('teaolive_introduction'); ! #import('dart:html'); #import('packages/teaolive/teaolive.dart'); #import('packages/teaolive/reporter/reporter_combinator.dart', prefix: 'combinator'); #import('packages/teaolive/reporter/tap_reporter.dart', prefix: 'tap'); #import('packages/teaolive/reporter/html_reporter.dart', prefix: 'html'); ! void main() { addTest(testCase); setTeaoliveReporter( new combinator.TeaoliveReporterCombinator( [ new html.TeaoliveHtmlReporter(), new tap.TeaoliveTapReporter() ] )); teaoliveRun(); } ! void testCase() { describe("A suite", (){ it("contains spec with an expectation", (){ expect(true).toBe(true); }); }); } http://vvakame.github.io/teaolive/old/
  7. 7. 時は流れ… 20 month later…
  8. 8. Version History • 2012/10/16 M1! • 2013/08/27 M6-Beta! • 2012/12/18 M2! • 2013/10/02 M7-Beta! • 2013/02/20 M3! • 2013/11/14 1.0! • 2013/04/16 M4! • 2014/01/16 1.1 • 2013/06/19 M5-Beta! イベント中アプデの法則で ! 本日 1.1.4の可能性が goo.gl/mtSRKL 微粒子レベルで存在…? まぁないだろ
  9. 9. コンパイル できない… ハッカソン当時は0.0.8とか
  10. 10. 当時の思い出 • unittestのライブラリ! • bleeding_edgeにしかない! • 使い方もよくわかんない! • pub (Dartパッケージ管理システム)! • 立ち上げるぞ!みたいな時期! • まだ影も形もほとんどなかった TypeScriptもなかった
  11. 11. 直した library teaolive_introduction; ! import 'dart:async'; import 'package:teaolive/teaolive_browser.dart'; ! void main() { addTest(testCase); setTeaoliveReporter( new TeaoliveReporterCombinator( [ new TeaoliveHtmlReporter(), new TeaoliveTapReporter() ] )); teaoliveRun(); } ! void testCase() { describe("A suite", (){ it("contains spec with an expectation", (){ expect(true).toBe(true); }); }); } http://vvakame.github.io/teaolive/
  12. 12. 途中経過 だいたい4時間で 直せた!
  13. 13. 古いDart Editorを使おう • 古いコードのMigration機能がある! • http://goo.gl/ae2KIL! • 誰の提供か なので少し怖い! • build 12784, 18717! • M4くらいから無くなったぽい! • プロジェクト右クリ→Clean up! • diff http://goo.gl/y9zX5q
  14. 14. 1.1.3に対応しよう • ちゃんと最新のDartEditor使う! • とりあえずコンパイルを通す! • http://goo.gl/PLIASf! • API変更による修正が主! • 構文上の修正は少ない! • デフォルト値付き省略可能引数! • 例外処理周り! • dynamicへのキャスト方法
  15. 15. まだまだ… • 文法的に正しくてもWarningが残る! • Runtime ErrorになるWarning多い!! • なぜErrorにしてくれないのか!! • 文化が変わったところに対応! • ちょっとやりきってないけど><
  16. 16. 文化の変化 おやじギャグではない
  17. 17. pub • パッケージマネージャ! • RubyGems, CPAN, npm, Mavenとか! • かなりよく出来てる!! • pubを中心とした規約! • pubspec.yamlとか! • フォルダ構成とか
  18. 18. pub build するとここに出る 標準構成! web/ に置くと決まってる TodoMVC サンプルコードより goo.gl/nFDqwu
  19. 19. 配布ライブラリはlibに置く 直接公開しないコードは srcの下に置く 標準構成! teaoliveより goo.gl/nFDqwu
  20. 20. 組込ライブラリとpub
  21. 21. 組込ライブラリとpub #import('dart:io'); #import('dart:uri'); void main() { String payload; HttpClient client = new HttpClient(); HttpClientConnection connection = client.getUrl(new Uri.fromString(http://vvakame.github.io/teaolive/")); connection.onResponse = (HttpClientResponse response){ StringBuffer buffer = new StringBuffer(); InputStream input = response.inputStream; input.onData = (){ buffer.add(new String.fromCharCodes(input.read())); }; input.onClosed = (){ client.shutdown(); payload = buffer.toString(); print(payload); }; }; 0.0.8くらい }
  22. 22. 組込ライブラリとpub import 'package:http/http.dart' as http; void main() { var client = new http.Client(); client.get("http://vvakame.github.io/teaolive/") .then((response) { print(response.body); }); } 1.1.3 + pub
  23. 23. Future oriented language • DartはFuture(Promise)を基盤に据えた! • っぽい! • 個人の感想かも!?教えて偉い人!! • http://goo.gl/ru2Tu6! • (取組みが)ES6 Promiseよりはやーい!
  24. 24. 言語の変化 細かい事はわからん!
  25. 25. ナウくなった • Editor上で簡単な型推論とかできるぽい! • var client = new http.Client() 的な! • ライブラリを複数ファイルで構成可能! • library hoge と part of hoge! • analyzerが割りと頭良い! • 複数ファイルから参照されている場合 全てのユースケースでのWarning出す
  26. 26. dart:js • http://goo.gl/GOktnP! • 頑張ればJavaScript呼べるようになった! • すごい!postMessageとかじゃない!! • TypeScriptの型定義ファイル役に立つ?! • .d.tsからDartラッパ自動生成できる?! • Dartisanに型定義ファイル書かせよ❤
  27. 27. dart:mirrors • Mirror based reflection! • ちゃんと実装されたらしい! • あれっ!? goo.gl/S9bRCg! • JavaのJSR269感を感じる…! • 同じ考え方のものかな?! • シンボルが導入された #hoge! • いいなーJavaScriptにも欲しい
  28. 28. 更に詳しくしりたい時 Dart(流行れば)良い言語
  29. 29. 参考資料 • 株式会社クレスさんがヤバい! • Dartの基礎!! goo.gl/M1Nul8! • Dart仕様邦訳!goo.gl/MAl6SN! • Cheat Sheet! • goo.gl/ceTqb 超初期からコツコツと…!
  30. 30. お時間どうですかー?
  31. 31.     宣伝 (しかしAndroidだ
  32. 32. クレスさん資料より • 抽象クラス増えた! • mix-in 増えた! • Stream 導入! • java.util.stream, Node.js EventEmitter! • 関数エミュレーション! • TypeScriptでいうcall signature! • metaデータ! • Windows XP 非サポートに
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×