CodeWarriorは、 NXP Semiconductorsが公開している統合開発環境(IDE)で、組み込みシステムで使用される複数のマイクロコントローラおよびマイクロプロセッサ(Freescale ColdFire、ColdFire+、Kinetis、Qorivva、PX、Freescale RS08、Freescale S08、S12Z)およびデジタル信号コントローラ(DSC MC56F80XおよびMC5680XX)のソフトウェアの編集、コンパイル、デバッグに使用されます。
このシステムはMetrowerksによってMacintosh上で開発され、既存のMotorola 68kとPowerPC(PPC)命令セットアーキテクチャの両方をクリーンにサポートした、同プラットフォーム上で最初の開発システムの1つでした。AppleがPowerPCに移行する過程で、CodeWarriorはMacの事実上の標準開発システムとなり、 SymantecのTHINK CやApple自身のMacintosh Programmer's Workshopを急速に置き換えました。1996年にAppleがNeXTを買収したことで、MacプログラミングがNeXTプラットフォーム独自の開発ツールであるInterface BuilderとProject Builder ( GNU Compiler Collectionをベースに構築)に移行したため、CodeWarriorの重要性は低下しました。
Metrowerksはこれに対し、CodeWarriorをMicrosoft Windowsに移植し、より幅広いプラットフォーム向けのコンパイラを導入することで対応しました。CodeWarriorはMotorolaの多様なマイクロコントローラ製品群のソフトウェアスタックの主要部分となり、最終的に1999年のMotorolaによるMetrowerks買収につながりました。PPCやその他のMotorola製プロセッサを搭載したほとんどのプラットフォーム、および多くのゲーム機で広く使用されました。2004年にFreescale Semiconductorが設立された際に、この製品はFreescale Semiconductorに移管され、その後2015年にNXPがFreescaleを買収した際にNXPに移管されました。
元々は「Classic IDE」として知られる単一の統合製品であったIDEは、後にEclipse IDEに置き換えられました。現在のバージョンは、Classic IDEが6.3 [ 1 ] 、 Eclipse IDEが11.0 [ 2 ]です。サポートされている言語は、 C、C++、およびアセンブリ言語です。
1992年10月、Symantecの言語製品グループの開発マネージャーだったジョン・マクエナニーは、PowerPC製品の開発に携わるため、同社を退職した。当初はPascalコンパイラの開発を考えていた。BBEditの著者であるリッチ・シーゲルは、マクエナニーがSymantecを退職したことを聞きつけ、モントリオールのMetrowerksのグレッグ・ガラノスに伝えた。ガラノスはマクエナニーに電話をかけ、「あなたの夢の仕事について教えてください」と尋ねた。マクエナニーは、Appleが将来使用すると発表した新しいPowerPC (PPC)チップ用のコードジェネレータを書きたいと答えた。 [ 3 ]
Metrowerksは既にPascalとModula-IIコンパイラを開発しており、元々はAtari ST向けだったが、後にMacを含む多くの当時のマシンに移植された。彼らはMcEnerneyをモントリオールに呼び寄せ、Galanosと彼のパートナーであるJean Belangerに会わせた。彼らは、McEnerneyが書いた新しいPPCコードジェネレータと彼らのコンパイラを組み合わせることで、PPC上で新しいツールチェーンに大きなチャンスがあると確信していた。彼らは、Macの開発システムの主要サプライヤーであるSymantecよりも早く市場に投入できると考えていた。SymantecはPPC向け製品のリリースには程遠く、Appleは長年無視されてきた製品である自社のMacintosh Programmers Workshop(MPW)のアップデート版をPPCの開発に使用していた。McEnerneyは興味を示したが、彼らのコンパイラには感銘を受けず、この最初の接触からはほとんど何も進展しなかった。[ 3 ]
ほぼ同時期に、アンドレアス・ホンメルはドイツの大学でコンピュータサイエンスの修士号を取得していた。彼はC言語でコンピュータゲームを書くことに興味を持ったが、既存のコンパイラでは質の低いコードしか生成されないことに気づいた。数年かけて、彼は68k用の独自のCコンパイラとシンプルな統合開発環境(IDE)を開発した。大学を卒業するとハンブルクで仕事のオファーを受けたが、自分のコンパイラに市場があるかどうか試してみることにした。数か月後、彼はガラノスから電話を受けた。何度か大西洋を挟んだ電話の後、ガラノスはホンメルをモントリオールに招き、一緒に働くことについて話し合うことにした。[ 4 ]
1993 年 2 月、ガラノスはマクエナニーに電話をかけ、メトロワークスが買収した新しい C コンパイラをマクエナニーがレビューできるようにパロ アルトで会えないかと尋ねた。マクエナニーは非常に感銘を受けた。システムは Think C の初期バージョンに似ており、非常に高速だった。「磨けば光る原石」と評したマクエナニーは、数時間以内にメトロワークスと契約を結んだ。ホメルは、コード生成段階から分離しながら、C コンパイラを完全なC++実装に拡張する。マクエナニーは、ホメルのコンパイラによって駆動される新しい PPC コード ジェネレータを作成する。ホメルの既存の 68K コード ジェネレータは、そのプラットフォームで使用されるが、Pascal もサポートするように少し変更される。モントリオールのベラルディーノ バラッタとマルセル アキムは、IDE の開発を続け、同じコード ジェネレータ上で動作する Pascal コンパイラを開発する。[ 3 ]
新しいシステムを検討した結果、マクエナニーはコード生成に全く新しいアプローチを採用することにした。当時の一般的なコンパイラは、中間表現(IR)を繰り返し調べて、最終的に機械語命令に変換するまで、より最適化されたバージョンのコードを生成していた。RISCプラットフォームでは、命令セットアーキテクチャがはるかに単純で、特定のタスクにどのタイプの命令を使用するかを決定する作業がはるかに少なかったため、このアプローチはそれほど重要ではなかった。代わりに、マクエナニーの新しいコードジェネレータは、最初のIRを受け取り、それを直接PPCコードに変換した。[ 3 ]
主な変更点は、レジスタ使用のためのチャイティンのアルゴリズムを実装したことでした。1982年に導入されたこのシステムは、コンパイラ技術における画期的な発展でした。これにより、コードジェネレータはローカル変数をプロセッサレジスタに非常に高い効率でマッピングできるようになりました。RISCプロセッサの主要な概念の1つである、パフォーマンスのためにレジスタ使用に依存するマシンでは、この技術は大きな改善をもたらす可能性があります。欠点は、結果の計算にコストがかかることであり、O(N 2 )の処理となります。[ 3 ]
PPCコンパイラの開発を支援するため、Appleのジョーダン・マットソンはマクエナニーにRS/6000システムを1台送った。1993年8月までに基本システムが稼働した。マクエナニーは、メトロワークスで仕事を探していた元シマンテックの同僚、ダン・ポドウォールから電話を受けた。ガラノスはポドウォールに電話をかけ、彼はすぐにデバッガの作成を依頼され、わずか4週間で完成した。[ 3 ]
1993年9月にPower Macintoshのプロトタイプ機が同社に送られた。当時、メインのIDEとコンパイラツールチェーンはまだ68kマシン上で動作しており、PPCバイナリを生成していた。生成されたバイナリはプロトタイプ機に移され、デバッグされた。これにより、システムをPPCに迅速に移植することができ、12月にはシステム全体が製品化の準備が整った。[ 3 ]
このシステムは、1994年1月のMacWorld ExpoでCodeWarriorとして発表されました。Power Macも同じ月に発売される予定でしたが、一連の遅延により、3月14日のPower Macマシンの正式発売まで延期されました。[ 3 ]
当時、AppleのMPWとSymantecのThink Cはどちらも68kマシンでしか動作せず、PPCバイナリを生成できたのはMPWだけだった。PPC上でネイティブに動作し、プラットフォーム専用のコードに基づいていたCodeWarriorは、劇的に高いパフォーマンスを提供し、単一のマシンで開発とデバッグを可能にした。他の開発システムの販売は事実上一夜にして終わった。1986年からMac開発市場を独占していたSymantecは、1995年3月下旬までネイティブPPCバージョンをリリースしなかった。この時までに、いくつかの主要なMacソフトウェアベンダーはCodeWarriorに移行しており、SymantecはMacで市場シェアを回復することはできなかった。[ 5 ]
CodeWarriorは、Appleがマシンアーキテクチャを68KプロセッサからPowerPCに移行させる際の成功の鍵となる要素でした。なぜなら、競合製品(AppleのMPWツールとSymantec C++)がほとんど不完全であったり、市場投入が遅れていたりしたのに対し、CodeWarriorは完全で堅牢なPowerPCコンパイラを提供したからです。[ 5 ] Metrowerksは、68KとPowerPCの両方のコードを含むファットバイナリを簡単に生成できるようにもしました。
Macintosh 版 CodeWarrior の Java サポートは 1996 年 5 月に発表され、CodeWarrior 9 で実装される予定でした。[ 6 ] Metrowerks は、新しい IDE を開発するのではなく、デバッグを含む Java ツールのサポートを CodeWarrior に追加するというアプローチを採用しました。[ 7 ]
1997年、AppleはNeXTを買収し、同社のオペレーティングシステムであるOpenStepを将来のMac製品の基盤として活用することにした。OpenStepは、オペレーティングシステム全体とそのすべてのアプリケーションを内部開発システムを用いて構築するというコンセプトに基づいていた。このシステムは、GNUコンパイラコレクション(GCC)をベースとしていた。CodeWarriorは、Macプラットフォーム上で「従来型」アプリケーションを開発する開発者にとって依然として重要なツールであったが、開発は明確な期限を経て、主に新しいOpenStepプラットフォーム、ひいてはGCCを介して行われるようになることが示された。
1996年8月、MetrowerksはBeBox用のCodeWarriorを発表しました[ 8 ]。これはBeOSソフトウェア開発者向けに既に提供されていたPowerPCコンパイラを補完するBeIDEというBeOS版IDEです。
1999年にメトロワークスがモトローラに買収された後、同社は組み込みアプリケーションに注力し、デスクトップコンピュータ用のコンパイラにはより少ない労力しか割かなくなった。2005年7月29日、同社は次期リリースであるCodeWarrior Pro 10をもってCodeWarrior for Macの販売を終了すると発表した。メトロワークスは、過去4年間でこの製品の収益シェアが22%から5%に低下したことと、同社が組み込み開発市場に注力する努力をしていたことを指摘した。CodeWarriorの需要は、AppleがXcode(OS X用の独自のソフトウェア開発キット )を無償で配布し始めた時期に低下したと考えられる。[ 9 ]さらに、AppleがIntelチップに切り替えたことで、メトロワークスは2005年初頭にIntelコンパイラ技術をノキアに売却していたため、明確な製品がなくなった。
全盛期には、この製品は毎年複数回の改訂を行う迅速なリリースサイクルと、風変わりな広告キャンペーンで知られていました。彼らの「ギークウェア」シャツは、ニューヨーク・タイムズのファッションページに掲載されました。[ 10 ]

フリースケールによる製品買収以前には、Mac、Windows、Linux、Solaris、PlayStation、PlayStation 2、Net Yaroze、Nintendo 64、GameCube、Nintendo DS、Nintendo DSi、Wii、[ 11 ] Dreamcast、SuperH、M·CORE、Palm OS、[ 12 ] Symbian OS、BeOS [ 8 ]を対象としたバージョンが存在していた。
Metrowerks版のCodeWarriorには、 Pascal、Object Pascal、Objective-C、およびJavaコンパイラも含まれていました。
CodeWarriorの旧バージョンは、従来のMac OS上で開発するために使用できます。ClassillaはMetrowerks CodeWarrior 7.1で構築されています。[ 13 ]
CodeWarrior のその他の開発ツールには、CodeWarrior Analysis Tools (CATS)、CodeWarrior Communication Utility (CWComUtil)、および Analysis Tools Construction Kit (ATtaCK) がありました。[ 14 ]
1990年代、Apple ComputerはMacintoshのプログラミング用リソースを収録した開発者向けCD-ROMシリーズを毎月リリースした。初期の頃、これらのCDには様々な映画をもじったタイトルが付けられていたが、コーディングのひねりが加えられていた。例えば、「The Hexorcist」(エクソシスト)、「Lord of the Files」(蠅の王)、「Gorillas in the Disc」(霧の中のゴリラ)などである。[ 21 ]
これらのうちの1つ、第9巻は映画『マッドマックス2』にちなんで「コード・ウォリアー」と題されていた。後にアップルはこの奇抜なタイトルを廃止し、より落ち着いた「開発者向けCDシリーズ」に変更した。偶然にも、メトロワークスの創設者であるオーストラリア人のグレッグ・ガラノスもこの映画に感銘を受け、「コード・ウォリアー」という名前を提案した。メトロワークスはその後、この名前を新しい開発者向け製品に採用した。
CodeWarriorのCDパッケージは、Appleの開発者向けCDの伝統を色濃く受け継いでおり、「血と汗とコード」や「来た、見た、コード」といったスローガンが目立つ文字で印刷されていた。一方、SymantecのTHINK Cなどの競合製品は、より従来型のマーケティング手法を採用していた。
Metrowerksは、PowerPCへの移行時と同様に、開発者がMacOSソフトウェアからAppleの将来のオペレーティングシステム(コードネームRhapsody )に移行するのを支援するために必須の開発者ツールを提供する必要性を予見していた。[ 22 ]
1997年、メトロワークスは、デビッド・ヘンプリングとそのパートナーからラティチュード・グループ社の主要資産を買収した。ラティチュードは、MacintoshアプリケーションをNeXTコンピュータやその他のUNIXシステムに移植するために使用されるソフトウェア互換性レイヤーであった。[ 23 ]
Latitudeは、Lee LorenzenのAltura Mac2WinソフトウェアやApple独自のQuicktime for Windows SDKと同様に、Macintoshアプリケーションを最小限の変更でWindows用に再コンパイルできるMacintosh System 7 APIを実装したライブラリとして登場しました。Latitudeは以前、 AdobeによってPhotoshopとPremiereをSilicon GraphicsおよびSolarisワークステーションに移植するために成功裏に使用されていました。[ 24 ]
MetrowerksはLatitudeをCodeWarrior Latitudeにブランド変更し[ 25 ]、Developer Preview 1からRhapsody向けにアップデートし、CodeWarrior Professionalと並んでMacintosh開発者向けに399ドルの別製品として販売した[ 26 ] [ 27 ] 。
Latitude Developer Release 1 (DR1) は、1997 年の WWDC の CodeWarrior Lounge でプレビューされました。Latitude DR2 は 1997 年 10 月 27 日にリリースされ、1998 年の Macworld で新技術向けベストツールとして Eddy 賞を受賞し、AAA+ Software F&E の Joy や Symantec の Visual Cafe for Macintosh 1.0.2 を抑えました。[ 28 ]
当時、スティーブ・ジョブズはオペレーティングシステムの新機能にアクセスするためにOPENSTEP API(イエローボックスと改名)を大々的に宣伝していた。C/C++/Pascal Macintosh開発者にとって、これはブルーボックス内で動作しObjective-Cベースの従来のMacOS APIとは大きく異なっていたため、大きな障害となった。Latitudeは、明らかな理由から一時的に「グリーンボックス」[ 29 ]と呼ばれ、Metrowerksにとってまたしてもヒット商品となり、Macintosh開発ツール市場での優位性をさらに確固たるものにするかに見えたが、Appleは密かに独自の計画を持っていた。
CodeWarriorのRhapsody用IDEとCodeWarrior Latitudeは、 1998年の世界開発者会議のサードパーティ開発者パビリオンで両方ともデモされましたが、スティーブ・ジョブズの基調講演の後、ひっそりとショーで販売が終了しました。Appleが、新しいオペレーティングシステムへの移行を実用的に必要とする開発者にアピールするために、近日発売予定のCarbon API(コードネーム「Ivory Tower」)を発表したことで、サードパーティのソリューションは不要になりました。[ 30 ]
Metrowerksは、社内でLatitudeを使用してCodeWarriorをRed HatおよびSuSE Linux上で動作するように移植し、商用販売に供したほか、Sun Microsystemsとの契約に基づきSolaris上でも動作するようにした。これらの製品はいずれも、Unix開発者コミュニティでの普及を促進するため、Metrowerks独自のコンパイラ技術ではなく、gccコマンドラインコンパイラを採用した。
Latitudeの最終バージョンは、Solaris 2.3、SGI Irix 5.2、およびRhapsody DP2をサポートし、HP-UXのサポートは終了した。