Ruby�̂܂‚��Ǝ������ڂ���b��̌���

twitter�u�[���̉A�Œ��ڂ��W�߂�gErlang�h

2007/04/27

�@�gtwitter�h���u�[�����B140�o�C�g�ȓ��̒Z�����b�Z�[�W�Łg���ݐi�s�`�h�̎����̃X�e�[�^�X���ق��̃��[�U�[�ƃV�F�A���邾���̃I�����C���T�[�r�X�����A�{���̕č��͂��Ƃ��A���{�ł����Ȑl�C���W�߂Ă���BAlexa�ŃA�N�Z�X���̐��ڂ𒲂ׂ�ƁA���N�ɓ����Ă���{�i�I�Ƀu���[�N���Ă���l�q��������B4��22���ɂ̓j���[���[�N�^�C���Y��twitter�ƁA�T���t�����V�X�R�ݏZ�̑n�Ǝ�2�l���L���Ŏ��グ�Ă���B

erlang01.png Alexa�ɂ��twitter.com�̃A�N�Z�X�����ڃO���t

twitter�̃R�~���j�P�[�V�����c�[���Ƃ��Ă̐V����

�@twitter�ɎQ�����Ă݂�ƁA�`���b�g�⃁�[���ASNS�Ƃ������A�����̃R�~���j�P�[�V�����c�[���̂�����Ƃ��قȂ�A�s�v�c�Ȃ‚Ȃ�������V�N�Ŋy�����B�M�S�Ƀ��b�Z�[�W���X�V���郆�[�U�[�����Ă���ƁACUSeeMe�AICQ�Amixi�Ȃǂ��o�ꂵ���Ƃ��ɐl�X���������M���ɋ߂����̂�������B

�@twitter�ł́A�����Ԃ␔���X�p���Ŏ����̃A�b�v�f�[�g���A�F�l��m�l�Ɂg�����‚����܂����Ȃ���@�h�ő���B�u���E�U�Ɍ������āu�����������v�A�uJavaScript�̃Z�~�R�����Ńn�}���Ă��v�A�u�R�s�[�@���̏Ⴕ�ăv���[�������o���Ȃ��v�A�u�C�`���[�̎����ϐ풆�v�ȂǂƑł����߂΁A�����̃��b�Z�[�W���t�H���[���Ă��郆�[�U�[�̉�ʂɁA���̃��b�Z�[�W���\�������B��{�I�Ƀ��b�Z�[�W��1��N�ł���A�N������̐l�Ɍ������đ�����̂ł͂Ȃ��B�o�����̂����̓v���C�x�[�g���b�Z�[�W���g�����A���[���ȂǕʂ̕��@���g�����ƂɂȂ�B

�@����ƂȂ��b���U������A�N�ɂƂ��Ȃ�����𓊂��Ă݂���A�Ƃ茾�̂悤�Ƀ����`�̗U���𔭂�����ƁA�g�����͂��낢��B�������A��������Ȃ������肾�B���b�Z�[�W�������l�́A���[���̂悤�ɕԐM�̋`�����ɂ�������邱�Ƃ��Ȃ����A�`���b�g�̂悤�ɃR�~���j�P�[�V�����Ɏn�܂���I�����Ȃ��A�A��������Ȃ��B

twitter�́A���̂܂܃X�P�[�����邩

�@twitter�̗��s�͋����[�����ۂ����A�����Ŏ����������Ǝv���Ă���̂́Atwitter���̂��̘̂b�ł͂Ȃ��Btwitter�̍s����ɍT���Ă���gC10K���h���i�Q�l�����N�FWeb2.0�̐�ɂ���C10K����j�B���݁Atwitter�ł͕b��4000���̃��b�Z�[�W�����A���^�C���������Ă���Ƃ������A�ʂ����Ă��̂܂܃��[�U�[���������������Ƃ��ɁA�V�X�e���͎��p�I�Ȏ��ԂŔ����ł���̂��B����Ȃ��Ƃ��A�ŋ�Web�J���҂̊ԂŘb��ɂȂ��Ă���B

�@twitter�̊J���Ɍg����Ă���u���C���E�N�b�N�iBlaine Cook�j���́gBig Bird�iscaling twitter�j�h�Ƒ肷��v���[���e�[�V�����̒��ŁAtwitter��Ruby on Rails�iRoR�j���g���Ă��邱�Ƃ𖾂����Ă���B���́uRoR���X�P�[�����邩�v�Ƃ������ƂɂȂ邪�A�N�b�N���͑΍�Ƃ��āA���܂߂ȃC���f�N�V���O�ɂ��f�[�^�x�[�X�̍œK�����K��Web�A�v���P�[�V�����쐬���̒�ԃc�[���A�gMemCached�h�ŕ��U�������L���b�V���𑽗p����ƃA�h�o�C�X����B��K�͂�SNS�ł͂��͂�퓅��i�ƂȂ������������@���B�������ARoR�͂����������Ƃ������ł���Ă����킯�ł͂Ȃ��̂ŁA�Y������R�[�h�̕����ɁA���ׂĎ�őΉ��R�[�h�𖄂ߍ��߂ƃN�b�N���͂����B

�@�N�b�N���̌��_�́uRoR�̓X�P�[������i�Ηj���ɃV�X�e����~�������ǂˁj�v�Ƃ�������Ȃ��̂ŁA����ȏ㕡�G�ȃV�X�e�������Ȃ�RoR�ł͑Ώ�������Ȃ��Ƃ��Ă���B

���ڂ��W�߂錾��AErlang

�@twitter�ł́A���b�Z�[�W���O�V�X�e���Ɂgejabberd�h���g���Ă���Ƃ����B����́gErlang�h�ŏ����ꂽIM�T�[�o���B�I�[�v����IM�W���K�i��Jabber�ɑΉ����Ă���B�܂��A�N�b�N�����v���[���e�[�V�����̒���RoR�̑�ւƂ��ċ����Ă������1�A�gRabbitMQ�h���AErlang�ŏ����ꂽ���b�Z�[�W���O�T�[�o���B

�@Erlang���AWeb2.0�T�[�r�X�ɂ�����X�P�[���r���e�B�Ƃ����ۑ�ɑ΂���L���ȓ����ł͂Ȃ����\�\�B�����l���n�߂Ă���l�������Ă���悤���BErlang�̐��݂̐e�ł���W���[�E�A�[���X�g�����O���́AErlang�̃����b�g���A���΂肱���q�ׂĂ���i�Q�l�����N�j�B

Your Erlang program should just run N times faster on an N core processor.

�i���Ȃ���������Erlang�̃v���O������N�R�A�̃v���Z�b�T�Ȃ�N�{���������͂����j

�@�R�A�̐��𑝂₷�����Ŏ����I�ɁA�قڃ��j�A�ɑ����Ȃ�Ƃ����킯���B����͕��ʂ̏����n�ł͂��肦�Ȃ����Ƃ��B

�@Erlang�͕��񏈗��ɓK�����v���O���~���O����ŁA1987�N�ɓo�ꂵ�A1998�N�ɂ̓I�[�v���\�[�X������Ă���̂ŐV�����o�ꂵ������Ƃ����킯�ł͂Ȃ����A�����ɏ��`�ŁA���݂ɂ킩�ɒ��ڂ��W�ߎn�߂Ă���BRuby�̊J���҂Ƃ��Ēm����A�܂‚��Ƃ䂫�Ђ뎁���A4��18���́g�u���v�̌����h�Ƒ肵���u���O�̃G���g���Łu���ɂ���g�����h�́w�֐��^�x�Ɓw����x�B��������������Erlang���{���B���j���M����������A�m���x�㏸���v�ƁA���Ƀ��W���[�ɂȂ肤�錾��̖{����Erlang�̖��O�������Ă���B

�@Erlang�́A���Ƃ��ƃG���N�\�����J�����A�e���R������Ŏ��т��d�˂Ă������ꂾ�B���ꖼ��Erlang�́A�f���}�[�N�l�Z�t��Agner Krarup Erlang���̖��O�ɂ��Ȃ�ŕt�����Ă��邪�A�G���N�\���iERricson�j�̌���iLANGuage�j�Ƃ�����d�̈Ӗ������߂��Ă���Ƃ����i�Q�l�����N�FWikipedia����j�B�����͉p�ꌗ�ł́u�A�[�����O�v��u�A�[�����v�������A���܂�̋��̃X�E�F�[�f���ł́u�G�A�����O�v�ɋ߂����Ŕ��������悤���B

�}���`�X���b�h�v���O���~���O�͕��G������

�@C10K���́A�����Ȏd����v������N���C�A���g��������K�͂ŃT�[�o�ɂԂ牺����ƌ��݂̃V�X�e���͔j�]����Ƃ������̂������B�Ⴆ��HTTP�T�[�o��Apache�́A���N�G�X�g���󂯂邽�тɎq�v���Z�X���t�H�[�N���ď��������Ȃ��Ƃ���UNIX�ɌÂ����炠���ʓI�ȃT�[�o�̎����ƂȂ��Ă���B�����͗e�Ղ����A�v���Z�X���ۂ��ƃR�s�[���邽�ߋN���̃I�[�o�[�w�b�h���傫�����A����������ʂ������B�v���Z�X���������Ȃ��Ă����OS�̃^�X�N�X�C�b�`�̃R�X�g�������ł��Ȃ��B

�@����A�v���Z�b�T�̃R�A���͍�����������������B�C���e����AMD�̃v���Z�b�T�̃R�A����2�A4�A8�‚Ƒ��������Ă��邵�A�T���E�}�C�N���V�X�e���Y��UltraSPARC T1�ł�8�‚̃R�A�ŁA�e�R�A���Ƃ�4�‚̃X���b�h�̕��񏈗����ł���B���N��ɂ͐��\�̃R�A���ő���ɐ������A�I�[�o�[�w�b�h�̏��Ȃ����񏈗��̃v���O���~���O���f�������߂��Ă���킯���B

�@���݁A���񏈗��̂��߂ɍL���g���Ă���e�N�j�b�N�̓}���`�X���b�h�������A��������Ԃ����L���Ȃ��}���`�v���Z�X�ƈقȂ�A����v���Z�X���ŕ����̃X���b�h�����񂵂đ���}���`�X���b�h�ł́A���Ȃ蒍�Ӑ[���v���O���~���O���K�v�ɂȂ�B�O���[�o���ϐ���X�^�e�B�b�N�ϐ��Ƃ������X���b�h�Ԃŋ��L���Ă��郁�����ɁA�ǂ̃X���b�h����ł��A�N�Z�X�ł��Ă��܂����炾�B

�@�ǂ̃X���b�h���A�ǂ������^�C�~���O�Ń����������������邩���A�v���O���}����ɓ��̒��Œǂ�������̂͂���߂č���B�o�O���E�э��ޗ]�n���傫���B���Ƃ��ꌩ�����Ă���悤�Ɍ����Ă��A����̏����ŃG���[���N����”\����r������͎̂�����s�”\���B

�@�����������ɑΏ����邽�߂ɁA�����̃X���b�h���C�u�����ł́A�X���b�h����Ăяo���Ă��悢�g�X���b�h�Z�[�t�h�Ȋ֐���p�ӂ�����AOS�̃Z�}�t�H�Ɏ����g�~���[�e�b�N�X���b�N�h�Ƃ������r�������p�̃��b�N�@�\��p�ӂ��Ă���B�~���[�e�b�N�X���g�����r������Ńf�[�^�̈�ѐ���ۂ‚��Ƃ͂ł��邪�A�����̃X���b�h�������Ƀf�[�^�ɕ��G�ȏ����ŃA�N�Z�X�����ꍇ�ɂ���Ɉ�ѐ����ۂ����悤�ɂ���̂͏n���v���O���}�ɂ�����B

�@�J���t�H���j�A��w�o�[�N���[�Z�œd�q�H�w�Ə��Ȋw��������G�h���[�h�EA�E���[�����́A�uThe Problem with Threads�v�̒��ŁA�}���`�X���b�h�́A����܂ł���ꂪ����e���񂾃v���O���~���O���f���ł���V�[�P���V���������ɂ����������”\���iunderstandability�j�A�\���”\���ipredictability�j�ƁA����_�ideterminism�j�𑹂Ȃ��Ƃ��A���񏈗��̃v���O���~���O���f���Ƃ��ẴX���b�h�͎̂Ă�ׂ����Ƃ܂Ō����؂��Ă���B�u�����łȂ��}���`�X���b�h�v���O���~���O�Ƃ������̂́A�l�Ԃɂ͗���s�\�v�����炾�B

�@�Q�[���ƊE�̃v���O���}���A�}���`�X���b�h�v���O���~���O�Ŕߖ‚��グ�Ă���BUnreal Tournament�V���[�Y�Œm�����Epic Games�̃e�B���E�X�E�B�[�j�[�iTim Sweeney�j���́A�uThe Next Mainstream Programming Language: A Game Developer�fs Perspective�v�Ƒ肵���v���[���e�[�V���������̒��ŁA1���‚ɂ��y�ԃQ�[�����̃I�u�W�F�N�g���A1�b�Ԃ�30����̍��p�x�ōX�V����A���̂��тɊe�I�u�W�F�N�g��5�`10�‚̂ق��̃I�u�W�F�N�g�ɉe�����y�ڂ��Ƃ������z���E�ɂ‚��ďq�ׂĂ���B�X�E�B�[�j�[���ɂ��΁AGPU��̃V�F�[�f�B���O�����Ȃǂ́A��p����ō��x�ɕ��񉻂���Ă��邪�ACPU�̂ق��̏����̕��񉻂́A�Ǝ��ɐ݌v������Ώ̂ŕ��G�ȃ}���`�X���b�h�����ɂ���Ă���Ƃ����B�T�d�ȃv���O���~���O���s���Ă���Ƃ������A����͂���߂č���ŁA���Y����ێ琫�̑������ɂȂ��Ă���Ƃ����B

���b�Z�[�W�ʐM�ɂ����񏈗�

�@�X�E�B�[�j�[���́A����̓�������ő��݂Ƀv���Z�X���m�����b�Z�[�W�ʐM���s���gComposable memory transactions�h�̂悤�ȃv���O���~���O���f���Ɉڍs����ׂ����Əq�ׂĂ���B����́A��蒊�ۓx�̍����T�O�ł́g�A�N�^�[���f���h�ƌĂ΂�Ă���v���O���~���O���f���ŁA�v���O�����̊�{�ƂȂ郆�j�b�g���A���ׂăA�N�^�[�Ƃ��ĐU�镑���B�A�N�^�[�́A�ق��̃A�N�^�[�Ƀ��b�Z�[�W�𑗂�����A�A�N�^�[�𐶐�������A���̃��b�Z�[�W����M�����Ƃ��̓����ύX����Ƃ��������Ƃ������ł���B����͂��傤�ǐl�ԓ��m�̎d���̐i�ߕ��̂悤�Ȃ��̂��B�l�ԓ��m�̔]�̈ꕔ�͋��L����Ă��Ȃ����߁A�R�~���j�P�[�V�������ʓ|��������A�G���[���N�������肷�邪�A���񏈗��ł͐l���ɔ�Ⴕ���p�t�H�[�}���X�𓾂���B�N���ق��̐l�̔]�̏�ԂɊ֌W�Ȃ��d�����i�߂��邩�炾�B

�@���������v���O���~���O���f�����A���Ƃ����L���������g�����}���`�X���b�h�̃v���O���~���O���f�������x���A�I�[�o�[�w�b�h��2�`4�{�ɂȂ�Ƃ��Ă��AN�‚̃R�A�̃v���Z�b�T��N�{�ɋ߂��p�t�H�[�}���X���o��Ȃ�΁A���ǂ̂Ƃ���͂��̕����L�����Ƃ����B�܂��R�[�h�̐��Y����10���オ��̂ł���΁A���Ńp�t�H�[�}���X��10�����]���ɂ���A�Ƃ��q�ׂĂ���B

Erlang�̓��W���[�ɂȂ邩

�@���ꏈ���n�Ƀ}���`�X���b�h�@�\��lj�����ɂ̓��C�u�����̒lj���A����d�l�ւ̏����̏C���ōςރP�[�X�������B���̂��߁A�����̏����n�̓}���`�X���b�h���T�|�[�g���āA�f���A���R�A����ɂ������p�t�H�[�}���X�𔭊��ł���悤�ɂ��Ă���킯�����A����A���j�[�R�A�����i�ނ��Ƃ�O��Ƃ���΁A���͂�h���X�e�B�b�N�ɕ��񏈗��̃v���O���~���O���f����ς���ׂ����オ���Ă���̂�������Ȃ��B

�@Erlang�́A�V���v���ȃ��b�Z�[�W�ʐM�ɂ��A�N�^�[���f�����̗p�������񏈗��ɋ������ꂾ�B�I�[�o�[�w�b�h���������A1��̃T�[�o���2000���v���Z�X�����ŗ����グ�ă��b�Z�[�W�𑗎�M������x���`�}�[�N���s�����l������i�Q�l�����N�j�B�܂��A���Ƃ��ƍ��M�������v�������ʐM����Ŏg�����܂�Ă������߁A�G���[�ϐ��ɋ����Ƃ�������������B����̃A�N�^�[�Ɉُ킪���������ꍇ�A�Ď����̃A�N�^�[�����Y�A�N�^�[�ɑ΂��ĉ��炩�̃��b�Z�[�W�𑗂�Ƃ������Ƃ��ł���B

�@�O�o�̃G�h���[�h�EA�E���[�����́AErlang��Ada�̂悤�ȁA�X���b�h�ɑ�����񏈗��̃v���O���~���O���f�����A���Ȃ�ȑO���瑶�݂��Ă���ɂ�������炸���t���Ă��Ȃ��̂́A�����̌��ꂪ�A�l�X������e����C����̂悤�ȕ��@�ƈقȂ邽�߂��Ƃ����B���łɃf�t�@�N�g�ƂȂ��������u��������̂ł͂Ȃ��A������������ɁA���ڌ���d�l�ɉe����^���Ȃ��`�ŐV���ȕ��@��lj�����̂������ł͂Ȃ����Ƃ����B

�@���[�����������ʂ�AErlang����ʂ̃v���O���}�Ɏ󂯓������Ƃ͍l���Â炢�B�������AWeb2.0�̐��E�ŃX�^�[�g�A�b�v���l���Ă���悤�Ȑl�X�\�\�A�N������ɁA����߂č����X�P�[���r���e�B������A�ێ琫��M�����̍����V�X�e�����\�z���悤�Ƃ����l�X�̊Ԃł́AErlang���g����悤�ɂȂ��Ă����̂�������Ȃ��B�܂��A�����ڂŌ���Ύ嗬�̌���ɂ��A���񏈗��̘g�g�݂����X�ɍ̂������Ă����̂��낤�B

�֘A�����N

�i��IT �������j

�������񂹂��������F



��IT���[���}�K�W���@�V������X�^�b�t�̃R���������[���œ͂��܂��i�����j