ntaoo blog

主にDart, Flutter, AngularDartについて書いていきます。ときどき長文。日本語のみ。Twitter: @ntaoo

Google I/O 19 Dart関連セッションの視聴メモ : Dart: Productive, Fast, Multi-Platform - Pick 3 (Google I/O'19)

Google I/O 19には数種類Dart関連セッションがあり、Youtubeに公開されている。その視聴メモ。まずはひとつめ。

Dart: Productive, Fast, Multi-Platform - Pick 3 (Google I/O'19)

https://www.youtube.com/watch?v=J5DQRPRBiFI&list=PLjxrf2q8roU2no7yROrcQSVtwbYyxAGZV&index=6&t=0s

Dart入門者向けののSessionだった。

  • Dart 1時代から一貫して、総合的な生産性にフォーカスして言語とライブラリ、エコシステムに投資

  • 3つの側面

    • Productive
    • Fast
    • Multi Platform

Productive

Dart - ライトウェイトなOOP言語で、関数スタイルと静的型付けをサポートした言語。

Dart 2.3。UI-as-code。ソースコードで視覚的にUIの構造を把握しやすくするための進化。Listのなかでif forを使用可能に。Spread operator。UIをより宣言的に記述可能に。

DartVM

  • CFE (Common Frond End)

    • Parser, Lexer
    • -- Dart Kernel: 型推論、型チェック、最適化
    • -- Analyzer : IDE向けの静的解析", "Analysis Server": "解析サーバー
  • Backend

    • JIT Compiler
    • RunTime
    • Debug Service

Hot reloadはDartVM前提

Hot reloadはRuntimeのStateを維持したままコードの変更をRunTimeに反映する。

Flutter CLI -> FE Server (on CFE) -> DartVM (JIT Compiler, Runtime, DebugService)

AoT compile

開発中は生産性向上のためにDartVMで動くが、デプロイ時はコードサイズの最小化、パフォーマンスの最大化のために、AoTコンパイルを行う。ネイティブコードで動作。

Dart for Web

DartはFlutter以前からWeb向けに投資を続けてきた。Google Adsなどの多くのWebアプリがDartで動作している。Google AdsGoogleの最も重要なビジネスのひとつ。何百万行ものDartコードで動いている。

  • 開発中は生産性優先のためにDevCompilerでコンパイル
  • デプロイ時はコードサイズとパフォーマンス優先のためにdart2jsでコンパイル

Web向けHot reloadは安定化にむけ作業中。

Flutter Web

DartVMのサポートが手厚いので、Flutter WebはWeb Browser向けに一部の基盤を差し替えるだけで動作。

f:id:ntaoo:20190511144100p:plain f:id:ntaoo:20190511144125p:plain

Dartの他の様々な動作環境

Non-nullable Types (NNBD)

  • 長い間ペンディングになっていた仕様。
  • Null safety。Runtime ErrorになっていたNull関連エラーをコンパイルエラーにする。
  • この破壊的変更の痛みを最小限にするための移行施策として自動migrationなどを計画中。
  • コンパイル時にnull checkが要らなくなるので、パフォーマンスとコードサイズにも大きな効果がある。

その他言語仕様の進化の計画

  • 新しいConcurrency Primitive (!!)
  • CとC++のコードをより再利用しやすくするための新しいFFI

所感

  • Dart入門者向けにDartとDartVMの魅力をプレゼンしたセッションだった。
  • 宣伝を控えてDart 2にむけた基盤整備に集中するフェーズが終わり、言語仕様の進化に再びフォーカスできるフェーズに入った
  • クライアンサイド開発のブランディングもいいけど、Google Cloud向けサポートもはやく充実させてほしい