前回前々回は,米Microsoftが公開するWindows XP Service Pack2(SP2)と,新しくダウンロードできるようになったツールを紹介しながら,WindowsユーザーとMicrosoft社に求められているのは「発想の転換」であることを学びました。今回は,新しい社会人を迎える4月ということもあり,多少趣を変え,単純なサンプル・プログラムを動作させながら,「発想の転換」が要求される時代の中でさらに伸ばしてほしいWindowsの長所について考えてみることにします。

 この連載ですでに何度も紹介しているWindows XP SP2のホワイトペーパーの作成者は,「Introduction」で次のようなことを述べています。

オペレーティング・システム開発の歴史は,使いやすさとセキュリティ間の調和を求める闘いであった。

 この連載では,これまでどちらかといえば,Windowsオペレーティング・システムをセキュリティという視点から眺めてきました。しかし,この文章が述べているように,Windowsオペレーティング・システムを見る場合,「使いやすさ」という視点も重要です。

 では皆さんは,「使いやすいOS」とはいったいどのようなOSだと思いますか? おそらく,ほとんどの皆さんは,「優れた操作性を提供するグラフィカル・ユーザー・インタフェース(GUI)を備えたOSだろう」,と回答すると思います。確かに,こちらの記事を読むと,その回答は正しい,と言ってよいでしょう。しかし筆者は,GUIを備えるだけでは不十分,と考えている1人です。筆者の回答は,次のようなものです。

使いやすいOSとは,分かりやすいOSである

 そのOSの世界が分かりやすくなっていれば,次々に一般公開される最新ツールやGUIの意味を簡単に理解できます。さらに言うと,そのOSの世界が分かりやすくなっていれば,自分のニーズにあったツールを簡単に自作できるようにもなります。それでは,OSの分かりやすさとはいったい何なのか,単純なサンプル・プログラムを通して考えることにしましょう。

今回のサンプル・プログラム

 これから紹介するサンプル・プログラムはこちらからダウンロードできます。このサンプル・プログラムの最大の特徴は,次のソースコードにあります。

For Each oObject_2 In oObject_1

(一部省略)

For Each oObject_3 In oObject_2.Properties_
pCount = pCount + 1
strResult_1 = strResult_1 & strBreak & "No." & pCount & ": <b>" & oObject_3.Name & "</b>===> 格納値の型は<b><u>" & TypeName (oObject_3.Value) & "</u></b>です。"
Next

(一部省略)

Next

 プログラミング経験の豊富な方には見慣れたコードです。しかし,これからプログラミングを学習しようと考えている人にとっては,かなり難しいソースコードに映っていると思います。ここでは「単純な繰り返し処理が行われている」と考えておいてください。ご承知のように,決められた単純な処理は,私たち人間よりもコンピュータのほうが得意です。このソースコードは,図1[拡大表示]のような結果を表示します。

図1●svchost.exeプロセスの「プロパティ」情報
図2●Windows XP Professionalのプロパティ情報
図3●COMPUTERのプロパティ情報
 図1の画面は,前回説明したsvchost.exeプロセスの「プロパティ」情報を示しています。プロパティそのものについては後ほど少し説明しますが,個々のプロパティの詳しい意味については今回は説明いたしません。それでは今度は図2[拡大表示]の画面をご覧ください。

 図2の画面は,svchost.exeプロセスではなく,Windows XP Professionalオペレーティング・システムのプロパティ情報を示しています。これら2つの異なるプロパティ情報を表示するためには,上に示したソースコードの一部を変更する必要があると思いますか? 結論を先に言うと,上に示したソースコードは1行も変更する必要はありません。念のために,もう1つ別の画面も紹介しておきましょう(図3[拡大表示])。

 ご覧のように,今度はWindows XP Professionalオペレーティング・システムではなく,COMPUTERのプロパティ情報を表示しています。今回も上のソースコードは1行も変更していません。同じコードを繰り返し使用していますが,不思議なことにまったく異なる情報が返されます。しかも,すべての情報は大変貴重なものばかりです。

 さらにいえば,このサンプル・プログラムを記述したプログラミング言語は,VBScriptというWindows付属のものですから,Windowsユーザーなら無料でその場で使えます。サンプル・プログラムを実行するために,Microsoftのサイトから特殊なプログラムをダウンロードする必要もありません。

 これまで紹介したソースコードは,次のようなきわめて単純な考え方をコンピュータ・プログラミングの世界に適応しているにすぎません。

私たちすべての人間はそれぞれ特徴を持っている

 この文で言う「特徴」は,先ほどから何度も登場している「プロパティ」に相当すると考えてよいでしょう。「私たちすべての人間はそれぞれ特徴を持っている」。これはたいへん分かりやすいと思いませんか? 例えば,顔という特徴があって,それは丸顔であったり,四角かったりします。性格という特徴では,やさしかったり,怒りっぽかったり,その状態は1人の人でもときにより変化します。「人の特徴は状態を持ち,その状態は変化する」というわけです。この表現をさらに一般化すれば,「ものには状態があり,その状態は常に一定ではない」などとなります。

 こうした私たちの当たり前の考え方は,そのままWindowsの世界を理解するために役に立ちます。例えば,Windows XPには,現在適応されているサービスパックのバージョンがあります。これは表現を変えれば,「Windows XPはサービスパックのバージョンという特徴を持っている」となります。今回のサンプル・プログラムを実行すると,次のような情報を表示させることができます。

No.45: ServicePackMajorVersion===> 格納値の型はLongです。
No.46: ServicePackMinorVersion===> 格納値の型はLongです。

 この情報は,ServicePackMajorVersionとServicePackMinorVersionという2つの特徴があり,それぞれの特徴の状態はLong型の数値として登録されていることを示しています。これら2つの特徴の状態は,SP2を適応すれば,当然変化します。

 今回は値の取得方法は説明しませんが,きわめて簡単なコードを追加するだけでその作業は完了してしまいます。メモリー情報も今回のソースコードをほんの少し変更するだけで表示させることができます。

Windowsの分かりやすさと普遍性

 これまでの説明を読みながら,Windowsの世界がたいへん分かりやすくなっていることはご理解いただけたと思います。しかし,皆さんの中には,「確かにその通りかもしれないが,その考え方に普遍性はあるのか?」と一抹の不安を持つ人もいるかもしれません。

 結論を先に言うと,「普遍性はある」となります。上に示したソースコードは,技術的には,「コンテナと関連アルゴリズム」で構成されています。少し学習すれば,誰でも習得できる技術です。そして,これがたいへん重要なことなのですが,(標準)C++の生みの親であるBjarne Stroustrup氏も「コンテナと関連アルゴリズム」(つまり,標準ライブラリ)をまず学習することを唱えているのです。事実,上に紹介したソースコード内の「For~Next」と「For Each」文の考え方は,標準C++はもちろん,最新プログラミング言語であるC#にも採用されています。

Windowsの分かりにくさとセキュリティ

 Windowsにはすでに説明したような「分かりやすさ」という長所があります。その一方で,Windowsはセキュリティ問題という乗り越えるべき壁に直面しています。SP2の出荷はその壁を乗り越えるための努力の1つです。この努力が効果を発揮するかどうかは,残念ながら,誰にも予測できません。Bjarne Stroustrup氏は,著書「The C++Programming Language」(Special Edition)の中で,次のようなたいへん厳しい認識を示しています。

“汎用言語の悪用を防止できるのは,ハードウェアだけである。現実には,これさえ難しい。”(ページ226)

 文章内の「"汎用言語」はC++を指していると考えるのが自然です。Stroustrup氏のこちらのページを見る限り,Microsoft社の多くの製品はC++で記述されています。こうした事実を総合的に整理すると,確かに「SP2には限界がある」という結論が出てしまいますが,筆者は,根本的な原因は別のところにあると考えます。それは,何人もセキュリティ問題を分かりやすく説明できていない,つまり,セキュリティ問題の発生原因は現状では分かりにくい,ということです。分かりにくい問題への解答を見つけ出す作業はたいへん困難なものであり,予想以上の時間(と経費)がかかるのは自明なことです。

 このため,皆さんが(セキュリティ機能を含めて)Windowsの「分かりにくい」,あるいは,「使いにくい」という機能に遭遇した場合には,Microsoftの担当開発チームは,「分かりやすい説明を今模索しているところに違いない」,と考えるとよいかもしれません。筆者は「Windowsの分かりにくい機能や難解なプログラミング・モデルは将来必ず変更される」,と単純に割り切ることにしています。ちなみに,Stroustrup氏は,使用してほしくない(危険な)C++機能の構文は「醜く」設計している,と述べています。

本日のまとめ

  • Windows開発者は使いやすさとセキュリティのさらなる改善を目指している
  • Windowsの世界は分かりやすい世界である
  • Windowsの分かりやすさには普遍性がある
  • Windowsの分かりにくい機能は将来変更される可能性がある

 本日は以上で終了です。次回またお会いいたしましょう。ごきげんよう!