update が manyCountArray を変更するならコピー発生するんじゃないかな?( entry に一度代入するパターンのとき) (edited)map[item.name]?.update(item) のパターンで書くとき、根っこから深くなればなるほど、そのパスをたどらないといけなくて辛いなと思うんだけど、変数に代入する代わりに inout なクロージャに渡して別名付けるとかすればいいのかな。modify(map[item.name]) { entry in entry.update(item) } 的な。