Netscape ポータブル・ランタイム
Netscape ポータブル・ランタイム (Netscape Portable Runtime : NSPR) は、システムレベルでプラットフォーム中立な API と、libc と同様な機能を提供します。この API は、Mozilla クライアントや、Netscape/AOL/iPlanet など多くのソフトウェアで使用されています。NSPR について をお読みください。このトピックには、NSPR の目標と、どのようにしてそれを行なうかについて、おおまかに記述されています。NSPR についてもっと知りたい場合は、以下を読み進んでください。
目次
現状 -- NSPR プロジェクトの現在の話題。
文書とトレーニング -- あなたのアプリケーションをビルドするのに NSPR を使用する方法を勉強しましょう。
NSPR リファレンス -- NSPR API のプログラマ・リファレンス。
テクニカル・ノート -- アプリケーション開発者と NSPR メンテナに有用な技術レポート。
トレーニング素材 -- NSPR の API 使用法を学ぶのに使える、その他の素材。
技術的手法 -- 商売道具。NSPR を維持、変更、ビルド、リリース、そして貢献するために知っておくべきこと。
チェックアウトとビルド -- チェックアウトとソースからビルドする方法。
NSPR をテストする -- NSPR テスト・スイートをビルドして動作させる方法。
NSPR 貢献者ガイド -- では、あなたは NSPR のコードを書きたいのですね?
リリース・エンジニアリング・ガイド -- NSPR リリースのための技術的手法。
連絡先と貢献者 -- NSPR を現在メンテナンスしている人たち。NSPR の過去の貢献者たち。
現状
現在の NSPR のリリースは 4.4.1 です。詳細は、 NSPR リリースノート をお読みください。Netscape/AOL/iPlanet がサポートしているプラットフォームと Mozilla コミュニティがビルドしているプラットフォームにおけるビルド前のバイナリは、 ftp://ftp.mozilla.org/pub/mozilla.org/nspr/releases からダウンロードできるでしょう。
NSPR メンテナ たちは、毎週ではありませんが、火曜日、太平洋標準時の午前11時にミーティングを行なっています。もしあなたが、直接あるいは電話会議の形で参加したいのなら、NSPR メンテナに連絡してください。
ニュースグループの netscape.public.mozilla.nspr では、質問をしたり、NSPR の議論や告知を追いかけることができます。
NSPR に関するバグの追跡、機能追加、およびその他の活動は Bugzilla で行なわれています。バグレポートを投稿するには、プロダクト名に "NSPR" を使用してください。
NSPR メンテナ は、NSPR ソースツリーの先端をビルドしたり実行したりする事に対して、いかなる時点においても保証しません。ツリーの先端は開発の基点です。NSPR をビルドしたいのであれば、タグの付いたチェックアウトを使用してください。
文書とトレーニング
NSPR には、何種類かの文書があります。"NSPR リファレンス"、いくつかの テクニカル・ノート、そしてその他の トレーニング素材 です。NSPR リファレンス
NSPR リファレンス には、各 API のパブリック・マクロと、NSPR API の構造と機能が記述されています。決定的なリファレンスとなることを目標としています。この項を執筆している時点 (2000年9月19日) では、NSPR リファレンスは、手書きの HTML と自動生成された HTML が混在しています。NSPR リファレンスのいくつかの部分は FrameMaker を使用してメンテされ、HTML にエクスポートされています。... あなたが言いたいことはわかっています。 ... 将来的には、NSPR リファレンス全体がFrameMaker を使用してメンテされ、HTML にエクスポートされるでしょう。文書に対する助言や訂正があれば、 Bugzilla に投稿してください。
テクニカル・ノート
NSPR に関連するテクニカルノートはいくつかあります。NSPR を使用あるいはメンテしている開発者なら、これらのテクニカルノートから有益な情報やヒントが得られるでしょう。
ビルドシステムとサポートされているプラットフォーム NSPR は、全てのプラットフォームで共通のビルド技術を使用しています。この文書には、ビルドシステムの機能と、ビルドプロセスをコントロールする makefile マクロについての記述があります。NSPR が動作すると確認されているプラットフォームをまとめた註釈付きの表は、メンテナに有用でしょう。 突然の終了 NSPR には、"thread kill" インターフェースがありません。この文書は、なぜ NSPR に thread kill がないのか、そしてこの思慮の足りないコンセプトを使わずに作業する方法について扱っています。 自動変数とスレッド アドレスを (スタック上の) 自動保存クラス変数に渡すと、マルチスレッド環境では非常にやっかいなバグを生じがちです。この文書は、どのよう なトラブルが生じるか、そしてこの落とし穴におちないためにはどうしたらいいかを示しています。 fork() について fork() を使用すると、ある Unix と別の Unix の間で奇妙な振る舞いが生じる事があります。この文書は、この違いのいくつかと、プラットフォーム間での振る舞いを一致させるテクニックを提示しています。 非停止 I/O について NSPR は最初はソケットの停止 (blocking) I/O だけを提供していました。いくつかの正当な理由で、非停止 (non-blocking) I/O が後から追加されました。この文書は、非停止モデルについて記述されています。 NT の I/O タイムアウトの扱いは ... えー ... 最適ではない Windows NT で I/O オペレーションがタイムアウトすると、ソケットは「使用不能」になり、クローズせざるを得ません。この文書は、この問題について記述しており、この「異 常」に対処するテクニックを提示しています。 あなたのアプリケーションを NSPR に最適化する Windows、Unix、Mac などにクロスプラットフォームな API を供給するのは困難な事です。代償として、パフォーマンス、利便性、機能、そしてありきたりなオブジェクトという犠牲を払わねばなりません。この文書は、 あなたのアプリケーション設計に応用すれば、全てのプラットフォームで妥当な結果が得られるようなテクニックのいくつかを記述しています。
新しいプラットフォームに NSPR を移植する ほとんどの Unix プラットフォームでは、NSPR を移植するのは難しいことではありません。そのほかの環境で NSPR を移植するのには、困難があるかも知れません。このテクニカルノートは、あなたが移植版を作成する手助けを行ないます。 NSPR のポーリングメソッド NSPR は PRFileDesc のためのポーリングメソッドがあります。このポーリングメソッドは、通常、PR_Poll 機能によってバックグラウンドで使用されますが、ポーリングメソッドを直接使用することもできます。このテクニカルノートは、NSPR リファレンスには記述されていない、このポーリングメソッドについて記述しています。 トレーニング素材
NSPR のトレーニング素材はあまり数が多くありません。以下のトピックスでは、NSPR リファレンスやテクニカルノートに記載されていない、NSPR API の使用法についてのガイドになるでしょう。
実例としての NSPR テストケース
NSPR のソースツリーには、mozilla/nsprpub/pr/tests ディレクトリにまとまったテストケースがあります。このディレクトリにあるプログラムの多くは、アプリケーション・プログラムを論理的に動作させるために NSPR API のいろいろな要素をどのように使用するか、についての良い実例です。NSPR をテストする も参照してください。「NSPR 概観」スライド
これは、1999 年の NSPR 概観チュートリアル で使用された、マイクロソフト・パワーポイントのスライドです。「NSPR を使用したスレッドのプログラミング」 スライド
このマイクロソフト・パワーポイントのスライドは、スレッドの同期に 条件変数を使用する 事についての良いチュートリアルです。条件変数は、初心者にとって誤用しやすい物ですが、スレッドの同期には柔軟で強力な手段となります。
技術的手法
チェックアウトとビルド
一般論として、NSPR チームは、NSPR のバイナリリリースを使用する事をお勧めします。あなたの興味が API のユーザとしてのものだけである場合は、特にそうです。もしあなたがメンテナだったり、貢献したいと思っているのであれば、NSPR をチェックアウトしてビルドするための 方法はここにあります 。NSPR をテストする
NSPR には、かなりの量のテストスイートがあります。詳細はこちらをお読みください。NSPR 貢献者ガイド
では、あなたは NSPR に何らかの貢献ができるのですね? あなたの援助は役に立つと思います。あなたの援助を手助けするために、いくつかの ガイドライン を作りました。これは NSPR の目標と安定性を維持するのに大切だと確信しています。NSPR リリース・エンジニアリング・ガイド
NSPR リリース・エンジニアリング・ガイド は、NSPR メンテナ向けの物です。Netscape/AOL/iPlanet のための NSPR をビルド、テスト、リリースするのに必要な手順が記載されています。切実に何かを調べなければならないという場合以外は、これを読む必要はありません。
連絡先と貢献者
NSPR は Wan-Teh Chang と Darin Fisher によってメンテナンスされています。Wan-Teh は 1996年からこのプロジェクトに参加しています。Darin は 2003年からこのプロジェクトに参加しています。NSPR の主要な貢献者としては、Alan Freier、Srinivas Lingutla、Lawrence Hardiman、Prashant Patel、 そして Mike Belshe がいます。
Chris Seawood は、現在使われている autoconf ベースのビルドシステムを実装しました。
他にも貢献者は多数います。ここに完全なリストを掲載できない事をお詫びします。
訳者: 池田 譲治
このドキュメントのオリジナルは、mozilla.org において、英語で管理・公開されています。
この和訳は、利用者の利便のために もじら組和訳プロジェクト によって提供されています。
ドキュメントの内容に関するフィードバックは、英語で、原文の著者に送ってください。
和訳ドキュメント一覧など、詳しい情報は www.mozilla.gr.jp/jt をご覧ください。