本講座も最終回を迎えました。今回はWindows 2000の特徴の1つであるアクティブ・ディレクトリを取り上げます。アクティブ・ディレクトリ機能を利用するには,Windows 2000 Server以上の製品と,それを核にしたネットワーク環境が必要になります。一部の方はサーバーr機能を備えるWindowsオペレーティング・システムをお持ちでないでしょうから,ここでは「アクティブ・ディレクトリ」を「情報を管理するためのツール」と考え,このツールを導入するとどのようなことができるのかを紹介したいと思います。

「アクティブ・ディレクトリ」のインストール

図1●アクティブ・ディレクトリをインストールするウィザード
 アクティブ・ディレクトリは,Windows 2000 Serverで図1[拡大表示]のようなウィザードを起動して,インストールするのが普通です。この画面を見て分かるように,Windows 2000は,サーバー機能をインストールするための多数のウィザードを用意しています。このため,アクティブ・ディレクトリのインストールは,ウィザードの指示に従うだけで大丈夫です。

アクティブ・ディレクトリとは何かを考えてみる

 今回は最終回ということもあり,これまでの講座で取り上げた内容を生かしながら,Windows 2000の最新機能であるアクティブ・ディレクトリを紹介したいと思います。

 第1回と第3回では,Messengerサービスの「コンソールメッセージの送信」機能を紹介し,「受信者」欄にさまざまな情報を指定できることを説明しました。そこで取得した知識はそのままアクティブ・ディレクトリに応用することができます。

 また,第4回では,プロセスやスレッドを解説した文脈内で,Windows 2000が内部で作成管理しているプロセス・データベースやスレッド・データベースに言及しました。そのとき,データベースへのアクセス方法がわかれば,目的のプロセスやスレッドに関する情報を取り出すことができると申し上げたと思います。その具体的な例が「SPY++」プログラムであったわけです。データベースとアクセス方法を理解するという考え方は,そのままアクティブ・ディレクトリでも通用します。ここでは,アクティブ・ディレクトリを次のように定義します。

“アクティブ・ディレクトリは,Windows 2000サーバーに置かれ,ネットワーク内のさまざまな情報を格納するためのデータベースである。”

 皆さんはすでに,ネットワーク内のサーバーにアクセスするための方法は知っています。忘れてしまった方は,Messengerサービスの「受信者」欄にどのような情報を入力したかを思い出してください。残っているのは,Windows 2000 Professionalマシンから,Windows 2000 Server上に置かれているアクティブ・ディレクトリという名称のデータベースにどのようにアクセスするか,ということだけです。

 第4回では,プロセス・データベースとスレッド・データベースに言及し,それらのデータベースはシステム・データベースである,と述べたと思います。つまり,Windows 2000というシステムが私的に使用する特殊なデータベースであったわけです。このため,そのようなシステムデータベース内容を勝手に修正されると,Windows 2000は困ってしまいます。そこで,システムに精通したプログラマだけがアクセスできるように,システムデータベースにアクセスするための情報を制限しています。私はこのような事情を,“データベースへのアクセス方法さえわかれば,必要な情報を取り出すことができる”と表現したのです。

 ところが,アクティブ・ディレクトリはWindows 2000システムが私的に使用する特殊なデータベースではありません。すでに述べましたように,このデータベースには私たちユーザーが作り上げたネットワーク情報を自由に格納できます。私たちが格納したデータは好きなときに遠慮なく読み出したり,あるいは,新しいデータを書き込み自由に修正できなければなりません。アクティブ・ディレクトリはこれらの操作をすべて可能としています。しかし,問題はアクティブ・ディレクトリにどのようにアクセスするかということです。

 通常は,サーバー管理者が「管理ツール」を通してアクセスします。しかし,時にはWindows 2000 ProfessionalからWindows 2000 Serverに置かれているアクティブ・ディレクトリにアクセスする必要もあります。サーバー管理者は一部の管理作業を「委任」できるのです。このため,皆さんが作業の一部を幸運にも「委任」された場合,ProfessionalマシンからServerマシン上のデータベースであるアクティブ・ディレクトリを操作しなければなりません。このような場合,プログラミング言語を習得しておくと便利です。プログラミング言語にはVisual C++,Visual Basic,アセンブラなどがあります。米Microsoftは「C#」という,Visual BasicとVisual C++を折衷したような新しい言語も発表しました。今回は,Visual Basicを軽量化した言語であるVBScriptという言語を使用します。ただし,プログラミングの詳細は解説しませんから,後日サンプル・プログラムをご自分のネットワーク環境で試されてください。

図2●アクティブ・ディレクトリの起動画面
 ダウンロードできるサンプル・プログラム内では,データベースの変更を伴う操作ではなく,必要な情報を取り出す処理のみを行っています。もちろん,後で説明するコード修正を行ってから実行する必要があります。

アクティブ・ディレクトリにアクセスするサンプル・プログラム

 アクティブ・ディレクトリをインストールした直後は,通常は図2[拡大表示]のようなディレクトリ構成になっています。この画面を見て「Windowsエクスプローラが表示するディレクトリ階層と変わらないじゃないか」と思った人もいるでしょう。その通りなのです。Windows 2000 Server環境では,「管理ツール」内からアクティブ・ディレクトリにアクセスするためのツールが起動できます。そのツールを使用すれば,Windowsエクスプローラ内でファイルを作成したり,削除するのと基本的に同じように作業ができます。今回はせっかくですから,単純なプログラムを紹介しながら,アクティブ・ディレクトリへのアクセス方法を解説します。

図3●Usersディレクトリに登録された情報を表示する
 「nikkeiread.vbs」というプログラムをダウンロードし,必要な修正を行った後で実行すると図3[拡大表示]のような画面が表示されます。

 これは先ほど紹介したアクティブ・ディレクトリ内の「Users」というディレクトリに登録された私の情報を表示しています。皆さんもネットワーク・ユーザーとなっている場合には,ログイン名やパスワードなどが必ず登録されます。アクティブ・ディレクトリの場合,ログイン名などだけではなく,電話番号やメール・アドレスなどのさまざまな関連情報を登録することができるのです。この実行画面では,事務所の位置やちょっとしたコメントも登録しています。アクティブ・ディレクトリはあくまでもデータベースですから,このようなことが可能なのです。今回はWindows 2000 ProfessionalからWindows 2000 Server上のアクティブ・ディレクトリへの書込み操作は説明しませんが,将来は必要な情報を自由に書き込みたいですね。それでは,アクティブ・ディレクトリにアクセスするためにはどのような情報が必要なのかを見ていきましょう。

まず,次のような情報を見ていただきます。

http://ttoyota.com/Users/Takashi_Toyota/

 これは皆さんがよく見かけるインターネット上のホームページにアクセスするためのURLアドレスです。URLアドレスについては説明を割愛します。それでは今度は次の情報を見ていただきましょう。

LDAP://ttoyota.com/CN=Takashi Toyota,CN=Users,DC=ttoyota,DC=com

 これは,私のWindows 2000 Server上に置かれているアクティブ・ディレクトリ・データベース内のTakashi Toyotaというネットワーク・ユーザーにアクセスするための情報です。基本は,URLアドレスと同じです。

 URLアドレスの先頭にある「http://」はインターネット上で通信するために使用する規約を理解できるサーバー指定しています。通信規約は一般にはプロトコルなどと呼ばれています。アクティブ・ディレクトリの場合,先頭は「LDAP://」となっています。実はこれもプロトコルなのです。LDAPは,Lightweight Directory Access Protocolの略称で,標準プロトコルの1つとしてすでに認知されています。Windows 2000では,アクティブ・ディレクトリというデータベースにアクセスための手順として,業界団体が規定したLDAPというプロトコルを採用しているわけです。第4回で紹介したスレッド・データベースなどのWindows 2000システムが使用する特殊なデータ-ベースは,そのような標準プロトコルを採用していませんから,情報が公開されず,結果的に一般ユーザーはアクセスできないわけです。

 LDAP://の次には,アクティブ・ディレクトリが置かれているドメインの名前を指定します。最後は,ドメイン内部のディレクトリ階層構造を指定します。このため,日常的に利用しているファイル・ディレクトリに準じて記述すれば,次のように書き換えることもできます。

LDAP://ttoyota.com/DC=COM/DC=ttoyota/CN=Users/CN=Takashi Toyota

 これでも立派なアクセス情報です。これは,ドメイン・ディレクトリを上位から下位方向に向かって表現しています。皆さんが実際に自分のネットワーク内のアクティブ・ディレクトリにアクセスする場合には,最後のCN=Takashi Toyotaの部分をネットワーク管理者から知らせてもらえればよいだけです。例えば,皆さんがNikkei Taroというユーザー名でアクティブ・ディレクトリに登録されている場合には,次のようなアクセス情報を用意します。

LDAP://ttoyota.com/CN=Nikke Taro,CN=Users,DC=ttoyota,DC=com

あるいは,

LDAP://ttoyota.com/DC=COM/DC=ttoyota/CN=Users/CN=Nikke Taro

アクティブ・ディレクトリと「情報の管理」

 すでに述べましたように,アクティブ・ディレクトリはデータベースです。このため,データベースにアクセスするためのプログラムが必要です。「アクティブ・ディレクトリ」をインストールしたWindows 2000 Serverには,すばらしいGUIを持つ専用プログラムが用意されています。しかし,VBScriptなどをはじめとする簡易スクリプト言語で自分なりの管理プログラムを作成するのはそれほど難しい作業ではないのです。表現を変えると,アクティブ・ディレクトリはちょっとしたプログラミング知識があれば,簡単に情報の読み書きができるように設計されているのです。

図4●ネットワーク・カードの情報を表示する
 少し専門的な話になりますが,「オブジェクト指向」,「クラス継承」などという「再利用技術」を応用しているのが,アクティブ・ディレクトリなのです。例えば,新しく購入したパソコンを想像してください。ほとんどの構成部品は標準化され,その性能がちょっと違うだけです。基本的には,CPU,メモリー,ネットワーク・カード,モデム,ビデオ・カード,CD-ROM(あるいはDVD-ROM)といった共通部品を使っていることでしょう。

 ほとんどのパソコンがこのような部品を必ず持っているのであれば,1つのプログラムを作成すれば,新たに購入したパソコンの情報を収集し,管理することは可能です。例えば,図4[拡大表示]の画面を見てみましょう。

 これは私のネットワーク・カードの情報です。ネットワーク・カードはいわばハードウエアですが,この情報を表示するプログラムは異なるネットワーク・カードの情報も表示するはずです。IPアドレスやPNPデバイス名などの情報項目の中身はネットワークカードごとに異なりますが,情報項目自体は変わらないはずです。アクティブ・ディレクトリの場合,これをさらに推し進めています。「新しいデータをデータベースに登録するときには,この情報は必ず継承しなければならない」と決めているのです。このため,私の方で用意したサンプルプログラムは,どのネットワーク・ユーザーの情報でも収集できます。

サンプル・プログラム実行上の注意

 詳細はソースコード内に明記しておりますが,次の2点の修正は必ず行ってください。

・ttoyota.com:管理者に相談し,ドメイン名を教えてもらってください。
・CN=Takashi Toyota:アクティブ・ディレクトリに登録されているネットワーク・ユーザー名を指定してください。管理者の方に「私のディスプレイ名を教えてください」と尋ねてください。

 セキュリティなどは,ネットワーク管理者によってはかなり厳しく設定していることも予想されます。その際には,このプログラムを見せて,害のないことを理解してもらってください。

第5回のまとめ

 最終回である今回は,Windows 2000の最新機能である「アクティブ・ディレクトリ」を取り上げました。いかがだったでしょう。

 アクティブ・ディレクトリは難しい,という印象を与えているようですが,Windowsエクスプローラ,URLアドレス,データベースなどの日頃の知識があれば,それほど遠い存在ではないことがおわかりいただけたと思います。アクティブ・ディレクトリはデータベースであることを忘れないようにしましょう。

 皆様の今後のご発展を祈念し,5回シリーズの講座を終了させていただきます。ご閲覧ありがとうございました。