日経ソフトウエア4月号で「だれでも作れるインストール・プログラム」という特集を書いた。Windowsにおけるアプリケーションのインストール作業とはそもそも何なのか,それを行うインストール・プログラム(インストーラ)はどう作ればいいのか,インストーラの作成を支援する開発ツールにはどんなものがあり,どのように使えばいいのか,そうした話題を誠実に論じたつもりである。

 ただ,この特集の中で,筆者が非常に疑問に思い,迷いながら,結局正面切って議論しなかったトピックがある。「Windowsアプリケーションを構成するファイルは,Program Filesフォルダ(ディレクトリ)の下にコピーされるべきなのか?」がそれだ。

 一つ仮定の話をしよう。

「お父さんがいないとインストールできない!」――ある中学生の悲劇

 中学生の一郎クンは期末テストを控えている。友達の次郎クンによれば,日本史の年号を覚えるのにピッタリのフリー・ソフト「年号バスター」があるという。語呂合わせが傑作なだけでなく,イラストがきれいで,史実の連続的なストーリー性が頭にすっと入ってきて,「これさえあれば社会のテストはバッチリ」なのだそうだ。

 電子メールでURLを教えてもらってダウンロードし,一郎クンは一安心。社会のテストはまだ先なので,ひとまず英語の勉強に力を注ぐことにした。

 英語のテストも終わり,明日はいよいよ社会のテストである。一郎クンは年号バスターをインストールしようとした。ところが,インストールの途中でエラーが発生し,異常終了してしまう。

 一郎クンの家にあるパソコンはWindows XP Homeを搭載した最新マシンで,お父さんが管理者,一郎クンは一般ユーザーだ。XPマシンを買う前も,お父さんとはWindows 98搭載のパソコンを共有していたが,こんなことはなかった。

 顔面蒼白の一郎クンは,「管理者でないとインストールできないのか?」と次郎クンに電話をかけてみた。次郎クンは「うちもWindows XPだし,僕は一般ユーザーだけどインストールできたよ」とのこと。

 一郎クンは他の方法で勉強をしようとするものの,どうにも年号バスターのことが気になって仕方がない。お母さんはお父さんに電話してみたが,電波が届かない。悪いときには悪いことが重なるもので,普段あまりないことなのに,お父さんが帰宅したのは太陽がのぼったころであった・・・

 一郎クンのパソコンと次郎クンのパソコンは何が違ったのだろうか? 

XPプリインストール機の多くはNTFSでフォーマットされている

 一郎クンのパソコンはWindows XPプリインストールで,ハード・ディスクがNTFSでフォーマットされていた(Windows XPプリインストール機の多くはこうなっている)。次郎クンのパソコンはWindows XPをアップグレードで入れ,ディスクのフォーマットは以前のFAT32のままだった。

 NTFSではフォルダごと,ファイルごとにユーザー権限の設定が施される。FATにそんな機能はない。年号バスターのインストーラは「Program Filesフォルダの下に年号バスターというフォルダを作り,そこにファイルをコピーします。フォルダを変更したい場合には参照ボタンを押してください」と丁寧に説明していたのだが,一郎クンは「次郎クンがデフォルトのままでうまくいったのだから」と思い,ここを変えようとは思わなかった。

 年号バスターのインストーラは,一郎クンが書き込み権限を持っていないProgram Filesフォルダに新しいフォルダを作ろうとし,そこで失敗し,異常終了したというわけだ。

 さて,悪いのはだれだろうか? お父さんだろうか? 確かにお父さんが一郎クンに管理者権限を与えておけば今回の災いは避けられた。でも,後で分かったことだが,それまでWindows 98を使っていたお父さんは,NTFSのことは知らなかった。一郎クンにソフトのインストールを禁止するつもりはなかったのである。

 悪いのは一郎クンだろうか? 一郎クンは「インストールできないかもしれない」というリスクを認識していなかったし,インストールが失敗した理由を見抜くこともできなかった。でも,その理由で一郎クンを責めるのは酷というものだろう。

 年号バスターの開発者が悪いのか? でも彼は,米Microsoftが発行している技術文書「Windows 95 Application Setup Guidelines for Independent Software Vendors」(これはとてもよくできた文書で,今でも“現役”だ)の記述にしたがって,Program Filesフォルダの下に独自のフォルダを作ろうとしただけなのだ。それをユーザーに知らせ,変更の機会も与えている。

 年号バスターの開発者は,NTFSにWindows XPをインストールし,そこにユーザー権限でログインしてインストールをするテストはしてはいなかったかもしれない。でも,OSとファイル・システムとユーザー権限とを掛け合わせただけでも,テストしなければならない組み合わせは大変な数になる(エディションやサービスパックを除いてもだ)。すべての組み合わせでテストができるソフト開発者はどれくらいいるんだろうか?

 じゃあMicrosoftが悪いのか? うーむ,記者としてはそう言いたくはない。ありきたりな意見で面白みがないからだ。ただ,全体として打開策がないわけではない,とは思う。

複数ユーザーがマシンを共有する利便性では,Windowsにはまだ課題がある

 打開策の一つは,オンライン・ソフトでよく見られるタイプのシンプルな開発手法だ。ユーザーには,(1)フォルダを作り,書庫ファイル(LZHファイルやZIPファイル)の中身をそこに復元してください,(2)EXEファイルを起動してください,とのみお願いをする。

 この方法は,ユーザーのシステム環境に影響されることも,することも少ない。年号バスターがこういう手法で作られていれば,一郎クンが困惑することはなかったはずだ。ただ,この方法では,どんなEXEファイルを作るかが問題になってくる。また,これはMicrosoftの意向をハナから無視した方法なので,企業は採用をためらうかもしれない。

 もう一つは,インストーラを徹底して作りこむことだ。最初にユーザー権限やフォルダの設定を把握し,それに応じてインストールの手順を変えればいい。簡単とは言わないが,不可能ではないだろう。

 WindowsではなくLinuxの話だが,ボーランドのKylixのインストーラは良くできていた。スーパーユーザー(root)がインストールすれば一度のインストールですべてのユーザーがKylixを使えるようになる。一般ユーザーがインストールする場合には,そのユーザーだけが使えるようになり,他のユーザーには影響を及ぼさない。

 ちなみに,後者の方法を使うと1台のLinuxマシンに異なるエディションやバージョンのKylixをたくさんインストールして使うことも可能で,Kylixの連載を担当している記者はとても助かっている。

 Windowsはパソコンであり,後にサーバーになった。パソコンとして使うならユーザーすべてに管理者権限を与えればいいし,サーバーとして使うなら一般ユーザーがソフトをインストールすることはありえない,そういう考え方なのであろう。

 1台のコンピュータを複数のユーザーが使う場合の利便性では,Windows(とWindowsアプリケーション)はUNIX/Linux/FreeBSDに追い付いていない。将来も難しいかな?

(原田 英生=日経ソフトウエア)