Previous Next Contents Index


Copyright 1999 Rogue Wave Software
Copyright 1999 Sun Microsystems, Inc.

はじめに



Tools.h++ の概要と機能

Tools.h++ は、充実した内容を持つ、強力で汎用性の高い C++ 基底クラスライブラリです。つまり、アプリケーションを実際に作成するために、セットになったソフトウェアパーツを使用できます。

Tools.h++ は、業界標準のひとつになっています。 Tools.h++ は、さまざまなコンパイラメーカーによって、それぞれのコンパイラに付属させる標準ライブラリとして選ばれています。このライブラリは、多数のコンパイラやオペレーティングシステムに移植され、世界中で使用されています。このため、プログラミングにどのような開発プラットフォームを選んでも、ほとんどの場合、Tools.h++ を使用することができます。

Tools.h++ のこの新バージョンは、標準の C++ ライブラリにもとづいて作成されています。このバージョンへの移行を容易にするために、Tools.h++ には使いやすいオブジェクト指向インタフェースと、信頼性の高い上方への移行手順が用意されています。Tools.h++ を使用すると、標準の C++ ライブラリの改版があるたびに、その版を組み込むことができます。

新しい Tools.h++ パッケージには、次のものが含まれています。


Tools.h++ と C++ の方針

C++ に精通していれば、Tools.h++ を容易に使用できます。C++ クラスライブラリと同様に、Tools.h++ も C++ 言語そのものと多くの共通の設計目標があります。これらの目標には次のものがあります。


Tools.h++ と C++ の標準化

C++ 言語と標準 C++ ライブラリの標準化による利点は誰の目にも明らかなものです。ただし、この標準化の過程でも、業務を続けられるようにする必要があります。この過程を移行期間といい、C++ コミュニティは現在この期間にあります。

移行では、標準は完成に近づいていますが、まだ完全には安定していません。標準そのものが実質的に改訂される可能性はまずありませんが、1997 年まで細かな調整と認可が続きます。

また、移行では、コンパイラは標準に向けてさまざまな段階を追って進化します。当分の間、名前空間、省略時のテンプレート引数、メンバー関数テンプレート、入れ子のクラステンプレートなどの新しい言語機能が、コンパイラによってサポートされていたり、サポートされていなかったりします。一部のコンパイラが、標準 C++ ライブラリのあるバージョンを組み込んでいない可能性もあります。必要な言語機能をサポートするかぎりにおいてのみ、標準に準拠するバージョンが多数出てくるでしょう。市販のコンパイラが実際に正確な C++ 言語を実装するか、標準の記述どおりに標準 C++ ライブラリを組み込むようになるまでには、かなりの時間がかかるはずです。

最後に、移行期間中の開発者の状況を説明します。開発者は将来の標準に向けて設計と実装の改良を担当します。変更は、開発環境、アプリケーションの領域、企業の性格による評価に従って行われます。

Tools.h++ の目標は、最新の C++ の技術に合わせて独自のペースで移行しながら開発を行なうときに、その一貫性を保つことにあります。


標準の利用

Tools.h++ の新しいバージョンでは、ANSI/ISO 標準の C++ ライブラリとの関係を確立することを第一の課題としています。Rogue Wave は、製品を標準に準拠させるだけでなく、その機能をフル活用することにも関与しています。目標は、さらに便利で有能なクラスライブラリの提供です。弊社のライブラリを C++ 標準に統合させる作業は、この Tools.h++ バージョン 7 から始まっています。

Tools.h++ のこのバージョンでは、STL または標準テンプレートライブラリと通常呼ばれる標準 C++ ライブラリのコンテナとの統合に力を注ぎました。各標準コンテナは、新しいまたは再設計された Tools.h++ コレクションクラステンプレートの中に含まれています。テンプレートの詳細については、第 10 章「コレクションクラステンプレート」を参照してください。次に、Tools.h++ と標準 C++ ライブラリの統合の主な設計目標を、それらがこのバージョンでどのように反映されているかを示す例とともに示します。

たとえば、Tools.h++ は、標準 C++ ライブラリコンテナを実装に使用するコレクションを提供します。Tools.h++ を標準にもとづいて作成すると、これらのコレクションで簡単に標準の反復子を提供することができます。これにより、高度な標準 C++ ライブラリアルゴリズムでこれらのコレクションを使用できるようになります。それと同時に、Tools.h++ コレクションが常に提供してきた、安全で使いやすいオブジェクト指向インタフェースを維持することもできます。

たとえば、標準 C++ ライブラリのリストが予期される場所に、Tools.h++ のダブルリンクされたリストを安全かつ効率的に渡すことが確実にできるようにしました。

たとえば、標準 C++ ライブラリコンテナによって実装された Tools.h++ コレクションを使用する場合は、いつでも任意に標準 C++ ライブラリの非オブジェクト指向機能を利用できるように、より低いレベルの実装へ書き直すことが可能です。

再設計された新しいコレクションクラステンプレートはすべて、この目標を実現しています。どちらの場合も、対応する標準 C++ ライブラリコンテナに効果的なラッパーを挿入して、使いやすく、しかも強化された Tools.h++ コレクションインタフェースを提供します。

オブジェクト指向インタフェースがこの目標の実現を助けます。標準 C++ ライブラリと違って、Tools.h++ コンテナメソッドは、制御対象のデータを知っているため、ユーザーは反復子とアルゴリズムを指定する必要がありません。

たとえば、Tools.h++ のバージョン 6.1 のコレクションクラステンプレートは、標準の C++ ライブラリコンテナにもとづいて再設計してあります。ほとんどすべての場合、ライブラリの旧バージョンでクラスを使用していた既存のソースコードは、そのままコンパイルして、新しいライブラリとともに利用できます。

このバージョンでは加えられていない機能

Tools.h++ の今後のバージョンでは、標準 C++ ライブラリと C++ 言語の新しく追加された機能を全面的に利用する予定です。しかし、このバージョンでは、最新技術の導入を保留することに決定した領域がいくつかあります。これには、標準ライブラリまたは言語機能が今よりも広く使用されるようになるまで待つことにした場合があります。また、率直に言えば、新しい機能について十分な経験をつんで、それらを統一した効率的な構築を行なうという、最善の方法を判断できるようになるまで待つことにした場合もあります。弊社では、弊社自身やユーザーが不便を被ることにならないよう慎重に開発を進めていきたいと考えています。しばらくの間は、以下の点に注意してください。


お読みになる前に

このマニュアルは、Tools.h++、Rogue Wave の基底クラスライブラリの使用方法を説明しています。ここでは、読者が C++ に詳しいことを前提としています。C++ をよく知らない場合は、付録 D「参考文献」で必要な資料を探すことができます。

C++ の上級ユーザーの場合は、Stroustrup [1991]、Lippman [1991]、または Ellis and Stroustrup [1990] とともにこのマニュアルを読むことができます。後者は、「ARM (the Annotated Reference Manual)」と呼ばれます。これらの資料の簡潔で正確な説明は、この言語を学ぶうえで非常に参考になります。(この 2 冊には日本語訳があります。付録 D 参照)

表記上の規則

このマニュアルを読むときは、次の特殊な規則に注意してください。

このマニュアルでは、次のような字体や記号を特別な意味を持つものとして使用します。

表 P-1 表記上の規則

字体または記号 意味
AaBbCc123 コマンド名、ファイル名およびディレクトリ名を示します。または、画面上のコンピュータ出力を示します。 .login ファイルを編集します。ls -a を使用してすべてのファイルを表示します。

system%

AaBbCc123 ユーザが入力する文字を、画面上のコンピュータ出力とは区別して示します。 system% su

password:

AaBbCc123 変数を示します。実際に使用する特定の名前または値で置き換えます。 ファイルを削除するには、rm filename と入力します。
『 』 参照する書名を示します。 『コードマネージャ・ユーザーズガイド』を参照してください。
「 」 参照する章、節を示します。また、ボタンやメニューなど、強調する単語を囲む場合にも使用します。 第 5 章「衝突の回避」を参照してください。
手順の 1 ステップを示します。  適用ボタンをクリックします。
階層メニューのサブメニューを選択することを示します。 作成: 「返信」 「送信者へ」

コード例はボックスで囲んで示します。たとえば、次のように表示されます。




Previous Next Contents Index