「Web3.0」というキーワードを耳にする機会が増えています。
しかし、現在Flutterで開発されているアプリの多くは、まだWeb3の完全な実装には達していません。本セッションでは、Flutterを用いてWeb3アプリを開発する際の技術的な実装方法に加え、直面した課題やそれを克服した経験を共有します。
FlutterでWeb3アプリを開発することに興味がある方にとって、実践的な知識や技術選定のヒントなどが得られるセッションになります。
このセッションでは、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のエコシステムを生かしてモバイル開発を効率化したい開発者
最近Flutter対応を発表したDitto SDKについてご紹介します。
こんなお困りごとはございませんか?
・ 『サーバー、ネットワークの障害でアプリが使えなくなる』
・ 『現場のWi-Fiが弱く、アプリがサクサク使えない』
・ 『施設が混雑した際にネットが遅くなり、現場の業務に支障がある』
・ 『災害時に備えたいが、ハードウェア追加はコストが合わない』
Dittoは、インターネットなしでの快適なデータ同期を実現するSDKです。
自動的にメッシュネットワークを構築し、データを中継します。
また分散していてもデータがコンフリクトしない仕組みを持っています。
レストランのような、通信が売上に直結する場所、
飛行機などの、インターネットが不安定な場所での活用が増えてきています。
このセッションでは、Dittoの仕組みと使い方について詳しく紹介します。
・ 米スタートアップの新しい技術に興味がある
・ Flutterに新しい可能性を感じたい
・ ネットワークで困るケースがある
9月7日に「弓道の日」記念交流射会が開催されました。全国各地から弓道家が集まり、200人が参加する大規模な大会となりました。
通常、弓道大会では紙で記録が張り出されますが、今大会ではアプリを用いてリアルタイムに記録を共有しました。
今回のアプリでは、リアルタイム記録の閲覧、参加者間のプロフィール交換機能(QRコード使用)、大会前後の通知機能を搭載。大会はボランティア運営でコストゼロが求められ、私はFlutter、Firebase、Google Spreadsheetを活用して、すべてのシステムを一人で構築・運用しました。
大会運営はボランティアで行われたため、コストゼロでの運用が求められました。
エンジニアは私一人だったため、これらのシステムを全て1人で構築・運用しました。
このノウハウは、他の大会やイベントでも活用できると考えており、今後、同様のイベントでアプリを導入したいという方々に役立てば嬉しいです。
これから特定ドメインのイベントアプリの開発を行いたい方
副業で携わっているアプリで、Supabaseを使って気づいたメリット、デメリット。Firebaseの完全な代わりになるわけではない。
Flutter SDK は、Google の Material Design と Apple の Human Interface Guidelines に準拠したテーマ (Material Theme, Cupertino Theme) と関連 API を提供しており、これにより OS 標準のデザインに沿ったアプリ開発が容易になります。
しかし、独自のデザインシステムを採用したい場合にテーマ管理が複雑化したり、OS 標準のデザインシステムアップデートに伴う破壊的変更により開発コストが増大したりする可能性があります。
本セッションでは、Flutter のテーマと各 Widget のスタイルの関係性を掘り下げ、OS 標準のデザインシステムへの依存を軽減するテーマ管理のアプローチを発表します。
これにより、独自のデザインシステムの実現や、OS 標準のデザインシステムアップデートの影響を最小限に抑えることを目指します。
加えて、Flutter Roadmap でも触れられている blankcanvas の最新動向についても解説します。
ユーザーとして、この場面を想像してみてください:アプリAで長文を入力中、何度か他のアプリBに切り替えて使用し、アプリAに戻ったところ、突然すべてのデータが消えてしまいました。OSがアプリAを終了させてしまったのです!それはあまり良くないuxですね。開発者として、どうやってユーザーを挙動不審な行動に対して守ることができますか?実は、state restorationという簡単な解決方法があります。状態管理についてよく話しますが、state restorationのことを忘れることがあります。最新の個人開発アプリ「Japanana」ではこの機能が必要でしたので、実際の例を使ってその実装方法をこの発表で紹介したいと思います。
• State restorationについて理解したい開発者
• State restorationを実装したく、その方法を学びたい開発者
• State restorationを実装した後、テスト方法を学びたい開発者
フラッターエンジニアにとって、ターゲットとするプラットフォームについて詳しく知ることは有利です。iOSの場合、様々なアプリextensionを通じて、アプリとシステムとのインタラクションが向上します。一番よく使われているextensionはホーム画面のwidgetでしょう。しかし、僕達が気づかない中で「シェア」や「アクション」など、日常的に様々な他のextensionも広く使われています。ほとんどのextensionはまだUIKitを使用していますが、Flutterバージョン3.16からは、新しい機能のおかげで、extensionのUIもFlutterで作成されます。
• iOSで使用可能な様々な種類のextensionについて学びたい開発者
• Flutterアプリに様々なextensionを統合する方法を学びたい開発者
• UIKitの代わりにiOSのextension用のカスタムFlutter UIを作りたい開発者
• extensionの制限事項についての理解を深めたい開発者
Flutterエンジニアとして、ネイティブ機能にアクセスすることは難しいかもしれません。FFIGen/JNIGen、Pigeon、通常のMethodChannelなど、さまざまな選択肢がありますが、どの方法が最も有効かは状況によります。AirPodsのセンサー情報を取得するために「Flutter AirPods」というパッケージを開発する際、僕も多くの選択肢の中で迷いました。このトークでは、「Flutter AirPods」を開発する過程で試したさまざまな方法と、それぞれの方法のメリットとデメリットを共有します。
参加していただければ、トークの終わりまでに、自分にとって最適なツールを安全に選べるようになります。
・パッケージを開発している開発者
・ネイティブ機能へのアクセスが必要な開発者
Dart の新機能であるマクロ(Dart macros)の登場により、Flutter アプリ開発で煩雑だったボイラープレートの問題や build_runner によるコード生成の問題の解決が期待されています。
とはいえマクロはまだまだ試験的に公開されている段階であるために自由に触りづらく、できることを把握してどう活用するかをイメージしづらいのが現状です。サンプルとして話題に上がるマクロも JSON とオブジェクトの変換が簡単になるというもので、Flutter アプリ開発にどれほどのインパクトをもたらす機能なのかをイメージするには力不足です。
このセッションでは、実際に Flutter アプリ開発で活用することを想定したマクロをいくつか紹介し、実際にコーディングして使ってみることで、マクロ導入後の Flutter アプリ開発がどのように変化するのかを体験します。
来るマクロの正式リリースに備え、マクロの活用方法や作り方、そして適切な距離感を今から考えてみませんか?
APIの仕様の管理は、効率的に開発を進める上で大切な要素の1つですよね。
本セッションではOpenAPIの運用について焦点を当て、リポジトリの配置やディレクトリ構成、どのようにDartコード生成を行っているか、そのために使用しているテンプレートツールなど弊社のプラクティスを紹介します。
Flutterを使用した開発において、地図機能を統合するための選択肢は多岐にわたります。
本セッションでは、mapbox_maps_flutterを使用したMapboxの基本機能からカスタマイズ方法までを解説し、他の地図ライブラリとの比較も行います。スピーカーの実例を交えながら、Mapboxを使った実践的な地図アプリ開発のポイントを紹介します。
Mapboxを活用してFlutterアプリに高度な地図機能を組み込みたい方におすすめのセッションです。
Explore the power of Flutter in robotics! In this live coding session, learn how to code robots using Flutter on a Raspberry Pi and create a cross-platform control station for Web, Desktop, and Mobile. Typically, ROVs, UAVs, and drones require two systems: a main board for control and a separate system for commands. With Flutter, you can code both in the same framework, enabling seamless integration across platforms. Join us to see real-world demos and learn how Flutter simplifies robotics development.
アーキテクチャに銀の弾丸はありません。よく使われるパターンに当てはめればうまくいくことが保証されるわけでもなければ、有名なプロジェクトが採用するアーキテクチャがあなたのプロジェクトでも最適とは限りません。
アプリの技術的な要件にはじまり、事業戦略、チームの特性や世の中の開発環境など、「最適なアーキテクチャ」を決定する変数は常に変化しつづけ、全く同じ条件や状況で開発が進むプロジェクトはひとつとしてありません。
このセッションでは、アーキテクチャを「採用するもの」ではなく「考え出すもの」ととらえ、それぞれに異なるプロジェクトで開発するみなさんが「そのプロジェクトにおける最適」なアーキテクチャを考え出すための道筋を議論します。
アーキテクチャに影響を与える要素を整理し、既存のパターンからアーキテクチャに対する観点を得て、具体的な Flutter のコードで理解を深めることで、実際のプロジェクトで使える考え方を身につけることを目指します。
以下のようなプロジェクトにおいて、開発方針の意思決定をするリードエンジニアの方々の役に立つことを目指しています。
みなさんは、 Flutter のバージョンアップで思わぬ事態になってしまったことはありますか?
私の所属している組織では、主に「宅配」のためのスマホアプリを Flutter で開発・運用しています。
利用者には VoiceOver を利用した方々もいらっしゃるのですが、ある日を境にその方々からアプリクラッシュの報告が上がるようになりました。
原因を探ってみると、 Flutter のバージョンアップに伴い Engine に加えられた変更が影響していることまでわかりました。
変更によって、 VoiceOver を有効にした状態で WebView を連続して利用する画面遷移を行うと、アプリがクラッシュするようになっていたのです。
該当する Issue も立てられてはいましたが、いつ解決するのかはわかりません。
このままでは、いつまでに改善できるか利用者の方たちと約束ができない状態です。
そこで、我々はこの Issue を自力で解決することで、自分たちのアプリの安定化を図る決断をしました。
このセッションでは、原因特定から改修版アプリのリリースまでの紆余曲折と、実際に Flutter 本体へコントリビュートしてみてどうだったか、ということをお伝えします。
Androidアプリの難読化されたコードを見るのが趣味の筆者。ある日、Flutter製のAndroidアプリの多くには、共通のBase64エンコードされている文字列が使用されていることを発見しました。この文字列は、flutter/packagesの中の特定のデータ型に関連する重要な手がかりを含んでいることが判明。詳細はGitHubの公開アーカイブされたリポジトリでの調査により、これらの文字列がどのような目的で使用されていたのかが筆者の中で明らかになりました。
この発見は、特に、AndroidのSharedPreferencesの実装に対するFlutterのユニークなアプローチとマルチプラットフォームに対応するフレームワークとしての解決策の苦悩が垣間見えます。プロダクトの実装時には気にする必要のない部分、Flutterの1st partyライブラリの実装を深堀りしていきます。
<トークのアジェンダ>
In this presentation, I'll explore how to build IoT healthcare solution(architecture) using Flutter.
I'll start with a brief introduction to the importance of IoT in healthcare and the advantages of using Flutter.
Next, I delve into the roles of gRPC and WebRTC technologies in enabling real-time data transmission and remote diagnostics. By examining the architecture and interaction of these two technologies, I'll present a comprehensive and integrated approach to developing Flutter-based healthcare solutions.
Developers considering developing healthcare systems using Flutter
This presentation introduces two tools for bridging Flutter apps with native code: FFI (Foreign Function Interface) and Pigeon. FFI enables direct calls to C/C++ functions, optimizing performance and hardware access. Pigeon streamlines method invocations between Flutter and native platforms (Android/iOS), facilitating better data communication. I’ll demonstrate the implementation and success stories of using these tools to enhance native functionality in Flutter applications.
Aiming to expand knowledge of FFI & Pigeon for native platform integration.
Generative AI is a groundbreaking advancement in technology, and this presentation examines its synergy with Flutter.
I will discuss the fundamentals of Generative AI and Flutter, as well as how to integrate on-device Machine Learning solutions like TensorFlow Lite and ML Kit.
Additionally, I will demonstrate how to use Google Gemini and OpenAI's Chat API to create real-world applications.