豊田 孝

 本連載は,10行以内の短いプログラムを使って,Windows 2000の世界を探ることを目的とします。また,2001年10月に出荷開始予定のWindows XPが持つ機能の最新情報もできる限り紹介していきたいと思います。

 作成するプログラムはすべて10行以内ですので,プログラム内容がひと目で理解できると思います。また,プログラムを作成するために別途開発ツールを用意する必要もありません。皆さんが使い慣れているテキスト・エディタがあれば大丈夫です。今までプログラミング経験のない方も,気軽に始めてみませんか。

コントロールパネルの機能を呼び出す

図1●コントロールパネル
 連載第1回目の今回は,コントロールパネルの「日付と時刻」機能を呼び出す10行プログラムを紹介します。まず,コントロールパネル画面を確認しておきましょう(図1[拡大表示])。

 図1からも分かるように,コントロールパネルにはたくさんの機能が備わっています。中には,メニューやボタンをマウスで何度もクリックしないと実行できない機能もあります。頻繁に使う機能を呼び出したいときに,いちいち何度もマウスをクリックしなければならないのは面倒です。そこで,今回は使いたい機能を一発で呼び出すプログラムを作成することにしましょう。

ソースコードの紹介

 本日紹介するプログラムのソースコードは次のようになります。


'*********************************
'プログラム行数=7
'機能:コントロールパネルの自動化
'*********************************
'
Sub UserNeeds( )
Dim myHelper
  Set myHelper = CreateObject("Shell.Application.1")
  myHelper.SetTime
  Set myHelper = Nothing
End Sub
Call UserNeeds( )

 このプログラムは「日付と時刻のプロパティ」ダイアログを呼び出します。このソースコードをテキスト・エディタなどで打ち込んだら「userneeds.vbs」のように,拡張子「.VBS」という名前で保存します。このソースコードは,VBScriptという言語で記述しています。VBScriptで記述したプログラムは「.VBS」という拡張子を持ち,Windows 2000/XP上では,VBSファイルのアイコンをダブルクリックするだけで自動的に実行できるのです。  このソースコードをMicrosoftのJavaScriptであるJScriptで記述すると次のようになります。このソースコードをファイルとして保存する場合は,「userneeds.js」のようにJavaScriptを表わす「.JS」を拡張子にします。


/*
'*********************************
'プログラム行数=8
'機能:コントロールパネルの自動化
'*********************************
*/

function userneeds( )
{
var myHelper;
  myHelper = new ActiveXObject("Shell.Application.1");
  myHelper.settime ( );
  myHelper = null;
}
userneeds( );

図2●Windows 2000での実行画面
 今後の連載で紹介するプログラムも,今回のプログラム同様,VBScriptとJavaScriptの二本立てで紹介していきたいと思います。ただしソースコードの解説は,VBScriptのプログラムを中心とします。この点はご了解ください。

 それでは,このプログラムをWindows 2000(図2[拡大表示]),Windows XP(図3[拡大表示])でそれぞれ実行してみましょう。

 この2つの画面を比べると,Windows XP(5月14日現在β2)ではユーザー・インタフェースがかなり変更されることが分かるでしょう。RCと呼ばれる製品候補版がまもなく公開されるようですが,内部がどのように変更されるのか楽しみです。

他のプログラムを“再利用”する

図3●Windows XPでの実行画面
 私たちの社会は分業社会です。つまり,各々が自分一人の力で生活しているのではなく,各人がお互いに協力し合って,力を貸し合いながら生活しているのです。

 ソフトウエアの世界でも,これとまったく同じことがいえます。ソフトウエア開発は分業化されており,個々の開発者は他の開発者が作ったプログラムの機能で,自分のプログラムで使えるところは使いながら(再利用といいます),自分の担当プログラムを完成させているのです。こうすることで開発を効率化できます。

 先ほどに紹介したプログラムは他の開発者の作り出したプログラムの機能を再利用しています。逆にいえば,他の開発者が用意したプログラムを再利用しなければ,「10行以内」という条件をクリアすることはできないのです。

 私たちが,友人に相談を持ちかける場合を考えてみましょう。相談に乗ってもらうために,友人を近くの喫茶店に呼び出すこともあるかもしれません。この日常的な行為をプログラミングに当てはめると,「再利用するプログラムをメモリーにロードする」といえます。この処理を担当しているのが,次のようなコードです。

(VBScriptコード)
Set myHelper = CreateObject("Shell.Application.1")

(JScriptコード)
myHelper = new ActiveXObject("Shell.Application.1");

 これは先ほどの例に当てはめると,相談を持ちかける友人を喫茶店に呼び出したことになります。ソースコード内の“myHelper”は,プログラミングでは「変数」と呼ぶものですが,これは相談相手を呼び出した喫茶店に相当します。“Shell.Application.1”が呼び出した相談相手,つまり今回再利用するプログラムです。このプログラムはだれが作成したのでしょう? 答えは,Windowsの開発者です。Shell.Application.1は,Windowsに標準で備わっているプログラムです。このプログラムをCOM(Component Object Model)コンポーネントと呼びます。WindowsにどんなCOMコンポーネントが備わっているか,各COMコンポーネントはどんな機能を持っているかを調べる方法については,この連載では詳しく取り上げません。COMの専門書籍も数多く出ていますので,興味のある方は探してみるとよいと思います。

 相談相手を呼び出せればこちらのものです。「実は頼みたいことがあるんだけど…」などと,相手の力量に応じて相談を持ちかけます。上のプログラムで言えば,次のようなコードが依頼処理を担当しています。

(VBScriptコード)
myHelper.SetTime

(JScriptコード)
myHelper.settime ( );

 このコードから依頼内容を想像できるでしょうか? この“myHelper”は喫茶店を指していることは間違いないのですが,喫茶店そのものではなく,正確には喫茶店内にいる相談相手ということに注意してください(喫茶店自体に相談を持ちかけることはできませんね。)。このソースコードは,相談相手にsettimeという依頼を持ちかけていることを示しています。友人である○○太郎に「俺の代わりにあれやって!」という日常の行為をVBScriptで記述すると,次のようになるでしょう。

Set myHelper = CreateObject("○○太郎")
myHelper.あれやって

 プログラミングでは,“あれやって”や“settime”をメソッドと呼びます。このsettimeメソッドは,名称から想像できるように「時間を設定する」という機能を表します。今回のプログラムは,Shell.Application.1というプログラムに「正確な時間を設定したいから,君の力を貸して」と相談を持ちかけているのです。このsettimeを呼び出すと,図2,図3のような「日付と時刻のプロパティ」が表示されるというわけです。意外と簡単でしょう? 実は,Javaや,Microsoftが新しく開発したC#(シーシャープと読む)をはじめとするプログラミング言語の多くは,「プログラムを再利用する」,という考え方で設計されているのです。

 次回は,“このファイルはいつ作成したのだったかな”,といった私たちに身近な問題を10行プログラム内に記述し,その動作を通して,Windows 2000/XPの世界を具体的に覗いていくことにします。

 私たちが日常生活を送る上で,友人を持つことは大切です。困ったときには,よき相談相手にもなってくれます。実は,Windows 2000/XPの世界には,私たちのよき相談相手がたくさんいるのです。それはいったい何でしょうか。次回またお会いいたしましょう。ごきげんよう。