�m�Z�p�u���n
Domain-Driven Design Eric Evans �� |
�u�h���C�����f�����O�v�́A�A�v���P�[�V�����J���ɂ����čł��d�v�ȕ������Ƃ���Ă��܂��B���������̊��ɂ́A�t���[�����[�N�̎g������A�[�L�e�N�`���̐v���@�ȂNjZ�p�Ɋւ��������͂���������̂́A�h���C�����f�����O���̂��̂����������Ђ͂قƂ�ǖ��������ƌ����Ă������ł��傤�BEric Evans�́wDomain-Driven Design�x�i�ȍ~DDD�j�́A�u�\�t�g�E�F�A�̐^�̕��G���ɒ��킷��v�Ƃ������肩���������悤�ɁA�h���C�����f�����O�ɐ��ʂ�����g�Җ]�̏��Ђł��B
DDD�́A�C�O�ł͔��ɕ]���̍������Ђł��B�{���̏o�őO����Martin Fowler���ɂ��u���҂ł�����e���v�Ɛ��E����Ă�����AGoF��1�l�ł���Ralph Johnson���͎��g�̃u���O�Ŗ{�����u4�A5��͓ǂݒ������v�Ǝ^���𑗂��Ă��܂��BSpring Framework�̊J����Rod Johnson�����A�ŋ߂̃v���[���e�[�V������DDD���Љ�Ȃ���A�uJava EE�J���҂����ꂩ��i�ނׂ����̓��b�`�ȃh���C�����f�����v�Ɣ��\���Ă��܂��B�܂��AMDA�c�[��Sculptor�̂悤�ɁADDD��ϋɓI�ɍ̗p�����c�[����t���[�����[�N���o�ꂵ����܂��B
�������A���{�ł͖|�����܂��ɏo�ł���Ă��Ȃ����Ƃ�����A�{���̏o�ł���3�N�߂��o�������ł��A�܂��܂��ꕔ�̒ʂ̐l�����ɂ����L�܂��Ă��Ȃ��悤�ɕM�҂ɂ͎v���܂��B�܂��A������ǂ܂ꂽ���̒�������u�{�����������ēǂ݂���Ȃ��E�E�E�v�Ƃ����Q���̐���������܂��iDDD��Ƃ������t�����邻���ł��j�B�����Ŗ{�A�ڂł́A�S3��ɕ����āADDD�̑S�e���Ȍ��ɏЉ�Ă݂����Ǝv���܂��B
DDD�̓^�C�g������͈ꌩ������ɂ����̂ł����A������p�^�[���{��1�ł��B�������ADDD�͑S�̂��ǂݕ��̑̍قŕ҂܂�Ă��邽�߁A�p�^�[���J�^���O���ǂݕ�����Ɨ����Ă�����́i�w�f�U�C���p�^�[���x�wJ2EE�p�^�[���x�w�G���^�[�v���C�Y�A�v���P�[�V�����A�[�L�e�N�`���p�^�[���x�Ȃǁj�ɔ�ׁA�p�^�[���̉{�����͗ǂ�����܂���B�{�A�ڂł́A���łɈ�x�ǔj���ꂽ���ɂ��L�p�Ȏ����ƂȂ�悤�ɁA�p�^�[���J�^���O�Ƃ���DDD���č\�����Ă݂܂��B
�܂��́ADDD�Ƃ͉����A����n�߂܂��傤�B���������u�h���C���v�Ƃ́A�A�v���P�[�V�������ΏۂƂ���Ɩ��̈�̂��Ƃł��B�{���ł́A�h���C�����u�m���A�e���́A�����̈�̈�v�ƒ�`���Ă��܂��B�Ɩ��A�v���P�[�V�����ł́A�A�v���P�[�V�������v���[���e�[�V�����w�A�h���C���w�A�f�[�^�\�[�X�w��3�w�ɕ�����A�[�L�e�N�`�����嗬�ł����A���̃h���C���w�����[�U�̋Ɩ��ɒ��ړI�Ɋւ�镔���ɂȂ�킯�ł��B���������āA�h���C���w�𐳂����\�z�ł��邩�ǂ������A���̂܂܃A�v���P�[�V�����̐��ۂɉe�����܂��B
DDD�́A�I�u�W�F�N�g�w���R�~���j�e�B�̊ԂŒ��N�|���Ă����h���C�����f�����O�̃m�E�n�E��x�X�g�v���N�e�B�X���W�听�����A1���v�v�z�^�N�w�ł��B�h���C�����f�������ꂩ��\�z���悤�Ƃ���l�ɁA�v��̔��f���������߂̘g�g�݂ƁA�h���C���v�ɂ��ċc�_���邽�߂̃{�L���u�����������̂ł��BTDD�iTest-Driven Development�A�e�X�g�쓮�J���j��FDD�iFeature-Driven Development�A���[�U�@�\�쓮�J���j�ƈꌩ���O�͎��Ă��܂����ADDD�͂Ȃɂ��V�����J���v���Z�X�������̂ł͂Ȃ����Ƃɒ��ӂ��Ă��������B�������ADDD�͊�{�I�ɃA�W���C���ȊJ���v���Z�X��O��ɂ��Ă��܂��B
DDD�Ƃ͂ǂ�Ȑv�v�z�����Ȍ��ɐ�������ƁA�h���C�����f�����\�t�g�E�F�A�J���̒��S�ɂ����A�R�[�h��R�~���j�P�[�V��������Ƀh���C�����f���ƈ�̉������Ȃ���A�h���C�����f�����I�ɐ[�������邱�Ƃł�艿�l�̍����A�v���P�[�V�����ݏo���Ă������Ƃ���l�����ł��B�h���C�����f�������ׂĂ̒��S�ɒu���̂ŁA�u�h���C���쓮�v�Ƃ����킯�ł��B
DDD�̗v�_�́A����3�_�ɂ܂Ƃ߂��܂��B
DDD�ł́A1��̊J���Ŋ����ȃh���C�����f����v�ł���Ƃ͍l���܂���B�D�ꂽ���f���́A���x���A�v���P�[�V�����̃����[�X���J��Ԃ����ł悤�₭��������̂ƍl���܂��B���������h���C�����f���T���̉ߒ��ł́A���R�h���C���m�������������ƂƂ̑Θb���s���ł��B�J���҂Ɛ��Ƃ̊ԂŌ���̂Ȃ��R�~���j�P�[�V�������s�Ȃ��ɂ́A�h���C�����f������Ƃ������ł��錾�t�ō\�z����K�v������܂��B����ɁA�h���C�����f���̐[�����A�v���P�[�V�����ɐ��������f�����ɂ́A�����R�[�h���h���C�����f���ƑΉ��t�����Ă��Ȃ���Ȃ�܂���B�t�ɁA���f�����������Ă����ߒ��ŁA�V���ȃh���C���m�������邱�Ƃ�����ł��傤�B�h���C�����f���Ǝ����R�[�h�ɂ́A�o�����̊֘A�t�����K�v�ƂȂ�܂��B
DDD�́A��L�̃m�E�n�E���p�^�[���̌`���ő̌n�����Ă��܂��B���Ѓ^�C�g���Ɂu�` Patterns�v�uPatterns of �`�v�ȂǂƓ����Ă��Ȃ����ߋC�t���ɂ����̂ł����ADDD�͂�����Ƃ����p�^�[���{��1�ł��B
DDD�p�^�[���́AAlexander�`�����̗p���Ă��܂��BAlexander�`���Ƃ́A�p�^�[������̐��݂̐e�ł��錚�z�Ƃ�Christopher Alexander�����A���z�̃p�^�[�����L�q����̂ɗp�����`���ł��B�ŏ��Ɏʐ^��C���X�g�Ȃǂ́u�C���[�W�v���f�ڂ���A�u�����v�u���̋L�q�v�A�ԂɁuTherefore�i�䂦�Ɂj�v�Ƃ������t������Łu�����@�̋L�q�v�u���ʁ^������̍l���^��v�A�Ō�Ɂu���̕����v�Ƃ����\���ɂȂ��Ă��܂��B�������A�L����GoF�̃f�U�C���p�^�[���Ƃ͈Ⴂ�e���ڂ��͂�����Ɛ߂ɕ�����Ă��炸�A�p�^�[���̂��Ƃ��ӎ������ɂ��̂܂ܓǂݕ��Ƃ��ēǂ߂�̂������ł��B
DDD�Ɏ��^����Ă���p�^�[���́A�S����40����܂��B�A���`�p�^�[�����܂߂�ƁA41�p�^�[���ɂȂ�܂��B
�p�^�[���� | �Q�l�� |
---|---|
I. Putting the Domain Model to Work | |
Ubiquitous Language | ���r�L�^�X���� |
Model-Driven Design | ���f���쓮�v |
Hands-On Modeler | ���H�I���f���[ |
II. Building Blocks of a Model-Driven Design | |
Layered Architecture | �w��A�[�L�e�N�`�� |
Smart UI �i�A���`�p�^�[���j | ������UI |
Entities | �G���e�B�e�B |
Value Objects | �l�I�u�W�F�N�g |
Services | �T�[�r�X |
Modules | ���W���[�� |
Aggregates | �W�� |
Factories | �t�@�N�g�� |
Repositories | ���|�W�g�� |
III. Refactoring Toward Deeper Insight | |
Specification | �d�l |
Intention-Revealing Interfaces | �Ӑ}�̖����ȃC���^�t�F�[�X |
Side-Effect-Free Functions | ����p�̖����� |
Assertions | �\�� |
Conceptual Contours | �T�O�̗֊s |
Standalone Classes | �Ɨ������N���X�Q |
Closures of Operations | �������� |
IV. Strategic Design | |
Bounded Context | �R���e�L�X�g���E |
Continuous Integration | �p���I�ȓ��� |
Context Map | �R���e�L�X�g�}�b�v |
Shared Kernel | ���L�J�[�l�� |
Customer/Supplier Development Teams | �ڋq�^�����҂̊J���`�[�� |
Conformist | ������ |
Anticorruption Layer | ���s�h�~�w |
Separate Ways | �ʁX�̓� |
Open Host Service | ���J�z�X�g�T�[�r�X |
Published Language | ���\���ꂽ���� |
Core Domain | ���j�h���C�� |
Generic Subdomains | �ėp�T�u�h���C�� |
Domain Vision Statement | �h���C���r�W���������� |
Highlighted Core | ���j�̃n�C���C�g |
Cohesive Mechanisms | �ÏW���ꂽ���J�j�Y�� |
Segregated Core | ���j�̊u�� |
Abstract Core | ���j�̒��ۉ� |
Evolving Order | �i�����钁�� |
System Metaphor | �V�X�e���̃��^�t�@ |
Responsibility Layers | �Ӗ��̊K�w |
Knowledge Level | �m�����x�� |
Pluggable Component Framework | ���E�\�R���|�[�l���g�̃t���[�����[�N |
�{����4���\���ɂȂ��Ă���A����������DDD�p�^�[����4�̕��ނɕ�����܂��B
��I���̃p�^�[���́ADDD�̖ڕW�����������̂ł��B��II���ł́A�h���C�����f�����O�̊�b�I�ȃx�X�g�v���N�e�B�X���p�^�[���ɂ܂Ƃ߂Ă��܂��B��III���́A�h���C�����f��������ɐ[�߂Ă������߂̂����H�I�ȃp�^�[����������܂��B�Ō�̑�IV���ł́A1�A�v���P�[�V�����͈̔͂��āA���̃V�X�e���Ƃ̘A�g���K�v�ȃA�v���P�[�V������A�����̃h���C�����W����傫�ȃv���W�F�N�g��DDD�����H���邽�߂̃p�^�[����������܂��B
DDD���P��A�v���P�[�V�������̃h���C�����f���̍����ɂ��Ă�������Ă�����̂��ƍl���Ă��܂��̂́ADDD�̈�ʂ��������������Ȃ����ƂɂȂ�܂��B�{���̑傫�ȕ������߂��IV���uStrategic Design�v�́A1�A�v���P�[�V�����̃��x�����āA�o�c�헪�I�istrategic�j�Ȏ��_��K�v�Ƃ���V�X�e���J���̕����DDD�����H������@����Ă��邩��ł��B
SOA�͂��܁A�o�Y���[�h�ƌ�����قǂɒ��ڂ��W�߂Ă��܂��BJBI�iJava Business Integration�j�ASCA�iService Component Architecture�j�Ƃ�����SOA�̋Z�p�W���͂��łɏo�����Ă��āA�W���ɏ�������ESB�^BPM���i���[�����Ă��܂��B�������ASOA��{���ɐ���������ɂ́A�P�ɂ��������Z�p�ɏK�n���邾���ł̓_���ŁASOA�𐳂����\�z����J�����@�_���K�v�ɂȂ�͂��ł��B�c�O�Ȃ���A�s��ɂ�����Z�p�W����c�[���̏[���Ƃ͑ΏƓI�ɁA�����������p�ł���SOA�J�����@�_�͂܂��܂����n���Ă��Ȃ��̂�����ł��B
DDD��������u�헪�I�f�U�C���v��SOA�ɓ����������̂ł͂���܂��A�����������ܕK�v�Ƃ��Ă���SOA�̕��@�_�ɑ傢�Ɏ�����^���Ă������e�ɂȂ��Ă��܂��B
�Ō�ɁA�h���C������������1�̃p�^�[���ł���w�A�i���V�X�p�^�[���x�iMartin Fowler���j�Ƃ̊W�ɂ��Ă��G��Ă����܂��傤�B
�A�i���V�X�p�^�[���Ƃ́A���́ianalysis�j�̃p�^�[���ł��B�f�U�C���p�^�[�����I�u�W�F�N�g�w���v�̒��ŌJ��Ԃ������\�����p�^�[�����������̂ł���悤�ɁA�A�i���V�X�p�^�[���̓h���C�����͂̒��ŌJ��Ԃ������\�����p�^�[�����������̂ł��B�u�ʁv�u����v�u�v��v�u�|�[�g�t�H���I�v�u�敨����v�ȂǁA�ė��p�\�ȃh���C�����f�����p�^�[���Ƃ��Ă܂Ƃ߂��Ă��܂��B
�A�i���V�X�p�^�[����DDD�̈Ⴂ�́A�A�i���V�X�p�^�[�����u�h���C�����f���v�̃p�^�[���ł���̂ɑ��ADDD�́u�h���C�����f�����O�v�̃p�^�[���ł���Ƃ������Ƃł��B�A�i���V�X�p�^�[���̓h���C�����f���̋�̗�������̂ł���ADDD�͂ǂ�����ăh���C�����f�����\�z����悢���������Ă������̂ł��B
DDD�ɂƂ��ẮA�A�i���V�X�p�^�[���̃��f���̓h���C�����f���T���̍ŏ��̏o���_�Ƃ��ė��p������A���łɍ\�z���ꂽ�h���C�����f�������ǂ��邽�߂̃q���g�Ƃ��ė��p������ł�����̂ł��BDDD�̑�11�́uApplying Analysis Patterns�v�ł́A���ۂɁu�ɊǗ��Ɖ�v�v�Ɋւ��邢�����̃A�i���V�X�p�^�[�����g���āA�h���C�����f������������Ă����ߒ�����������Ă��܂��B
�O�u���������Ȃ��Ă��܂��܂������A��������̐S�̃p�^�[���J�^���O�Ɉڂ�܂��BDDD�Ɏ��^���ꂽ�p�^�[����1��1�Љ�Ă����܂��傤�B����́A��I���uPutting the Domain Model to Work�v�ɂ���p�^�[�������グ�܂��B
��I���ł́ADDD���ڎw���ׂ��ŏI�I�ȖڕW�m�ɂ��܂��B�h���C�����f�����L�@�I�ɋ@�\���A�J���v���W�F�N�g���쓮����G���W���ɂȂ�Ƃ͂ǂ��������ƂȂ̂����A�p�^�[���ɂ���Ď����܂��B�o�ꂷ��3�̃p�^�[���u���r�L�^�X�����v�u���f���쓮�v�v�u���H�I���f���[�v�́ADDD�̊�{3�����Ƃł������ׂ����̂ł��B
�h���C���𐳂����������_��ʼn��l�̍����\�t�g�E�F�A��v����ɂ́A�`�[���̋��ʌ����n�����Ȃ���Ȃ�Ȃ��B���ʌ���̓��[�U�A�h���C���̐��Ƃ���A�v�ҁA�v���O���}�܂ŁA���́^�v���f������v���O�����R�[�h�Ɏ���܂ŁA�v���W�F�N�g�̂��ׂĂ̊W�ҁA���ʕ��ɍs���n���Ă��āA�����Ӗ��ŗ��������悤�ȃ��r�L�^�X�i�ՍݓI�j�Ȍ���ł���B�h���C�����f�������r�L�^�X����ƂȂ�悤�ɂ��A�h���C�����f������ăv���W�F�N�g����̂ƂȂ�悤�ɂ���B
���r�L�^�X��������������ɂ́A�v���O�����R�[�h�ɂ����Ă��h���C�����f�������m�ɕ\������Ă��Ȃ���Ȃ�Ȃ��B�h���C�����f���ƃv���O�����R�[�h�Ƃ���ɂ��݂��f����悤�ɕۂ��ƂŁA�h���C�����f���̕ύX�����̂܂܃R�[�h�̏C���𑣂��A�t�ɃR�[�f�B���O�̒��œ���ꂽ�V���ȃh���C���m���������Ƀh���C�����f���ɔ��f�����悤�ɂȂ�B���̂悤�Ƀ��f���ƃR�[�h���ٖ��Ɍ��т���̂����f���쓮�v�iMDD�j�ł���BMDD�����H����ɂ́A�J���c�[����I�u�W�F�N�g�w���v���O���~���O�iOOP�j�̂悤�ȃv���O���~���O�p���_�C�����K�v�ɂȂ�B
�������f���[���v���O�����������Ȃ�������A�v���O���}���h���C�����f���ɋ����������Ȃ�������AMDD�̗��_�ł��郂�f�����O�ƃv���O���~���O�̍D�z�͐��܂�Ȃ��B�܂��A�`�[���̃R�~���j�P�[�V�����������Œ���Ă��܂��BMDD��ʂ������r�L�^�X��������������ɂ́A���f���[�������v���O�����������Ȃ�������Ȃ����A�����Ƀv���O���}���h���C�����f���𗝉����A�C���ł��Ȃ���Ȃ�Ȃ��B�܂�A�`�[���̂��ׂĂ̊J���҂́A�v���O�������������f���[�łȂ���Ȃ�Ȃ��B
DDD��MDD�͈ꌩ�悭�����T�O�ŁADDD�̒��ł��ꂼ�ꂪ�ǂ̂悤�Ɉʒu�t�����Ă���̂�������ɂ����Ƃ��낪����܂��B���҂̈Ⴂ�ɂ��ẮA����Eric Evans���uDomain-Driven / Model-Driven�v�Ƃ����L���Ő������Ă��܂��B
���e���ȒP�ɉ������ƁADDD�Ƃ́u�h���C���v���ł��d�����A��������ׂĂ̒��S�ɒu�����@�ł��BMDD�́u���f���v�����ɍs�Ȃ��v�Z�@���w���܂��B�h���C���̕��G���𗝉����A�\�t�g�E�F�A�ɔ��f������ł��ǂ����@�̓��f�����g�����Ƃł���i��DDD�͉��肷��j���߂ɁADDD�͂��̎������@�̒��S��MDD���̗p���܂��B����ŁAMDD�͕K�������h���C���������K�p�͈͂ł͂���܂���BUI��A�v���P�[�V�����t���[�����[�N�ȂǁA�����ɋZ�p�I�Ȃ��̂ɂ��K�p�ł��܂��BMDD��DDD�ɂƂ��ĕK�{�ł͂Ȃ����A�������R�Ȕ����Ƃ����W�ɂȂ�܂��B
����1�ADDD�ƃI�u�W�F�N�g�w���iOO�j�Ƃ̊W�ɂ��Ă��G��Ă����܂��B�u�h���C�����f�����O �� OO�v�Ǝv�������ł����ADDD���͕̂K������OO��O��Ƃ������̂ł͂���܂���B���������I�ɂ́AMDD�������ł���ŗǂ̃v���O���~���O�p���_�C����OOP�ł��邽�߂ɁAOO���ϋɓI�Ɏg���Ă���Ƃ������Ƃł��B���^�v���O���~���O��MDD�������ł���̂ł���A����ł��\��Ȃ��킯�ł��i���^���L���ȃh���C���͌����Ă���Ƃ͎v���܂����E�E�E�j�B
���l�ɁADDD�ł̓��f�����O�̋L�@��UML���g�����Ƃ��K�{�ł͂���܂���BDDD�ł́AUML�Ɏ����邱�ƂȂ��A�h���C�������ǂ������ł���L�@������A�����ϋɓI�ɍ̗p���邱�Ƃ𐄏����Ă��܂��B
����́A�{���̑�II���uBuilding Blocks of a Model-Driven Design�v�Ƒ�III���uRefactoring Toward Deeper Insight�v����A16�̃p�^�[�����Љ�܂��B����16�p�^�[�����ADDD�̒��S���\�����镔���ł��B�h���C�����f�����O�̃m�E�n�E�Ɛv�w�j�Ƃ��A����{�i�I�ɓW�J����Ă����܂��B���y���݂ɁB
|
© 2007 OGIS-RI Co., Ltd. |
|