Google Talk��API�ƃ\�[�X�R�[�h�̃����[�X

Google Talk�\�t�g�E�F�A�̐S�����ł���libjingle���C�u������BSD�X�^�C���̃��C�Z���X�̉��Ƀ����[�X���ꂽ�B���̓������I�[�v���\�[�X�̃C���X�^���g�E���b�Z�[�W���O�E�N���C�A���g�ɂƂ��Ēǂ����ƂȂ邱�Ƃ͊ԈႢ�Ȃ��B

» 2006�N01��18�� 09��30�� ���J
[Nathan-Willis�Cjapan.linux.com]

�@�挎�AJabber Software Foundation�iJSF�j�́AJabber�iXMPP�j�v���g�R����2�‚̃G�N�X�e���V�����AJingle Signaling��Jingle Audio�̃h�L�������g�������[�X�����B�������A����2�‚̃G�N�X�e���V�����̋����J�����ł���Google�́Alibjingle�Ƃ������C�u������BSD�X�^�C���̃��C�Z���X�̉��Ƀ����[�X�����B�G�N�X�e���V�����̎����ł���libjingle�́AGoogle Talk�\�t�g�E�F�A�̐S�����ł���BGoogle Talk�{�̂Ŏg�p�����API���I�[�v���ɂ��ꂽ���Ƃƕ����āA����2�‚̓����́A�I�[�v���\�[�X�̃C���X�^���g�E���b�Z�[�W���O�E�N���C�A���g�ɂƂ��Ă͒ǂ����ƂȂ�A�����炭Skype�̂悤�ȃN���[�Y�V�X�e���ɂƂ��Ă͑傫�ȋt���ƂȂ邾�낤�B

�@Jingle Signaling�́AJabber Extension Proposal 0166�Ƃ��Ē�Ē��̋Z�p�ł���A�����Jabber�ɒlj����邱�Ƃɂ����XMPP�N���C�A���g����̃s�A�c�[�s�A�Z�b�V�����̊J�n��Ǘ����”\�ɂȂ�A SIP�T�[�r�X��H.323�T�[�r�X�ɑ΂���C���^�t�F�[�X���񋟂����BJingle�́A�]����Transport for Initiating and Negotiating Sessions�iTINS�j�v���g�R���̃Z�b�V�����Ǘ��@�\�ɑ�����̂ł����iJEP-0111�j�ANetwork Address Translation�iNAT�j�g���o�[�T���@�\������Ă���B

�@Jingle��NAT�g���o�[�T�����[�h�̓���́A����IETF�̃h���t�g�i�K�ɂ���Interactive Connectivity Establishment�iICE�j�v���g�R���Ɍ����ɏ�������BICE�ł́A�s�A�Ԃ̍ŗǂ̐ڑ����l�S�V�G�[�g���邽�߂ɁA�g�p�ł��邷�ׂĂ̑g�ݍ��킹�������Ăǂꂪ�ō��̃p�t�H�[�}���X���������v������B���s����ɂ����������Ȃ���������Ȃ����A���̕��@�̌��ʂ͔��ɑ傫���B�܂��AJingle�ł́A�]����Simple Traversal of User Datagram Protocol�iUDP�jThrough NAT�iSTUN�j�v���g�R���iRFC 3489�j�Ƃ̐ڑ��ɂ‚��Ă��l�S�V�G�[�g�����݂�B

�@Jingle Signaling�v���g�R���ɂ́A�������ނ̃Z�b�V�����ƃl�S�V�G�[�g�ł���\�͂�����A���̃����[�X�ɂ͉����`���b�g�Z�b�V�����t�H�[�}�b�g��Jingle Audio�iJEP 0167�j���܂܂��BJingle Audio�Z�b�V�����́A�{����RTP�g�����X�|�[�g�ɂ��ʐM�̂��߂ɐ݌v���ꂽ���i���ꂪ�ł����y���Ă���v���g�R�������炾���j�A�������ނ̃I�[�f�B�I�E�G���R�[�f�B���O�E�X�g���[�����T�|�[�g����Ă���B

�@�����AJingle Signaling��Jingle Audio�̑O�g�́A������Google Talk�`���b�g�E�T�[�r�X�̂��߂ɐ݌v���ꂽGoogle�̎Г��v���g�R���ł���BJSF��TINS�̑���ƂȂ�v���g�R�����J�����Ă������A���̏����i�K�ŁAGoogle Talk�������悤�ȋ@�\�����‚��ƂɋC�Â����̂ł���BJingle�́A���҂̋�����Ƃ̐��ʂ��B

Google��

�@JSF����Jingle�d�l�����J�����Ɠ����ɁAGoogle�����Jingle�d�l�Ɋ�Â���Google Talk API�������[�X���ꂽ�B�܂��A�ق��̃v���v���C�G�^�����i�iGoogle�̏��L������̂��܂ށj��API���J�͒�~���ꂽ���AGoogle Talk�̊��API�̃��C�u���������̓I�[�v���\�[�X���C�Z���X�̉��Ƀ����[�X���ꂽ�BLibjingle�p�b�P�[�W�ɂ́Alibjingle�iJingle Signaling��Jingle Audio�̎����j�ƁA�჌�x���̃R���|�[�l���g�Q�i�s�A�c�[�s�A�ڑ��A�\�P�b�g����уX���b�h�̍쐬�AXMPP�A�X�g���[�~���O���f�B�A�Ȃǂ̎����j���܂܂��B

�@Jingle��XMPP����ՂƂ���̂ŁA�ق���XMPP�Ή��A�v���P�[�V�����ł̃T�|�[�g�����҂����BPsi�́A�ً}�̍��m���o���āA�N���C�A���g��Jingle�T�|�[�g��lj�����Ɣ��\�����B�܂��AGaim�̊J����Sean Egan�́AGoogle�̎Ј����Blibjingle�̖��O���������Ă��Ȃ����AEgan��Gaim�j���[�X�y�[�W�����b�Z�[�W�𓊍e���A���̃��r�W������Google Talk�@�\���i�����`���b�g�@�\���܂߁j�T�|�[�g���邱�Ƃ𖾂炩�ɂ����B�ق���IM�v���W�F�N�g��������̔��\�͂Ȃ����A�����͐���ɔ�ь����Ă���i����XMPP�����ɃT�|�[�g���Ă���A�v���P�[�V�����̔����ɂ‚��āj�B

����

�@�v���v���C�G�^��IM�N���C�A���g�ł��Alibjingle�𗘗p�ł���BBerkeley�X�^�C���̃��C�Z���X�Ń����[�X���ꂽ���C�u���������炾�B�������AXMPP�₻�̂ق��̕W���Ɠ��l�ɁAAOL��Skype�̂悤�ȑ�K�̓l�b�g���[�N�����̐V�����v���g�R�����̗p���錩���݂͏��Ȃ��B�����A Google���R�[�h�����J�������ƂŁA�ނ�ɑ傫�ȃv���b�V���[�������邱�Ƃ͊ԈႢ�Ȃ��B

�@Google�̕����]���́ASkype��API�v���O�����Ƃ͑ΏƓI���Blibjingle�̏ꍇ�A�J���҂� Google Talk�Ƒ��݂ɉ^�p�ł���Ǝ��̃\�t�g�E�F�A���쐬�ł��邪�ASkype��API���g���Ăł���̂�Skype�A�v���P�[�V�����̋@�\���g�����邱�ƂɌ�����BGoogle�́A�]����XMPP���b�Z�[�W���O�Ɋւ��ẮA�ق���XMPP�N���C�A���g��Google Talk�l�b�g���[�N�ɐڑ����邱�Ƃ����ɔF�߂Ă����B�����������N���C�A���g�́A����͉����`���b�g�ł�Google Talk�l�b�g���[�N�ɐڑ��ł���킯���B

�@�}���`���f�B�A�E�`���b�g��e�L�X�g�x�[�X�E�`���b�g�̃Z�b�g�A�b�v�A�l�S�V�G�[�g�A�Ǘ��̃C���t���X�g���N�`���͑哯���قȂ̂ŁA1�‚̂��Ƃ͂ł��邪����ȊO�͂ł��Ȃ��A�Ƃ������A�v���P�[�V�����͋}���ɉߋ��̂��̂ƂȂ�‚‚���B

�@���ɁAGoogle Talk��1�‚̃v���v���C�G�^��IM�N���C�A���g��XMPP�ւ̓����J�����iApple��iChat�̂��Ƃ��j�B���́AJingle�������e���������`���b�g�ɗ^����Ԃł���B

Copyright © ITmedia, Inc. All Rights Reserved.

'; e_dlv.innerHTML = html; adRequest({position:dlv_pos,dom:true}); }else if(ad_type === 'gam'){ var html = '
'; e_dlv.innerHTML = html; refreshGam('InArtSpecialLink'); }else if(ad_type === 'logly'){ var html = '
'; e_dlv.innerHTML = html; loglySet(g_id); }else if(ad_type === 'google'){ var html = '
'; e_dlv.innerHTML = html; googletag.cmd.push(function(){ var slot8 = googletag.defineSlot('/43042345/nlab_artinsert_RT',[[336,280],[300,250],'fluid'],'div-gpt-ad-1551176482959-0').addService(googletag.pubads()); googletag.pubads().enableSingleRequest(); googletag.enableServices(); googletag.display('div-gpt-ad-1551176482959-0'); googletag.pubads().refresh([slot8]); }); } }; var insert_ok = function(_target,_str){ var clearfix = d.createElement('div'); clearfix.className = 'colBoxClear'; if(ad_float_fix){ e_body.insertBefore(e_dlv,_target); e_body.insertBefore(clearfix,_target.nextElementSibling); }else{ e_body.insertBefore(e_dlv,_target); } set_dlv(); }; var insert_ng = function(_str){ e_dlv.style.display = 'none'; }; var main = function(){ var e_nodes = e_body.childNodes; // BODY �����q�v�f var e_tags = []; // BODY �����^�O var p_num = []; // BODY ���� P �^�O�ʒu var p_target_num; // �g�}����ʒu var o_float = {}; // ��荞�ݗv�f var o_this = {}; // �A�N�e�B�u�^�O var o_next = {}; // �A�N�e�B�u�^�O�̎��̃^�O var flag_insert = 0; // �}���t���O // ��荞�ݗv�f�`�F�b�N var check_float = function(_e){ var e = 0; if(_e.id.match(/^col\d{3}(l|r)$/)){ e = _e; } return e; }; // �v�f�� Y ���W�ƍ����̍��v�l var get_element_y = function(_e){ var ey = 0; var eh = _e.offsetHeight; while(_e){ ey += _e.offsetTop; _e = _e.offsetParent; } return ey + eh; }; var check_ptag = function(_e){ var e = 0; if(_e.tagName && _e.tagName === 'P'){ e = _e; } return e; }; var try_insert = function(){ p_target_num = Math.floor(p_num.length / 2) - 1; if(p_target_num >= _maxrange) p_target_num = _maxrange; if(dis_con) p_target_num = 0; for(var i = p_num[p_target_num]; i < e_tags.length; i++){ o_this.e = check_ptag(e_tags[i]); if(o_this.e){ o_next.e = check_ptag(e_tags[i + 1]); if(o_next.e){ if(!o_float.e || check_float(e_tags[i - 1])){ o_float.e = check_float(e_tags[i - 1]); o_float.n = i - 1; } if(o_float.e && o_float.n < i + 1){ o_float.y = get_element_y(o_float.e); o_this.y = get_element_y(o_this.e); set_line(o_float.y,'red'); set_line(o_this.y,'blue'); if(o_float.y < o_this.y){ flag_insert = 1; insert_ok(o_next.e,_threshold + ' �p���ȏ��荞�݂���'); break; } }else{ flag_insert = 1; insert_ok(o_next.e,_threshold + ' �p���ȏ��荞�݂Ȃ�'); break; } } }else{ o_float = {}; } } if(!flag_insert){ insert_ng('�}���ʒu�Ȃ�'); } }; // �S�q�v�f����^�O�̂ݔz��ɓ���� for(var i = 0; i < e_nodes.length; i++){ if(e_nodes[i].tagName){ e_tags.push(e_nodes[i]); } } // �S�^�O���� P �^�O�ʒu��z��ɓ���� for(var i = 0; i < e_tags.length; i++){ if(e_tags[i].tagName === 'P') p_num.push(i); // �ŏ��̉�荞�ݗv�f���i�[ if(!o_float.e){ o_float.e = check_float(e_tags[i]); o_float.y = get_element_y(o_float.e); o_float.n = i; } } if(p_num.length >= _threshold){ try_insert(); }else{ insert_ng('P �^�O ' + _threshold + ' �ȉ�'); } }; if(e_body){ main(); }else{ insert_ng('�L���{���Ȃ�'); } })(document,4,5);
���Ȃ��ɂ������߂̋L��PR