ターゲットとホスト
クロス開発とレジデント(セルフ)開発
ソフトウェア開発は、その状況により異なる手法をとります。
- 携帯電話やデジタル家電のように、そのソフトウェアが動作するコンピュータ(ターゲット)と、そのソフトウェアを開発するコンピュータ(ホスト)が分かれている場合
- そのコンピュータで動作するソフトウェアを、そのコンピュータ自身で開発する場合
前者をクロス開発、後者をレジデント(セルフ)開発と呼びます。
プログラミングの経験がある人は、ソフトウェア開発とは、いま目の前で使っているPC上で開発を行い、実行も同じPC上でするのが一般的だと思うでしょう。しかし、携帯電話そのものを使って携帯電話のソフトウェアを開発するのは極めて特殊な場合だけです。これには、感覚的に合点が行くと思います。
では、ウェブアプリケーションなどを開発する際に、自分のWindowsのデスクトップPCで開発した成果物をLinuxで動作しているサーバで動作させた場合は、クロス開発と呼ぶか否か?
筆者は、これをクロス開発とは呼びません。
「自分自身で開発できる環境を持ったシステム」あるいは「ターゲットのリソースがホストより大きい場合」あるいは「同じ系統のCPU(この場合はインテルアーキテクチャIA)の開発」の場合はクロス開発と呼ばないのではないか? のほうがなんだかしっくりきます。
まとめます。
筆者流クロス開発の定義
- ターゲットのソフトウェアはホストで開発
- ターゲットのリソース<=ホストのリソース
- ターゲットとホストのCPUの系統が異なる

