Flutter で高度なグラフィックスを実現するために、これまでは RenderObject や CustomPainter を利用していました。
しかし、これらは CPU 上で多くの処理を実行することになってしまうため、柔軟性や表現力にどうしても限界がありました。
Flutter 2.8 で Fragment Shader を利用可能になり、GPU 上で処理を実行できるようになったため、より柔軟で高度なグラフィックスを実現できるようになりました。
本セッションでは Fragment Shader の基礎から Flutter での具体的な実装例についてお話しします。
画面タッチ時のタッチフィードバックは、Flutterに限らずとても重要な要素です。
Flutterの場合はInkWellウィジェットやMaterialウィジェットを用いることで比較的簡単にRipple effectを表現することが可能ですが、思うようにRipple effectが表示されなかったということは、初心者をはじめ、多くの方が経験されているのではないでしょうか?
本セッションでは、Material Designのガイドラインを読み解きながら、主にMaterialやInkWellウィジェットの内部実装を通してFlutterにおけるRipple effectの表示の仕組みや、細かな制御方法を解説します。その上で、様々なパターンにおけるRipple effectの実装方法などを紹介します。
私たちのチームは、品質維持を目指してテスト戦略の見直しを行い、その結果、integration_testを用いた自動テストの導入に至りました。
これまで一年間の運用を通じて、自動テストのシナリオ数は40を超え、その過程で多くの課題と学びがありました。
具体的には、以下のような問いに対する答えを探求しました。
私たちがこれらの課題にどのように取り組み、何を学んだのかを共有します。さらに、以下の観点からも話を進めます。
本トークは、Flutterとintegration_testを使用したプロジェクトの事例を中心に話しますが、その内容はモバイルアプリ全般の開発に役立つ情報を提供します。
出前館ではtoC向けに出前館アプリ、toB向けに配達員向けアプリ、加盟店向け受注管理アプリなどを提供しています。本セッションではそのアプリにおけるFlutter活用の現在とこれからの我々の取り組みをご紹介します。
出前館ではtoC向けに出前館アプリ、toB向けに配達員向けアプリ、加盟店向け受注管理アプリなどを提供しています。技術選定時は、プロダクトやプロジェクト、開発チームの特性を考慮し、Xamarin、React Native、Kotlin Multiplatform Mobileなど、これまでさまざまな技術を採用してきました。多様な技術を扱うメリットもありますが、そのナレッジ共有や学習コスト、開発効率は課題でした。そこで我々は、Flutterの導入を進めることでそれらの課題へ現在アプローチを始めています。本セッションでは出前館におけるFlutter利用の現在とこれからをお話しします。
「TOKYO MIX CURRY」はアプリストア評価4.8を獲得している「アプリでしか注文できないカレー屋」です
4年前よりFlutterを採用しており、その主要な機能である決済に関して、以下の方法を提供しています:
本セッションでは、実際の商用プロダクトとして4年間運用した際の課金に関するノウハウについて、詳細にまとめて解説します
Dart言語はFlutterとともにアプリフロントエンドの領域で広く認知されてきました。しかし、バックエンドにおける実践的な活用例はまだまだ少ないのが現状です。
とはいえ、Flutterアプリ向けのBFF(Backend For Frontend)をDartで実装することは、型宣言を共通化することができ、生産性を飛躍的に向上させるアプローチとなり得ます。
本セッションでは、Dartをバックエンド・BFFに採用する背景から、dart_frogというパッケージの特徴と、マルチパッケージ管理ツールであるmelos を利用して、Flutterでのアプリ構築を加速させる過程について深掘りします。更に、実際の案件でdart_frogとmelosを導入していく過程、そしてそれをどのようなプロジェクトに組み込んだのかの経験談を交えながら、Dartバックエンド・BFFとしての魅力と、それを実現する具体的な手法をお伝えます。
アプリケーションを作る上でライフサイクルの管理は欠かせません。
しかしながらFlutterはEverything is a Widgetになっているため、既存のモバイルアプリのライフサイクルの概念にあてはめるには少し考える必要があります。
また最新のFlutter 3.13.0でライフサイクルの動作がどのように変わったのかを解説します。
このセッションでは以下の内容を想定しています。
Flutterの人気に伴い、新規プロジェクトでFlutterを採用する企業も増えてきました。
しかし、その需要に対する供給(Flutterエンジニア)が追いついていないのが現状でしょう。
各社でも、Flutterエンジニア不足、育成に困っているのではないでしょうか?
Flutterが新しい技術だからこそ、有用な育成方法が定まっていないのではないでしょうか?
育成には研修課題を作成し、それをレビューするというコストがかかり、後回しにしてしまいがちだと思います。
本セッションではゆめみのFlutterエンジニア育成方法についてご紹介します。
・Flutter研修課題の内容
・全11Session
・状態管理(Riverpod)
・Unit,Widget Test,etc.
・レビュー時に利用する観点表
・Session毎のレビュー項目
・基礎的なレビュー項目
このトークではFlutterエンジニア育成の例を知ることができ、その結果として育成、レビューコストの削減に繋げることが期待できます。また、Flutterに興味を持つ技術者は、より高品質なコードを書くための知識や、採用の評価ポイントを掴むことができます。
Flutter/Dart による開発を行う際、json_serializable や freezed に代表されるような、build_runner を用いたコード自動生成パッケージを利用している方は多いのではないでしょうか。
本セッションでは、既存の主なコード自動生成パッケージや、スピーカーが開発中のコード自動生成パッケージ flutterfire_gen を例に挙げながら、Dart のコード自動生成の内部の仕組みや、コード自動生成パッケージの自作方法について解説します。
主な内容:
このセッションでは普段あまり考える機会が少なそうなセキュリティの話をします。
Flutterで動くものを作りたい!というときに機能開発に目がいきがちで、しっかりとFlutterでのセキュリティを意識した開発を視聴者に意識付けることが目的です。
内容的には、弊チームで業務でFlutterアプリを開発するに当たって導入しているFlutterでのセキュリティ実装を紹介しながら、どのような対策を行えるかをセッションを通して考えていきます。
Flutterアプリを開発する上でCI周りでのセキュリティ面の話も少しできたらと思います。
漫画アプリをFlutterで作成する機会が訪れました。
漫画のビューアでは画像を表示するだけでなく、拡大やページ移動、見開き表示など様々な機能に対応する必要があります。
このセッションでは、漫画ビューアでよく利用される以下の内容についてお話しいたします。
2023 年現在の Flutter アプリ開発において、「状態管理パッケージを使わない」 という選択肢は無いと言っても過言ではないでしょう。
GetX や BLoC, Riverpod と多くの選択肢がある状態管理パッケージですが、特に日本においては Riverpod が採用されるケースがほとんどだと思います。
しかし考えてみると、なぜすべてのアプリに必要な「状態管理」の仕組みに対して我々はサードパーティのパッケージをインストールする必要があるのでしょうか。どのアプリでも必要なのであれば、 Flutter 自体に標準で用意されていても良さそうに思えます。
このセッションでは、その「Flutter 自体に標準で用意されて」いる InheritedWidget や Provider などの「古い」状態管理手法を利用することの問題点と、それを解決する Riverpod のアプローチについて議論することで、状態管理パッケージの選定の際に確かな根拠を持って「このアプリには Riverpod が必要です」と言える状態を目指します。
Google I/O 2023でのnext-gen UIの発表や、2023年のFlutter Forwardでの3Dオブジェクトの描画に関する新機能の披露があり、Flutterで目を惹くUIデザインを実現する取り組みが加速しています。加えて、Flutter公式のハッカソンであるFlutter Clock ChallengeやFlutter Puzzle Hackの入賞作品のUIデザインはどれも魅力的なものでした。
しかし、こういった魅力的でユーザーの目を惹くUIデザインの実装にチャレンジしている方はまだ少ないのではないでしょうか。
このセッションでは、Flutterで目を惹くUIデザインを実現するための4つの手法を紹介します。
これらの手法を具体例をもとに、それぞれの実装方法や特徴を徹底解説します。
このセッションを通して、ユーザーを惹きつける洗練されたUIデザインのアプリを開発できるようになるでしょう。