64ビットOS

私が主に使っているコンピュータは、
およそ4年前に買った[Dell Studo 540](Vista Home x86)です。
一度ハードディスクを交換しましたが、
静かだし、特に不満はありません。

アプリケーション・ソフトの開発者として「特に不満はない」という意味は、
このコンピュータで開発できないほど大きなプログラム、
すなわち数千万行におよびプログラムは書かないということです。

私がコンピュータを始めたころ、
コンピュータは大変高価で、大きな部屋にドンを座っていて、
夏は大型クーラーが部屋全体を冷却しなければいけない代物でした。

それでも私が初めて使ったコンピュータは16ビットOSだったと思います。
その後「発明」されたパソコンは8ビットOSだったと思います。

8ビットOSということは、何が問題かといえば、
大きなプログラムが書けないということです。

プログラムは最終的に機械語に翻訳されます。

一つの機械語命令は、[オペレータ]部と[オペランド]部からなります。
たとえば[1をアドレスAに保存せよ]という命令では、
オペレータは[保存せよ]、オペランドは[1]と[A]です。

ここで問題は[A]というアドレスです。
アドレス部に8ビット(1バイト)使うと、指定できるアドレスの数は256です。

1ビット 2
2ビット 4
3ビット 8
4ビット 16
5ビット 32
6ビット 64
7ビット 128
8ビット 256

すなわち、8ビットOSでは機械語に落ちた時のプログラムの大きさは最大256行です。

こんな小さなプログラムもパソコンが出現したときは、
みなさんはそれなりに有効に使っていました。

16ビット(2バイト)で約6万、32ビット(4バイト)で約4G(ギガ)の大きさのプログラムが書けます。
アプリケーションの開発では、16ビットコンピュータは時に小さすぎますが、
32ビットコンピュータは普通のプログラム開発では十分です。

上の議論は正確ではありません。
アドレスがバイト(8ビット)の先頭を指すのなら、
上の数はアドレスが指し示すバイトの数です。

私が機械語(アセンブラ)の勉強をしたのは昔のことで、
現在の命令がバイトをさすのかワードを指すのか知りません。

ただ、ここではアドレスの大きさが、指し示すことのできるアドレスの数の上限を決めている、
そしてバイト数による上限が幾らかを理解しておけばいいと思います。

しかしOSの立場からすると、ハードディスクは今や数テラバイトの大きさは普通になってきましたし、
大きなプログラムが何本も走ることはこれからますます増えて、
メインメモリも4Gを超えてきました。
OSは4Gを超えてメモリを管理しなければいけません。

という訳でアプリケーション開発からは必ずしも必要ないのですが、
OSのメモリ管理の立場から64ビットOSが必要になってきました(そう理解しています)。

 

前置きが長くなりましたが、
そんな訳でアプリケーション開発者である私は、64ビットOSにあまり関心がありませんでしたが、
気が付くと、世の中どんどん64ビットOSを採用しています。

私が作っているパッケージソフトも64ビットOSで動作させる必要に迫られてきました。

64ビット版パッケージソフト作成に取り掛かりました。
まず、64ビット[Windows 8]に[Visual Studio 2012 Premium]と[Office 2010]をインストールし、
この上に32ビットVistaで開発したプログラムをコピー、コンパイルしました。

意外にもコンパイルまではすんなりいきましたが、
動作させるとエラーがでます。

実はこのプログラムはデータベースにAccessを使っています。
色々試行錯誤して分かったのですが、
まず、64ビットOSには64ビットOfficeをインストールしなければいけません。
Officeを単独で使う分には32ビット版をインストールしても使えますが、
64ビットアプリケーションから32ビットAccessをコールすることはできません。
ビルドでターゲットコンピュータを32CPUと宣言すれば動作しますが、
そもそも64ビット用アプリケーションを作成しようとしているのですから、論外です。

今問題を拡大したくなかったので、
32ビット版の開発環境に近づけるために、
別のコンピュータに[Windows 7 x64]をインストールし、
32ビット版と同じ[Visual Studio 2010]と[Office 2010 x64]をインストールして、
Accessファイルも新たに作った64ビットAccessにインポートしました。
([Visual Studio 2010]そのものは32ビット製品のようです)

ビルドして、64ビット版アプリケーションが完成です。

 

つぎはセットアップ・プログラムです。
出来上がったアプリケーションソフトをユーザのコンピュータにインストールしなければいけません。

私は、ずっとセットアッププログラムに悩まされてきました。

私にとってのセットアッププログラムの必要条件は、
① プロダクトキーによるソフト管理
② ターゲットコンピュータにAccess Runtimeのような、
アプリケーションで必要なソフトが既にインストールされているかどうか検査し、
インストールされていない場合は自動でインストールする仕組み
③ Patch。
プログラムの更新で、変更部分だけの差分インストール

等です。

セットアップで一番簡単で確実なツールは、
[Visual Studio]に添付されている[Setup Project]プログラムですが、
これは上の条件の何れも満足しません(②は不十分です)。

セットアップソフトとしては、InstallShieldが一番いいのでしょうが、1本数十万円しますし、
OSが変わるとその都度バージョンアップしなければいけません。
私の立場からすれば、コストパフォーマンスの点で不採用です。

数年前、比較的安価なInstallAwareというセットアップソフトを購入したのですが、
このソフトは不具合が多いし、頻繁にバージョンアップします。
バージョンアップでなにが変わったのか分からないのです。
むしろ「バグ取りしただけだろう」といいたいくらいで、
機能的にはいいのですが不信感をもっています。

 

なので、WIX(Windows Installer XML Toolset)を使いたいのですが、
ドキュメントが少ないし、開発が遅い。
「本気で普及させる気があるのかな」と疑うほどです。

今は次のように考えています。
(何れも、32ビット版と64ビット版が必要です)

デモ版は、、[Visual Studio]に添付されている[Setup]プログラムを使う。
製品版はなんとか、InstallAwareの機嫌を取りながら使う。

幸い、WIX3.6では先の②に相当するBootostrapの機能がついたので、
将来のためにWIXを研究する。

error: コピーできません !!