��K�͕��U�����t���[�����[�N�̐݌v�A�������i�s��

�y�V��MapReduce�EHadoop��Ruby�����p

2008/12/01

�@�y�V��11��29���A�����E�i��̖{�ЂŊJ�Â����Z�p�n�C�x���g�u�y�V�e�N�m���W�[�J���t�@�����X2008�v�ɂ����āA�߂������ɓ��Ђ�E�R�}�[�X�T�[�r�X�u�y�V�s��v���x����v�悪����Ruby�x�[�X�̑�K�͕��U�����Z�p�uROMA�v�i���[�}�j�Ɓufairy�v�i�t�F�A���[�j�ɂ‚��āA���̊T�v�𖾂炩�ɂ����B

rakuten01.jpg

���R�����f�[�V�����̏������̂̓V���v��

�@�y�V�s��ł͌��݁A2600���_�̏��i����舵���A4200���l�̉���ɑ΂��ăT�[�r�X��񋟂��Ă���B���̋K�͂̉�����E���i�_���Ń��R�����f�[�V�����i���i�̐��E�j���s���̂͗e�Ղł͂Ȃ��B

���L�����o���Ɋy�V�s��̉������4800���l�Ƃ��Ă���܂������A����͊y�V�O���[�v�̃T�[�r�X���p�ґS�̂̐����ł����B�y�V�s��̉�����͐�������4200���l�Ƃ̂��Ƃł��B���l�т��Ē����������܂��B

�@���R�����f�[�V�����̎d�g�݂Ƃ��ē��Ђ́A��ʓI�ŃV���v���ȃA�v���[�`���g���Ă���Ƃ����B1�‚́g�����t�B���^�����O�h�ƌĂ΂����̂ŁA�w�������⏤�i�A�C�e���̕]�����������[�U�[��T�������A���w���̏��i�����߂�Ƃ������̂��B���̕��@�ł͎����ƚn�D�i�������j�������l�����������̂����E�����̂ŃW�������Ɋ֌W�Ȃ��A�ӊO���̂��鏤�i�����E�ł���B����1�‚̕��@�́A���i���⏤�i�������ގ����Ă�����́A����������Γ��W�������̂��̂𐄑E������@���B

�@�y�V�ł͂����̕��@�ɉ����āA�݌ɏ����Ɖ�č݌ɂ̑������̂𐄑E����i�݌ɂ��Ȃ����̂͐��E���Ȃ��j�ȂǓƎ��̏����������Ă���Ƃ������A��{�I�ȃA�v���[�`�̓V���v�����Ƃ����B

�y�V����񔚔����Ă��܂�

�@�v�Z���f�����V���v���ł��K�͂�����ɂȂ�Ƃ܂������ʂ̖�肪���܂�Ă���B�������ׂ����ʂ������I�ɑ������Ă��邩�炾�B

�@�Ⴆ�΋����t�B���^�����O�ł̓��[�U�[���c���ɁA���i�A�C�e���������ɂ����w�������}�g���b�N�X�ɂ‚��Čv�Z�������s���K�v�����邪�A���܂�ɗʂ������A�f���Ɏ�������Ɓu2���҂��Ă��v�Z���I���Ȃ��Ƃ������ƂɂȂ�v�i���Ёj�B���Ђł͉ߋ�1�N�����ł��A�������ׂ��f�[�^�ʂ�3.7�{�ɖc��񂾂Ƃ����B

�@���̂��ߓ��Ђł̓A���S���Y���̍H�v�Ƒ�K�͕��U�����Ƃ���2�‚̖ʂŎ��g��ł���Ƃ����B

�@�A���S���Y���ʂł́A�Ⴆ�Κn�D�̎������[�U�[���ǂ����𔻒肷��̂ɁA�u���[�J���e�B�E�Z���V�e�B�u�E�n�b�V���O�v�iLSH:Locality Sensitive Hashing�j�Ƃ����e�N�j�b�N���g���Ă���Ƃ����BLSH���g���ƁA���[�U�[�̍w����]���̗��������•ʃx�N�g���̋������������ꍇ�A�����m���Ńn�b�V���l����v���邽�߁A�x�N�g���Ԃ̋��������ׂČv�Z�����ɍςނƂ����B�܂��A���i��񂩂玫���ƃ}�b�`���錾�t�𒊏o����ۂɂ͌����֘A�Œm��ꂽ�Z�p�u�_�u���E�A���C�E�c���[�v�iDouble Array Trie�j���g�����Ƃō��������Ă���Ƃ����B

�@���������A���S���Y���̍H�v�ɉ����Ď��g��ł���̂���K�͕��U�������B���݂̓I�[�v���\�[�X��Java�������U�����t���[�����[�N�uHadoop�v���g���Ă��邪�A���Ђ͍���ARuby�x�[�X�ŊJ�����́uROMA�v��ufairy�v�ɑ�ւ��Ă����v��Ƃ����B

rakuten02.jpg �y�V�������ł�Ruby���g���āuROMA�v�Ɓufairy�v���J����

MapReduce�AHadoop�̊y�V�Łufairy�v

�@�d�����Ӗ�����ufairy�v��Ruby�Ŏ���������K�͕��U�����t���[�����[�N���B�uFramework Ambient Integration On Ruby�v�̗��̂Ƃ������ƂɂȂ��Ă��邪�u���������������ŁA���ɈӖ��͂Ȃ��v�i�y�V�Z�p������ �V�j�A�e�N�m���W�X�g ���c�n���j�Ƃ����B��������Z�p�̓O�[�O����GFS/MapReduce��A���t�[�����S�ƂȂ��ĊJ����i�߂�I�[�v���\�[�X��Hadoop���B

�@fairy�̊J����S������y�V�Z�p������ �q���������̒����������́u�����̂��߂�MapReduce�̂悤�Ȃ��̂ƌ������A���ۂɂ͏������f�����قȂ�v�Ɛ�������BMapReduce�͏����Ώۂ������ȒP�ʂɕ����ĕ��U�������A������W�񂵂čŏI���ʂ𓾂�Ƃ����傫��2�‚̏�������Ȃ邪�Afairy�ł͔C�ӂ̐��̃t�B���^��K�p�ł���Ƃ����Ⴂ������B���o�͂��X�g���[���ň����A���̃X�g���[���Ɋe�t�B���^�������K�p���Ă������Ƃŏ������s���B

�@fariry�̃t���[�����[�N�ł͏������˗�����g�N���C�A���g�h�A������󂯎��g�}�X�^�[�h�A�}�X�^�[����א؂�̃f�[�^�Ə����˗����󂯎��g�m�[�h�h��3�v�f����Ȃ�B�e�m�[�h��ł́A�������󂯎��T�[�o�����O�ɋN�����Ă����B��낤�Ǝv����1���3�������Ȃ��邪�Afairly�͑�K�͂ŃX�P�[���u���ȃV�X�e����z�肵�Ă���Ƃ����B

fairy01.jpg fairy�ł͓��o�͂��X�g���[���Ƃ��Ĉ����A�t�B���^�����X�ɓK�p���邱�Ƃŏ������s��
fairy03.jpg fairy���\������̂̓N���C�A���g�A�T�[�o�A�m�[�h��3�v�f�B�N���C�A���g�ŏ������L�q���ăT�[�o�ɓ�����ƁA�e�m�[�h��ɂ��Ή�����I�u�W�F�N�g�����������Ƃ���

�@���̓f�[�^�Ƃ��ăI�[�v�������t�@�C���͕��U�m�[�h��Œf�Љ����邪�A���z���U�t�@�C���iVFile�j�Ƃ��Ĉ����邽�߁A�v���O���}�͂�����ӎ�����K�v���Ȃ��B�܂��A���̓f�[�^�͌��݂̂Ƃ���e�L�X�g�f�[�^�݂̂̑Ή������A����̓o�C�i������������Ƃ����B

�@��\�I�ȃt�B���^�Ƃ��āA���̓f�[�^��v�f�Ƃ��Ĉ����A���̃t�B���^�ɏo�͂���umap�v�n�̂��̂�A���̓f�[�^���O���[�s���O���Č��̃t�B���^�ɏo�͂���ugroup_by�v���g����Ƃ����BMapReduce��Hadoop�́gHello World�h�ɑ������郏�[�h�E�J�E���g�i�P�ꂲ�Ƃ̏o���񐔂𐔂���j�̏����ł́u�P��ɕ����v�ismap�j�A�u�P�ꂲ�ƂɃO���[�s���O�v�igroup_by�j�A�u�O���[�s���O���ꂽ�P�ꐔ�𐔂���v�ismap�j�Ƃ���3�i�K�Ŏ����ł���B�y�V�ł͉��疜���ɂ��Ȃ郆�[�U�[���Ƃ̍w����������A���i�A�C�e�����ƂɃO���[�s���O���ꂽ�������W�v�ɂ܂Ƃ߂�悤�ȏ�����fairy���g���v��Ƃ����B

�@�����̃t�B���^�����́ARuby�v���O���}�ɂ͂Ȃ��݂̐[�����@/�����\���ł���R�[�h�u���b�N���g���Ē�`�ł���B�uRuby�̐��Y���̍����𑹂Ȃ�Ȃ��ŁA���R�ŊȌ��ɕ��U�����ł���悤�ɐ݌v�����v�i���c���j�Ƃ����BROMA/fairy�̐݌v�E�J���ɂ������Ă�Ruby�݌v�҂̂܂‚��Ƃ䂫�Ђ뎁�̃A�h�o�C�X���󂯂Ă���A�u���Ƀm�[�e�[�V�����i�L�@�j�ɂ‚��Ă͂܂‚��Ǝ��̋���������肪���f����Ă���v�i�����j�Ƃ����B

fairy04.jpg ���U�����́gHello World�h�ɑ������郏�[�h�J�E���g�̉ۑ��fairy�ōs���ꍇ�̏����̗���
fairy05.jpg ���[�h�J�E���g�̎��ۂ̃R�[�h��B�R�[�h�u���b�N����i��o���A���ꂼ����o�̓X�g���[���ɑ�������B�ǂݍ��񂾊e�s�iln�j��P��ɐ؂蕪���ďo�̓X�g���[���io�j��push����A�Ƃ���10�s�ڂȂǂ�Ruby�v���O���}�ɂ͂������R
fairy06.jpg ���̓X�g���[���ɂ͉��z���U�t�@�C�����w�肷�邱�Ƃ��ł���B���ۂ̃f�[�^�͒f�Љ����邪�A�����������Ƃ͗��p�҂͈ӎ����Ȃ��Ă������Ƃ���
fairy07.jpg �����ς݂̃t�B���^�̗�imap�n�j
fairy08.jpg �����ς݂̃t�B���^�̗�igroup�n�j

�@�\���ȃp�t�H�[�}���X���o�����Ƃ�fairy�̑傫�Ȑ݌v�ڕW�Ƃ����B�uRuby�͂��Ƃ��Ƒ����ƌ����Ă��Ȃ����A�Ȃ�ׂ��f�[�^����������ɒu���Ƃ��A�l�b�g���[�N�z���̓]����}����Ȃǂ��Ď��p�ɑς���p�t�H�[�}���X��ڎw���Ă���v�i�����j�B�܂������Java VM��œ���Ruby�����n��JRuby�ւ̑Ή�����������BC�ŏ����ꂽ�I���W�i����Ruby�ł͈ڐA�����d���������߃X���b�h�����̓l�C�e�B�u�X���b�h�ɑΉ����Ȃ��B���̂��߃}���`�R�A�̉��b���󂯂Â炢�BJRuby�ł���Ώ����̕��񉻂��e�Ղł͂Ȃ����Ƃ����B

�@����fairy�͊�{�I�ȃt�B���^�����͎����ς݂œ��삵�Ă��邪�A�p�t�H�[�}���X�ɂ‚��Ă͖��m�����B���c���́u����͎��ۂ̉ۑ�œK�p�”\�������؂��Ă������A�x���Ďg���Ȃ���Ƃ����b�ɂȂ�Ǝv���̂ŁA�ǂ�ǂ�`���[�j���O���Ă��������v�Ƙb���B�u���낢��ۑ�͂���Ǝv�����A�gYes, we can�h�Ƃ������_�ł���Ă����v�i�����j�ƈӋC���݂����B

heibai01.jpg �����f�[�^�Ƃ́A���鏤�i�A�C�e���ɒ��ڂ����Ƃ��A���̏��i�ƂƂ��ɔ����Ă��鏤�i���A���i���Ƃɓ_���ŕ\�����f�[�^
heibai02.jpg ���f�[�^�ɂ̓��[�U�[ID���Ƃɍw���������i�f�[�^��ID�ŕ���ł���B�������畹���f�[�^�𐶐�����
heibai03.jpg fairy���g���������f�[�^�쐬�����̗���
heibai04.jpg fairy���g���������f�[�^�쐬�̎��ۂ̃R�[�h��i�O���j
heibai05.jpg fairy���g���������f�[�^�쐬�̎��ۂ̃R�[�h��i�㔼�j

memcached�ACoherence�ADynamo�ɑ�������uROMA�v

�@�y�V�̑�K�͕��U�����t���[�����[�N�̂���1�‚̃v���W�F�N�g�́uROMA�v�iRakuten On-Memory Architecture�j�Ɩ��t����ꂽ���U�I���������X�g���[�W���B�C�ӂ̑䐔�̃T�[�o�ɓ��ڂ��ꂽ�����������z�I��1�‚ɂ܂Ƃ߁A1�‚̑傫�ȃn�b�V���e�[�u���̃X�g���[�W�Ƃ��Ĉ������Ƃ��ł���Ƃ����B�u�L�[�E�l�v�ikey-value�j�Ƃ����I�u�W�F�N�g�f�[�^��ۑ�������iPUT�j�A�ǂݏo������iGET�j�ł���BROMA�̃N���C�A���g�ɂ�Ruby��Java���g����B

nishizawa.jpg �y�V�Z�p������ �A�\�V�G�C�g ���V���䎁

�@ROMA�́A�A�}�]�����uDynamo�v�Ɩ��t�����V�X�e���Ŏ��g�ޕ��U�n�b�V���e�[�u���̎�����A�I���N�����f�[�^�x�[�X��I/O�{�g���l�b�N����������ړI�Œ񋟂��镪�U�^�C���������E�f�[�^�O���b�h�uOracle Coherence�v�ɑ�������d�g�݂��Ƃ����B���׏W���̊ɘa��f�B�X�NI/O�̃{�g���l�b�N������ړI�Ƃ��Ă���_�ł́A���U�������I�u�W�F�N�g�L���b�V���V�X�e���́umemcached�v�Ƃ��d�Ȃ�B

�@Dynamo�ACoherence�AROMA�Amemcached�͋Z�p�I�Ɏ��Ă��邪�A�y�V�Z�p�������̐��V���䎁�ɂ��΁A�����ɂ̓f�[�^�̈�ѐ��ɑ΂���l�����̈Ⴂ������Ƃ����B�u�p�t�H�[�}���X�ƃf�[�^�̈�ѐ��̓g���[�h�I�t�v�i���V���j�ŁA�Ⴆ��memcached�̓p�t�H�[�}���X�͍������A�f�[�^�̈�ѐ��̕ۏ؂̓N���C�A���g���s���K�v������B�t��ROMA�̓f�[�^�̈�ѐ����d�����Ă���A���[�U�[�i�J���ҁj�͎��ۂ̃f�[�^���ǂ̃m�[�h�ɂ��邩�A���̃f�[�^���L���Ȃ��̂��ǂ����Ȃǂ��C�ɂ���K�v���Ȃ��BDynamo�ł̓f�[�^�̈�ѐ���������x�]���ɂ��邱�ƂŃp�t�H�[�}���X���҂��ł���ƌ����Ă���B

roma01.jpg �I���������̕��U�I�u�W�F�N�g�L���b�V���́A�f�[�^�̈�ѐ��ƃp�t�H�[�}���X���g���[�h�I�t�̊֌W�ɂ���AROMA�͈�ѐ����d���������f�����Ƃ���

���P2P�\���őϏ�Q��������

�@ROMA�̐݌v�ڕW��1�‚́A�����ׂȏ󋵉����Q���ɂ����퓮�삵������A�Ƃ������̂��B�Ϗ�Q���Ƃ����_�ł̓f�[�^�x�[�X��HA�\���ł��ǂ����A�f�B�X�NI/O�̃{�g���l�b�N���c��B�܂��P���Ƀ�������Ƀf�[�^��u���ƁA�R�X�g�������ޏ�ɏ�Q���Ƀf�[�^�r�����N����Ƃ�����肪����B

�@���̂��߁AROMA�ł�P2P�̊󃂃f�����̗p���Ă���A����m�[�h���ێ�����f�[�^�͗אڂ���2�‚̃m�[�h�ɂ��R�s�[����Ƃ���3�d�̏璷�x�����݌v�ɂȂ��Ă���Ƃ����B�������A����f�[�^��3���ɂ��邪�APUT/GET�͕K���v���C�}���m�[�h���S������B�p�t�H�[�}���X���グ�邽�߂ɂ́A�אڂ���Z�J���_���m�[�h�ɑ΂���PUT/GET������@�����邪�A�f�[�^�̈�ѐ���ۂ��₷�����Ƃ�A���݂͂܂����f���̌��ؒi�K�ł��邱�ƂȂǂ���AROMA�ł͂��������݌v�ɂȂ��Ă���Ƃ����B�v���C�}���m�[�h�������ׂɂȂ�{�g���l�b�N�ƂȂ�ꍇ�ɂ́A���̕t�߂ɐV�K�m�[�h��lj����邱�ƂőΏ��ł���̂ł͂Ȃ����Ƃ����BROMA�ł͊�ɕ��񂾃m�[�h�̔C�ӂ̏ꏊ�ɓ��I�Ƀm�[�h��lj��ł��邽�߁A���X�ƃT�[�o�i�������j��lj����Ă������ƂŃX�P�[���A�E�g�ł���B

�@�p�t�H�[�}���X����̂��߁AROMA�ł̓f�[�^�̒T���̓N���C�A���g���s���B�N���C�A���g�́AROMA�ɏ��߂ăA�N�Z�X�����Ƃ��Ɋe�m�[�h��ID�A�|�[�g�ԍ��A�n�b�V���l�Ȃǂ��擾����B�e�m�[�h�͔�є�т̃n�b�V���l�������ɗאڂ��ĕ���ł���A����L�[�̃n�b�V���l�����߂�ΒS���m�[�h��������B�������邱�ƂŃf�[�^�T���̂��߂̃m�[�h�ԃz�b�v��s�v�Ƃ��A�������X�|���X���x����������Ƃ����B�u�����������S��A�����Ă�1000����x������ƍl���Ă���̂ŁA���������������ł���v�i���V���j�B

roma02.jpg ROMA�̓V�X�e���S�̂�1�‚̑傫�ȃI���������X�g���[�W��񋟂���B�f�[�^��3�d�ɏ璷������Ă���Ϗ�Q�������‚ق��A�f�[�^�̈�ѐ����d������Ă���
roma03.jpg ROMA�͊�Ƀm�[�h������P2P�^�̎������U�V�X�e��
roma04.jpg �f�[�^�̒T���̓N���C�A���g���̃n�b�V���l�̌v�Z�����Ŋ�������
roma05.jpg PUT���ꂽ�f�[�^�͗אڃm�[�h�ɃR�s�[����A���d�������
roma06.jpg ROMA�N���C�A���g�̃R�[�h��
roma07.jpg ROMA�ł͓��I�ȃm�[�h�lj����”\�ŁA�V�K�Q���m�[�h�͎���n�b�V���l���v�Z���ău���[�h�L���X�g�B����ɍł��������������m�[�h�ׂ̗ɔz�u�����Ƃ���

�Ǝ��̃I�u�W�F�N�g�n���h�����O�ő��x����

�@�g���������h�Ƃ������t���g���Ă͂��邪�A�y�V��ROMA�̗��p�őz�肵�Ă���K�͂͑傫���B�u�����͐��S���I�u�W�F�N�g��ROMA�ɍڂ���‚��肾�v�i�������j�B�Ⴆ��5��̃m�[�h�ō\�������ꍇ�A100���I�u�W�F�N�g�ł��e�m�[�h���ێ�����I�u�W�F�N�g����60���i100���^5��~�璷�x3�j�ɂ��Ȃ�B�����Ȃ��Ă���ƁARuby�����n�̃K�[�x�[�W�R���N�^�̃I�[�o�[�w�b�h���傫���Ȃ�A���X�|���X�������Ȃ�B���܂背�X�|���X���x���Ȃ�ƁA���̃m�[�h��s�����Ɣ��肵���ʃm�[�h��őϏ�Q�p�̃��\�b�h������o���ȂǕʂ̖����o�Ă���Ƃ����B���̂��߁A�Ǝ��Ɏ��������g�����C�u�������g����Ruby�����n���񋟂���q�[�v�̈�Ƃ͕ʂɃI�u�W�F�N�g��ۑ����A�����I�Ƀ��������J������Ƃ����`���[�j���O���s���Ă���Ƃ����B�����⏈�����f���͕��G�ɂȂ邪�ARuby�����n�Ɠ��l�Ƀ��[�U�[�i�J���ҁj�ɂƂ��ăV���v���Ɍ����邱�Ƃ��d�����Ă���Ƃ����B

roma08.jpg �c��Ȑ��̃I�u�W�F�N�g���������߂�ROMA�ōs���Ă���Ruby�`���[�j���O�̗�B�K�[�x�[�W�R���N�V�����ɂ�郌�X�|���X�ቺ��h�����߂Ɋg�����C�u�����Œ��ڃI�u�W�F�N�g�̃������Ǘ����s���Ă���Ƃ���

�@���݁AROMA��5��\����GET�������s����1�b�Ԃ�8000�N�G�����x�̏����\�͂��o�Ă���Ƃ����B����͓��l�̍\����1�`2���N�G���^�b���������o��memcached�ɂ͋y�΂Ȃ����A�\���ɑ����B�܂����V���́A�u�A�v���P�[�V�����ɂ���Ắi��ѐ��𑽏��]���ɂ��Ă��j���x���ق������Ƃ�����̂ŁA�����������f���ɓK�������̂��񋟂��Ă��������v�Ƙb���B

�@����ROMA�ł́A�A������3�m�[�h�������Ɏ���ꂽ�ꍇ�ł��f�B�X�N����f�[�^�𕜋��ł���i�����@�\�̎������v�悵�Ă���B�܂��AROMA�Afairy�Ƃ�2009�N�ɂ̓I�[�v���\�[�X��������ɓ���Ă���A�y�V�ł́u��K�͏����⍂�����̒m����Ruby�R�~���j�e�B�ɊҌ����Ă��������v�i���V���j�Ƃ��Ă���B

�@�y�V��ROMA�Afairy�Ɏ��g�ރv���W�F�N�g�����o�͎Г��O���܂߂�5�l�BRuby�̊J���Œm����܂‚��Ǝ���Βˌ\�����A����E���U�v���O���~���O�Œm����y�V�Z�p�ږ�œ���y�����̑����p�F���Ȃǁu���؂ȃ����o�[�ł���Ă���v�i���c���j�Ƃ����B

�֘A�����N

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

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

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

�L�����A�A�b�v

- PR -

���ڂ̃e�[�}

�\�����[�V����FLASH
"); adremove.push(adstrtmp[adstart]); } } for(var i = 0; i < adremove.length; i++){ adremove[i].parentNode.removeChild(adremove[i]); } adstr.sort().reverse(); adstr = adstr.join(""); return adstr; }

�uITmedia �}�[�P�e�B���O�v�V���L��

Meta�ɒׂ���Ȃ����߂Ɏc���ꂽ�����c��̓��́H�\�\2025�N��SNS��\���iSnapchat�ҁj
��N�w�ɐl�C��Snapchat�����A��l�ɂ͂��܂�Z�����Ă��Ȃ��B����ŁAAR�i�g�������j�J...

�u�ҏ��v�u�đ����v�u�C���o�E���h�v�̉e���́H�@2024�N�ɍł�����グ���L�т����̃����L���O
�����X�̐���̔����z�̐L�т���A���p������̒��ʼn������ꂽ�̂���U��Ԃ郉���L���O...

Netflix�R���{���~�܂�Ȃ��@�u�C�J�Q�[���v�V�[�Y��2���J�Ől�C���オ��K���̃A�v���Ƃ́H
Duolingo�͌���w�K�A�v����Netflix�̑�l�C�h���}�����ѕt�����L�����y�[����W�J�B���O...