環境構築が開発を行う上で最も最難関の準備パートではないでしょうか? flutter doctor コマンドを使っても解決まで時間がかかった経験を持っている初学者の方はいませんか?
Project IDX はこれらの課題を解決し、すぐに関心事である実装に集中することができます。 Project IDX はいわゆるplaygroundの一種で、オンラインで開発環境を提供するツールです。Flutterはこの中に含まれています。オンラインで開発の環境が完結しているため、環境構築の手間をほとんど0にしてコードを書くことができます。
このプロジェクトは発展途上ではありますが、プロトタイピングに非常に優れています。プロトタイプした完成のみならず、コード自体も共有しアイデアをすぐに実装・プロトタイプに反映する、高速な開発を進めることが可能になります。
このLTでは、IDXを用いてプロジェクトを作る方法や、既存のFlutterプロジェクトをIDXにする方法、エミュレータの使用方法など Flutter のための Project IDX の使い方を共有します。
本セッションではFlutter開発経験が0のモバイルエンジニアのみで構成された弊チームが、どのようにしてFlutterを学び、新規アプリをリリースするまでに至ったかを2024年度版と題してご紹介します。
Flutter導入の背景から、効果的だった勉強方法やそうでなかった方法、実際に新規アプリを開発・リリースするまでの道のりについて具体的にお話しします。
現在では、Flutterで開発したアプリを1つリリースし、さらに2つの新規アプリを開発中です。
Flutterの導入を検討しているエンジニアやマネージャーにとって有益な情報を提供し、実際の導入事例を通じてチーム全体で新しい技術を学ぶ際の参考にしていただければと思います。
・ Flutterに興味があるが、どのように学習を進めれば良いか悩んでいるエンジニア
・ 新しい技術を導入する際のチームの学習プロセスやリソース配分について知りたい方
・ チーム全体で新しい技術を学ぶ際の効果的な方法や、実際の導入事例を知りたい方
・ 新しい技術を導入する際のメリットやデメリット、実際の導入事例を通じて、組織全体の技術戦略を考える参考にしたい方
高品質でアプリデリバリーを3倍にする
迅速かつ高品質なアプリデリバリーは競争力の源泉です。しかし、開発速度を上げる一方で、品質を落とすことなくアプリを提供することは難易度の高い課題です。本セッションでは、私たちの開発チームが実際に実践し、アプリを週1回リリースから週3回のリリースにデリバリー速度を向上させた具体的な戦略とツールの活用方法を紹介します。
このセッションの内容は以下の通りです:
私たちのチームは、約2年間にわたり自動テストの運用を行い、そのシナリオ数は70を超えました。その過程で多くの課題と学びがありました。
カバレッジを維持するためには、自動テストの書き方の統一性、痒いところに手が届く記法の必要性などの数多くの課題が存在します。
以下の内容についてお話しします。
私たちのチームは、約2年間にわたり自動テストの運用を行い、そのシナリオ数は70を超えました。その過程で多くの課題と学びがありました。
カバレッジを維持するためには、自動テストの書き方の統一性、痒いところに手が届く記法の必要性などの数多くの課題が存在します。
以下の内容についてお話しします。
Flutter開発の効率と快適さは、適切なツールの活用に大きく左右されます。本セッションでは、DevTools Extensionsを活用して開発体験を向上させる方法を、実際に拡張機能を作りながら探求します。
DevTools Extensionsは、Flutterの標準開発ツールをカスタマイズし、プロジェクト固有のニーズに合わせた機能を追加できる強力な機能です。このトークでは、DevTools Extensionsの基礎から応用まで、ハンズオン形式で詳しく解説します。
Flutter開発の効率と快適さは、適切なツールの活用に大きく左右されます。本セッションでは、DevTools Extensionsを活用して開発体験を向上させる方法を、実際に拡張機能を作りながら探求します。
DevTools Extensionsは、Flutterの標準開発ツールをカスタマイズし、プロジェクト固有のニーズに合わせた機能を追加できる強力な機能です。このトークでは、DevTools Extensionsの基礎から応用まで、ハンズオン形式で詳しく解説します。
Flutter用のゲームエンジン「Flame」をご存知でしょうか? Flameは、スプライト管理、衝突判定、エフェクトなど、2Dゲームに必要な機能を一通り備えています。FlameのGameWidgetはFlutterのWidgetツリーのどこにでも挿入できるため、ゲームアプリ以外のアプリにもゲーム的な要素を盛り込むことができます。
近年のモバイルアプリでは、LottieやRiveといったツールで作成されたベクターアニメーションが盛んに利用されていますが、これをFlameを使ってゲームライクなインタラクティブコンテンツに置き換えると、またちがった面白さが生まれるかもしれません。
このトークでは、Flameを用いて一般的なモバイルアプリのアニメーション演出をユーザーが操作できるコンテンツに変換した事例を紹介します。Flameを活用した派手な演出の作成方法や、GameWidgetとFlutterアプリ本体との連携方法についてもお話しします。
昨今の Flutter 開発の現場において、build_runner は欠かせない存在になっているかなと思います。
しかし一方で、それなりに大きなコードベースで作業されている方は特に、build_runner の実行時間の長さによって生産性が低下したり、また DX (Developer Experience) が阻害されているという人も多いのではないでしょうか。
本セッションでは build_runner による待ち時間を少しでも短くするための tips についてお話しします。
・開発現場で build_runner を使っている方
・build_runner の実行時間に課題を抱えている方
数100万 MAU を誇る大規模アプリを Flutter にてリプレースを行い、現在も開発を続けています。
本セッションでは、少数精鋭 (3〜5名程度) で大規模アプリのリプレースを成功させ、アプリの信頼性を落とすことなく、いま現在も安定した開発を続けている、その開発の裏側についてお話しします。
【セッション内容の詳細】
・技術選定
・どのようなアーキテクチャ、package などを採用したか
・アーキテクチャの解説
・意思決定の背景
・アプリの信頼性を担保するための取り組み
・自動テスト
・モニタリング
・持続可能で安定した開発をどのように実現しているのか
・CI/CD
・チームの技術力の底上げ
・しくじり談
・これからサービスの立ち上げに関わる方
・アプリの品質の担保に悩んでいる方
・少数チームで持続可能で安定した開発を実現させたい方
Supabaseは Firebaseの代替となるオープンソースのBaaSです。
本セッションでは、Supabaseを利用したアプリ開発における、
ユニットテストの実装方法について、
私の業務での実装経験をベースに、
認証、SQLデータベースへのCRUD操作の2つの観点から解説を行います。
具体的には以下の内容について解説します。
Flutter 用のパッケージが提供されていること、
Postgres SQLというFirebaseとの差別化点があることから、
Flutter と Supabaseでの開発は、今後も増えていくと考えられます。
テストに関する情報はまだまだ少なく、
実装に困っている方は多いと考えます。
本セッションが開発者の方々の一助となれば幸いです。
Flutter 3.24のアップデートにて、
Flutter GPU と呼ばれる低レベルのグラフィックレンダリングのAPIが紹介されました。
Flutter GPU により、2Dだけでなく3Dのグラフィックが、
ネイティブのコードの利用をせずに利用できるようになります。
本セッションでは、Getting started with Flutter GPUと、
私の調査結果から、このFlutter GPUについて紹介、解説を行います。
具体的には以下の内容について解説します。
本セッションを通して、Flutterの未来を覗いてみませんか?
現在担当しているサービスはモバイルアプリ(Flutter)とWebブラウザ(PC/SP)の複数プラットフォームに提供していますが、各プラットフォームでは一部を除いて共通のデザインコンポーネントを使って実装しています。
Flutterアプリで効率よく実装、管理するためにはどういったコンポーネント定義なら実装しやすいかをFlutterのコードを踏まえながら、デザイン作業も兼任しているエンジニア目線で解説します。
このセッションでは以下の内容を想定しています
モバイルアプリの開発において、審査は避けられないプロセスです。
しかし、リリース後にバグが発覚すると、再び審査を経る必要があり、ユーザーに不便を強いることがあります。
特にユーザー数が多い企業のアプリでは、このプロセスが大きな課題となり得ます。
このセッションでは、月間約2万人が利用する弓道アプリ「採点簿」での実際のCodePush導入経験を基に、運用ノウハウを解説します。
また、このノウハウを本業の大規模アプリに組み込み、実際に稼働させた過程を具体的に説明します。
本セッションでは、Dart Frogを活用したWebSocket通信の実装方法を詳しく解説します。
WebSocket通信の実装には、接続管理、エラーハンドリング、再接続ロジックなど、考慮すべき点が多岐にわたります。また、Dartの非同期処理と組み合わせる際の適切な実装方法や、パフォーマンスの最適化も重要な課題です。
そこで Dart Frogの特徴や利点を紹介し、WebSocket通信の実装手順を step by step で説明します。さらに、実装上の注意点や最適化テクニックを共有し、効率的で信頼性の高いWebSocket通信を実現しましょう。
・Flutter でゲーム開発する際に Dart で websocket サーバーを実装したい開発者
・Dart Frogを使ったバックエンド開発に興味がある開発者
真心を込めて開発したアプリがカクついたときのショックは、今でも忘れられません。
アプリがスムーズに動かないとき、あなたなら何から始めますか?どこから修正しますか?リビルドの回数を減らすために const を使ったところ、カクつきが改善されました。でも、リビルドの回数は何回から何回に減少したのでしょう?パフォーマンスを改善する際には、推測に頼るのではなく計測をしてボトルネックを特定することが重要です。
本セッションでは、UIパフォーマンス計測の入門として、DevToolsに注目します。DevToolsは、Flutterアプリのパフォーマンス計測には欠かせないツールです。特に、フレームレートの監視、ジャンクやスクロールヒッチの検出、ウィジェットのリビルドの計測、メモリの割り当てとCPU使用率の分析に焦点を当てます。そして、サンプルプロジェクトを使って実際にUIパフォーマンスを計測し、問題の原因を特定し、一つずつ改善していきます。
UIパフォーマンスの問題により、描画が乱れたり、操作が遅くなったりすることは珍しくありません。そんなときでも焦らず計測し、ボトルネックを特定し、問題を解消するための実践的な方法を、デモを交えて紹介します。
スムーズで快適なアプリをユーザーに届けたい方
根拠を持ってUIパフォーマンスの改善をしたい方
ここに、野菜のリストがあります。
[にんじん, じゃがいも, たまねぎ, ブロッコリー]
あなたなら、緑色の野菜だけを選ぶにはどうしますか? それぞれの野菜をサラダ用にカットするには? 野菜の重さを合計するには? 空のコンソメスープに各野菜を追加するには?
これらの操作を簡単に実現できるのが、Dartの高階関数です。高階関数は、関数を引数や戻り値にとる関数のことです。Dartでは、map・where・reduce・foldなどが Iterableクラスのメソッドとして定義されています。これらを使うと、for文よりも簡潔で柔軟なコードが書けます。
本セッションでは、野菜を例に、Iterableクラスに定義された高階関数を直感的に理解することを目指します。また、具体的なケースで高階関数を使う場合と使わない場合を比較し、コレクション操作が簡潔で明瞭になることを体感します。さらに、Dart SDKの内部実装を参照して、Iterableクラスのメソッドの動作をより深く理解します。これにより、高階関数へのハードルが下がり、Dartでの開発がさらに楽しくなるでしょう!
Dartの高階関数にハードルを感じている方
Iterableクラスの内部実装に興味がある方
野菜が好きな方
Flutterアプリケーション開発の核心となるのは、WidgetとPackageです。これらを深く理解することで、あらゆる開発課題に効率的に対応できるようになります。
本セッションでは、YouTubeで公開されている「Flutter Widget of the Week」や「Flutter Package of the Week」シリーズの内容からピックアップしてFlutterのWidgetとPackageについて解説します。
参加者の皆様は、Flutterの基本的な要素を再確認しつつ、新たな視点や活用法を学ぶことができます。WidgetとPackageの理解を深めることで、より効率的で創造的なFlutter開発のスキルを身につけることができるでしょう。
本セッションは、以下の方々に特におすすめです:
Flutterを始めたばかりの初心者からなんとなく一通りの開発ができる人まで幅広く聞いてもらえるセッションにする予定です。