狠狠撸

狠狠撸Share a Scribd company logo
node.js
? サーバーサイドJavaScript 非ブラウザJavaScript
? Google V8 JavaScriptエンジン
? 非同期IO
? C10K問題クリア
? 初登場 2009年
? 5月
? 豊富なモジュール
1
2
Hello World
$ node hello.js
Webアプリケーション
var http = require('http');
var server = http.createServer(
function (request, response) {
response.writeHead(200, {
'Content-Type': 'text/plain'
});
response.write('Hello World!!n');
response.end();
}
).listen(8124);
$ node hello.js
Hello World!
スクリプト実行
console.log("Hello World!");
$ node
> console.log("Hello World!");
Hello World!
対話環境
hello.js
hello.js
nvm
? 複数バージョンの node.js を切り分け
? 拡張パッケージの中にはバージョン依存のものがある
3
$ git clone git://github.com/creationix/nvm.git ~/.nvm
$ source ~/.nvm/nvm.sh
$ nvm install v0.10.28
$ nvm use v0.10.28
$ node –v
v0.10.28
nvm インストール
nvm上に特定バージョンのnode.jsをインストー
ル
インストールされた特定バージョンのnode.jsを
利用
$ nvm alias default v0.10.28
今後のデフォルトのバージョンを変更
npm
? node package manager
? モジュール管理
4
$ npm install utcconv $ npm install –g utcconv
ターミナルからコマンド
として実行できる。
$ npm install –g titanium
$ titanium –v
3.2.0
グローバルインストー
ル
ローカルインストー
ル
作業ディレクトリ配下の
node_modulesに配置
アプリからRequireされて利
用.
├── hello.js
├── node_module
│ └──express
└── package.json
5
$ npm init
$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sane defaults.
See `npm help json` for definitive documentation on these fields
and exactly what they do.
Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
name: (hello)
version: (0.0.0)
description: Hello World
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to /Users/masu/Dropbox/node/hello/package.json:
{
"name": "hello",
"version": "0.0.0",
"description": "Hello World",
"main": "index.js",
"scripts": {
"test": "echo "Error: no test specified" && exit 1"
},
"author": "",
"license": "ISC"
}
Is this ok? (yes)
$
プロジェクトの初期設定を
対話式に行うコマンド
「package.json」を生成す
るだけ
「package.json」は後から
自分で作成してもいい
「package.json」はなくも
node.js は使える
6
$ npm install
{
"name": "hello",
"version": "0.0.0",
"main": "index.js",
"dependencies": {
"express": "*"
}
}
パッケージディレクトリ
.
├── index.js
└── package.json
.
├── index.js
├── node_module
│ └──express
└── package.json
package.json
git clone
.
├── index.js
└── package.json
$ npm install
node_modules は構成管理対象から外すのが一般的
echo "node_modules/" >> .gitignore
便利なモジュール
7
Unility
UglifyJS
jshint
grunt
yeoman
underscore
Altjs
Coffee-script
jade
TypeScript
DB
node-mysql
node-postgress
redis
node-mongodb-native
test
mocha
nodeunit
WebSocket
ws
Socket.io
Web
express
restify
sailsjs
Debug
node-dev
node-inspector
npmモジュール作成
① npm へアカウント登録
8
$ npm adduser
Username: masum
Password:
Email: (this IS public) masa@masum.jp
$ npm adduser
② アクセストークン生成
$ cat ~/.npmrc
_auth = xxxxxxxxxxxxxx
email = masa@masum.jp
~/.npmrc に token情報が書き込まれる
npmモジュール作成
9
var cli = module.exports;
cli.run = function() {
var utc = parseInt(process.argv[2]);
var date = new Date(utc);
console.log(date);
}
$ utcconv 1249968975000
Tue Aug 11 2009 14:36:15 GMT+0900 (JST)
UTC変換するCLIを作成する
lib/utcconv.js
#!/usr/bin/env node
'use strict'
var utcconv = require('../lib/utcconv');
utcconv.run();
bin/utcconv
③ プログラム作成
{
"name": "utcconv",
"version": "0.0.1",
"description": "Convert UTC Format",
"main": "index.js",
"scripts": {
"test": "echo "Error: no test specified" && exit 1"
},
"author": "masum",
"license": "MIT",
"preferGlobal": true,
"bin": {
"utcconv": "bin/utcconv"
}
}
package.json
「npm init」の後にこれを追
加
npmモジュール作成
10
~/.npmrc に token情報が書
き込まれる
npm サイトで検索
$ npm publish
npm http PUT https://registry.npmjs.org/utcconv
npm http 201 https://registry.npmjs.org/utcconv
+ utcconv@0.0.1
④ 公開
採用例
? PayPal
– PayPal社がバックエンドをJavaからJavaScriptへ移行
? 米Yahoo!
– 米Yahoo!がJSフレームワーク「Mojito」と、Node.jsのホスティング環境「Manhattan」発表。
? 第64回NHK紅白歌合戦
– 生放送と連動して出演歌手や楽曲情報を表示するセカンドスクリーン機能を持ったスマート
フォンアプリやWebブラウザー向けに、メッセージ配信プラットフォームを開発
? サイバーエージェント
– ピグライフ
? LInkedIn
– パフォーマンスとスケーラビリティを理由として,同社のモバイル用バックエンドインフラを Ruby on Rails
から Node.js にリプレース
11

More Related Content

Nodejs

  • 2. ? サーバーサイドJavaScript 非ブラウザJavaScript ? Google V8 JavaScriptエンジン ? 非同期IO ? C10K問題クリア ? 初登場 2009年 ? 5月 ? 豊富なモジュール 1
  • 3. 2 Hello World $ node hello.js Webアプリケーション var http = require('http'); var server = http.createServer( function (request, response) { response.writeHead(200, { 'Content-Type': 'text/plain' }); response.write('Hello World!!n'); response.end(); } ).listen(8124); $ node hello.js Hello World! スクリプト実行 console.log("Hello World!"); $ node > console.log("Hello World!"); Hello World! 対話環境 hello.js hello.js
  • 4. nvm ? 複数バージョンの node.js を切り分け ? 拡張パッケージの中にはバージョン依存のものがある 3 $ git clone git://github.com/creationix/nvm.git ~/.nvm $ source ~/.nvm/nvm.sh $ nvm install v0.10.28 $ nvm use v0.10.28 $ node –v v0.10.28 nvm インストール nvm上に特定バージョンのnode.jsをインストー ル インストールされた特定バージョンのnode.jsを 利用 $ nvm alias default v0.10.28 今後のデフォルトのバージョンを変更
  • 5. npm ? node package manager ? モジュール管理 4 $ npm install utcconv $ npm install –g utcconv ターミナルからコマンド として実行できる。 $ npm install –g titanium $ titanium –v 3.2.0 グローバルインストー ル ローカルインストー ル 作業ディレクトリ配下の node_modulesに配置 アプリからRequireされて利 用. ├── hello.js ├── node_module │ └──express └── package.json
  • 6. 5 $ npm init $ npm init This utility will walk you through creating a package.json file. It only covers the most common items, and tries to guess sane defaults. See `npm help json` for definitive documentation on these fields and exactly what they do. Use `npm install <pkg> --save` afterwards to install a package and save it as a dependency in the package.json file. Press ^C at any time to quit. name: (hello) version: (0.0.0) description: Hello World entry point: (index.js) test command: git repository: keywords: author: license: (ISC) About to write to /Users/masu/Dropbox/node/hello/package.json: { "name": "hello", "version": "0.0.0", "description": "Hello World", "main": "index.js", "scripts": { "test": "echo "Error: no test specified" && exit 1" }, "author": "", "license": "ISC" } Is this ok? (yes) $ プロジェクトの初期設定を 対話式に行うコマンド 「package.json」を生成す るだけ 「package.json」は後から 自分で作成してもいい 「package.json」はなくも node.js は使える
  • 7. 6 $ npm install { "name": "hello", "version": "0.0.0", "main": "index.js", "dependencies": { "express": "*" } } パッケージディレクトリ . ├── index.js └── package.json . ├── index.js ├── node_module │ └──express └── package.json package.json git clone . ├── index.js └── package.json $ npm install node_modules は構成管理対象から外すのが一般的 echo "node_modules/" >> .gitignore
  • 9. npmモジュール作成 ① npm へアカウント登録 8 $ npm adduser Username: masum Password: Email: (this IS public) masa@masum.jp $ npm adduser ② アクセストークン生成 $ cat ~/.npmrc _auth = xxxxxxxxxxxxxx email = masa@masum.jp ~/.npmrc に token情報が書き込まれる
  • 10. npmモジュール作成 9 var cli = module.exports; cli.run = function() { var utc = parseInt(process.argv[2]); var date = new Date(utc); console.log(date); } $ utcconv 1249968975000 Tue Aug 11 2009 14:36:15 GMT+0900 (JST) UTC変換するCLIを作成する lib/utcconv.js #!/usr/bin/env node 'use strict' var utcconv = require('../lib/utcconv'); utcconv.run(); bin/utcconv ③ プログラム作成 { "name": "utcconv", "version": "0.0.1", "description": "Convert UTC Format", "main": "index.js", "scripts": { "test": "echo "Error: no test specified" && exit 1" }, "author": "masum", "license": "MIT", "preferGlobal": true, "bin": { "utcconv": "bin/utcconv" } } package.json 「npm init」の後にこれを追 加
  • 11. npmモジュール作成 10 ~/.npmrc に token情報が書 き込まれる npm サイトで検索 $ npm publish npm http PUT https://registry.npmjs.org/utcconv npm http 201 https://registry.npmjs.org/utcconv + utcconv@0.0.1 ④ 公開
  • 12. 採用例 ? PayPal – PayPal社がバックエンドをJavaからJavaScriptへ移行 ? 米Yahoo! – 米Yahoo!がJSフレームワーク「Mojito」と、Node.jsのホスティング環境「Manhattan」発表。 ? 第64回NHK紅白歌合戦 – 生放送と連動して出演歌手や楽曲情報を表示するセカンドスクリーン機能を持ったスマート フォンアプリやWebブラウザー向けに、メッセージ配信プラットフォームを開発 ? サイバーエージェント – ピグライフ ? LInkedIn – パフォーマンスとスケーラビリティを理由として,同社のモバイル用バックエンドインフラを Ruby on Rails から Node.js にリプレース 11