Win用のソフトを上手くMac版に移植した事例紹介

http://developer.apple.com/business/macmarket/mindmanager.html
Win用のMind Map作成ソフト"MindManager 6"をMacに「翻訳」した事例で、成功するためのコツみたいなのが色々載ってる。
一番の重要なポイントは

Don't port your application―translate it.

に要約されてると思う。portしただけでは、Macユーザーには受入れられない。
「翻訳」に携わったスタッフによる、経験に基づく、アプリケーションのWin-Mac間「翻訳」ガイドライン(Guidelines for Windows-Mac Application Translations)の見出し的部分だけ適当に抜粋。

  • (UIの開発では)Cocoaを使え。(Use Cocoa.)
  • Cocoaは必要に応じて使え。(Use as much Cocoa as you need.)
  • Win上のUIの決まり事を、Macでのそれに「翻訳」しろ。(Translate Windows UI conventions into their Mac equivalents.)
  • MVCのMは既存のコードを使い、UIはMac用に書き直せ。(Use existing code for your data model, but rewrite your user interface for the Mac.)
  • Core Foundation frameworkを使え。(Use the Core Foundation framework.)

あと、もともとの設計が良かったことから幾つか恩恵を受けたとかいう話。
MVCをきちんと分離していたのでコードの流用ができたとか、保存に基本的に(バイナリではなく)XMLを使う仕様だったのでI/O処理が楽だったとか、Quartz 2DがGDI+に似てたから移植が楽だったとか、Quartz 2DはGDI+と違って画面表示用も印刷用を統一的に扱えて良かったとか、Quartz 2DはObj-CだけでなくてCのインターフェースも持つので既存のC++コードとの連携が楽だったとか。


ついでに「翻訳」作業での推奨事項(Recommendations for Translating Windows Applications)を適当に要約。理由とかは原文参照。

  • チームにはMac使いを入れるべし。
  • Macというプラットフォームについて勉強するべし。
  • 「移植」(port)ではなく「翻訳」(translate)するべし。
  • ソフトの設計に十分に注意を払うべし。
  • 設計にあたっては、Mac固有の機能の使用を排除しないべし。
  • Cocoa frameworkを基礎にするべし。
  • Xcodeを使用するべし。
  • Macintosh human-interface guidelinesに従うべし。
  • Objective-Cを受入れるべし。

まぁぶっちゃけ私にはあんま関係ないですけど。