�{�L����Pollice���́A�A�X�y�N�g�w���v���O���~���O�iAOP�j�̊T�v�������AAOP�̏������A���̏��������������邽�߂ɕK�v�Ȃ��́A����т���ɔ��������Q�ɂ��ďq�ׂĂ���B
�@���z�I�Ȑ��E�ł́A�\�t�g�E�F�A�̍�蒼���ȂǂƂ�����Ƃ͑��݂��Ȃ����낤�B�����炭�A�K�ȃI�u�W�F�N�g�E���f�����ŏ����瓾���A�E�H�[�^�[�t�H�[���^�̊J���A�v���[�`�����܂��@�\���邾�낤�B�������߂������ȁA����ꂪ�Z��ł���̂͗��z�I�Ȑ��E�ł͂Ȃ��B���̂��߁A�\�t�g�E�F�A�E�V�X�e�����\�z���邽�߂̂��悢���@����ɖ͍����Ă���̂ł���B
�@�����͌����I�ɁA���ׂĂ̏ɑ��ēK�ȃv���Z�X�A��@�A����A�v���b�g�t�H�[���Ȃǂ����݂��Ȃ����Ƃ�F�����Ă���B�����炱���A�c�[���̃��p�[�g���[���L���āA���ʂȃc�[�����@���K�v�ɂȂ����Ƃ��ɂ����ɂ����𗘗p�ł���悤�ɏ������Ă���̂ł���B���̋ƊE�i�������IT�ƊE���j�̗��j�́A��������A�\�����v���O���~���O�A�I�u�W�F�N�g�w���A�v���[�`�̓�������A�X�p�C�����^�┽���^�̊J���Ɏ���܂ŁA�\�t�g�E�F�A�\�z�A�v���[�`�̉��ǂ̗��j�ł�����B���̃��C���A�b�v�ɍŋ߉�������̂��A�A�X�y�N�g�w���v���O���~���O�iAOP�Faspect-oriented programming�j�ł���BAOP�́A�A�X�y�N�g�w���\�t�g�E�F�A�J���iAOSD�Faspect-oriented software development�j��1�̑��ʂ�\���B���̃R�����ł�AOP�̊T�v�������AAOP�̏������A���̏��������������邽�߂ɕK�v�Ȃ��́A����ɔ��������Q�ɂ��Đ�������B�܂��A�����ł͂��邪AOSD�ɂ��Ă���������B
�@AOP�Ƃ����T�O�͐V�������̂Ɏv���邩������Ȃ����A���ۂɂ͈ȑO���瑶�݂��Ă������̂ł���BAOP�Ɋւ��č������p�ł���m���͑����̐l�X�̍v���ɂ����̂ł���A�e�l�����̑n�n�҂ł���Ǝ咣���邱�Ƃ��ł���B�������A��ʓI��AOP�ƍł��֘A�̐[���l����Gregor Kiczales���ł���B���݁A�ނ�British Columbia��w�Ń\�t�g�E�F�A�̃��W���[�����Ɋւ��錤���ɏ]�����Ă���BKiczales���́A1984�N����1999�N�܂�Xerox Palo Alto Research Center�iPARC�j��AOP�̌����Ɏ��g�݁AAOP�̎����ɂ�������l�҂ł������B
�@AOP���������ł��悢���@�́A����������Ƃ��낤�B�����ł́A���Ȃ�����K�͂ȃ\�t�g�E�F�A�E�V�X�e����ێ炷�闧��ɂ���Ɖ��肵�悤�B���̃V�X�e���́A��������g�D�̋��^�v�Z�Ɛl���̋@�\���Ǘ�����B�����ŁA�]�ƈ��f�[�^�ɑ���ύX�����ׂă��O�ɋL�^����悤�Ɍo�c�ґ�����v�����ꂽ�Ƃ�����ǂ����邩�B����ɂ́A�����A�����A�c�Ǝ蓖�ȂǁA���^�v�Z�Ɋւ���ύX���܂܂��B�܂��A�]�ƈ��̌�������l�f�[�^�ȂǁA�]�ƈ��̂�������Ɋւ��邠����ύX���܂܂��B���̗v�������ɂ́A�ǂ�������悢���낤���B
�@�����̐l�́A�ق��ɂ悢���@���v���t���Ȃ����߁A�R�[�h���ׂāA�K���ȏꏊ�Ƀ��M���O�E���\�b�h�̌Ăяo����}�����邾�낤�B�V�X�e�����K�ɐv����A�쐬����Ă���A�R�[�h�ɉ�����ύX�͐��J�������ōςށB�����������̃V�X�e���ł́A�����̏ꏊ�ɂ��̂悤�ȑ}�����K�v�ɂȂ�B�I�u�W�F�N�g�w���V�X�e���ł���A���M���O�E�N���X���쐬���A���̃C���X�^���X���g�p���ă��M���O���s���B���܂��܂ȃt�@�C����f�[�^�x�[�X���������߂ɁA�����̊K�w�̃N���X���K�v�ȏꍇ������B���̂悤�ȕ��@�ŗv���������Ƃ���̂͗e�Ղȍ�Ƃł͂Ȃ��A�K�v�ȑ}�����m���ɍs����悤�ɕۏ��邱�Ƃ͍���ł���B
�@���Ƃ��A�D�ꂽ�I�u�W�F�N�g�w���V�X�e���̎������Ȃ���Ă����Ƃ��Ă��A�������̖��ɒ��ʂ��邱�ƂɂȂ邾�낤�B�wMastering AspectJ�x�̒���Joseph D. Gradecki����Nicholas Lesiecki���́A�I�u�W�F�N�g�w���V�X�e���ł́A�ύX����̂�����ȃN���X��ė��p�ł��Ȃ��R�[�h���쐬����邱�Ƃ������A�V�X�e�����g���[�X����̂�����i�܂�A�I�u�W�F�N�g�Ԃ̃��b�Z�[�W�����ɑ������߁A�R�[�h�̘_���X���b�h��ǂ��̂�����ł���j�Ǝw�E���Ă���i��1�j�B
�@���̗�ŗv������郍�M���O�@�\�́A���f�I�S���icross-cutting concern�j�ł���B�܂�A�V�X�e���S�̂ɂ������@�\�ł���A�V�X�e���̂��܂��܂ȏꏊ�ŕύX�����M���O���Ȃ���Ȃ�Ȃ����߁A1��2�̓���̃N���X�Ƀ��M���O�@�\���i�J�v�Z�����j���邱�Ƃ͂ł��Ȃ��̂ł���B�����̊�]�́A�V�X�e����ێ炪�e�Ղȏ�Ԃɕۂ��Ƃł���A���̂��߁A�R�[�h���ł��邾���Ȍ��ɕۂ��Ȃ��烍�M���O�������������Ƃ������Ƃ��B�܂��A�V�X�e���̃A�[�L�e�N�`���ɑ��č\����̑傫�ȕύX�������邱�Ƃ͔��������B�����Ȃ�ƁA���M���O�̂悤�ȉ��f�I�S�����ǂ̂悤�Ɏ���������悢�̂��낤���B���M���O���s���N���X���쐬���A�K���ȑ}�����s�����Ƃɂ���āA���ׂẴR�[�h�����t�@�N�^�����O���邱�Ƃ͉\�ł��邪�A��K�̓V�X�e���ł́A���Ɏ��Ԃ�������A�G���[�̔������₷����ƂƂȂ��Ă��܂��B
�@AOP�́A���̂悤�ȉ��f�I�S����\�����A�������V�X�e���Ɏ����I�ɑg�ݍ��ނ��߂̃��J�j�Y���ł���A�X�y�N�g�iaspect�j����邱�Ƃɂ���āA���f�I�S������������悤�ɐv����Ă���BAOP�́A�����̃v���O���~���O�̃p���_�C���⌾����u�u��������v���̂ł͂Ȃ��A�����Ɓu�A�g�v���ĕ\���͂�L�p�������コ���邽�߂̂��̂ł���BAOP�𗘗p����ƁA�S���̕����iseparation of concerns�j�����K�ɕ\���ł���B����́A�ێ炪�e�Ղȃ\�t�g�E�F�A�E�V�X�e����K�ɐv���邽�߂ɕK�v�ł���B�ꕔ�̊S���́A�J�v�Z�������ꂽ�I�u�W�F�N�g�A���Ȃ킿�R���|�[�l���g�Ƃ��ēK�ɕ\������A����ȊO�̊S���͉��f�I�S���Ƃ��ēK�ɕ\�������B
�@�����������M���O�̖��ɂ��čl���A���ꂪAspectJ�ɂ���Ăǂ̂悤�ɉ�������邩�����Ă݂悤�BAspectJ�Ƃ́AJava������g������AOP�̎����̂��ƂŁA�����炭AOP�̎����Ƃ��Ă͍ł��L���ŁA�ł��L���g���Ă�����̂ł���B�����A�ǎ҂�Java����ɐ��ʂ��Ă��Ȃ��Ƃ��Ă��A���ꂩ����������v�ȊT�O�ɂ��Ă͗����ł���͂��ł���B
�@���L�̐}�i�]�ƈ����̍X�V�ɊW����N���X�j�́A�V�X�e���̕ύX����������1�̕��@�������Ă���BFinance�V�X�e���ɂ́A�]�ƈ��̉�v�f�[�^���X�V���邽�߂̂������̃��\�b�h��1�̃C���^�[�t�F�C�X������B�����̃��\�b�h���͂��ׂāuupdate�v�Ŏn�܂�i�Ⴆ��updateFederalTaxInfo�j�A�e���\�b�h�͈����Ƃ���Employee�I�u�W�F�N�g�����B �܂��A�]�ƈ��̐l�����́A�}�Ɏ����ꂽEmployee�I�u�W�F�N�g�̃��\�b�h���g���čX�V�����B
�@�����ʼn������Ȃ���Ȃ�Ȃ����͂ŋL�q����ƁA���̂悤�ɂȂ�B�C�ӂ̍X�V���\�b�h���Ăяo���A���̍X�V�������������邽�тɁA���M���O�E���b�Z�[�W���o�͂���B�b���ȒP�ɂ��邽�߂ɁA���M���O�E���b�Z�[�W��W���o�͂ɏo�͂���B���ۂ̃V�X�e���ł́A���O�E�t�@�C���ɏo�͂��邱�ƂɂȂ邾�낤�BAspectJ���g���Ă��̃\�����[�V��������������ɂ́A����3�̃X�e�b�v���K�v�ł���B
�@�e�X�e�b�v�ɂ��āA����3�̃Z�N�V�����ŏڂ�����������B
�@�����_�ijoin point�j�Ƃ́A�����̊S�����A�v���P�[�V�����ƌ�������A�R�[�h���̓K�ɒ�`���ꂽ�|�C���g�̂��Ƃł���B��ʓI�ɁA���ꂼ��̊S���ɂ��đ����̌����_�����݂���B�����_��1��2���x�ł���A��J�����Ɏ��ƂŃR�[�h��ύX�ł���B
�@AspectJ�ł́A�����_���|�C���g�J�b�g�ipointcut�j�Ƃ��ăO���[�v�����邱�Ƃɂ���āA�����_���`����iAspectJ�̍\���͖L�x�ł���A�����ł͂��̂��ׂĂɂ��Ă͐������Ȃ��j�B�܂����߂ɁA2�̃|�C���g�J�b�g���`����B1��Employee�N���X���̌����_���O���[�v�����邽�߂̂��̂ł���A����1��IEmployeeFinance�R���|�[�l���g���̌����_���O���[�v�����邽�߂̂��̂ł���B�������`����R�[�h�͎��̂悤�ɂȂ�B
pointcut employeeUpdates(Employee e): call(public void Employee.update*Info()) && target(e); pointcut employeeFinanceUpdates(Employee e) : call(public void update*Info(Employee)) && args(e);
�@employeeUpdates�Ƃ������O�̍ŏ��̃|�C���g�J�b�g�́Aupdate�Ƃ���������Ŏn�܂�AInfo�Ƃ���������ŏI���A�����������Ȃ�Employee�I�u�W�F�N�g�̃��\�b�h���Ăяo���Ă��邷�ׂĂ̌����_��\���Ă���B�܂��A���̃|�C���g�J�b�g�́Atarget�w��q�ɂ���āAEmployee�N���X�Œ�`���ꂽ���\�b�h�m�Ɏw�肵�Ă���B2�Ԗڂ̃|�C���g�J�b�g�ł���employeeFinanceUpdates�́Aupdate�Ŏn�܂�AInfo�ŏI���AEmployee�^�̈�����1���C�ӂ̃��\�b�h���Ăяo���Ă��邷�ׂĂ̌����_��\���Ă���B����2�̃|�C���g�J�b�g�́A��������ƁA����ꂪ�S������Ă��邷�ׂĂ̌����_���`����BEmployee�N���X��IEmployeeFinance�R���|�[�l���g�ɍX�V���\�b�h��lj������ꍇ�A���������K���ɏ]���Ă������A�����̃��\�b�h�̌Ăяo���������I�Ƀ|�C���g�J�b�g�Ɋ܂܂��悤�ɂȂ�B�܂�A�X�V���\�b�h��lj����邽�тɁA�����������M���O�E�R�[�h��lj�����K�v���Ȃ��Ȃ�̂ł���B
�@���M���O��������������R�[�h�́AJava�̒ʏ�̃��\�b�h�Ɠ��l�ł��邪�A�A�X�y�N�g�ƌĂ��V�����^�Ƃ��ċL�q����B�A�X�y�N�g�́A����̊S���Ɋ֘A����R�[�h���J�v�Z�������邽�߂̃��J�j�Y���ł���B�]�ƈ��̕ύX�����M���O���邽�߂̃A�X�y�N�g�̎����́A���̂悤�ɂȂ�B
public aspect EmployeeChangeLogger { pointcut employeeUpdates(Employee e) : call(public void Employee.update*Info()) && target(e); pointcut employeeFinanceUpdates(Employee e) : call(public void update*Info(Employee)) && args(e); after(Employee e) returning : employeeUpdates(e) || employeeFinanceUpdates(e) { System.out.println("\t>Employee : " + e.getName() + " has had a change "); System.out.println("\t>Changed by " + thisJoinPoint.getSignature()); } }
�@�܂��A�A�X�y�N�g�̍\����Java�̃N���X�Ǝ��Ă��邱�Ƃɒ��ڂ��Ăق����B��ʓI�ɃA�X�y�N�g�́AJava�̃N���X�Ɠ��l�ɁA�Ɨ������t�@�C���ɋL�q�����B���̗�̂悤�ɁA�ȑO�ɒ�`�����|�C���g�J�b�g���A�X�y�N�g�̃R�[�h�Ɋ܂߂�̂���ʓI�ł��邪�A�����_���܂�ł���R�[�h�̋߂��ɂ������܂߂邱�Ƃ��ł���B
�@�|�C���g�J�b�g�̌�ɂ́A�ʏ��Java�R�[�h�̃��\�b�h�Ǝ����R�[�h�E�Z�N�V�����������B����́AAspectJ�ł̓A�h�o�C�X�iadvice�j�ƌĂ��B�A�h�o�C�X�ɂ́Abefore�Aafter�Aaround��3��ނ�����A���ꂼ�ꌋ���_�̑O�A�����_�̌�A�����_�̑���Ɏ��s�����B���܂��܂ȃo���G�[�V�������g���ăA�h�o�C�X���J�X�^�}�C�Y���邱�Ƃ��ł���B��̗�ł́A�����_�ɂ����čX�V���\�b�h����߂�������Ƀ��M���O���s����B����1���ڂ��Ăق����̂́A�A�h�o�C�X�̃w�b�_���ŃR�����i:�j�̒����2�̃|�C���g�J�b�g�̖��O���L�q���A������_��OR�i||�j�łȂ��ł��邱�Ƃł���B����ɂ��A2�̃|�C���g�J�b�g��g�ݍ��킹�Ă���B���̂悤�Ȃ��Ƃ��ȒP�ɂł���̂́A�����̃|�C���g�J�b�g��Employee�p�����[�^��������ł���B
�@�A�h�o�C�X����2�̃X�e�[�g�����g�́A�]�ƈ��̏�ύX���ꂽ���Ƃ��A�]�ƈ����ƂƂ��ɏo�͂���B�ύX�����]�ƈ��I�u�W�F�N�g���A�h�o�C�X�̈����Ƃ��ēn�����̂ŁA�o�͂�����e�͊ȒP�ɕύX�ł���B2�Ԗڂ̃X�e�[�g�����g�́AAspectJ��JoinPoint�N���X�𗘗p���āA���̃A�h�o�C�X�����s����Ă��錋���_���o�͂���B�A�h�o�C�X�����s�����Ƃ��ɂ͊֘A���錋���_���K������A���̌����_��thisJoinPoint�ɂ���ĎQ�Ƃł���B
�@���M���O�E�R�[�h���L�q�ł����̂ŁA���ɂ�����R���p�C�����A�����̃V�X�e���ɓ�������B���̗�ł́AEmployee��EmployeeFinance��2�̃N���X�����������B���̂ق��ɁA���̂悤��main���\�b�h�����ȒP�ȃe�X�g�p�N���X��p�ӂ���B
public static void main(String[] args) { Employee e = new Employee("Chris Smith"); // �]�ƈ�����ύX���鏈���� // �����ɋL�q����B e.updateJobInfo(); e.updateOfficeInfo(); EmployeeFinance.updateFederalTaxInfo(e); EmployeeFinance.updateStateTaxInfo(e); }
�@AOP�̎������g�p���Ȃ���A���̃R�[�h�͖��Ȃ����s�����B���̗�ł́A���ׂĂ̍X�V���\�b�h�̖{�̂�print�X�e�[�g�����g�������܂�ł���̂ŁA���̗�����s����ƁA���̂悤�ȏo�͌��ʂ�������B
Updating job information Updating office information Updating federal tax information Updating state tax information
�@��`�����A�X�y�N�g���V�X�e���ɑg�ݍ��ނ��߂ɁA�A�X�y�N�g�̃\�[�X�E�R�[�h���v���W�F�N�g�ɒlj����AAspectJ�̃R���p�C���ł���ajc���g���ăr���h����B�R���p�C���͂��ꂼ��̃A�X�y�N�g���������āA�A�h�o�C�X�E�R�[�h���܂N���X�E�t�@�C�����쐬����B���ɁA�����̃N���X�E�t�@�C�����̓K�ȃ��\�b�h�ւ̌Ăяo�����A���̃A�v���P�[�V�����E�R�[�h�̒��Ɂu�D�荞�܂��v�BAspectJ�̌��݂̃����[�X�ł́A���̐D�荞�݁iweaving�j��Java�̃o�C�g�R�[�h�E���x���ōs���邽�߁A���ԓI�ȃ\�[�X�E�t�@�C���͐�������Ȃ��B�������AJava�̃o�C�g�R�[�h���f�R���p�C�����邱�Ƃ͉\�ł���B
�@�M�҂͊J���p��Eclipse�����g�p���Ă���A�R���p�C���̌Ăяo���Ɓi�R���p�C���ւ́j�K�Ȉ����̈����n����AspectJ�v���O�C���ɂ���čs����BAspectJ�̃R���p�C�����g���ăv���W�F�N�g���R���p�C������ƁA���̂悤�Ȏ��s���ʂ�������B
Updating job information >Employee : Chris Smith has had a change >Changed by void employee.Employee.updateJobInfo() Updating office information >Employee : Chris Smith has had a change >Changed by void employee.Employee.updateOfficeInfo() Updating federal tax information >Employee : Chris Smith has had a change >Changed by void employee.EmployeeFinance.updateFederalTaxInfo(Employee) Updating state tax information >Employee : Chris Smith has had a change >Changed by void employee.EmployeeFinance.updateStateTaxInfo(Employee)
�@����ŁA�ǂ̏]�ƈ��̏�ύX���ꂽ���A�܂����̕ύX���ǂ��ōs��ꂽ����������悤�ɂȂ����B�������A���M���O�����͂����蕡�G�Ȃ��̂ł����Ă��\��Ȃ����A��{�I�Ȏ�@�͓����ł���B
�@�A�X�y�N�g�w���e�N�m���W�ɂ́A�����̐��ݓI�ȃ����b�g������B���̃e�N�m���W�́A�V�X�e�����̉��f�I�S�����w�肵�A�J�v�Z�������邽�߂̕��@�����B����ɂ��A�V�X�e���̔��W�ɔ����ăV�X�e�������悭�ێ炷�邱�Ƃ��\�ɂȂ�\�\�����āA�V�X�e�����m���ɔ��W���邱�Ƃ��m�M�ł���BAOP�𗘗p����ƁA�̌n�����ꂽ���@���g���āA�����̃V�X�e���ɐV�����@�\���A�S���Ƃ����`�Œlj��ł���B�\����\�������ǂ��邱�Ƃɂ���āA��蒷���Ԃɂ킽���ăV�X�e�����ғ������邱�Ƃ��ł��A�V�X�e���S�̂������������ƂȂ��A���X�ɉ��ǂ������邱�Ƃ��ł���B
�@�܂�AOP�́A�i���Ǘ��̐��ƂɂƂ��ďd�v�ȃc�[���ƂȂ邾�낤�BAOP������g�p����ƁA�A�v���P�[�V�����E�R�[�h�̎ז��������ɁA�R�[�h�������I�Ƀe�X�g�ł���B���̂��߁A�s�p�ӂɃG���[�̌�����lj����Ă��܂����Ƃ��Ȃ��Ȃ�B
�@�����͌��݁AAOSD�̐��ݔ\�͂𗝉����鏉���i�K�ɂ���B���̃e�N�m���W���A����Ȃ錤���Ǝ����Ɍ����������̏\���ȗ��v�������炷���Ƃ͖��炩�Ȃ悤���B�����́A���Ƃǂꂭ�炢����AAOP��������I�Ɏg���ăA�v���P�[�V�������J������悤�ɂȂ�̂��낤���B���̓����͂���ɐq�˂邩�ɂ���ĈقȂ�B
�@�����܂ł́A���܂��܂ȃ����b�g�ɂ��Č��Ă����̂ŁA���x��AOSD�Ɋւ��郊�X�N�ƁAAOSD���\�t�g�E�F�A�J���̎嗬�ƂȂ邽�߂ɕK�v�Ȃ��̂ɂ��čl���Ă݂悤�B
�@AOSD��i���̊ϓ_����Ƃ炦�AAspectJ���g���ď������ׂĂ݂����ʁA�����b�g�̂ق��ɐ��ݓI�ȃ��X�N�����݂��邱�Ƃ����������B�����ł�3�̖������グ��B�����́AAOSD�����y�����ꍇ�ɁA�i���Ɋւ��Ă���ꂪ���ʂ���ۑ���������̂ł���B
�@�ŏ��̖��́AAOP�ɑΉ����邽�߂Ƀv���Z�X��ύX���Ȃ���Ȃ�Ȃ����Ƃł���B�\�t�g�E�F�A�̌��ׂ�������̂ɍł��L���Ȏ�@��1�́A�R�[�h�̃C���X�y�N�V�����ƃ��r���[�ł���B���r���[�̍ۂɁA�v���O���}�̃`�[���̓R�[�h��_�]���A���̃R�[�h���v�������Ă��邩�ǂ����f����B�I�u�W�F�N�g�w���v���O�����ł́A�N���X���邢�͊֘A����N���X�̏W�܂�����r���[���A�����ɂ��Ĕ��f�������B�܂�A�R�[�h�ׁA���̃R�[�h���\�����ʃC�x���g��K�ɏ������邩�ǂ����A�_���I�Ȍ��ׂ��Ȃ����ǂ����A�Ȃǂf����B�I�u�W�F�N�g�w���V�X�e���ł́A����̊T�O�ɂ��Ẵf�[�^�ƐU�镑�����A���ꂼ��̃N���X�̒��Ɋ��S�ɃJ�v�Z���������B
�@������AOP�ł́A�N���X�̃R�[�h�����������ŃN���X�ɂ��Ĕ��f���邱�Ƃ͂ł��Ȃ��B���̃R�[�h���A����A�X�y�N�g�̃A�h�o�C�X�ɂ���Ċg������Ă��邩������Ȃ����A���邢�̓A�h�o�C�X�ɂ���Ċ��S�ɒu���������Ă��邩������Ȃ�����ł���B�A�v���P�[�V�����̃R�[�h�ɂ��Ĕ��f�ł���悤�ɂȂ邽�߂ɂ́A�e�N���X�̃R�[�h�����łȂ��A���̃N���X�̐U�镑���ɉe����^���邷�ׂẴA�X�y�N�g�̃R�[�h���Q�Ƃł��Ȃ���Ȃ�Ȃ��B�������A���̎��_�ł́A�A�X�y�N�g�͂܂��L�q����Ă��Ȃ���������Ȃ��B�������Ƃ���ƁA�A�v���P�[�V�����E�N���X�̃R�[�h�̐U�镑����P�Ƃōl������ꍇ�A�ǂꂭ�炢���m�ɗ����ł���Ƃ����̂��낤���B
�@���́AAOP�R�[�h�̐������ɂ��čl������@�́A�I�u�W�F�N�g�w���v���O���~���O�iOOP�j�R�[�h�̏ꍇ�Ƌt�ł���BOOP�ł́A��������O���ւƐi�ށB�܂�A�N���X�ɂ��čl���A���̃R���e�L�X�g��z�肵�A���̌�ŃN���X�̐������ɂ��āA�P�Ƃ���тق��̃N���X�Ƃǂ̂悤�ɑ��ݍ�p���邩�Ƃ����ϓ_�̗������画�f����B����ɑ���AOP�ł́A�O����������ւƒ��ׁA���ꂼ��̌����_�ɑ���e�A�X�y�N�g�̉e���f���Ȃ���Ȃ�Ȃ��BAOP�ɂ��Đ��������f������@���߁A�J���҂̏����ƂȂ�K�ȃc�[���Ǝ�@���J�����邱�Ƃ́A���ɉ��l�̂��錤���̈�Ƃ�����B
�@�iAOP�̕��y�Ɋւ���j2�Ԗڂ̂�茻���I�Ȗ��́A�e�X�g�A���ɒP�̃e�X�g�̂��߂̃c�[���Ǝ�@�̊J���ł���B�R�[�h�̓A�X�y�N�g�ɂ���ĕύX�����\�������邽�߁A����N���X�ɂ��Ċ����ɓ��삵���P�̃e�X�g���A���̃N���X��AOP�V�X�e���ɓ��������ƁA�܂������قȂ铮�������ꍇ������B����g���āA�����������悤�B
�@�X�^�b�N�́A�������̂悤�ɁA�f�[�^���ڂ�������o���iLIFO�Flast-in first-out�j�̕��@�Œlj�����э폜���邽�߂̃f�[�^�\���ł���B�Ⴆ�A2�A4�A6�Ƃ������l���X�^�b�N�Ƀv�b�V�����A���̌�A�X�^�b�N��2��|�b�v����ƁA6��4�����̏����Ŏ��o�����B�X�^�b�N�E�N���X�̂��߂̒P�̃e�X�g���L�q����̂͊ȒP�ł���B�v����`�ƃR�[�h��ǂ݁A��������������Ă��邱�Ƃ��m�F����B�M�҂�AspectJ���g���n�߂��Ƃ��ɍŏ��ɍs�������Ƃ�1�́A�X�^�b�N���������A�A�X�y�N�g���g���Ă��̐U�镑�����ǂ̂悤�ɕύX�ł��邩���l���邱�Ƃ������B�M�҂́A�e���ڂ�1����������Ƃ����ȒP�ȕύX�����������B�������ĒP�̃e�X�g�����s����Ɓ\�\�X�^�b�N��2�A4�A6���v�b�V�����A���2�̗v�f���|�b�v���āA����炪6��4�ł��邱�Ƃ��m�F����\�\���ʂ͎��s�ɏI���B�P�̃e�X�g�ɂ����āA�e�X�g����Ă���R�[�h�͕ς���Ă��Ȃ����A���̐U�镑�����ύX���ꂽ�̂ł���B���ʂ́A6��4�̑����7��5�����o�����B
�@����͂������ȗ�ł���A�����̏ł͋N����Ȃ����Ƃ�������Ȃ��B�������A���̗�́A���ӂ̂���v���O���}���ɂ߂ėe�Ղɑ����̔�Q��^�����邱�Ƃ������Ă���B���ӂ̂���v���O���}�͏����Ƃ��Ă��A�ύX�ɔ����ė\�����ʕ���p�������邽�߁A�����̌��ׂ���������\��������B�ɂ߂đÓ��ȗ��R�̂��߂Ɏ��������A�X�y�N�g���A�����̃v���O�����@�\�ɑ��Ĉ��e�����y�ڂ��Ȃ����Ƃ�ۏ���̂́A��ύ���ł���B
�@3�Ԗڂ̖��́A�e�X�g�E�v���Z�X���̂��̂ł���B�c�[���Ǝ�@���J�����ꂽ�Ƃ��āA������L���Ɏg���ĊJ���S�̖̂ڕW��B������ɂ́A�e�X�g�E�v���Z�X���ǂ̂悤�ɏC��������悢�̂��낤���B����͑傫�Ȗ��ł͂Ȃ���������Ȃ����A�A�X�y�N�g���g���č쐬�����\�t�g�E�F�A���e�X�g���邽�߂ɂ́A�������Ă����Ȃ���Ȃ�Ȃ����ł���B
�@AOSD�@������ꍇ�̍ł��傫�ȖW���ƂȂ�͕̂i���̖��ł��邪�A���ꂾ�����B��̏�ǂł͂Ȃ��BAOSD�͐V�����p���_�C���ł���B�ق��̃p���_�C���i�Ⴆ�A�I�u�W�F�N�g�w���\�t�g�J���j�����߂͂����������悤�ɁA�w�K�Ȑ����W���邽�߁A�L�����y����悤�ɂȂ�ɂ͎��Ԃ������邾�낤�B�܂����߂Ɋ�{�I�Ȏ�@�ƃ��J�j�Y�����w�K���A���ɍ��x�Ȏ�@���w�K���A���̌�ŁA�����̎�@��K�p���邽�߂̍őP�̕��@�ƁA����炪�ǂ̂悤�ȏꍇ�ɓK�ł��邩���w�K���Ȃ���Ȃ�Ȃ��B
�@�ƊE�ł�AOP�̕��y�ɂ́A�c�[�����傫�Ȗ������ʂ������낤�B�R���p�C����G�f�B�^�̂ق��ɁA���܂��܂ȃc�[�����K�v�ł���B�Ⴆ�A�V�X�e���ɂ��Ĕ��f������A���ݓI�ȉ��f�I�S�������ʂ�����A�A�X�y�N�g�����݂����ԂŃe�X�g���s�����肷�邽�߂ɖ𗧂c�[�����K�v�ł���B�A�X�y�N�g��UML�ŕ\������ȂǁA�V�X�e�������K�ɕ\��������@���J�����ꂽ��A�c�[���������̕��@���T�|�[�g����悤�ɐi�����Ȃ���Ȃ�Ȃ��B
�@���̋L���ł�AspectJ�ɂ��Đ����������AAspectJ�͗B���AOP�̎����Ƃ����킯�ł͂Ȃ����AJava�p�̗B��̎����Ƃ����킯�ł��Ȃ��B�܂��A�ŋ߂ł́AAOP�Ɠ��l�̂��̂ق��̃p���_�C��������Ă��Ă���B�Ⴆ�AIBM�̌������iIBM Research�j�ł͊S���̑����������imulti-dimensional separation of concerns�j�Ƃ����p���_�C�����J������Ă���A���̎�����HyperJ�Ƃ����c�[���Ƃ��ē���\�ł���ihttp://www.alphaworks.ibm.com/tech/hyperj�j�B�g�p���錾��ɑ���W���I�Ȏ������m�������܂ł́A�V�����p���_�C���̎g�p�ɂ̓��X�N�������BAspectJ�́A�i���̓r��ɂ���AOP�̎����i����j�ł���B���f�I�S�����܂ރ\�t�g�E�F�A���J���������A�J���Ŏg�p���������A�v���[�`���T�|�[�g����Ȃ��Ȃ��Ă��܂��A���邢�͑傫���ύX����Ă��܂��Ƃ������댯�́A�\���ɍl������B
�@�m���ɁAAOP�����I�ɗ��p�ł���悤�ɂ��邽�߂̃c�[����v���Z�X�̊J���ɂ́A���炭���Ԃ������邾�낤�B�������A���̋L���ŏq�ׂ���肪�����ł��Ȃ����̂��Ƃ͎v��Ȃ��BAOP�̂��߂́A���т̂���c�[����v���Z�X���J���ł����Ƃ��ɁA���������D�ꂽ�\�t�g�E�F�A�\�z�̕��@��������ƐM���Ă���B
�@�A�W���C���E�v���Z�X�i��2�j�ɂ���Barry Boehm�����q�ׂĂ���悤�ɁAAOP�ɃA�v���[�`����ɂ͒��ӂ��K�v������BAOP�𑁁X�Ɠ�������ɂ��Ă��AAOP���嗬�ɂȂ�܂ő҂ɂ��Ă��A�\�t�g�E�F�A�ɑ��铊�����A��������я����ɂ����Ċm���ɖ����ł��錋�ʂ������炷�悤�ɂ��Ȃ���Ȃ�Ȃ��B���ꂪ����ȃr�W�l�X�E�Z���X�ł���B
Gary Pollice
�@Gary Pollice���́A�}�T�`���[�Z�b�c�B�AWorcester��Worcester Polytechnic Institute�̋����ł���B�ނ̓\�t�g�E�F�A�H�w�A�v�A�e�X�g�A���̂ق��̃R���s���[�^�E�T�C�G���X�������Ă���A�w�������̃v���W�F�N�g���w�����Ă���B�w��̐��E�ɓ���O�́A�r�W�l�X�E�A�v���P�[�V��������R���p�C����c�[���Ɏ���܂ŁA���܂��܂Ȏ�ނ̃\�t�g�E�F�A�J����35�N�ȏ�s���Ă����BIT�ƊE�ł̔ނ̍Ō�̎d����IBM Rational Software�Ƃ̎d���ŁA�ނ́uRUP�̔�����v�ƌĂ�Ă����B�ނ́ARational Suite�̍ŏ��̊J���`�[���̃����o�[�ł���AAddison-Wesley�Ђ���2004�N�ɏo�ł��ꂽ�wSoftware Development for Small Teams�Fa RUP-Centric Approach�x�̎�v�Ȓ��҂ł�����B�܂��A���w�̊w�m���ƃR���s���[�^�E�T�C�G���X�̏C�m����L���Ă���B
Copyright © ITmedia, Inc. All Rights Reserved.