「5.0を待ちながら」連載 NT5.0エッセイ

Chapter 2 -Activeのすべて-

BY KEITH WALLS 翻訳 濱田 貴浩

 MicrosoftのWindows NT開発チームはWindows NT Version5.0(以下NT5.0)の開発についてよく考えていたのだろう.NT5.0で導入された大量の新しい技術は,今までの技術を拡張したものなど,直接関連しているものばかりである.このように機能を上乗せしていく戦略と,より複雑なシステムを構築していくアプローチは信頼性と堅牢さが必要になる.

 NT5.0が出荷された時,Active Directoryの機能の多さに驚かされるだろう.MicrosoftはActive DirectoryのアーキテクチャーをNTの階層の非常に低レベルから実装しており,NT5.0について評価するにはまずActive Directoryサービスの分析から始めるべきだろう.

 Microsoft製品の名前に付く“Active”には2つの意味がある.1つはオブジェクトインターフェースなどを通じて「ネットワーク内で分散されている」という意味である.もう1つは,ローカルとネットワーク上のリモート環境の変化に適応できるソフトウエアという意味で,業界用語で“Dynamic”と呼ばれているものに近い.

 ネットワーク,サーバーベースの分散アプリケーション,オブジェクトの階層構造はいろいろな意味で有益であり,そのインターフェースは公開されるべきである.ここ2,3年で過剰なまでに新しい分散オブジェクトの製品や,標準化提案,ベースとなるオペレーティングシステムがサポートするメカニズムを見てきた.

 リモートオブジェクトの設置タスクやリモートオブジェクトが存在した場合の通信方法の定義以外にも“Active”オブジェクトを追求しようとするといくつかの問題がある.要点だけを言うと,この説明は,COM,DCOM,COM+とActiveXの機能をまとめたものと同じである.ではなぜこのActive Directoryが話題になるのか?それは,基本的にネットワーク内のさまざまなオブジェクトを認識する必要はあるが,それらオブジェクトやそれぞれのオブジェクトの種類を認識するメカニズムを考え出さずに済む方法,それがActive Directoryだからである.

何のDirectoryか?

 第1段階としてActive Directoryはポインターや数種類のオブジェクトの番号の記述を含んでいるかもしれない.
 そこで,似たようなケースであるオペレーティングシステムのファイルシステムから見ていくとしよう.ファイルはターゲットオブジェクトであり,ファイルシステムのディレクトリーは実際のディスク上のファイルの位置情報を持っている.RAIDやほかのマルチディスク環境を除いて,ほとんどの場合は名前空間で区切られている.その名前空間は,オブジェクトのスコープを解決するためのオブジェクトのマッピングに使用する名前である.言い換えると,D:\Personal\Resume.docとE:\Personal \Resume.docは全く違うものかもしれないのだ.

 古いファイルシステムの場合,ディレクトリーのエントリーが同じディスク内のファイルにのみ関連している.Windows9XやWindows NTのショートカットを作ってみると,ショートカットというリンクされたオブジェクトは大量のデータを持つことになる.システム内のディスク上に点在するアプリケーションやファイルに対してショートカットを使用するのは,システムに対してもあまり有効な方法とは言えない.なぜ有効ではないかというとショートカットの使用は非常に制限が多く,ショートカットの管理は手間がかかるからである.例えばもし,アプリケーションのファイルが移動されたり削除されたら,ショートカットも変更しなくてはいけないのである.

 ファイルシステムを例にとって,もう一段階進んだ見方をしてみよう.デスクトップ上に名前空間があり,ユーザーがシングルクリック(NT5.0でActive Desktopを使用している場合),もしくはダブルクリック(前のバージョンのデスクトップを使用している場合)することでオブジェクトの選択と名前への変換が行われる.

 アイコンがファイルを参照している感覚である.しかし,ショートカットが直接ディスク上の位置を参照することはできない.なぜならアプリケーションのファイルは更新されたり移動されたり,置き換えられたりすることがあるからである.したがってショートカットはファイルシステムのインターフェース上のファイルオブジェクトに対する参照でなくてはならない.ショートカットからのファイルへのアクセスは,直接ファイルにアクセスするのに比べて手間がかかってしまう.まず,ショートカットが持っているデータを探さなくてはならない.次にその内容を解読し,そこで得られた情報からファイルシステムに特定のディスク上にあるファイルを探してもらわなくてはならない.

 ならば,すべてのファイルシステム上で多階層の名前空間を持てばよいだ.そのしくみとは,オブジェクトが,ほかの種類のオブジェクトだけではなく,同じ種類のオブジェクトも含むことができる,階層的なものである.例えば,ディレクトリーは,ディレクトリー自身の中にファイルとディレクトリーを持つことができる.

Active Directoryの目的

 ファイルシステムとActive Directoryの性質はとても似ている.このディレクトリーの考え方は,ディレクトリーによって表現された階層的な名前空間の中にあるオブジェクトを見つけ出すためである.そして,オブジェクト(ファイル)には,正確に宛先を指定してアクセスしなくてはならないという性質に十分注意しなければならない.これらの注意事項(制限事項ではない)はセキュリティー,オブジェクトの種類,インターフェース,位置,そして階層の中にあるオブジェクトの制限を含んでいる.

 より重要な注意事項は,オブジェクトがほかのオブジェクトを含めることとは関係なくほかのオブジェクトへのポインタを持っているということである.Windows NTのActive Directoryは,コンテナオブジェクトとリーフオブジェクトとしての2つの階層で定義されている.基本的に,NT5.0のActive Directoryサービスは,多くの種類のオブジェクトに対して,この2つの資格を提供する.このことについてはもう少し後で説明する.

特別な注意事項

 今まで述べてきた考え方は,Active Directoryについて理解するためのベースにはなるが,システム管理者が実際にActive Directoryの機能を使う手助けにはならない.
 Active Directoryには,3つの基本レベルのコンポーネントが存在する.第1に,サーバーはオブジェクトへのアクセスを提供し,利用可能なオブジェクトの定義と記述を含んだデータベースを提示しなければならない.第2に,クライアントは接続可能でディレクトリーの中のオブジェクトを探すActive Directoryのプロバイダーを定義する必要がある.そして最後に,開発者はActive Directory Service Interface(ADSI)のデータを探す記述をアプリケーションに記述する必要があるということである.

 ADSIに従ってアプリケーションを記述することで,プロバイダーの必要な処理は最小限ですむ.それについては今後のコラムで述べる.一般的なコンポーネントに対しては,既にADSIプロバイダーが提供されている.それでもなお,Active Directory技術を知るためには,クライアントアプリケーションに対するADSIのインターフェースについて知っておく必要がある.

 私は簡単なADSIを使用したプログラミングを行ってみたが,それは十分やるだけの価値がある.ほかのどんなAPIを使ったプログラミングとも違っていたのだ.サーバーのオペレーティングシステムや環境がADSIモジュールをサポートしていれば,Active Directory接続のサーバー・エンドのプログラミングを行う必要はない.また,クライアントとしてのActive Directoryオブジェクトについて必要な処理はさらに少ない.必要なのはオブジェクトの検索,閲覧,修正,作成,削除,移動,そして名前の変更ぐらいだろう.

 ADsGetObject関数はオブジェクト自身とその主要なインターフェース識別子を結び付け,オブジェクトのポインタを返す.アプリケーションがオブジェクトの有効なポインタを持っていれば,ADSIクラスメンバー関数を呼ぶことができる.そのメンバー関数には“Create”・“Delete”・“SetInfo”・“GetInfo”・“Put”を含んでおり,オブジェクトの種類とインターフェース,性質を理解すればオブジェクトへのアクセスはとてもシンプルである.

さあ始めよう

 Active Directory技術の一部は,現在でもMicrosoftのWebサイトからダウンロードすれば利用できる.事実,Microsoft Platform SDK のADSIに関するドキュメントは1997年の初期に提供されている.これらのソフトウエアコンポーネントをインストールしADSIに関するドキュメントを読めば,ADSIアプリケーションは簡単に作ることができる.さらに,NTにこの技術を実装することでプログラミングもシステムの管理も非常に見渡しがよくなる.

 Active Directoryの技術によって提供されるサービスは非常に幅広く,NT5.0とNT4.0,NetWare(NDS),Windows95/8の接続に関してはサポートされる.次回以降のコラムでは,NT5.0の最新のセキュリティーの特徴と,Active Directoryサービスのプロトコルを使ったオブジェクトのアクセスや管理について調べようと思う.

出典 BackOffice Magazine January 1998, pp.78-80.
ゥ1997BACKOFFICE MAGAZINE by PennWell Publishing Company.