複数のユーザータイプと多数の画面を持つアプリにおける画面遷移の管理は、一筋縄ではいきません。
弊社のアプリでは、この問題に対処するためにauto_routerライブラリのAutoRouteGuardを活用して、画面をハンドリングしています。
本セッションでは、AutoRouteGuardを用いた画面遷移の最適化手法を紹介します。
本セッションは、auto_routerライブラリのAutoRouteGuardを中心に解説しますが、
go_routerのredirectにも適用可能な内容となっています。
高品質なプロダクト開発には、モニタリング体制の構築とそれに伴う検知から修正までのフロー作りが欠かせません。しかし、これらは一見すると難易度が高く感じるかもしれません。
そこで、私たちのチームはエラーの可視化とモニタリングのためのツール、Sentryを活用しています。
私のチームではSentryを2年以上利用してきました。またエラーモニタリングツールとしてだけではなく、多角的なモニタリング体制を構築するために利用してきました。
このセッションでは、Sentryを用いた多様なモニタリングの手法とその運用経験から得られた知見、そして具体的なTipsを紹介します。具体的には以下の内容を予定しています。
品質保証は、私たちのチームにとって重要な課題であり、そのためにintegration_testを用いた自動テストを導入し、一年間で40以上のテストシナリオを作成しました。しかし、integration_testを効果的に利用するためには、多くの課題を解決する必要がありました。WebViewの実行、OS機能のテスト、コーディングコストなど、これらの課題に対し、私たちは以下のキーワードを元に解決策を見つけてきました。
現在、integration_testは私たちのチームが品質保証を達成するための強力なツールとなっています。
このセッションでは、私たちのチームが培ってきたintegration_testのノウハウを惜しみなく公開します。
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を共有します.