There is no easy way. I own and use a Google Premier Apps account, and use Macs and iOS devices. Google's calendaring is improving, but just is not polished enough. Their contacts synchs well with nothing else - I've used Android and WebOS devices, and tried synching with both Windows and Macs. I'm done trying.
For my contacts, I exported each one from my Google account and imported each one into Address Book. I spent a weekend parsing the address and phone number data - a RPITA. Google's method of lumping all address data into one field was wrecking havoc with my devices and yielding complaints from my clients as they imported them (generally into Win Outlook). I then exported each contact as a v. 3.0 vCard, wiped my Google Account, then imported the vCards into my Google Account - they work perfectly now across all of my devices. I do not sync my Google contacts with anything but for another Google account I use Google Voice with. My Macs, Win Outlook, and iOS devices sync with my two iCloud accounts (I'm a developer).
I exported out my Google Calendars (I used 8 delegates along with my main calendar) and now use iCloud exclusively. Google's changed the behavior pattern of calendar delegates at least 5 times since I have used my Premier account, and their incomplete implementation of AS and CalDAV has left me wanting better CalDAV support, and I would have set up a colocated server rather than continue using my Premier account for calendaring. As of yesterday, Apple finally seems to have gotten iCloud running pretty smoothly across web and device spaces. I'm sold. Yes, it'll be free, I know...
As for a migration tool, not sure on that one yet, but it's not on my radar.