自由課題

学んだり、考えたり、試したりしたこと。

node.jsを支えるlibuvのチュートリアル"uvbook" :イントロダクション

この文書はuvbookの日本語翻訳の一部となります。文書そのものの説明その他については目次をご覧ください。

イントロダクション

この'書籍'はWindowsUnixで同じAPIを提供するハイパフォーマンスなイベント駆動(evented)I/Oライブラリとしてlibuvを使うためのチュートリアルです。

この書籍はlibuvの主要な部分について言及するよう意図していますが、全ての関数やデータ構造を扱うリファレンスではありません。公式のlibuvのドキュメントはlibuvのヘッダファイル自身に含まれています。

この書籍はまだ執筆中であるため不完全ですが、成長するにつれて読み応えがあるものになるでしょう。

想定読者

この書籍の読者は下記のいずれかを想定しています:

1) デーモンかネットワークサービスとクライアントのようなローレベルのプログラムを作成するシステムプログラマ。イベントループのアプローチがあなたのアプリケーションに適していることを発見し、libuvを使おうと思うでしょう。

2) C/C++で書かれたプラットフォームのAPIを、Javascriptに公開された(非)同期のAPI群と共にラップしたいnode.jsモジュールの作者。あなたはlibuvを純粋にnode.jsのコンテキストで使用するでしょう。この用途では、この書籍では言及しないv8/node.jsに特有の部品のための他の資料が必要となるでしょう。

この本はあなたがC言語に慣れていることを仮定しています。

背景

node.jsプロジェクトはブラウザと分離されたJavascript環境として2009年に開始されました。GoogleV8とMarc Lehmannのlibevを用いることによって、node.jsはイベント駆動のI/Oモデルとブラウザのために形成されたプログラミングスタイルに適した言語とを結びつけました。node.jsが知名度を増すにつれて、Windows上で動作することが重要となりましたが、libevはUnixに依存して動作していました。kqueueか(e)pollのようなイベント通知機構のWindowsで等価なものはIOCPです。libuvはプラットフォームに依存してlibevとIOCPを抽象化するモジュールであり、libevをベースにしたAPIをユーザに提供します。node.jsのv0.9.0でlibuvが採用され、libev was removedとなりました。

それからlibuvは成熟を続け、システムプログラミングのための高品質な単独のライブラリとなりました。node.js以外のユーザにはMozzilaのRustプログラミング言語と、様々な言語 のバインディングなどが含まれます。

libuvの最初の独立したリリースのバージョンは0.10.2でした。

コード

この書籍に含まれる全てのコードはGithub上の書籍のソースの一部として含まれています。サンプルの全てをコンパイルするには、この本をCloneもしくはDownloadし、 code/ フォルダで make を実行してください。この書籍とコードはlibuvのv0.11.1をもとにしており、このバージョンは libuv/ フォルダに含まれ自動的にコンパイルされるようになっています。