ソフトウェアエンジニアの末永です。私は個人開発でFlutter製のモバイルアプリを開発しています。このアプリを開発している中でアプリのビルド周りでハマってしまったことがあり、その際ビルドシステムに関してしっかりと調査しました。この記事はその調査の際に書いたものです。*1 なお、本記事は次のバージョンを対象とした内容となっています。 Flutter: 3.38.0 Dart: 3.10.0 また、ビルド対象はiOSとAndroidのモバイルアプリのみとします。 「iOSのReleaseビルドだけ古いアプリが出ている」問題 アプリの最新版をAppStoreとGoogle Playにリリースした後、iPhoneユーザーの方に新機能を紹介したら「え?そんな機能まだ出てないよ?アプリのバージョン?言われた通りの最新だよ?」と返答がきました。 どんな問題が発生したか 次のような状態になっていました。
はじめに ミクステンドでアプリエンジニアをしている上條です。 日程調整アプリ「調整さん」の Flutter 版を開発していて、巨大な出欠表の複数行を横方向に同期スクロールさせる UI でそれなりにハマった時期があります。linked_scroll_controller パッケージの LinkedScrollControllerGroup を使えば一見シンプルに実装できそうなのですが、SliverList の中で使おうとすると、パッケージ本体が警告しているハマりポイントを踏みます。 この記事では、実プロダクトで採用している 「ScrollController と Key をペアで管理する + Riverpod でライフサイクルを揃える」 実装パターンを紹介します。 TL;DR 複数の Scrollable を横方向で同期スクロールさせたい時、linked_scroll_controller
ただ、実務でデザインがM3に沿っているケースはあまり多くない印象です。Figmaを開くと Brand/Blue/500 や Neutral/100 といった独自トークンが並んでいたり、HIGベースの命名になっていたりすることの方がだいたい多いです。なので個人的には ThemeExtension に寄せておく方が潰しが利くと思っています。 この記事ではそのあたりの理由も含めて順番に説明します。 よく見る例 AppColors に全色を定義してWidgetから直接参照する、よくある構成です。 これで動くし一箇所にまとまっているし、問題ない気がします。 abstract class AppColors { static const primary = Color(0xFF4F46E5); static const background = Color(0xFFFFFFFF); } Contain
過去に音声入力と文字起こしに関する以下の記事を公開しています。 faster-whisper + Ollamaで作る完全ローカル会議文字起こしツール Python + faster-whisperによるデスクトップ向け会議文字起こし Kotoba Whisper V1.0で日本語特化 SwiftUIで作るオンデバイス話者分離アプリ iOS向けSwiftUIアプリ、営業商談向けの話者分離 Speech Frameworkによるオンデバイス認識 SwiftUIで作る訪問デブリーフアプリ 音声メモを構造化レポートとメール下書きに変換 完全オフライン、パターンマッチングによるフィールド抽出 SwiftUIで作る在宅介護音声記録アプリ 介護記録に特化したカテゴリー管理と日次サマリー共有 ShareLinkによるLINE・メール連携 本記事のkoememoは、これらとは異なる以下の特徴を持ちます。 ク
こちらです。 これは、 「ビルド中に状態を更新するな」 というフレームワークからの警告であり、 これに対するある種の「おまじない」のようなものとして多用されがちなのが このコードイディオムです。 この「おまじない」を何とはなしに使っていたところ、 BuildContextについて、 およびRiverpodの作者であるRemi氏の思想に触れる中で、 これがコードスメルの一つであることを学びました。 本記事では、なぜこの遅延実行による手法を避けるべきなのか、 そして BuildContext に基づく解決手法について記事にしてみたいと思います。 なぜ addPostFrameCallback は「Code Smell」なのか Riverpodの作者・Remi氏は、ビルドフェーズ中での Future.microtask や addPostFrameCallback による状態更新を推奨してい
はじめに 先日、Studyplus × Linc'well 合同の Flutter LT イベントで「転職したら Router が変わった話」というタイトルで登壇しました。 自分は転職をきっかけに go_router と auto_route を両方使うことになりました。 転職前は go_router、転職後は auto_route という環境です。 「go_router auto_route 比較」で検索すると、「○○はこっちが優れている」「△△には対応していない」といった記事が出てきて、今の選択が間違っていたのでは?と不安になりがちです。 この記事では、両方を実際に使った経験をもとに、それぞれの機能を比較していきます。 go_router と auto_route が利用されるようになった背景 まず、go_router と auto_route がなぜ必要になったのかを簡単に整理します
はじめに FlutterなどFE(フロントエンド)開発は、BEやインフラと比較するとセキュリティ上気をつけることが少なくはあります。それでも、油断すると情報漏洩やサプライチェーン攻撃のリスクにつながるポイントはあります。 最近だと、axiosのサプライチェーン攻撃の件などもあり、セキュリティに関する意識も高まりつつあるのではないでしょうか? この記事では、個人的に普段Flutterで開発する際にセキュリティ的に気をつけていることをまとめます。 大前提: フロントエンドのコードは全部見られる フロントエンドのコードは、いくら難読化しても基本的にはソースが全部見られる前提でいた方がよいです。 当たり前ですが、フロントエンドのコードに秘密鍵のような見られてはいけない情報を置いてはいけません。 また、解読されるとビジネスに致命傷を与えるようなロジック/迂回されると困るようなロジックがあるならば、そ
はじめに 2026年3月に Genkit for Dart が Preview 版として公開され、Flutter / Dart だけで AI ワークフローを組み立てる選択肢が現実的になりました。 本記事では、Google の AI フレームワークである Genkit の Dart 版を主題として、実際のサンプルアプリを通じて、構造化出力、Tool、Flow といったコア機能を整理します。 そのうえで、ローカル実行だけではなく、実際に Google Cloud 上で動かす手順も見ていきます。 Google Cloud 連携も扱いますが、あくまでメインテーマは「Genkit for Dart で何ができるのか」「なぜ Flutter 開発者にとって意味があるのか」という点に焦点を当てています。 想定読者 Flutter アプリに AI 機能を組み込みたい PoC や MVP を、できる限り D
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く