気付いたらdependabotが1年間お休みしていた
YOUTRUST プロダクト開発部の朝日大樹氏は、モノレポ構成のFlutter開発における依存関係管理の課題について発表した。同社では2022年にdependabotを導入していたが、2024年にmelosを取り入れて以降、dependabotによるプルリクエストが作成されなくなってしまった。調査の結果、melosが生成するpubspec_overrides.yamlによりdependabotの動作が妨げられていたことが判明。これを受けて、Flutter 3.27から導入されたPub Workspacesの機能を活用し、melosの利用をやめる方針に切り替えた。
対応にあたっては、melos cleanによるpubspec_overrides.yamlの削除や、各pubspec.yamlをWorkspaces形式へ移行する作業を実施。さらに、melos経由だったMakefileのコマンド群をbashで直接実行できるように見直し、CI内でもmelos依存を排除する構成へと移行した。最終的にはmelos.yamlの削除に成功。導入から半月が経過した現在も大きなトラブルは発生しておらず、今後はgrinderの活用や、AIを用いたMakefile記述への応用も視野に入れていると語った。
ListView.builderの謎:効率的リスト構築の秘密を解明
YOUTRUST プロダクト開発部のゴールドナ・ルーカス氏は、ListView.builderにおけるWidgetの再利用とパフォーマンス改善について発表した。ListView.builderでは、状態を持つ各アイテムの順序が変更されると、FlutterがkeyをもとにWidgetを正しく再利用できず、結果として、削除されたアイテムの下にある他のWidgetも再生成されてしまう問題が発生する。
この問題に対して、AutomaticKeepAliveClientMixinを使い、各アイテムの状態を保持する方法を紹介。ただし、メモリ消費が増えるため、リストの長さや構成によっては慎重な設計判断が必要になると補足した。最終的な解決策としては、findChildIndexCallbackプロパティを用いて、keyに対応するインデックスをFlutterに明示的に伝えることで、無駄な再ビルドを回避できると述べた。Flutterの内部挙動を理解し、仕様に即した実装を行う重要性が伝わるセッションとなった。