週刊 Dart & Flutter インプット 5

ntaoo
14 min readFeb 14, 2020

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

Cupertino Widgets

Cupertino Widgetsへの満足度は相対的に低い(71.2%)。53%しかCupertino Widgetsを本気で使用していない。しかし、そのうちの70%は、Cupertino WidgetsがiOSのネイティブデザインを再現することが極めて重要だと回答している。であるものの、それは全回答者の20%なので、この分野の優先度を上げての改善は小さな集団に向けてしか当てはまらないとのこと。

私は、iOSの存在感が例外的に高い日本では、Cupertino Widgetsの質はFlutter採用において非常に重要な要素だと思う。

CI/CD

Codemagic, Github Actions, GitLab CI/CDが人気。機能不足、セットアップの難しさ、iOSビルドの問題がトップ3の問題。さまざまな改善策を検討中。

Hot Reload

90%の時間では動作に満足しているが、”Even 20% of those who have used Flutter for over a year seldom or never know why it doesn’t work.” なので、 Hot Reloadの適用範囲と不具合を改善中。

String API

絵文字などをを正しく認識するために、String APIの大きな破壊的変更で対応するか、その破壊的変更をせずにpackageを利用するか、という利用者調査での投票結果は拮抗しているとのこと。

私は、今のうちに破壊的変更をしてしまうほうがいいと思う。

Stream入門記事。

Streamについては、私は5年くらい前にDartのStreamのソースコードを一通り読んでひたすらコードを書くことで体得した。各メソッドの動作もドキュメントだけでなくそのソースコードを読めば理解しやすいことも多い。あとは、package:asyncやpackage:rxdartのテストコードを読むと理解しやすい。

さらには、こういったサイトを参考にしつつ、Playground Projectを作ってひたすら自分でサンプルコードを書いていくと体得できる。

Flutter for Webについてのセッション。Dart HTML APIはDOMの壊れているところを隠蔽してくれた。FlutterではWidgetがDOMを隠蔽し、DartVMがProxyとして動作してChromeのJavaScript VMを隠蔽するので、コンパイルターゲットを意識しなくて良くなった。そのような仕様のため、Chrome DevToolsは使用せず、Dart DevToolsでデバッグする。

他、Flutter Tech Stack解説、現状の問題点と将来の展望など。デモもあり。

FlutterでHTML, CSS, JSを隠蔽してくれるのは本当に助かるが、現時点ではまだβ版ということもあり、デモで示されてたとおり、多少の不具合には目をつぶる必要がある。

QAセッション。飛び飛びで視聴しただけ。

Webには、ドキュメントとしてのWebと、アプリとしてのWebという2つの側面があるが、FlutterはドキュメントとしてのWebは当面は対象としていないとの回答が(とても早口だった)。ですよねぇ。Flutter on the Webプロジェクトは、GitHub ReposのコードとIssueを見ていると、たしかにまだ従来型のドキュメントとしてのWebへの対応に関心を向ける局面ではないと感じる。

デモが中心。Riveを知らないならば、Flutter Interactのほうの発表がとても洗練されているので、まずはこちらを見るのをおすすめ。

Pub.dev以外の選択肢。プライベートなDart パッケージのリポジトリを提供する。商用パッケージや、組織内のプライベートなパッケージのホスティング用途。めでたい。

Touch ID / Face ID, Fingerprint AuthenticationといったBiometrics Securityを実装するプラグインの使い方。段階的に丁寧に説明しているので、これらのセキュリティをアプリに実装する機会があったらこの記事を参考にしたい。

Flutter DriverをAndroidエミュレーターかiOSシミュレーターで実行するのは実行速度が遅くセットアップも面倒なので、Android, iOSデバイスに依存する機能以外については、Linuxで実行することでその課題を解消しようというプロジェクトのようだ。

基本に忠実なアーキテクチャ解説。この方はUdemyでもFlutterコースをもっている。私が信用してウォッチしている方のひとり。

MobXの紹介。簡潔。

公式のガイド。

この話題にはかなり飽きている。わたしの好みは、Redux、MobX、flutter_bloc、その他のどんなサードパーティ製状態管理フレームワークも使わずに、ModelをできるだけPODO(Plain Old Dart Object)で構成して、StreamかChangeNotifierでWidgetに状態通知すること。

(@monoさんの指摘により追記。flutter_blocのところをBlocProviderと書き間違えていましたので訂正しています。名前を覚え間違えていました。flutter_blocの充実した、言い換えれば長大なドキュメントを把握して依存するに見合うリターンはあるのかという疑問。JavaScriptのReduxにうんざりした感覚を重ねている)

チームによってはコード量を減らすために状態管理フレームワークに依存する決断をするかもしれない。

BuiltCollectionとBuiltValueよりも扱いやすいとの主張。良さそうだけど生まれたばかりなので様子見。いますぐプロダクションで必要ならばBuiltCollectionとBuiltValueが無難。

Immutable Collection, Value, Pattern Matchingの公式サポートまでのつなぎライブラリはこれからも出てきそう。

関連

Immutable CollectionとValueの公式サポートは待ち遠しい。

情報源

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

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

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

--

--