週刊 Dart & Flutter インプット 13

ntaoo
10 min readApr 10, 2020

毎週金曜日に、@ntaoo がインプットしたDart & Flutterの情報のリンク集をまとめて共有します。

プログラミングの入門者を対象としたFlutter無料学習コースを提供とのこと。プログラミングのなんの予備知識もいらないそうです。

Webサポートに関する記述が更新されました。

Not every HTML scenario is ideally suited for Flutter at this time. For example, text-rich flow-based content such as blog articles benefit from the document-centric model that the web is built around, rather than the app-centric services that a UI framework like Flutter can deliver.

当面は、伝統的なDocument Webでなく、Web App用途か、Document WebへのApp埋め込み用途。

Flutter WebのIntegration testingに関する説明が追加。

https://evrone.com/tim-sneath-interview

Flutterプロマネへのインタビュー記事。以下、抄訳。

  • プリプロセッサやトランスパイラ、深く入れ子状になった依存モジュールなどでとても煩雑になったUI開発は問題。まだ道半ばだが、”Stateful Hot Reloading”などによって、単に編集してコンパイルする単純なサイクルを取り戻す。
  • ネイティブOS Widgetか独自Widgetかは、偽りの対立だ。たとえば、Unity製のゲームがネイティブOS Widgetを使っているかなど消費者は気にしない。Wdigetの質が重要だ。ゲーム用途でUnityがあり、アプリ用途でFlutterがそのようになると信じる。
  • 同じビジネス上の問題を、プラットフォーム毎に別々のチームが別々のコードでなんども実装し直す現状はばかげている。Flutterで、マルチプラットフォーム対応で高い生産性と性能を提供する。もっとも大きな挑戦は技術的な側面以外にある。それは、それぞれのプラットフォームの開発者の、開発環境統一への抵抗だ。うまくいかないだろうという懐疑。だが、時がたつにつれプラグインが充実し、ストアにFlutter製のアプリがあふれていくことでそれは解消するだろう。
  • 様々なスクリーンサイズへの適応を簡単にする仕組みについても、(Flutter Interactで紹介したように)実験中だ。
  • IDEについては、個人的にはVSCodeを好むが、Android StudioでもEmacsでもVimでもなんでも使える。
  • DartはWeb開発に新しい手法をもたらすためのプロトタイピングから始まった。そして現在は、Web, Mobile, Desktopに移植性をもたらすために変化した。
  • Dartがフルスタック(バックエンドを含む)になるかはわからない。クライアントサイドだけで十分に大変だ。ただ、サーバーやクラウドで動作する柔軟性は持ち合わせている。そして、人々がサーバーサイドでDartを採用してビジネスロジックをクライアントサイドと共有するために偉大な努力をしているのを観察している。
  • Flutterはモバイルをターゲットとしていたが、今はデスクトップとWebもターゲットとする。特にWebへの対応は技術的に難易度が高い。Flash や Silverlight のような奇妙な体験にならず、ソースコードをみなければFlutterで動いているとはわからないくらいの、円滑なWeb体験になるようにしたい。性能についても、CanvasKit ( Skia + WebAssembly ) により、とてつもない達成をWebにもたらす。
  • デスクトップについても、これで数十億のWindows, macOS と Linuxマシンへのインストールの道を提供できる。モバイルと異なりエミュレーターがいらないので、デスクトップでFlutterアプリを開発することが多くなりつつある。もっと面白いことに、開発中のアプリをWebアプリ (PWA) にするか、それともデスクトップアプリにするかという判断を遅延できるという柔軟性すら得られる。
  • Dart 1では、Optional Typingが中心的なコンセプトだったが、Dart 2では強い静的型付けに変更した。この変更には多大なリソース投入が必要だったが、やり遂げた。その結果として現在はNull安全やIntel, ARMマシンコードへのAoTコンパイルを実現している。

カーネギーメロン大学のFlutterに関する授業のビデオとスライドが公開されています。内容は、Flutterの概要と、Flutter内部の詳細について。二枚目のスライドは、Flutterをプラットフォームに組み込むための知識についてもまとめられており興味深い。

(Flutterについての内容は私にとっては概ね既知のもので、むしろその授業一覧にある他の授業内容が興味深すぎる。)

StreamというAPIサービスを使用してリアルタイムチャットを作るインストラクション。

flutter_blocライブラリを使うかはともかく、BLoCパターンの紹介としてはいいですね。

..the BLoC does not know anything about the components that send events to it and to components that listen to it.

まるで、公開interfaceをStreamに制約してActor間通信を模している、簡易なActor Modelのようですね。そして、BLoCの中でIsolate (Dart 版 Actor) を使えば、ほんとうにマルチスレッドにできますし。小規模アプリではたしかに過剰設計感が出ますが。

情報源

https://twitter.com/ntaoo が、followさせていただいている方々

最新の情報を中心にしますが、少し古めでも私が見つけた際に有益と判断した情報も載せていきます。情報の網羅性の高さは不明です。継続を重視して省力化しています。

  • 公式情報は優先順位最高にして載せます。
  • それら以外の情報は、私の関心に基づいて適当に間引きます。
  • 基礎は、https://dart.dev/codelabs , https://flutter.dev/docs , Udemyなどのオンラインビデオトレーニングコース、または書籍などで体系的に学んで習得しましょう。

--

--