����3��̗\���WebSocket�o��̔w�i�A��{�I�Ȏg�����̉���A���p�T�[�r�X�̗�A�u���E�U�̎����Ȃǂ�������܂��i�ҏW���j
�@����ɂ��́A�����h����New Bamboo�Ƃ�����Ђ�Web�G���W�j�A�Ƃ��ē����Ă���@makoto_inoue�ł��B�����̂Ƃ���APusher�Ƃ���WebSocket�̃N���E�h�T�[�r�X�̊J���Ɋւ���Ă��܂��B����3��ɓn����WebSocket�Ɋւ���Z���A�ڂ�S�������Ă��������܂��B
�@�����܂߂�New Bamboo�̖ʁX�i��X�͎��������̂��Ƃ�Bambino�ƌĂ�ł��܂��j��WebSocket�ɂȂ����������������Ƃ������Ƃ���͂��܂�A���ۂɃN���E�h�T�[�r�X���n�߂�܂łɂ��������X�g�[���[�����b���������Ǝv���܂��B���̃X�g�[���[��ʂ��āAWebSocket����J���u���A���^�C��Web�v�Ȑ��E�ւ̉\����Z�p�I�ۑ���F����Ƌ��L�ł���Ǝv���Ă��܂��B
�@�r���ł������̃T���v���R�[�h��JavaScript�i�T�[�o�T�C�h��node.js���g���܂��j��Ruby�Ōf�ڂ��܂����A���̂ق��̌���Ŏg����c�[����t���[�����[�N�������ɏЉ�܂��B�܂��A���Ђ̃T�[�r�X�uPusher�v�͌����ˑ��ł��̂ŁA�D���Ȍ���Ŏ����܂��B
�@�����ĘA�ڂ̍Ō�ŁAWebSocket�ō��ꂽ�I�[�v���\�[�X�v���W�F�N�g�̂��������Љ��ƂƂ��ɁA���ナ�A���^�C��Web���ǂ̂悤�ȕω��������炷���������Ȃ�ɑ�_�\�����Ă݂܂��B��������������ɁA�����ł������̕���WebSocket�Ƀg���C���Ă݂悤�Ǝv���Ă���������Ǝv���܂��B
�@���������u���A���^�C��Web���āA�ǂ�Ȃ��́H�v�Ɠǎ҂̊F����͎v���邩������܂���B��͐g�߂ɂ�������܂��BFacebook�`���b�g��Gmail�ŃI�����C���̃��[�U�[��������v���[���X�@�\�Ȃǂ����̗�Ƃ����Ă悢�ł��傤�BTwitter�����[���h�J�b�v�̊��Ԓ����e�������Ƃ̃��A���^�C���c�C�[�g�����y�[�W���J�݂��Ă����̂��L���ɐV�����Ǝv���܂��B�܂��A�ŋߊJ�������~���ꂽGoogle Wave�ł����A�`���b�g�̓��͂�1�������ƂɍX�V�����͗l�ɓx�̂��ꂽ�̂����L���̕��������̂ł͂Ȃ����Ǝv���܂��B
�@�����Ȃ�ł��AGoogle�AFacebook�ATwitter�Ƃ��������̃v���[���[�́A���łɃ��A���^�C��Web���T�[�r�X�̗v�ɓ������Ă���̂ł��B������[�U�[�Ƃ��Ă͔ނ�̃T�[�r�X�������g�������ŏ\���y�����̂ł����A��͂�J���҂�T�C�g�I�[�i�[�ł���A�����������@�\�������̃T�C�g�ɂ�������Ă݂����ł���ˁB�����ނ炪�g���Ă���Z�p�̏ڍׂ͒f�ГI�ɂ����R��Ă��܂��A����JavaScript���x���ł̋��ʂ����K�i�Ƃ����̂�Google Wave�v���g�R���������Ă͂قڊF���ł����B
�@�����ɓo�ꂵ���̂�WebSocket�ł��B����̓��A���^�C��Web����������HTML5�̏��K�i��1�ŁA�������������ɋ����������܂����B
�@�܂����߂ɁA�����������Ђ̃A�v����WebSocket�𗘗p���ă��A���^�C��Web�̋@�\�������ꂽ������Ă����܂��傤�B
�@�ŏ��̗�̓v���W�F�N�g�Ǘ��A�v���́uTrueStory�v�ł��B���Ƃ��Ǝ��������̃N���C�A���g�v���W�F�N�g�̊Ǘ������邽�߂ɎГ��Ŏg���Ă����̂��T�[�r�X���������̂ł��B���E�ɕ��ׂ��u���E�U�̍����Ńv���W�F�N�g��ύX����ƁA�E���ł��ύX����Ă���̂����Ă���������ł��傤���B
�@���̗�̓h���b�O���h���b�v����ƍŋ߃A�W���C���J����@��1�Ƃ��čĂђ��ڂ��W�߂Ă���uKanban�v�̕������|�����킹�č�����uDraggan�v�Ƃ����A�v���̃v���g�^�C�v�ł��B
�@��قǂ̗�Ɠ������A�ύX�����A���^�C���ōX�V�����̂����Ă���������Ǝv���܂��B
�@������������������g���A�v���P�[�V�����́A�����ƃu���E�U�̃^�u�ŊJ�����ςȂ��ɂȂ��Ă��邱�Ƃ������Ǝv���܂����A�����������X�V����Ƃ��ɂȂ��āA�X�V���悤�Ǝv���Ă����f�[�^�����łɂȂ��Ȃ��Ă��āA�G���[���o�Ă��܂����肷��Ɣ��ɕs�ւɎv�����肷�邱�Ƃ͂Ȃ��ł��傤���H
�@����������������2�̗�ł́AWebSocket�Ή��ɂ���ĉ����@�\���ς�����Ƃ������Ƃ͂���܂���B�������A���X�ƕς��䂭�������A���^�C���ɍX�V���邱�ƂŁA���[�U�[�̗���������I�Ɍ��サ�Ă��܂��B���傤��Gmail��Google Map��Ajax��S�ʓI�ɓ������邱�ƂŃ��[�U�[�G�N�X�y���G���X�����I�Ɍ��サ�AWeb2.0�Ƃ������t�܂Ő��ݏo�����̂ɕC�G���邮�炢�̃C���p�N�g�����A���^�C��Web�ɂ͂���̂ł͂Ȃ����A�Ǝv���Ă��܂��B
�@����ł̓��A���^�C��Web�����グ��̂ɕK�v�Ȋ�b�Z�p�̐��X�����������̌��������ɂ��ǂ��Ă����܂��傤�B
�@��N��2009�N11���ɘb�͂����̂ڂ�܂��B�C�M���X�암Brighton�Ƃ������ŁuFull Frontal 2009�v �Ƃ���JavaScript�̃J���t�@�����X�ɎQ�����܂����BBBC��Yahoo!�Ƃ����������ȉ�Ђ̃g�b�v���x���̃G���W�j�A�������AJavaScript�̍ŐV�e�N�j�b�N��g�����h�ɂ��Č��C�x���g�������̂ł����A���̂Ƃ���Python��Web�t���[�����[�N�ADjango�̊J���҂ł���Simon Willison����node.js�Ƃ��ĔM���u���������e���A���̓��̎Q���҂̘b���Ƃ��߂��܂����B
�@���Ƃ��Ɣނ�JSONP���g�����N���X�h���C���X�N���v�e�B���O�ɂ��Ęb���\�肾�����̂ł����A�u����2�T�ԑO��node.js�̂��Ƃ�m��A�}篃g�s�b�N��ς��������ł��B�����܂Ŕނ���藧�Ă�node.js�Ƃ͂����������Ȃ̂ł��傤���H
�@�uNode.js is genuinely exciting.�v�inode.js�͖{���ɃG�L�T�C�e�B���O���j�Ƃ����^�C�g���̔ނ̃u���O������p����node.js�̐����͈ȉ��̒ʂ�ł��B
A toolkit for writing extremely high performance non-blocking event driven network servers in JavaScript.
�u�ƂĂ��n�C�p�t�H�[�}���X�ŃC�x���g�쓮�ȃl�b�g���[�N�T�[�o��JavaScript�ŏ������߂̈�A�̃c�[���Q�v
�@�͂����茾���āA������ŏ��ɓǂƂ��ɂ́u�Ȃ�̂�������v�Ƃ�����ۂ����c��܂���ł����B
�@�u�n�C�p�t�H�[�}���X�v�Ƃ����͕̂�����܂����A�u�C�x���g�쓮�ȃl�b�g���[�N�T�[�o�v�ƌ����Ă��s���Ƃ��܂���B
�@�����Ŕނ͊�����Web�T�[�o���E�T�M�A �C�x���g�쓮�̃l�b�g���[�N�T�[�o���^�R�ɗႦ�Đ������Ă���܂����B�ȉ��̐}�����Ă�������
�@�ŏ��̗�ł͂�������̃E�T�M����������ł��āA���X�ɗ��郊�N�G�X�g�i�l�Y�~�j�������Ă��܂��B�e�E�T�M��
�Ƃ�����A�̏��������Ă��܂��B���ۂɂ�A��HTTP���N�G�X�g�AB�̓f�[�^�x�[�X�N�G���AC��HTTP���X�|���X�Ƃ������ƂɂȂ�ł��傤�B
�@�����ŏd�v�ȓ_�́A�E�T�M��1�C�̃l�Y�~�ɑ���A〜C�̏������I���܂ŁA���̃l�Y�~�̏����Ɏ�肩����Ȃ����Ƃł��B�����ł���B�̏������d�������肷��ƁA���X�ɏ��ԑ҂��̃L���[���c��オ���Ă��܂��܂��B����ɑΏ�����ɂ́A�����̃E�T�M��p�ӂ���K�v������܂��B���ꂪ���݁A������Web�A�v���P�[�V����������Ă���\���ŁA�E�T�M�ɑ�������HTTP�T�[�o�����ׂ邱�ƂŁA�������߂Ă��܂��B
�@����A2�ڂ̗�Ƃ��ďo�Ă���C�x���g�쓮�̓^�R�ł��B�^�R���l�Y�~��1�C����������̂ɕς��Ȃ��̂ł����AA�`C�܂ł̂��ׂĂ̏������I���̂�҂�����͂��܂���BA�̃��N�G�X�g�����ƁA�f�[�^�x�[�X�N�G���𓊂����܂܁A���ʂ�҂����Ɏ��̃l�Y�~�̏����ɓ���܂��B�����Đ�قǂ̃f�[�^�x�[�X�N�G���̌��ʂ��Ԃ��Ă�����A������L���b�`���ă��X�|���X�Ƃ��Ė߂��܂��i�����̃��N�G�X�g���ɂ����Ƃ����Ӗ��ŁA�^�R�Ȃ̂ł��傤�B�^�R�ɂ͎�i���H�j����������̂ŁA��x�ɑ����̏������ł������ł��j�B�@�������邱�ƂŁA�^�R��1�l�ł���ɂ�������炸�A��ʂ̃l�Y�~���������Ƃ��ł���̂ł��B
�@��������ۂ̃R�[�h�Ńx���`�}�[�N���Ă݂܂��傤�B
�@�������ۂɎ����Ă݂������́Anode.js���C���X�g�[�����Ă��������BUNIX�n��OS�̏ꍇ�A�C���X�g�[���͔��ɊȒP�ł��Bnode.js�̃T�C�g����\�[�X���_�E�����[�h���Amake�R�}���h���ȉ��̂悤�Ɏ��s���邾���ł��B
$ ./configure $ make $ make install
�@�����ł̓f�[�^�x�[�X�A�N�Z�X�̂�����setTimeout�t�@���N�V�������g�p���Ă��܂��B
�@Simon����̃u���O�͍�N�̂��̂ŁAnode.js��API�͂��Ȃ�ύX����Ă��邽�߁A�ŐV�̂��́iv0.1.104�j��API���g�p�������̂ɕύX���Ă݂܂����B
�@�܂��͒ʏ��HTTP���N�G�X�g�^���X�|���X�̗�ł��B
var sys = require('sys'), http = require('http'); var count = 0; http.createServer(function (request, response) { count ++ sys.log(count); response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('Hello\n'); }).listen(8124); sys.log('Server running at http://127.0.0.1:8124/');
�@��̃R�[�h��hello.js�Ƃ������O�ŕۑ����A�T�[�o�Ƃ��ė��グ�Ă݂܂��傤�B
$ node hello.js
�@���̃T�[�o�ɑ��āAab�iApache Bench�j��1000��i����x100�j�̃A�N�Z�X�����ăx���`�}�[�N���v�����܂��B���̃}�V����MacBook Pro��CPU�R�A��2�ł��B
�@���ʂ͈ȉ��̒ʂ�ł��B
$ ab -n 1000 -c 100 'http://127.0.0.1:8124/' Time taken for tests: 0.285 seconds Requests per second: 3505.71 [#/sec] (mean) Time per request: 28.525 [ms] (mean)
�@����2�b�̑҂����Ԃ���������ł��B
var sys = require('sys'), http = require('http'); var count = 0; http.createServer(function (request, response) { count ++ sys.log(count); setTimeout(function() { response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('Hello Sleep\n'); }, 2000); }).listen(8125); sys.log('Server running at http://127.0.0.1:8125/');
�@���ʂ͈ȉ��̒ʂ�ł��B
Time taken for tests: 20.128 seconds Requests per second: 49.68 [#/sec] (mean) Time per request: 2012.764 [ms] (mean)
�@Time per request ��Timeout�^�C�}�[�Ɠ����ق�2�b���Ƃ����̂����Ď��܂��B
�@�u�ŏ��̗Ⴊ0.2�b�����������Ă��Ȃ��̂ɁA�����100�{��20�b�����Ԃ������Ă���B������Ēx���Ȃ��H�v�Ǝv�������Ȃ��A�ł͎��̃R�[�h�����Ă݂Ă��������B�����Simon�̃u���O�ɂ͍ڂ��Ă��Ȃ���ł����ATimeout�t�@���N�V�����̑����Sleep������t�@���N�V�����ɕt���ւ��Ă��܂��܂����B
var sys = require('sys'), http = require('http'); var count = 0; // Thanks to http://www.ozzu.com/programming-forum/javascript-sleep-function-t66049.html var sleep = function (naptime){ var sleeping = true; var now = new Date(); var alarm; var startingMSeconds = now.getTime(); while(sleeping){ alarm = new Date(); alarmMSeconds = alarm.getTime(); if(alarmMSeconds - startingMSeconds > naptime){ sleeping = false; } } return "finished" } http.createServer(function (request, response) { count ++ sys.log(count); result = sleep(2000); response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('Hello Blocking Sleep ' + result + ' \n'); }).listen(8126); sys.log('Server running at http://127.0.0.1:8126/');
�@���ʂ͈ȉ��̒ʂ�ł��B
Time taken for tests: 2001.206 seconds Requests per second: 0.50 [#/sec] (mean) Time per request: 200120.554 [ms] (mean)
�@2�b�~1000���N�G�X�g��2000�b�Ƃ������ʂƓ����Ȃ̂����Ď��܂��ˁB��������ab�̕���x��100�ɂ��Ă���̂ɁA�܂��������ꂪ��������Ă��Ȃ����ʂƂȂ�܂����B
�@�t��setTimeout�̕���2�b�~1000���N�G�X�g�^100��20�b�ƕ����L���ł��邱�Ƃ�������܂��B����x�����グ��A�����Ƒ����Ȃ邱�Ƃł��傤�B
�@���҂����Ⴂ�́AsetTimeout���m���u���b�L���O�ȃt�@���N�V�����ŁASleep���u���b�L���O�ȃt�@���N�V�����ł��邱�Ƃɂ���܂��BsetTimeout�����s���ꂽ��AJavaScript�͌��ʂ�҂����Ɏ��̏����Ɏ�肩����i�����������ƌĂт܂��j�A setTimeout�ɓn���ꂽ���i������R�[���o�b�N���ƌĂт܂��j��2�b�o������Ɏ��s����܂��B
�@���̃R�[���o�b�N�A����������̂Ƃ����C�x���g�쓮�v���O���~���O��@�́A�ʏ��Web�T�[�o�������Ƃ��ɂ͎g��Ȃ��T�O�ł����A�u���E�U��Ŏ��s�����JavaScript�̓V���O���X���b�h�����g���Ȃ��̂œ���I�Ɏg���Ă��܂��i�u���E�U��Ő�قǂ̂悤��sleep�t�@���N�V���������s����ƃu���E�U���ł܂��Ă��܂��܂��j�B
�@���̃R�[���o�b�N�A���������T�[�o���őS�ʂɑł��o�����t���[�����[�N�Ƃ��ēo�ꂵ���̂�node.js�Ȃ̂ł��B
�@�u�Ȃ�قǁA�C�x���g�쓮�Ńm���u���b�L���O���ƁA��������̓����A�N�Z�X������ꍇ�Ƀp�t�H�[�}���X�������̂��B�ł����̃T�C�g�͂���Ȃɓ����A�N�Z�X���Ȃ�����W�Ȃ���ˁv�B�����v��ꂽ�������������邩������܂���B�������A�m���u���b�L���O���^��������G���A������������܂��B
�t�@�C���̃A�b�v���[�h
�@�r�f�I�ȂǁA�傫�ȃt�@�C���A�b�v���[�h�Ƃ����̂͑�ςɓ�����ł��B��قǂ�TimeOut�̗�ł�2�b�̃u���b�N�ł������A���SMB�ɂ��Ȃ�悤�ȃt�@�C���𑗂�Ƃ���ƁA���\�b�A�ꍇ�ɂ���Ă͕��P�ʂł̃u���b�L���O���������܂��B�܂��A�b�v���[�h�̍Œ��ɁA�i��������A���^�C���Œm�肽���Ƃ����v�����o�Ă��܂��B����܂łɂ��i�����\������Flash�x�[�X��SWFUpload��AWeb�T�[�o�̃��W���[��������܂������A�����ɍ����悤�ɃJ�X�^�}�C�Y����̂���������肵�܂��B
�@node.js�̏�������̃R���g���r���[�^�[�ł���Felix Geisendorfer����́A���������������Anode.js���g���Ă����ɊȒP�ɂł��邩�ɂ��Ẵu���O�������Ă��܂��B�ނ̉�Ђ��ŋ߃����[�X����Transloadit�́A�t�@�C���̃A�b�v���[�h�ƕϊ������N���E�h�T�[�r�X�Ȃ̂ł����A�����node.js�ō\�z���ꂽ�ŏ��̏��ƃT�C�g��1�ł��B
�`���b�g
�@�ȑO�uLingr�v�Ƃ����`���b�g�T�[�r�X���������̂ł����A��҂̍]�������Y���uLingr and Comet - �Z�p������v�̒��Ń`���b�g�T�[�r�X�̃X�P�[�����O�̓�����ȉ��̂悤�ɏq�ׂĂ��܂��B
�@�ʏ�AApache�Ȃǂ̈�ʓI�ȃE�F�u�T�[�o�́A�Z���������ԂŕԂ��鏈�����ʂɂ��Ȃ��Ƃ����X���[�v�b�g�d���̑O��Őv����Ă��܂��B���̂��߁A���N�G�X�g�����炻�̃��N�G�X�g�ɑ��ăv���Z�X�܂��̓X���b�h�����Ă����A�Ō�܂Ŗʓ|������Ƃ�����������ʓI�ł��B
�@�Ƃ��낪�A��قǂ��������悤��Comet�ł̓R�l�N�V�����͂Ȃ����ςȂ��ɂȂ��Ă��܂�����A���܂Ōo���Ă��v���Z�X��X���b�h�i����у����������j���������܂���B�������A�����̃X���b�h�͎d���������ɃA�C�h�����O���Ă���A��������CPU��Q��Ă��邾���ł��B����͏d��Ȗ��ł��B�ǂ̂��炢�d�傩�Ƃ����ƁA����������▜�̃I�[�_�[�̓����ڑ����������邱�Ƃ��ł��܂���B
�@�u�����̃X���b�h��v���Z�X��p���ē����ڑ�����������v�Ƃ����̂̓��\�[�X�̘Q��ɂȂ�̂ł����Anode.js�̃C�x���g�쓮�̏ꍇ�A�����グ�Ă���v���Z�X��1�����Ȃ̂ŁA���\�[�X�̊ϓ_�����ό����̗ǂ����f���Ƃ����܂��B�����Ă��́u�ڑ����Ȃ����ςȂ��ɂ���v�`���b�g���f���́A���ꂩ�炨�b������WebSocket�̐��E�Ɩ��ڂɊW���Ă��܂��B
Copyright © ITmedia, Inc. All Rights Reserved.
��IT eBook