20ヶ月を取り戻す Dart flight school

  • 855 views
Uploaded on

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

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
855
On Slideshare
0
From Embeds
0
Number of Embeds
4

Actions

Shares
Downloads
2
Comments
0
Likes
11

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 20ヶ月を取り戻す わかめ まさひろ
  • 2. わかめ まさひろ @v vakame GAE TypeScript Android Glass AngularJS
  • 3. 2012年05月12日
  • 4. Dartハッカソン!
  • 5. Winner! うちのチーム勝ちました!
  • 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. 時は流れ… 20 month later…
  • 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. コンパイル できない… ハッカソン当時は0.0.8とか
  • 10. 当時の思い出 • unittestのライブラリ! • bleeding_edgeにしかない! • 使い方もよくわかんない! • pub (Dartパッケージ管理システム)! • 立ち上げるぞ!みたいな時期! • まだ影も形もほとんどなかった TypeScriptもなかった
  • 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. 途中経過 だいたい4時間で 直せた!
  • 13. 古いDart Editorを使おう • 古いコードのMigration機能がある! • http://goo.gl/ae2KIL! • 誰の提供か なので少し怖い! • build 12784, 18717! • M4くらいから無くなったぽい! • プロジェクト右クリ→Clean up! • diff http://goo.gl/y9zX5q
  • 14. 1.1.3に対応しよう • ちゃんと最新のDartEditor使う! • とりあえずコンパイルを通す! • http://goo.gl/PLIASf! • API変更による修正が主! • 構文上の修正は少ない! • デフォルト値付き省略可能引数! • 例外処理周り! • dynamicへのキャスト方法
  • 15. まだまだ… • 文法的に正しくてもWarningが残る! • Runtime ErrorになるWarning多い!! • なぜErrorにしてくれないのか!! • 文化が変わったところに対応! • ちょっとやりきってないけど><
  • 16. 文化の変化 おやじギャグではない
  • 17. pub • パッケージマネージャ! • RubyGems, CPAN, npm, Mavenとか! • かなりよく出来てる!! • pubを中心とした規約! • pubspec.yamlとか! • フォルダ構成とか
  • 18. pub build するとここに出る 標準構成! web/ に置くと決まってる TodoMVC サンプルコードより goo.gl/nFDqwu
  • 19. 配布ライブラリはlibに置く 直接公開しないコードは srcの下に置く 標準構成! teaoliveより goo.gl/nFDqwu
  • 20. 組込ライブラリとpub
  • 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. 組込ライブラリと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. Future oriented language • DartはFuture(Promise)を基盤に据えた! • っぽい! • 個人の感想かも!?教えて偉い人!! • http://goo.gl/ru2Tu6! • (取組みが)ES6 Promiseよりはやーい!
  • 24. 言語の変化 細かい事はわからん!
  • 25. ナウくなった • Editor上で簡単な型推論とかできるぽい! • var client = new http.Client() 的な! • ライブラリを複数ファイルで構成可能! • library hoge と part of hoge! • analyzerが割りと頭良い! • 複数ファイルから参照されている場合 全てのユースケースでのWarning出す
  • 26. dart:js • http://goo.gl/GOktnP! • 頑張ればJavaScript呼べるようになった! • すごい!postMessageとかじゃない!! • TypeScriptの型定義ファイル役に立つ?! • .d.tsからDartラッパ自動生成できる?! • Dartisanに型定義ファイル書かせよ❤
  • 27. dart:mirrors • Mirror based reflection! • ちゃんと実装されたらしい! • あれっ!? goo.gl/S9bRCg! • JavaのJSR269感を感じる…! • 同じ考え方のものかな?! • シンボルが導入された #hoge! • いいなーJavaScriptにも欲しい
  • 28. 更に詳しくしりたい時 Dart(流行れば)良い言語
  • 29. 参考資料 • 株式会社クレスさんがヤバい! • Dartの基礎!! goo.gl/M1Nul8! • Dart仕様邦訳!goo.gl/MAl6SN! • Cheat Sheet! • goo.gl/ceTqb 超初期からコツコツと…!
  • 30. お時間どうですかー?
  • 31.     宣伝 (しかしAndroidだ
  • 32. クレスさん資料より • 抽象クラス増えた! • mix-in 増えた! • Stream 導入! • java.util.stream, Node.js EventEmitter! • 関数エミュレーション! • TypeScriptでいうcall signature! • metaデータ! • Windows XP 非サポートに