���Ƃɕ������f���쓮�J���̃��J�j�Y���FThe Rational Edge

The Rational Edge���FWebSphere�R���T���^���g��Chris Gerken�������f���쓮�J���iMDD�j��A���s�C���[�W�p�^�[���AJava Emitter Templates�iJET�j�A������Design Pattern Toolkit�iDPTK�j�̃I�[�T�����O����т��̎g�p�ɂ��A�v���P�[�V�����̃\�[�X�����Ɋւ��鎿��ɓ�����B

» 2007�N03��15�� 12��00�� ���J
[Chris Gerken�iIBM�V�j�A�R���T���^���g�j�C��IT]

�@MDD�ϊ��́A���݂͎��s�C���[�W�p�^�[���Ƃ��ė��p����Ă���B�����́A����A�ŗD�ǎ���A����уK�C�h���C���̐����I�ȓK�p������������BEclipse��RSA�iRational Software Architect�j�̏d�v�ȐV�@�\�ɂ��A�����̃p�^�[���̃I�[�T�����O�ɂ��A�v���P�[�V�����̃\�[�X�iJava�ACOBOL�AJSP�AXML�A�v���p�e�B�t�@�C���Ȃǁj�������ȒP�ɂȂ����B

�����@UML�̃A�N�e�B�r�e�B���f�����������ꍇ�A���f���ԕϊ��iUML2����DSL Ecore�j�����s���A���f���̒��̏����g���AJava Emitter Templates�iJET�j�ŃR�[�h�𐶐����Ȃ�����A������V�[�����X���ƒv���O�����I�ɍs���v���O�C���͂ǂ�����΍쐬�ł���̂��B

ALT �{�L���́AIBM developerWorks����A�b�g�}�[�N�E�A�C�e�B�������𓾂Ė|��A�]�ڂ������̂ł��B

���@��ʂɂ́AMITM�imeet-in-the-middle�j�A�v���[�`���g�������B�܂� ��JET�ϊ����쐬����i�܂�Rational Software Architect V6.x���g���Ă���ꍇ�́AalphaWorks ��Design Pattern Toolkit���g�p�j�B���̃C���v�b�g���f���́A�e���v���[�g���̃��f���A�N�Z�X�����Ȃ�V���v���ɂȂ�悤�œK������Ă���B

�@M2T�i���f������e�L�X�g�j�ϊ��������グ����AUML���f���̃i�r�Q�[�V�����ƁAJET�ϊ����v������C���v�b�g���f���̂悤�ȓ������f���̍\�z���s��Rational Software Architect�iRSA�j�ϊ���������BRSA�ϊ��̍Ō�́A�\�z�����������f����JET�ϊ����ȒP�Ɋ��p�ł���t�H�[�}�b�g�iXML�������������EMF�C�����������f���j�ɕϊ����A�v���O������JET�i��������DPTK�j���Ăяo����ƂɂȂ�B

�����@�u�G�O�U���v���[�iexemplar�j�v�Ƃ͉����B�܂��AM2T�ϊ����\�z����ۂǂ̂悤�ɖ𗧂‚̂��B

���@�G�O�U���v���[�́AM2T�ϊ��Ő���������̂̑�\��BRSA�̃G�O�U���v���[�I�[�T�����O�c�[�������p���A�C���v�b�g���f���X�L�[�}��M2T�e���v���[�g��f�������o���邽�߂Ɏg�p�����B�G�O�U���v���[�̃I�[�T�����O���́A�Y�����邷�ׂĂ̍ŗD�ǎ���A�K�C�h���C���A����Ȃǂɍ��킹�ăG�O�U���v���[��������Ă�����̂Ɖ��肳���B����́A�ϊ����T�|�[�g���邷�ׂẲ•ϓ_�������B�ŏ��͊����Ȃ���������Ȃ����A�G�O�U���v���[���\�z���ĔF�؂��A�����ϊ��I�[�T�����O�v���Z�X�̓��͂Ɏg���Ƒ����Ȏ��Ԃ̐ߖ�ɂȂ�B

�����@M2T�ϊ��������Ƃ��ɁAJET�ł͂Ȃ�DPTK���g���̂͂ǂ̂悤�ȏꍇ���B

���@Eclipse 3.2�ARational Application Developer�iRAD�jV7�A���邢��Rational Software Architect V7��ŕϊ����s���‚���ł����JET���g���B����ȑO�̃o�[�W������RSA�ARAD�A���邢��Eclipse�ł����DPTK���g���B

�����@JET�ϊ��̃C���v�b�g���f���Ƃ��Ĕz���L�q�q�iweb.xml�j���g���������A���̔z���L�q�q�ɕ��ނł��Ȃ��V�����f�[�^�������‚��K�v���B���̏ꍇ�͂ǂ�����΂悢�̂��B

���@2�Ԗڂ�XML�t�@�C���ɒlj��������邱�Ƃ��ł���B�ϊ��ł́A2�‚̂�����1�‚̃t�@�C��������͂Ƃ��A�R���e���c�^�O���g����2�Ԗڂ̃t�@�C���̃��[�h�A�p�[�V���O�A�������ւ̓ǂݍ��݂��s���B2�‚̃t�@�C������̗����f���̓ǂݍ��݂��I������΁A�t�@�C�������ɕK�v�ȃe���v���[�g���������ł��”\�ɂȂ�B

�����@�p�^�[����M2T�ϊ��Ƃǂ̂悤�Ȋ֌W������̂��H

���@Grady Booch���͂��‚āA�p�^�[���Ƃ͏���̏󋵂ɂ����ČJ��Ԃ�����������ɑ΂���\�����[�V�����ł���A�ƒ�`�����B���̒�`�́A�ŗD�ǎ���A�K�C�h���C���A�������Ⴊ��������p�^�[���ł��邱�Ƃ��������Ă���BM2T�ϊ��͍ŗD�ǎ���A�K�C�h���C���A�����Ė�������̓K�p���������ł��邽�߁AM2T�ϊ��i����у��f���ԕϊ��j�̓p�^�[���̓K�p���������ł���B�M�҂́A�u�ϊ��v�Ɓu�p�^�[���v�̗����̗p��𕹗p���邱�Ƃ������Ȃ��Ă���B

�����@�B���J����̂��G�O�U���v���[�ƃp�^�[���̓K�p�͈͂��BM2T�ϊ������p�ł���悤�\���L���͈͂��m�ۂ��������A�ŏ��̕ϊ��ŕŒ�����قǂ̍L�͈͂�]�܂Ȃ��ꍇ�͂ǂ����邩�B

���@�G�O�U���v���[�͈̔͂����肷��ɂ͂����‚����@������B

�@�ŏ��� �A�u�p�^�[���Ƃ͏���̏󋵂ɂ����ČJ��Ԃ�����������ɑ΂���\�����[�V�����ł���v�Ƃ����_���B�\�����[�V�����͍ŗD�ǎ���A����A�K�C�h���C���A�݌v���Ȃǂ̌`�ԂɂȂ�B�I�u�W�F�N�g�i�udoc�v��uj-unit�v�e�X�g�t�@�C���Ȃǁj�𑶑���������@�ȂǁA����̖��������ł����A�̃t�@�C����T���Ă������������B�������A���̖��́A�A�v���P�[�V�����X�C�[�g�S�̂ʼn��������P�[�X��������Α����قǂ悢�B

�@�M�҂́A���ꂼ��̃t�@�C���̐����ɕK�v�ȃ��f���f�[�^��2�‚̏W�����d�����邱�Ƃ�2�‚̃t�@�C�����uMDD�֌W�ɂ���v�i�M�ғƎ��̗p��j�Ƃ����Ă���B��Ƃ��ẮA�ʂ̃t�@�C���̂��߂ɁA����t�@�C���̃N���X�������̓t�@�C���̖��O���\�[�X���ŌĂ΂��ꍇ��A�����v���p�e�B���i�������́ugetter�v��usetter�v�̖��O�Ƃ��������̕ώ�j�������2�‚̃t�@�C���̃\�[�X���ɂ���ꍇ������B�܂��AMDD�֌W�͋����i�C���^�[�t�F�C�X����уC���v�������g�N���X�j�������͎ア�iJava�v���W�F�N�g��jar����Q�Ƃ���admin�X�N���v�g�j�ƌĂѕ����邱�Ƃ��ł���B����MDD�֘A�t�@�C���i���w�̕•���v���o���Ă������������j�̃O���[�v��T�������B

�@�����̃A�v���[�`�́A��������ŏI�I�ɂ͓����t�@�C���O���[�v����肷��B����ɓK�����G�O�U���v���[�Ƃ��ẮA��20�̃t�@�C���ō\�������悤�ȃt�@�C���O���[�v��T���Ƃ������낤�B�M�҂������Ƃ���A1�‚̃p�^�[�������悻80���̃e���v���[�g�͕��}�Ȃ��̂ŁA15���͕�����₷���Ċ����������₷��5���͂�∵���Â炢�B

�@�����p�^�[���̃I�[�T�����O�Ɋւ���o���������ƖL���Ȃ�΁A�t�@�C�������āA�����‚����₵�������ŁA�e���v���[�g�̐��╡�G���A�����ă��f���̃T�C�Y��`����������������悤�ɂȂ�B�M�҂Ȃ�A���̃e�[�}�̐��Ƃ�A�p�^�[���̃e�[�}�̐��Ƃ��ق��̃e�[�}�̐��̈�ɕs����ł���ȂǁA�܂��ڂɌ����Ȃ����G���̃��X�N�v�����v�Z�ɓ���邾�낤�B

�@��_�Ɋȗ������邽�߁A�M�҂Ȃ�ŏ��� �ϊ��p��5�`10��ނ̃e���v���[�g���쐬����B�����葽���ƂȂ��Ȃ������ɂ͖������𓾂��Ȃ����A�����菭�Ȃ���M2T�ϊ��̗͂������ł��Ȃ��Ȃ�B

�����@JET�ł̐����ɔ��ɓK����Java�N���X�������‚����邪�A���ꂼ��̒��ɂ́A���������Ȃ����Ǝv����Ɩ����W�b�N�������B�N���X�̃\�[�X����x�������A�J���҂ɂ��ꂼ��̋Ɩ����W�b�N��lj������邱�Ƃ��ł���Ǝv���邪�A�����������Ȃ���΂Ȃ�Ȃ��Ƃ��ɂ́A�ǂ�����΂����̃��W�b�N�������������ɍςނ��낤���B

���@JET�́uuserRegion�v�^�O���g���K�v������B���̃^�O�́A�������ꂽ�e�L�X�g���烆�[�U�[���C���ł���Z�N�V��������肷��B�ϊ����ēx���s����ƁA�J���҂��������ύX�͐�����ƑS�̂�ʂ��ĕۑ������B�‚܂�A�\�[�X�𐶐����邽�߂Ƀe���v���[�g���쐬���A�������ꂽ�\�[�X�̒��ŊJ���҂��C���������Ǝv���Z�N�V��������肵�A�Ō�ɂ����̃Z�N�V������userRegion�^�O�ň͂ނ̂��B

�����@���ł�M2T�ϊ��Ő������ꂽ�A�v���P�[�V�����Ƃ��Ă͂ǂ̂悤�Ȃ��̂����邩�B

���@RSA V7�͍ŋߓo�ꂵ���΂���ł��邽�߁AM2T�ϊ��̑唼��DPTK���g���ď�����Ă���B�������ꂽ�A�v���P�[�V������R���|�[�l���g�Ƃ��ẮA�J�X�^���|�[�g���b�g�AJ2EE�A�v���P�[�V�����AEclipse�R���|�[�l���g�i�E�B�U�[�h�A�_�C�A���O�{�b�N�X�A�w���v�A���b�`�N���C�A���g�j�A�œK�����ꂽ�f�[�^�x�[�X�A�N�Z�X�ȂǁA�ڋq�ɓ��������A�v���P�[�V�������e�킠��B

�����@RSA V6�p�ɑ�����DPTK�p�^�[���������Ă����B������JET��RSA V7�Ɉڍs����ۂɍł� �ȒP�ȕ��@�͉����B

���@RSA V7��RAD V7�ɂ́A������ɂ�DPTK�݊����C���ƌĂ΂��JET�^�O���C�u�������t�����Ă���B���̃^�O���C�u�����ɂ́A�I���W�i����DPTK�^�O�ƊO�ς�����������悤�ȃ^�O���܂܂�Ă���B�������A�����̃^�O��JET��ɃC���v�������g�����B

�@��x�����̃p�^�[����V7�̍�Ƌ�Ԃɓǂݍ��܂���΁A�uAdd JET Behavior�v�Ƃ���DPTK�p�^�[����������DPTK�p�^�[���ɓK�p���A���̕ϊ���JET�ϊ��Ƃ��ă`���[�j���O���邽�߂ɕK�v�ȓK�؂ȓ����A�ݒ�A����уt�H���_��lj��ł���B

�����@�V����JET�^�O�͂ǂ����������̂��B�������Ƃ͂��łɑg�ݍ���Java�ł��ł��Ă��邪�B

���@JET�^�O�́A�g�ݍ���Java�Ɠ����x���̃e���v���[�g�t���[�R���g���[���i�����A��������A���f���A�N�Z�X�Ȃǁj�������ł��邪�A������͂��������Ɉˑ�������������B����ɂ��ACOBOL��C�̃v���O���}�[�A�����ăV�X�e���Ǘ��҂ł��AJava���w�K�����ɕϊ���������悤�ɂȂ�B

�@�ꕔ�̃^�O�́AJava�ւ̑g�ݍ��݂��񌻎��I�ŕ��G�ȕ��������Ȃ葽���B���Ă����B�Ⴆ�΁A�t�@�C���^�O�i���f���Ƀe���v���[�g��K�p���A����ɂ���Ăł���R���e���c��V����Eclipse���\�[�X�ɕۑ�����j�́A�R���t�B�M�����[�V�����Ǘ��v���O�C���Ȃǂ̊e��G�f�B�^�ƘA�g���A�������ꂽ�t�@�C����Eclipse�ɐ��m���Šm���ɑg�ݓ������悤�ɂ���B

�����@UML2Java�AJET�ADPTK�ȂǁA�ϊ��͕������邪�ARSA�Ƃ��Ă̖��m�Ȑ헪�͂ǂꂩ�H

���@�g�p����M2T�Z�p�́A�g�p����Rational�c�[���̃o�[�W�����Ō��܂�B��1����EMFT JET�iEclipse 3.2.0�����Rational V7�ȍ~�ɑΉ��j���B�����̂�����̃v���b�g�t�H�[�����g�p���Ă��Ȃ��ꍇ��DTPK���g�������B

�����@Pattern Repository�Ƃ͉����H Pattern Repository��Asset Repository�iRAS�j�̊֌W�́H RSA�͂�������������B

���@�p�^�[�����|�W�g���́AReusable Asset Specification�iRAS�j�t�@�C���Ƃ��ē��������p�^�[�������ƒT�[�o�i���[�J���}�V����ł��j�BRAS�t�@�C���́ARAS�t�@�C�����̎��Y�̓����Ɨp�@�Ɋւ��郁�^�f�[�^�ƁARAS���Y����Ƌ�Ԃɓǂݍ��ނƂ��̃C���X�g�[���菇������������^�f�[�^���lj����ꂽzip�t�@�C���ł����Ȃ��B���̂ق�����ȏ����Ƃ��ẮAEclipse�v���O�C���̃C���X�g���[�V�������Ƌ�Ԃւ̃t�@�C���̓ǂݍ��݂Ȃǂ�����B�����͎����I�Ɏ��s�����B�������ARAS�t�@�C���ɂ͂ق��̎��Y���܂߂邱�Ƃ��ł���B


�{�L���́uThe Rational Edge�v�Ɍf�ڂ��ꂽ�uMeet the experts: Chris Gerken on model-driven development�v���A�b�g�}�[�N�E�A�C�e�B���|�󂵂����̂ł��B

�Q�l



�uThe Rational Edge�v�o�b�N�i���o�[

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);

���ڂ̃e�[�}

�l�C�L�������L���O

���Ȃ��ɂ������߂̋L��PR