一般セッション

位置情報サービスとセキュリティ

概要

位置情報と連動してポイントを獲得できる新機能を自社サービス内でリリースしました。
不正にポイントを得られないような様々な対策を行い、大きなイベントも無事乗り越えられました。

本セッションでは、Flutterアプリにおける位置情報やマップに関する実装のプラクティスとセキュリティ対策について紹介します

  • デバイスやバイナリ、位置情報の整合性チェックと通信暗号化を用いた不正対策
    • それぞれの不正ポイントにおける対策方法の紹介
    • 実運用で起きた不正利用のケーススタディ
  • Geolocatorのハマりどころと実運用時の課題解決
    • プラットフォーム、OSバージョンのパーミッションの仕様の差異をどう吸収するか
    • 位置情報取得の遅延との向き合い
  • google_maps_flutterとflutter_map、mapbox_maps_flutterのSDK比較と使い分け基準のポイント
    • リッチなマーカーを実現するためのアプローチの差異
    • MapSDKごとの描画やデータ取得の方法によって起こる通信パフォーマンス差異

想定視聴者

  • 位置情報やマップをFlutterアプリで使いたい方
  • デバイスに関するセキュリティ対策に関心がある方
  • ポイント機能を取り扱うサービスを運用している方
2
一般セッション

パフォーマンスの可視化と計測

概要

アプリを運用していく上で、安定した品質とデリバリーはプロダクトに対するユーザーの満足度やチームの生産性にも影響します。
不具合を起こさずに施策や改善を提供することはできません。

本セッションではそういった不具合の中でも、パフォーマンスに対するトピックを掘り下げます。
開発環境で素早く問題に気づき、本番環境で素早く問題を検知する状態を目指すアプローチを紹介します

  • アプリで計測可能なパフォーマンスに関するメトリクスについて
    • FrameTimingを使ったUIとRasterスレッドのパフォーマンス計測
    • shared_preferencesのI/O処理のパフォーマンス計測
    • Flutter Hooksのリビルドループのランタイムな検知システム
    • etc
  • モニタリングツールを使ったアプリのアラート設定や実装のおすすめ
    • 例として、SentryやFirebase Performance Monitoringを用いた方法を紹介します
  • 実際に発生したインシデントを用いた対策のケーススタディ

想定視聴者

  • shared_preferencesパッケージで永続データを扱われている方
  • リリース中のプロダクトのパフォーマンス状況を把握したい方
2
一般セッション

Flutterアプリを安全かつ迅速に段階リリースする戦略

おさたく

概要

モバイルアプリのリリースにおいて、一度リリースしたバイナリを完全に取り消すことができないという課題があります。
iOSとAndroidの両方で「段階リリース」を活用することで、リリースバイナリの浸透を調整し、リスクを管理することが可能です。
しかし、段階リリースはユーザーに価値を届けるまでに時間がかかることや、チーム内でのコミュニケーションコストの増加といったデメリットも伴います。
私のチームでは、リリースする機能の増加に対応するため、リリース頻度を週3回にする体制を構築しました。
このセッションでは、段階リリースを行いながら、24時間以内に公開率を100%にするか、公開を中断する体制の詳細を紹介します。

具体的には以下の内容についてお話します。

  • 段階リリースの基本概念とそのメリット・デメリット
  • 段階リリース中のモバイルアプリの品質を評価するための指標選定
  • 指標を計測するための基盤について
  • アプリの品質を可視化するために重要な「SLI/SLO」の概念とその適用方法
  • 実際の運用上の課題と解決策、及びその所感

想定視聴者

  • リリース戦略に悩んでいるエンジニアやプロジェクトマネージャー
  • モバイルアプリの品質の可視化と管理に興味がある開発者
2
一般セッション

Flutter開発者の視点から見たGitHub Actionsの魅力

yorifuji yorifuji

概要

本セッションではFlutter開発者の視点からGitHub Actionsの魅力と効果的な活用法を探ります。
GitHubに統合されたGitHub Actionsは、開発者が柔軟にワークフローを定義し、多様な開発タスクを効率化できる強力なCI/CDツールです。
Flutter開発者にとって、GitHub Actionsは開発サイクルを加速し、品質を向上させる強力な味方となり得ます。

このトークではテストやビルドなどの具体的なワークフローの紹介は最小限に留め、その代わりに以下のトピックを通じてFlutter開発におけるGithub Actionsの魅力を深掘りしたいと思います。

  • GitHubとのシームレスな統合
  • イベントベースの柔軟なワークフローのトリガー
  • 料金体系に基づいたRunner(実行環境)の選択
  • エコシステムに基づいたマーケットプレイスとコミュニティへの貢献
  • Environmentを使った再利用可能なワークフローの作成
  • セキュリティと認証

ここで得た知識が、ご自身のFlutterプロジェクトでのGitHub Actionsの活用や、CI/CDを導入するきっかけとなれば幸いです。

想定視聴者

  • Flutter開発でのCI/CDに関心のある方
  • GitHub Actionsの活用に興味のある方
9
一般セッション

生成AIを活用し、日本向けアプリを完全に海外対応した方法

概要

Flutter大学というFlutterエンジニア向けのサービスを4年間運営しています。このサービスは、Flutterで作られており、iOS、Android、webに対応しています。これまで日本向けに運用してきましたが、今年海外向けにリニューアルを図りました。このプロセスで、生成AI(GeminiやChatGPT)とslangパッケージを使って、大きなリソースをかけることなく、たった一人で日本語のサービスを英語圏にも対応させました。本セッションでは、ここで得た技術的知見やハマりどころなどを紹介します!海外展開を図ろうとしている皆さんの一助になれば幸いです。

想定視聴者

効率の良いローカリゼーションの実装に興味のある方
個人アプリを海外展開したいエンジニア

一般セッション

魅力的なUIを実現するAppBarのカスタマイズ手法

kosuke_mtm m.kosuke

概要

本セッションでは、Material Design 3におけるAppBarのカスタマイズについて解説します。画面コンテンツのスクロール操作に連動したAppBarの動的な形状および背景の変化に焦点を当て、その実装手法や技術的なポイントを説明します。また、AppBarを透過させたり背景を変更することで、デザインにさらなる自由度を持たせ、視覚的に洗練されたUIを実現する方法なども取り上げます。これにより、アプリケーションのユーザー体験を向上させる具体的なアプローチを提案します。

想定視聴者

  • UIに興味のある方
  • M3に興味のある方
2
一般セッション

Swift Package Manager で Flutter Plugin 開発はどう変化するか

ry_itto 伊藤凌也

概要

Flutter 3.24 から Flutter の iOS 側では CocoaPods に加えて Swift Package Manager のサポートが追加されました。
開発環境に Ruby の環境が必須ではなくなったり、 Swift Package Manager で新たに追加される機能等を利用可能になったりなど、さまざまな利点があります。

Flutter Plugin 開発は普通の package 開発に比べても手間のかかるもので、その課題はさまざまなところにあります。
このトークでは、Flutter Plugin 開発の従来の課題を示した上で、それが Swift Package Manager の登場でどのように変化していくのかを紹介します。

想定視聴者

・Flutter Plugin 開発に興味のある方
・Flutter でネイティブの機能を取り入れることに興味のある方

一般セッション

FlutterエンジニアのためのSwift 6入門 - pigeonで生成したコードをどうSwift 6に適合させるか

ynoseda 野瀬田 裕樹

概要

Xcode 16へのアップデートに伴い、Swiftの言語バージョンがSwift 6になった今、Swiftに大きな変革のときが訪れています。
このセッションでは、そんなSwift 6へのアップデートに伴い、Pigeonで生成されたSwiftコードをどのようにSwift 6に向けて最適化していくのがいいかを解説します。

  • Swift 6について
    • Swift Concurrencyの基礎知識
    • Strict Concurrencyによるデータ競合の回避方法
  • Pigeonについて
    • Pigeonの利用方法
    • Pigeonで生成されるコードの具体例
    • Pigeonで生成されたコードを利用したSwift 6プログラミングの実例と解説

想定視聴者

FlutterエンジニアでSwift側のコードをよりSwiftyに実装したいエンジニア

1
一般セッション

FlutterでプラットフォームのViewを表示する2つの方法とエトセトラ

Krgm4D Kurogoma4D

概要

FlutterにはプラットフォームのViewを表示する方法は現状で2つ、Viewをなるべくそのまま表示するPlatformViewと、描画フレームをプラットフォームから渡して表示するTextureが挙げられます。
一般的な方法としてはPlatformViewで、公式ドキュメントにも記述がある上、PlatformViewを採用したpackageも多くあります。一方で、Textureは事例をあまり見かけませんが、有名なところだとvideo_playerで採用されています。
「プラットフォームのViewを表示したい」という目的を達成するためには、基本的にはPlatformViewを選択すれば間違いはありません。しかし、Textureを使う状況にはそれなりの理由があります。では、Textureを使う場面とは一体何でしょうか。あるいは、PlatformViewを使わない理由とは?

このトークでは、上記2つの方法について実装方法やその違い、メリデメ等を紹介します。このトークを通じて、プラットフォームのViewを表示する実装を行うときに適切な選択ができるようになることを目標とします。

想定視聴者

  • Flutterの基本的な知識があり、より多くの引き出しを増やしたい方
  • プラットフォームのネイティブViewを表示するような実装をしたい、またはpackageを作成したい方
一般セッション

iOS App ExtensionをFlutterアプリ上で使いたい

jake_gwon Jake

概要

iOS App Extensionを使うと、 ユーザーが他のアプリやシステムを操作している間でも、その機能やコンテンツを利用できるようになります。
しかしApp ExtensionをFlutterアプリで使いたい場合、思ったより色んな問題が発生します。
このセッションではiOS App ExtensionをFlutterアプリに導入した経験を共有し、
どのような設定をすれば良いのか、そしてMethod channelはどのように実装すれば良いのかについて説明します。

  • なぜApp Extensionが必要?
  • iOS App Extension実装
    ・ 簡単にApp Extensionを作る
    ・ Xcodeの設定など、設定に必要なことを紹介
  • Method channelの構成
    ・ App ExtensionのUIをFlutterを使って実装
    ・ App ExtensionとやりとりするためのMethod Channelのコードを実装
  • よく発生する問題
    ・ App Extensionを導入しながら、よく発生する問題を紹介
    ・ メモリの制限を回避する方法
    ・ Flutterの公式ドキュメントの注意点を共有

想定視聴者

  • iOS App Extensionに興味がある方
  • Method Channelの実装に興味がある方
1
一般セッション

FlutterとWebRTCを使って、ビデオコールアプリを作ってみました!

jake_gwon Jake

概要

WebRTC技術は映像、音声、テキストなどをリアルタイムでPeer 2 peer通信ができるようにする技術です。
このセッションではflutter_webrtcパッケージを使ってWebRTCを利用したビデオ通話アプリを作る方法を共有します。
WebRTC通信をするためにはSignaling server、STUN(TURN) serverが必要です。 Signaling serverをとても簡単なレベルのJavascriptコードでデモし、
STUN/TURNサーバーのためのcoturnのインストールと設定について簡単に説明します。

  • WebRTCとは?
    ・ WebRTCを使うために必要なこと
    ・ WebRTCのProtocol
  • flutter_webrtcを使ってWebRTCアプリ実装
    ・ Project初期設定
    ・ 簡単なビデオ通話アプリの実装
    ・ WebRTC通信のためのSocketクライアント実装
    ・ STUNサーバー設置、Signaling server実装(Javascript)
  • WebRTCを導入する際、注意事項

想定視聴者

  • WebRTCに興味がある方
  • ビデオ通話などの機能をサービスに導入したい方
一般セッション

魅せるオリジナル画面遷移アニメーションの描き方

shoryu927 辰べえ

Flutterを使ってアプリ独自の世界観をUIで表現することは、複数のプラットフォームに対応するUIを単一のDartコードで構築できるというFlutterの最大のメリットを活かすための一つの手段です。
独自の世界観を表現する際に、画面遷移アニメーションにもこだわることで、さらに魅力的な演出が可能です。

確かに、Flutterには MaterialPageRoute というネイティブライクな画面遷移アニメーションが標準で用意されており、多くのケースではこれで十分対応できます。
しかし、オリジナルの画面遷移アニメーションを取り入れることで、ユーザーをより深くその世界観に没入させることができるかもしれません。
Flutterを選んでいるからこそ、画面遷移にもこだわりを持ち、独自の世界観をさらに引き立ててみてはいかがでしょうか?

本セッションでは、私が公開している画面遷移アニメーションのパッケージ turn_page_transition を作った経験をもとに、次の内容を話します

  • CustomPaintの基本
  • 画面遷移アニメーションの基本
  • オリジナルの画面遷移アニメーションの描き方
  • テストの書き方
2
一般セッション

Flutter GPU で遊ぼう!未来のFlutterを一足先に体験する

aitproj aq

概要

Flutter 3.24 からプレビュー版が使えるようになった Flutter GPU で「何が出来るようになるのか・何が出来ないのか」を、簡単なサンプルコードを動かしながら解説していきます。
Flutter GPU はOpenGLで3Dレンダリングをしたり、シェーダーでエフェクトをかけたりすることの出来る機能ですが、最大の特長は Widget と親和性が高く、発想次第で新しいアプリ体験が作り出せる点だと思います。
まだプレビュー版なので実際に開発で利用できるのはもう少し先の話ですが、今から未来のFlutterを体験して一緒にわくわくしませんか?

想定視聴者

  • Flutter GPU に興味があり、基本的な概要を知りたい方
  • 視覚的な面白さを重視したアプリを作りたい方
  • Flutterでのゲーム作りを検討している方
1
一般セッション

GraphQL と Flutter で宣言的なモバイルアプリを構築する

koki8442 Koki Yoshida

概要

GraphQL は Meta 社が REST の問題点を解決するために開発した API クエリ言語およびランタイムです。
エンドポイントの統一、オーバーフェッチやアンダーフェッチの解消などが利点としてよく挙げられます。
中でも GraphQL クライアント技術は宣言的 UI と非常に相性がよく、Flutter アプリケーションのアーキテクチャに選択肢を増やしました。

このセクションでは、実際に Flutter アプリに GraphQL を採用して得られた以下の知見を共有します。

  • GraphQL の概要
  • GraphQL と Flutter の親和性
  • 実際のアーキテクチャ
  • 開発における工夫点
  • React から推測する Flutter の今後

想定視聴者

  • GraphQL を使ってみたい方
  • Flutter アプリのアーキテクチャに興味のある方
  • 大規模プロジェクトの開発に興味のある方
1
一般セッション

FlutterでWeb3のアプリ開発に挑む:苦悩と突破した実装の話

isekiryu いせりゅー

概要

「Web3.0」というキーワードを耳にする機会が増えています。
しかし、現在Flutterで開発されているアプリの多くは、まだWeb3の完全な実装には達していません。本セッションでは、Flutterを用いてWeb3アプリを開発する際の技術的な実装方法に加え、直面した課題やそれを克服した経験を共有します。
FlutterでWeb3アプリを開発することに興味がある方にとって、実践的な知識や技術選定のヒントなどが得られるセッションになります。

主な内容

  • MetaMaskログインとウォレットアドレス取得
  • 秘密鍵による署名の実装
  • Web3Authでのソーシャルログイン(Apple, Google)
  • Web3関連Packagesの選定の課題と対策
  • ドキュメント不足やMetaMaskのバグを乗り越えた方法

想定視聴者

  • Flutterエンジニア - FlutterアプリにWeb3機能を統合したいエンジニア。
  • モバイルアプリ開発者 - Web3技術を使ってアプリのユーザー体験を向上させたい開発者。
  • ブロックチェーンエンジニア - ブロックチェーン技術を活用したアプリ開発に興味がある方。
一般セッション

今夜から始めたい!Flutter × KMPで構築するnon-Dartアプリケーション

soleil_colza_ Hina Nakahira

概要

このセッションでは、Flutterを使ってUIを構築し、Kotlin Multiplatform (KMP) を利用してビジネスロジックを実装する、Dartに依存しないクロスプラットフォームアプリ開発の新しいアプローチを紹介します。
Flutterはその優れたUI構築能力で知られていますが、ビジネスロジックをDartで実装する必要があり、一部の開発者にとっては学習コストが高くなりがちです。Dartの学習を最小限に抑えつつ、Kotlinの強力な機能を活用して、iOSやAndroid両方で動作するアプリを効率的に開発しましょう。

具体的には、FlutterでのUI構築とKMPを用いたビジネスロジックの分離統合の手法、Kotlin/Nativeを用いたプラグインの作成、FlutterとKMP間のデータのやり取りをシンプルに行うためのベストプラクティスを取り上げます。Flutterを活かし、Kotlinでビジネスロジックを管理することで、保守性や開発効率を向上させましょう。

想定視聴者

・Dartの学習に課題を感じているFlutter初心者
・Kotlinのスキルを活用したい他プラットフォーム開発者
・KotlinやKMPの経験があり、Flutterを用いた開発に興味があるAndroidエンジニア
・Kotlinのエコシステムを生かしてモバイル開発を効率化したい開発者

16
一般セッション

Ditto SDK 紹介: サーバーに依存しない新しい体験

kndoshn 近藤 峻輔

概要

最近Flutter対応を発表したDitto SDKについてご紹介します。

こんなお困りごとはございませんか?

・ 『サーバー、ネットワークの障害でアプリが使えなくなる』
・ 『現場のWi-Fiが弱く、アプリがサクサク使えない』
・ 『施設が混雑した際にネットが遅くなり、現場の業務に支障がある』
・ 『災害時に備えたいが、ハードウェア追加はコストが合わない』

Dittoは、インターネットなしでの快適なデータ同期を実現するSDKです。

自動的にメッシュネットワークを構築し、データを中継します。
また分散していてもデータがコンフリクトしない仕組みを持っています。

レストランのような、通信が売上に直結する場所、
飛行機などの、インターネットが不安定な場所での活用が増えてきています。

このセッションでは、Dittoの仕組みと使い方について詳しく紹介します。

想定視聴者

・ 米スタートアップの新しい技術に興味がある
・ Flutterに新しい可能性を感じたい
・ ネットワークで困るケースがある

1
一般セッション

FlutterでSuapbase仕事で使って、Firebaseの代替品になったか?

JBOY83062526 Jboy422

概要

副業で携わっているアプリで、Supabaseを使って気づいたメリット、デメリット。Firebaseの完全な代わりになるわけではない。

想定視聴者

  • Supabaseに興味がある
  • Firebaseの代替品としてどこまで使えるのか 
一般セッション

異世界の技術: iOSエクステンションの探索

LucasGoldner 金ちゃん

概要

フラッターエンジニアにとって、ターゲットとするプラットフォームについて詳しく知ることは有利です。iOSの場合、様々なアプリextensionを通じて、アプリとシステムとのインタラクションが向上します。一番よく使われているextensionはホーム画面のwidgetでしょう。しかし、僕達が気づかない中で「シェア」や「アクション」など、日常的に様々な他のextensionも広く使われています。ほとんどのextensionはまだUIKitを使用していますが、Flutterバージョン3.16からは、新しい機能のおかげで、extensionのUIもFlutterで作成されます。

想定視聴者

• iOSで使用可能な様々な種類のextensionについて学びたい開発者
• Flutterアプリに様々なextensionを統合する方法を学びたい開発者
• UIKitの代わりにiOSのextension用のカスタムFlutter UIを作りたい開発者
• extensionの制限事項についての理解を深めたい開発者

一般セッション

ラーメンの味選びのように:Flutterでネイティブ機能へのアクセスに最適なツールを見つける

LucasGoldner 金ちゃん

概要

Flutterエンジニアとして、ネイティブ機能にアクセスすることは難しいかもしれません。FFIGen/JNIGen、Pigeon、通常のMethodChannelなど、さまざまな選択肢がありますが、どの方法が最も有効かは状況によります。AirPodsのセンサー情報を取得するために「Flutter AirPods」というパッケージを開発する際、僕も多くの選択肢の中で迷いました。このトークでは、「Flutter AirPods」を開発する過程で試したさまざまな方法と、それぞれの方法のメリットとデメリットを共有します。

参加していただければ、トークの終わりまでに、自分にとって最適なツールを安全に選べるようになります。

想定視聴者

・パッケージを開発している開発者
・ネイティブ機能へのアクセスが必要な開発者

1