Flutter 2.10でuseMaterial3
プロパティが登場して以降、Flutter 3.0でさらに対応が進み、最近ではMaterial 3のアプリもよく見かけるようになりました。当時はコンポネントも未対応なものがありましたが、現在ではほぼ全ての対応が完了し2023年の4QにはMaterial 3がデフォルトとなる予定です。
本セッションでは現場での商用サービス経験を元に、Material 3の背景からTheme APIの活用事例、ダークテーマやDynamic Color対応によるパーソナライズ化の考え方など、包括的なThemeの活用についてお話します。
AIアプリの開発に興味がある方や作ってみたい方は注目
このセッションでは、FlutterフレームワークとTensorFlow Liteを使用してモバイル環境で機械学習アプリケーションを開発する方法と
MNIST(Mixed National Institute of Standards and Technology)を活用して、手書きの数字を分類するアプリを作成する方法を紹介します。
1.はじめに
Flutter開発でDependency Injection(DI)に興味がある方は注目
Dependency Injectionはソフトウェアデザインのパターンの一つで、
オブジェクト間の依存関係を緩やかにし、柔軟性を高めるための技術です。
このパターンは、オブジェクト間の結合度を低くし、再利用性と保守性を向上させるのに役立ちます。
セッションはDependency Injection が難しい方のための内容を含めています。
基本から、FlutterでDependency Injectionを使用する方法について詳しく説明します。
Flutterでの開発では、テスト導入、アクセシビリティ対応が必要なプロジェクトも多いです。
しかしプロダクトの開発フェーズによって、必要がないプロダクトも少なからずあります。
今回の発表では、開発フェーズを軸に、テスト戦略、アクセシビリティ対応について話します。
内容
これらの3テーマを開発フェーズを軸にメリット、デメリットを踏まえて話します。
また「導入方法」や「テスト戦略」、「技術選定」、「実際に導入した結果」についてもお話しさせていただきます。
※実際の開発における経験に基づいてお話しさせていただきます
本稿では、開発の生産性向上やプロダクトの品質向上を目的としたテーマです。
AWS Amplify ではモバイルアプリ開発者からバックエンド開発者、 そしてスタートアップからエンタープライズまでビジネスの規模や開発者のロールに依存せず、 アプリケーションの開発を加速するためのサービスです。
このセッションでは、AWS Amplify と Flutter を使用したモバイルアプリ開発や、認証と認可、他の AWS サービスとの簡単な統合、スケーラブルなバックエンド リソースを迅速に作成できる機能など、AWS Amplify を Flutter と組み合わせて使用する利点について説明します。
また、GraphQL API、リアルタイムのデータ同期、プッシュ通知など、Flutter で使用できる AWS Amplify の主要な機能についても説明します。さらに、実際の例を使用して AWS Amplify と Flutter を統合する方法を示します。
講演の最後には、参加者は AWS Amplify を活用して、Flutter を使用して機能豊富でスケーラブルで安全なモバイル アプリケーションを構築する方法を明確に理解できるようになります。
「TOKYO MIX CURRY」はアプリストア評価4.8を獲得している「アプリでしか注文できないカレー屋」です
4年前よりFlutterを採用しており、その主要な機能である決済に関して、以下の方法を提供しています:
本セッションでは、実際の商用プロダクトとして4年間運用した際の課金に関するノウハウについて、詳細にまとめて解説します
YOUTRUSTアプリはflutter createを実行してから、今年で3年が経ちました。
ご愛顧いただいている方々、本当にありがとうございます。
Flutterは当時1.x.xでした。
FlutterやDartが目まぐるしく進化を遂げる中、
YOUTRUSTアプリはレイヤー構成を一貫して保ってきました。
言い換えれば、小規模アプリから中規模(大規模?)なアプリまで使える構成ということです。
大学でパチンコ、タバコ、酒、麻雀、バンドしか履修しなかった現在無職のフリーターが何の知識もなくプログラミングを独学で学び、
flutterで実務経験を手に入れるまでの苦労や感動涙なしでは聞かれないロードストーリーをお届けします。
具体的な以下の内容をお話しします。
エンジニアを目指すすべての人
アプリにおいて正常に処理が完了しないときに適切なエラーメッセージを表示することは、適切なユーザ体験とサポートコストの軽減につながります。またエラー処理は多くの画面で同じような処理になることが多いので、使い回し可能な部品にすることは開発者体験の向上につながります。このセッションでは以下の内容で、Flutterアプリでのエラー処理の設計と実装例をソースコードと併せて解説します。
初めてサービスのスマホアプリを開発する人
今年の4月から新卒として入社し,内定者インターンと実務を含めて1年弱ほどFlutter開発を経験しました.
内定者インターン期間中にはFlutter学習のために画面数の少ない小規模なアプリを開発していましたが,入社してからの実務では画面数も多く,遷移も複雑なアプリを触ることになり,苦労することが多々ありました.
このセッションではその中で特に触ることが多かった画面遷移周りの技術を中心に,実務でつまづいた点をお話しします!
•Flutter画面遷移周りの技術
◦ Navigator 2.0
◦ go_router
•Navigatorの実務でつまづいた点
◦Navigator.pop()とNavigator.of(context).pop()の違い
◦複雑なダイアログ表示での意図しない挙動
•go_routerの実務でつまづいた点
◦パスをどう構成するか
◦ BottomNavigationBarの画面遷移(StatefulShellRoute)
•Flutterをこれから始めようと思っている人
•Flutter初心者
•Flutterの画面遷移に興味がある人
既存のアプリをFlutterに置き換える際にいきなり全画面をFlutterに置き換えるのは難しいと思います。
その際一部の画面をFlutterに置き換えて既存アプリからFlutterを呼び出せるAdd-to-appが必須になります。
本セッションでは、Add-to-appを2年ほど運用した視点からの知見や起きた不具合などを紹介します。
Flutterは、1ソースで複数PFのUI・ロジック・テストを共通化できる非常に便利なフレームワークです。
しかし、各PFのネイティブ実装経験者(※1)の中には、「OS固有のAPI(※2)を用いてリッチな体験を実装したい場合、Dartで書いたAPI通信・DB利用・ビジネスロジックなどを一部再実装しなければいけないのでは?」と思ったことはないでしょうか?
(※1) Swift+SwiftUI, Kotlin+Jetpack Compose, etc…
(※2) Push, Widget, Share, etc…
本セッションでは下記アジェンダを元に、Dartで書いたコードをあらゆるケースで活用し、必要なネイティブ実装を最小化する方法をご紹介します。
このセッションではソースコードを抽象的な構文構造としてツリー状に表現するAbstract Syntax Tree(AST)について紹介し、それをDartで扱う方法を紹介します。
また、DartでASTを活用した事例として codemodパッケージを紹介し、大規模な業務コードを一括で機械的にリファクタする例やCustomLintを作成する例などを紹介します。
このセッションでは普段あまり考える機会が少なそうなセキュリティの話をします。
Flutterで動くものを作りたい!というときに機能開発に目がいきがちで、しっかりとFlutterでのセキュリティを意識した開発を視聴者に意識付けることが目的です。
内容的には、弊チームで業務でFlutterアプリを開発するに当たって導入しているFlutterでのセキュリティ実装を紹介しながら、どのような対策を行えるかをセッションを通して考えていきます。
Flutterアプリを開発する上でCI周りでのセキュリティ面の話も少しできたらと思います。
このセッションではFlutterで動画を再生させる技術について、Flutter Communityで開発されているvideo_playerを通して話します。
video_playerの構成や使える機能などの紹介はもちろん、動画という各ネイティブ独自の機能を呼び出すときに考えなければいけない難しい部分についての話も行います。
また、さらにvideo_playerの実装内容を深く理解してもらうために自分でvideo_playerを拡張する例をタイムシフト再生機能の追加を例に話す予定です。
時間があれば最低限必要とされるHLSの説明を入れる予定です。
このセッションでは、Flutterとネイティブアプリ開発の境界について深く掘り下げます。FlutterがどれほどのパフォーマンスやUI/UXをネイティブに近づけることができるのか、またどのようなケースでネイティブのアプローチが適切であるのかを詳しく議論します。実際のユースケースやデモを交えながら、開発者がどの技術を選択すべきかの指針を示します。
私はSwiftUIを使って1年近く個人アプリ開発を行った後, 昨年の4月からFlutterアプリの開発インターンを始めました.
この過程で, Flutterフレームワークの書き方がSwiftUIと比較してネストが深くなりがちで読みにくさを感じることがありました.
特に今年の4月からは, 比較的大規模なアプリの実務開発に取り組むようになり, 複数の異なる要素が混在する画面や条件による要素の出し分けが必要な画面で, この問題が顕著に現れるなと感じています.
このセッションでは, こうした状況で可読性を高く保ちながら開発を進めるために, 私が意識しているポイントや個人的なアプローチ, 実務で役立てているTipsを共有します.
今年の初めに、弊社で開発しているアプリをSwiftからFlutterへとリプレースしました。
そして、この内部的なシステム刷新はユーザーにとって一切無関係のお話です。
なので、ユーザー視点でリプレースによるアプリの更新を考えると、「いつも通りアプリをただ更新した」という事実で済まさなければなりません。
更新した際に「ログアウトされている」、「設定していた情報が消えている」などのユーザー体験を損なうことが起きればミッション失敗です。
それを防ぐためには適切なマイグレーションによって、Swiftで保持しているローカルデータをFlutterへ正常に引き継ぐ必要があります。
決死の思いで無事故を達成したマイグレーション戦略をご紹介します。
今回マイグレーションの対象とするローカルデータは、
「セキュア情報を保持するKeyChain」と「ユーザー設定情報を保持するUserDefaults」です。
リプレースにおけるマイグレーションのお話だけではなく、
「Flutterでの可用性と整合性を考慮したマイグレーション機構の設計」についてもご紹介します。
FlutterのIntegrationテストは、時に煩雑であり、また、WebViewや通知ダイアログ等のネイティブが関与する場合には、これらネイティブ機能に対応できず失敗してしまいます。
そんな問題を解決するために、Patrolが開発されました。
Patrolは、LeanCode社が開発したFlutterアプリのテストのためのOSSフレームワークです。Patrolを使用すれば、DartでUIテストを簡単に書くことができます。さらに、Flutter公式パッケージでは対応が難しいネイティブサイドとの対応も可能です。また、Firebase Test Labを使用し、多数のデバイス上でE2Eテストを実行することもできます(Flutter未対応)。
このセッションでは、既存ソリューションの課題から始め、Patrolを活用したWidgetテストやIntegrationテストの実例を通じて、Patrolの機能とその有用性を解説します。Flutterプロジェクトのテスト自動化を進めたい方、また品質向上を目指す方にとって、このセッションは有益なものになるはずです。
Flutterプロジェクトの品質を高めたい方
FlutterプロジェクトにE2Eテストを追加したい方
integration_test に疲れた方
Patrolについて詳しく知りたい方
Riverpodは多くのFlutter開発者に支持されている状態管理ライブラリです。その中で、開発を助けるためのツールとして提供されているのが、 riverpod_lint というLintパッケージです。
riverpod_lint は custom_lint を使用して作成されています。これは一般的なRiverpodの問題を予防し、繰り返しのタスクを単純化する目的で設計されています。
本セッションでは以下のトピックをカバーします:
特に4点目の考察に関しては、私がRiverpodへ貢献した際の経験を元にしたものであり、これは公式な見解や作者の意図を示すものではありません。私の解釈や経験を元にした異なる視点からの洞察を提供することを目指しています。