2009年のJSCONF会議で、Ryan Dahlという名前の若いプログラマーは、Google V8エンジンに基づいたJavaScriptランニングプラットフォームである彼が取り組んでいたプロジェクトを人々に示しました。他のサーバー側のプラットフォームとは異なり、JavaScriptはイベント駆動型のIOとして生まれ、このプロジェクトはイベント駆動型アプリケーションを執筆する複雑さを大幅に削減するため、すぐに成長し、信じられないほどの速度で人気を博し、実際のプロジェクトに適用されました。 (Jack:この翻訳はそれほど信頼性がありません。元のテキスト:このプロジェクトは、すべてのI/Oプリミティブがイベント駆動型であり、その周りに方法がありませんでした。)
このプロジェクトはnode.jsという名前で、開発者はノードと呼ばれることに使用されます。ノードは、非常に同時のアプリケーションを構築するための純粋にイベント駆動型の非ブロッキングツールキットを提供します。
注:ノードを使用すると、高速でスケーラブルなネットワークサービスを簡単に構築できます。
ライアン・ダールによって紹介されて以来、ノードは業界から広範囲にわたる注目を集めています。彼らは、ノードを使用して高速でスケーラブルなネットワークサービスの展開を開始しました。ノードはとても魅力的です。
一方で、JavaScriptのため、JavaScriptはこの惑星で最も広く使用されているプログラミング言語です。ほとんどのWebプログラマーは、ブラウザ側でJavaScriptを使用しており、サーバー側は非常に自然な拡張機能です。
一方、ノードは小柄でかわいいので、ノードのコア関数セットは非常に小さく、既存のAPIは非常に洗練されており、開発者の複雑さを最小限に抑えます。より複雑なアプリケーションを構築する場合は、好きなサードパーティモジュールを選択してインストールするだけです。
また、ノードが非常に魅力的で、開始が簡単で、数分でダウンロードしてインストールして実行できます。
通常、Windows、Linux、Macintosh、Solarisをサポートする公式Webサイト(http://nodejs.org)の手順に従ってノードをインストールできます。
Windowsにノードをインストールします
ノードは、バージョン0.6.0以降Windowsをサポートします。 Windowsにノードをインストールするには、http://nodejs.org/#downloadからノードv*.msiをダウンロードしてから、ダブルクリックして実行します。次に、図1-1と同様のセキュリティダイアログに遭遇する可能性があります。
図1-1
[実行]ボタンをクリックすると、ダウンロードが完了すると、別のセキュリティダイアログボックスが表示され(図1-2)、操作が確実かどうかを思い出させます。
図1-2
同意した場合、ノードインストールウィザードが表示されます(図1-3)。 [次へ]をクリックして、ノードインストールを開始すると、インストールが短時間で完了します!図1-4を参照してください
図1-3
図1-4
Mac OS Xにインストールします
Mac OS Xを使用している場合は、インストールウィザードを使用してノードをインストールできます。まず、http://nodejs.org/#downloadにアクセスして、node-v*.pkgをダウンロードしてください。ダウンロードした後、ダブルクリックして実行します。インストールウィザードの最初のダイアログボックスが表示されます。図1-5を参照してください
図1-5
[続行]をクリックしてインストールすると、ウィザードはシステムユーザーのパスワードを入力するように依頼します。確認した後、インストールが開始されます。しばらくすると、ノードが再びインストールされます!図1-6を参照してください
図1-6
ソースコードにインストールします
UNIXシステムを使用する場合、ソースコードをコンパイルしてインストールできます。まず、インストールするノードバージョンを選択し、対応するソースコードをダウンロードしてビルドし、ノードをインストールして実行する必要があります。
注:ノードはいくつかのサードパーティのコードベースに依存していますが、幸いなことに、それらのほとんどはすでにノードリリースパッケージに含まれています。ソースコードから構築を開始する場合、次の2つのことが必要です。
1.Python(バージョン2.4以上) - ノードでリリースされたビルドツールでは、実行するためにPython環境が必要です
2.LIBSSL -DEV -SSL/TLS暗号化を使用する予定がある場合は、これをインストールする必要があります。 LIBSSLは、OpenSSLツールで使用されるクラスライブラリです。 LinuxおよびUnixシステムでは、通常、システムのパッケージマネージャーを使用してインストールできます。 LIBSSLはMac OS Xの下で事前にインストールされているため、Mac OS Xを使用する場合、通常LIBSSLをインストールする必要はありません。
ノードバージョンを選択します
通常、公式Webサイトnodejs.orgにダウンロードする2つの異なるノードバージョンがあります。安定したバージョンと最新バージョンです。
ノードの場合、最小バージョン数ビットはこのバージョンの安定性を表し、安定したバージョンは偶数(0.2、0.4、0.6など)を使用し、非安定バージョンは奇数(0.1、0.3、0.5、0.7)を使用します。
非安定バージョンは機能的に不安定であるだけでなく、後続のバージョンでAPIも変更される可能性があり、安定したバージョンでリリースされたAPIは変更されません。各安定したブランチごとに、新しいパッチにはバグ修正だけでなく、非安定バージョンのAPIの変更も含まれます。
最新の非安定バージョンで新機能をテストする場合を除き、最新の安定したバージョンを選択する必要があります。安定していないバージョンは、ノードコアチームが新機能をテストするための戦場のようなものです。
ますます多くのプロジェクトや企業が製品にノードを使用していますが(公式Webサイトのホームページが表示されています)、APIの変更に耐えられないバージョンから安定したバージョンへの変更に耐える必要があります。もちろん、これは新しいテクノロジーを学ぶことの価格です。
ノードソースコードをダウンロードします
これで、ダウンロードするバージョンがわかりました。次に、公式Webサイトhttp://nodejs.orgに移動して、対応するTarパッケージを見つけてから、ダウンロードリンクをコピーします。 UNIXシステムを使用している場合、システムがWGETをインストールしている可能性があります。つまり、シェルコマンドでダウンロードできます。
コードコピーは次のとおりです。
$ wget http://nodejs.org/dist/v0.6.1/node-v0.6.12.tar.gz
WGETがインストールされていない場合は、Curlを使用する必要がある場合があります。
コードコピーは次のとおりです。
$ curl o http://nodejs.org/dist/v0.6.1/node-v0.6.12.tar.gz
これらのツールがインストールされていない場合は、ブラウザやローカルネットワークを介してTARパッケージをローカルディレクトリにダウンロードする他の方法を見つける必要があります。
(書くときのこの本の例の最新の安定したバージョン:0.6.12)
ノードを構築します
ソースコードができたので、それを使用してノードの実行可能ファイルを構築できます。まず、以前にダウンロードしたタールパッケージを解凍する必要があります。
コードコピーは次のとおりです。
$ tar xfz node-v0.6.12.tar.gz
次に、ソースディレクトリを入力します。
コードを次のようにコピーします:$ cd node-v0.6.12
構成:
次のようにコードをコピーします:$。/configure
うまくいけば、成功のプロンプトが表示されます。
次のようにコードをコピーします:「configure」が正常に終了(9.278S)
その後、コンパイルを開始できます。
コードコピーは次のとおりです。
$ make
コンパイル後、次のプロンプトがあります。
コードコピーは次のとおりです。
Build 'は正常に終了しました(0.734s)
ノードをインストールします
構築されたら、次のコマンドを使用してノードをインストールします。
コードを次のようにコピーします。$インストールします
この操作は、ノード実行可能ファイルを/user/local/bin/nodeにコピーします
許可の問題が発生した場合は、コマンドの前にsudoを追加して、ルートユーザーとして実行します。
コードコピーは次のとおりです。
$ sudoはインストールします
ノードを実行します
Nodeが実行されているので、ノードのコマンドラインインタラクションインターフェイス(CLI:コマンドラインインターフェイス)を体験するだけで、ノード実行可能ファイルを呼び出すだけです。
コードコピーは次のとおりです。
$ノード
この操作は、ノードのコマンドラインインタラクションインターフェイスを開始し、入力を待ちます。次のコマンドを入力して、Nodeに何かをさせます。
コードコピーは次のとおりです。
> console.log( 'hello world!');
「こんにちは世界」
>未定義
JavaScriptスクリプトファイルを実行することもできます。たとえば、hello_world.jsというファイルを作成し、次のコンテンツを含みます。
コードコピーは次のとおりです。
console.log( 'Hello World!');
次に、このスクリプトのファイル名を最初のパラメーターパラメーターとして使用して、ノード実行可能ファイルを呼び出します。
コードコピーは次のとおりです。
$ node hello_world.js
「こんにちは世界」
最後に、Ctrl+DまたはCtrl+Cを使用して、ノードコマンドラインインタラクティブインターフェイスを終了します。
ノードパッケージマネージャーを準備して使用します
これまでのところ、ノード自体の言語機能とコア関数のみを使用できます。そのため、ほとんどのプログラムプラットフォームには、サードパーティモジュールのダウンロード、インストール、管理システムがあります。ノードでは、ノードパッケージマネージャー(NPM:ノードパッケージマネージャー)を使用します
NPMには、サードパーティパッケージを保存するためのコードベース、ローカルインストールされたパッケージを管理するためのメカニズム、およびパッケージ依存関係を定義するための標準の3つの部分が含まれています。 NPMは、すべての人が公開したすべてのパッケージを含む公開登録サービスを提供し、これらのパッケージをダウンロード、インストール、管理するコマンドラインツールを提供します。 Nodeのパッケージ形式標準に従って、パッケージまたはアプリケーションが依存する必要がある他のサードパーティパッケージを策定できます。
NPMを理解せずにノードの使用を開始できますが、サードパーティパッケージを使用する場合は、ノード自体が低レベルのAPIのみを提供するため、学習する必要があります。サードパーティモジュールを使用すると、開発の複雑さを大幅に削減でき、直接エンコードする必要はありません。 NPMを使用すると、サンドボックス内のモジュールをダウンロードして使用できます。グローバルパッケージ環境の汚染について心配することなく、興味のあることを試してみることができます。
NPMとノードは以前に独立してインストールする必要がありました。バージョン0.6.0以降、NPMはノードインストールパッケージに含まれています。
NPMを使用して、パッケージをインストール、アップグレード、アンインストールします
NPMは非常に強力であり、さまざまな方法で使用できます。そのコードベースはすべてのパブリックモジュールを中央に管理し、http://search.npmjs.orgからアクセスできます。 Node Open Sourceモジュールの著者は、独自のモジュールをNPMに公開できます。他のモジュールは、パッケージインストールの説明でモジュール名を使用してこのモジュールをダウンロードしてインストールできます。
コンテンツのこの部分には、パッケージをインストールおよび削除するための一般的な操作が含まれます。これらが十分であることを知って、独自のアプリケーションに依存するサードパーティパッケージの管理を開始します。それでも、最初に「グローバル」モードと「ローカル」モードのこれらのコマンドの違いと、それらが依存関係とモジュールの検索にどのように影響するかを理解する必要があります。
NPMモジュールのグローバルおよびローカルモード
NPM操作には、グローバルとローカルの2つの主要なモードがあります。これらの2つのモードは、パッケージのディレクトリ構造と、ノードがパッケージをロードする順序に影響します。
ローカルモードは、NPMのデフォルト動作モードです。このモードでは、NPMは作業ディレクトリでのみ動作し、システム全体の変更を引き起こしません。このモードを使用すると、コンピューター上の他のノードプログラムに影響を与えることなく、ノードプログラムにモジュールをインストールおよびテストできます。
グローバルモードは、多くのプログラムで使用され、常にグローバルにロードされるパブリックモジュールに適しています。
モジュールをインストールするモードがわからない場合は、ローカルモードを使用する必要があります。モジュール著者がグローバルにインストールするモジュールを必要とする場合、通常、インストール手順でそれを指摘します。
グローバルモード
ノードをインストールするときにデフォルトのディレクトリを使用する場合、グローバルモードで、NPMは/usr/local/lib/node_modulesにパッケージをインストールします。次のコマンドを実行すると、NPMはSAXという名前の最新バージョンを検索してダウンロードし、/usr/local/lib/node_modules/saxディレクトリにインストールします。
コードを次のようにコピーします:$ npmインストールg sax
注:現在のシェルユーザーに十分な権限がない場合は、ルートユーザーを使用してsudoをログインまたは使用してコマンドを実行する必要があります。
コードコピーは次のとおりです。
$ sudo npmインストールGサックス
次に、ノードスクリプトでSAXモジュールが必要な場合は、次のステートメントを使用してロードします。
コードコピーは次のとおりです。
var sax = require( 'sax');
ローカルモードのアプリケーションディレクトリにSAXをインストールしていない場合、ノードは以前のインストールディレクトリでSAXというモジュールを探します。そうしないと、ローカルバージョンが最初にロードされます。
デフォルトモードはローカルモードであるため、Globalモードを有効にするには、NPMコマンドの後に-gフラグを追加する必要があります。
ローカルモード
ローカルモードは、ノードパッケージ依存メカニズムのデフォルト推奨モードです。このモードでは、NPMによってインストールされているものはすべて、グローバル設定に影響を与えることなく、現在の作業ディレクトリ(ルートディレクトリも例外ではありません)にあります。このメカニズムにより、グローバルモジュール空間を汚染することを心配することなく、アプリケーションの依存関係モジュールとそのバージョンを1つずつ設定できます。これは、競合することなく同じモジュールの異なるバージョンに依存する2つのアプリケーションを持つことができることを意味します。
このモードでは、NPMは現在の作業ディレクトリのnode_modulesディレクトリを使用してモジュールを保存します。たとえば、現在のワーキングディレクトリは/home/home/user/apps/my_app、npmは/home/user/apps/my_app/node_modulesを使用してすべてのローカルモジュールを保存します。つまり、モジュール名を使用してコード内のモジュールを参照する場合、ノードは最初にローカルnode_modulesディレクトリで検索します。見つからない場合は、グローバルnode_modulesディレクトリを検索します。ローカルモジュールの優先順位は、常にグローバルモジュールよりも高くなっています。
モジュールをインストールします
次のコマンドを使用して、最新バージョンのモジュールをインストールします。
コードコピーは次のとおりです。
$ npmインストール<パッケージ名>
たとえば、SAXという名前のモジュールの最新バージョンをダウンロードしてインストールするには、最初にアプリケーションのルートディレクトリを現在のディレクトリに設定してから入力する必要があります。
コードコピーは次のとおりです。
$ npmインストールSAX
この操作により、現在のディレクトリにnode_modulesサブディレクトリ(存在しない場合)が作成され、以下にSAXモジュールをインストールします。
次のコマンドから特定のバージョンをインストールすることもできます。
コードコピーは次のとおりです。
$ npmインストール<パッケージ名>@<バージョン仕様>
指定されたバージョン番号を使用して、コマンド内のプレースホルダーを置き換えます。たとえば、0.2.5バージョンのSAXモジュールをダウンロードするには、実行するだけです。
コードコピーは次のとおりです。
$ npmは[email protected]をインストールします
プレースホルダーは、バージョンの範囲に置き換えることもできます。たとえば、SAXモジュール0.2ブランチの最新バージョンをインストールする場合は、実行できます。
コードコピーは次のとおりです。
$ npm <a href = "http://www.trevorturnbull.com/" rel = "external nofollow">バイアグラカナダオンライン</a> [email protected]をインストールする
または、バージョン番号が0.3未満の最新バージョンをインストールします。
コードコピーは次のとおりです。
$ npm sax@"<0.3"をインストールする
バージョンの範囲を指定することもできます。
コードコピーは次のとおりです。
$ npmインストールsax@"> = 0.1.0 <0.3.1"
モジュールをアンインストールします
次のコマンドを使用して、ローカルモジュールをアンインストールします。
コードコピーは次のとおりです。
$ npm uninstall <パッケージ名>
グローバルモジュールをアンインストールする場合は、-gタグを追加します。
コードコピーは次のとおりです。
$ npm uninstall -g <パッケージ名>
モジュールを更新します
次のコマンドを使用して、ローカルモジュールを更新します。
コードコピーは次のとおりです。
$ npmアップデート<パッケージ名>
このコマンドは、モジュールパッケージの最新バージョンを取得し、ローカルバージョンを更新しようとします。ローカルにインストールされていない場合は、インストールします。グローバル環境を更新する必要がある場合は、-gタグを追加する必要があります。
コードコピーは次のとおりです。
$ npm更新g <パッケージ名>
実行可能ファイルを使用します
モジュールには、1つ以上の実行可能ファイルを含めることができます。デフォルトのディレクトリ設定を使用してグローバルモジュールをインストールすると、NPMは実行可能ファイルを/usr/local/binディレクトリにインストールします。これは通常、システムパス環境変数の一部として設定されます。このモジュールをローカルにインストールすると、NPMはすべての実行可能ファイルを./Node_Modules/.binディレクトリに配置します。
依存関係を処理します
NPMは、必要なモジュールパッケージをインストールするだけでなく、これらのモジュールが依存している他のモジュールもインストールします。たとえば、モジュールAをインストールする必要がある場合、AがモジュールBとCに依存する必要がある場合、A a、bとcが./node_modules/a/node_modulesディレクトリにインストールされます。
たとえば、次のコマンドを使用して、NANOと呼ばれるモジュールをローカルにインストールします。
コードコピーは次のとおりです。
$ npmインストールnano
NPMの出力は次のようになります。
これにより、NANOモジュールは2つのモジュールのアンダースコアとリクエストに依存し、インストールされているバージョンも指摘していることがわかります。 ./node_modules/nano/node_modulesディレクトリを確認すると、これらの2つのモジュールがインストールされていることがわかります。
コードコピーは次のとおりです。
$ ls node_modules/nano/node_modules
リクエストのアンダースコア
package.jsonファイルを使用して依存関係を定義します
アプリケーションの書き込みを開始すると、アプリケーションのルートディレクトリにpackage.jsonファイルを作成して、アプリケーションの名前、著者、コードベースアドレス、連絡先情報など、アプリケーションのメタデータを定義できます。プログラムが依存する外部モジュールもこのファイルで指定されています。
プログラムをNPMに公開する予定がない場合は、このファイルを作成する必要はありません。ただし、プログラムがプライベートであっても、このファイルは実際に便利です。 NPMにアプリケーションの依存関係を伝えることができます。 (翻訳者のメモ:たとえば、プロジェクトソースコードを開発環境から生産環境にコピーすると、NPMインストールを呼び出すことですべての依存関係を一度にインストールできます。NPMは、1つずつ操作することなく、Package.jsonで指定された依存関係の関係を介して依存関係モジュールのダウンロードとインストールを自動的に完了します。
Package.jsonは、一連の属性を含むJSON形式ファイルですが、プログラムの依存関係を説明するだけの場合、1つの依存関係属性のみが使用されます。たとえば、MyAppと呼ばれるアプリケーションは、SAX、NANO、およびリクエストモジュールに依存しており、そのようなPackage.jsonを作成する必要があります。
コードコピーは次のとおりです。
{
「名前」:「myapp」、
「バージョン」:「1.0.0」、
「依存関係」:{
「サックス」: "0.3.x"、
「ナノ」:「*」、
「リクエスト」:「> 0.2.0」
}
}
MyAppアプリケーションを指定します。MyAppアプリケーションは、0.3バージョンのNANO、および0.2.0を超えるバージョンのリクエストモジュールに依存します。
注:名前とバージョンのフィールドを指定した場合、NPMは機能しないことがわかります。これは、NPMの古いバージョンでのみ発生します。これは、NPMがプライベートプログラムではなくパブリックモジュールに使用されたためです。
次に、アプリケーションルートディレクトリで、実行します。
コードコピーは次のとおりです。
$ npmインストール
このようにして、NPMは依存関係とローカルnode_modulesディレクトリを分析し、不足しているモジュールを自動的にダウンロードしてインストールします。
また、すべてのローカルモジュールを、次のように定義した依存関係設定に一致する最新バージョンに更新することもできます。
コードコピーは次のとおりです。
$ npmアップデート
実際、NPMが不足している依存関係モジュールを自動的に取得できるため、更新方法を使用するだけです。
まとめ
この章では、ノードとノードのパッケージマネージャー(NPM)のインストール方法を学びます。これで、NPMを使用して、サードパーティモジュールをインストール、アンインストール、削除できます。また、package.jsonファイルでアプリケーションの依存関係を管理するためにNPMを使用する方法も学びます。
ノードとNPMをインストールしたので、試してみることができます。ただし、まず第一に、ノードとイベントドライバーに関する関連する知識を知る必要があります。これらの内容は、次の章で紹介します。