SlideShare a Scribd company logo
1 of 12
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

What's hot

動画共有ツール
動画共有ツール動画共有ツール
動画共有ツールtamtam180
 
Hive undocumented feature
Hive undocumented featureHive undocumented feature
Hive undocumented featuretamtam180
 
Containerで変わるDevOps
Containerで変わるDevOpsContainerで変わるDevOps
Containerで変わるDevOpsshokiri
 
JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所Koji Nakamura
 
Babelで先取り次世代javascript
Babelで先取り次世代javascriptBabelで先取り次世代javascript
Babelで先取り次世代javascriptTsuyoshi Maeda
 
OpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? WayOpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? Wayロフト くん
 
ヤギにサーバーを管理してもらう話
ヤギにサーバーを管理してもらう話ヤギにサーバーを管理してもらう話
ヤギにサーバーを管理してもらう話Masaki Kobayashi
 
Shibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced MogilefsShibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced Mogilefsguest172cfb
 
Gulp入門 - コーディングを10倍速くする
Gulp入門 - コーディングを10倍速くするGulp入門 - コーディングを10倍速くする
Gulp入門 - コーディングを10倍速くするHayashi Yuichi
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Sho A
 
node+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作るnode+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作るKiyoshi SATOH
 
中小規模サービスのApacheチューニング
中小規模サービスのApacheチューニング中小規模サービスのApacheチューニング
中小規模サービスのApacheチューニング勲 國府田
 
WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築Saito5656
 
Windows7でもchefしたい!
Windows7でもchefしたい!Windows7でもchefしたい!
Windows7でもchefしたい!Tamie YAMAMOTO
 
第9回rest勉強会 ダウンロード・アップロード編
第9回rest勉強会 ダウンロード・アップロード編第9回rest勉強会 ダウンロード・アップロード編
第9回rest勉強会 ダウンロード・アップロード編ksimoji
 
Zabbixを2分でインストール
Zabbixを2分でインストールZabbixを2分でインストール
Zabbixを2分でインストール真乙 九龍
 
Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅-
Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅- Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅-
Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅- Daisuke Ikeda
 
サーバ側Swift
サーバ側Swiftサーバ側Swift
サーバ側Swift幸雄 村上
 

What's hot (20)

動画共有ツール
動画共有ツール動画共有ツール
動画共有ツール
 
Grunt入門
Grunt入門Grunt入門
Grunt入門
 
Hive undocumented feature
Hive undocumented featureHive undocumented feature
Hive undocumented feature
 
Containerで変わるDevOps
Containerで変わるDevOpsContainerで変わるDevOps
Containerで変わるDevOps
 
JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所
 
Babelで先取り次世代javascript
Babelで先取り次世代javascriptBabelで先取り次世代javascript
Babelで先取り次世代javascript
 
OpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? WayOpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? Way
 
ヤギにサーバーを管理してもらう話
ヤギにサーバーを管理してもらう話ヤギにサーバーを管理してもらう話
ヤギにサーバーを管理してもらう話
 
Shibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced MogilefsShibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced Mogilefs
 
Gulp入門 - コーディングを10倍速くする
Gulp入門 - コーディングを10倍速くするGulp入門 - コーディングを10倍速くする
Gulp入門 - コーディングを10倍速くする
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
 
node+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作るnode+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作る
 
中小規模サービスのApacheチューニング
中小規模サービスのApacheチューニング中小規模サービスのApacheチューニング
中小規模サービスのApacheチューニング
 
ZabbixとAWS
ZabbixとAWSZabbixとAWS
ZabbixとAWS
 
WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築
 
Windows7でもchefしたい!
Windows7でもchefしたい!Windows7でもchefしたい!
Windows7でもchefしたい!
 
第9回rest勉強会 ダウンロード・アップロード編
第9回rest勉強会 ダウンロード・アップロード編第9回rest勉強会 ダウンロード・アップロード編
第9回rest勉強会 ダウンロード・アップロード編
 
Zabbixを2分でインストール
Zabbixを2分でインストールZabbixを2分でインストール
Zabbixを2分でインストール
 
Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅-
Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅- Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅-
Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅-
 
サーバ側Swift
サーバ側Swiftサーバ側Swift
サーバ側Swift
 

Similar to Nodejs

SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...Naoya Ito
 
10分で作る Node.js Auto Scale 環境 with CloudFormation
10分で作る Node.js Auto Scale 環境 with CloudFormation10分で作る Node.js Auto Scale 環境 with CloudFormation
10分で作る Node.js Auto Scale 環境 with CloudFormationKazuyuki Honda
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略Hiroshi SHIBATA
 
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)崇之 清水
 
AWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguroAWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguroVOYAGE GROUP
 
AWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguroAWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguroKenta Suzuki
 
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようGroovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようAkira Shimosako
 
OpenStack + Common Lisp
OpenStack + Common LispOpenStack + Common Lisp
OpenStack + Common Lispirix_jp
 
Cloud Foundry: Open Platform as a Service
Cloud Foundry: Open Platform as a ServiceCloud Foundry: Open Platform as a Service
Cloud Foundry: Open Platform as a ServiceShunsuke Kurumatani
 
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Mori Shingo
 
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~Akira Inoue
 
Nodejuku01 ohtsu
Nodejuku01 ohtsuNodejuku01 ohtsu
Nodejuku01 ohtsuNanha Park
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでRyo Nakamaru
 
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~Akira Inoue
 

Similar to Nodejs (20)

SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
 
SocketStream入門
SocketStream入門SocketStream入門
SocketStream入門
 
10分で作る Node.js Auto Scale 環境 with CloudFormation
10分で作る Node.js Auto Scale 環境 with CloudFormation10分で作る Node.js Auto Scale 環境 with CloudFormation
10分で作る Node.js Auto Scale 環境 with CloudFormation
 
densan2014-late01
densan2014-late01densan2014-late01
densan2014-late01
 
Node.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャーNode.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャー
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
 
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
 
AWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguroAWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguro
 
AWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguroAWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguro
 
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようGroovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみよう
 
OpenStack + Common Lisp
OpenStack + Common LispOpenStack + Common Lisp
OpenStack + Common Lisp
 
Cloud Foundry: Open Platform as a Service
Cloud Foundry: Open Platform as a ServiceCloud Foundry: Open Platform as a Service
Cloud Foundry: Open Platform as a Service
 
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋
 
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
 
Yesod on Heroku
Yesod on HerokuYesod on Heroku
Yesod on Heroku
 
Bp study39 nodejs
Bp study39 nodejsBp study39 nodejs
Bp study39 nodejs
 
Nodejuku01 ohtsu
Nodejuku01 ohtsuNodejuku01 ohtsu
Nodejuku01 ohtsu
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
 
Antのススメ
AntのススメAntのススメ
Antのススメ
 
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
 

Recently uploaded

あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]
あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]
あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]Taka Narita
 
Windowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーン
Windowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーンWindowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーン
Windowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーンivanwang53
 
ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法
ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法
ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法ivanwang53
 
Windows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docx
Windows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docxWindows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docx
Windows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docxivanwang53
 
Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元
Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元
Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元ivanwang53
 
動的 & 非同期コンポーネント / Dynamic & Async Components
動的 & 非同期コンポーネント / Dynamic & Async Components動的 & 非同期コンポーネント / Dynamic & Async Components
動的 & 非同期コンポーネント / Dynamic & Async Componentsokitamasashi
 

Recently uploaded (6)

あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]
あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]
あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]
 
Windowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーン
Windowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーンWindowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーン
Windowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーン
 
ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法
ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法
ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法
 
Windows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docx
Windows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docxWindows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docx
Windows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docx
 
Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元
Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元
Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元
 
動的 & 非同期コンポーネント / Dynamic & Async Components
動的 & 非同期コンポーネント / Dynamic & Async Components動的 & 非同期コンポーネント / Dynamic & Async Components
動的 & 非同期コンポーネント / Dynamic & Async Components
 

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