パソコンでプログラミングしよう ウィンドウズC++プログラミング環境の構築
1.6.3.6(15)
アーキテクチャ

アーキテクチャはコンピュータ(特にハードウェア)における基本設計や設計思想などを意味する。

その他の外部情報

本サイトでの解釈

アーキテクチャは、大胆にはインテル系CPUとモトローラ系CPUに分類できる。ウィンドウズの稼働するパソコンはほぼ例外なくインテル系(x86アーキテクチャ)で、通常はビットサイズのみを意識すれば良い。ウィンドウズは32ビットx86アーキテクチャをx86アーキテクチャ、64ビットx86アーキテクチャをx64アーキテクチャとして参照することが多いので、注意が必要である。本サイトでも特に断らない限りこの慣例に従う。なおウィンドウズ10バージョン1709から対応アーキテクチャにARM64が追加されているようだが、本サイトはこれを無視する。

32ビット/64ビット

開発アプリケーションのターゲットを32ビットとするか64ビットとするか。現在ではウィンドウズパソコンのほとんどが64ビット(x64)で64ビットウィンドウズがプリインストールされていると思われるが、廉価なタブレットパソコンなどに32ビット(x86)が残る。64ビット(x64)にあえて32ビットウィンドウズをインストールして運用するケースも考慮しなければならない。

  • 32ビットウィンドウズは32ビットアーキテクチャ(x86)と64ビットアーキテクチャ(x64)で稼働できるが、64ビットウィンドウズは64ビットアーキテクチャ(x64)でしか稼働できない。
  • 32ビットアプリケーションは32ビットウィンドウズと64ビットウィンドウズで稼働できるが、64ビットアプリケーションは64ビットウィンドウズでしか稼働できない。
  • 64ビットアプリケーションは32ビットアプリケーションに比較して高速で大量のデータが扱える(理論上は)。

ほとんどの場合64ビットアプリケーションの32ビットアプリケーションに対する優位性を感じることはないだろう。あなたの使うマイクロソフトオフィスは恐らく32ビット版であろうし(過去資産との継続性からマイクロソフトは長い間32ビット版を推奨してきた)、そのことで不具合を感じることはほとんど無かったのではないだろうか。

本サイトでの開発アプリケーションは以下のターゲットを選択できるようにする。

  • 32ビットアプリケーションのみ
  • 64ビットアプリケーションのみ
  • 32ビットアプリケーションと64ビットアプリケーションの両方

エンディアン

ウィンドウズでプログラミングする限り他のアーキテクチャを意識する必要は少ないが、エンディアン(バイトオーダ、バイト順)が問題となる場合がある。エンディアンとは複数のバイト(8ビットデータ)を並べる順序であり、16(32,64,...)ビットデータをバイト列に並べるとき上位から並べればビッグエンディアン、下位から並べればリトルエンディアンという。

インテル系はリトルエンディアン、モトローラ系はビッグエンディアンなので、両者間で16(32,64,...)ビットデータをバイト列を介して交換(ファイル、ネットワーク)すると問題が発生する可能性がある。ネットワークは初期にモトローラ系で発展したため現在でもビッグエンディアンがデフォルトと見なされている。例えばユニコード(UTF-16あるいはUTF-32)のバイト列において規格とウィンドウズ慣用が異なる場合がある。