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はマルチパラダイムプログラミング言語。
- KotlinやSwiftと同じC系構文。
- Dartはオブジェクト指向言語。オブジェクト指向言語にポジティブネガティブ両方の評価があるが、UIの構築という分野ではほんとうに優れている。
- Dartは関数型の特徴も併せ持つ。OOFP。
- 静的型システムサポート。Reified Generics。型推論。
Dart - ライトウェイトなOOP言語で、関数スタイルと静的型付けをサポートした言語。
Dart 2.3。UI-as-code。ソースコードで視覚的にUIの構造を把握しやすくするための進化。Listのなかでif
for
を使用可能に。Spread operator。UIをより宣言的に記述可能に。
DartVM
CFE (Common Frond End)
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 AdsはGoogleの最も重要なビジネスのひとつ。何百万行ものDartコードで動いている。
Web向けHot reloadは安定化にむけ作業中。
Flutter Web
DartVMのサポートが手厚いので、Flutter WebはWeb Browser向けに一部の基盤を差し替えるだけで動作。
Dartの他の様々な動作環境
- Chrome OS
- Google Home Hub
- Raspberry Pi
- CLI
- Cloud
Non-nullable Types (NNBD)
- 長い間ペンディングになっていた仕様。
- Null safety。Runtime ErrorになっていたNull関連エラーをコンパイルエラーにする。
- この破壊的変更の痛みを最小限にするための移行施策として自動migrationなどを計画中。
- コンパイル時にnull checkが要らなくなるので、パフォーマンスとコードサイズにも大きな効果がある。