�I�[�v���\�[�X�̃I�u�W�F�N�g�w���v���O���~���O����uRuby�v�̕��@���ꂩ��w�Ԃ��߂̓���A�ځB�ŐV�ł�2.1�ɑΉ����Ă��܂��B����́ARuby�́u�����p�v�Ƃ����郁�^�v���O���~���O�̊T�v�Aself�A���ك��\�b�h�A���كN���X�A�I�[�v���N���X�A�����L�[�p�b�`�Ȃǂ̎g�������R�[�h��������ĉ�����܂��B
�{�A�ڂ�Ruby 2.1�v���O���~���O�̓���A�ڂł��BRuby on Rails�ɂ��Ċw�т������͘A�ځu�J������ł����Ǝg����Rails 4�����v���������������B
�@�A�ڑ�10��́uRuby��File�^IO�N���X�œ��͂Əo�́A�t�@�C���̓ǂݎ��Ə������݁A�t�B���^�[�쐬�v�A��11��̑O��uRuby��Thread�AFiber�AKernel�Afork�ŕ�����v���Z�X�̐[�����v�ł́A�f�[�^�̓��o�͂�X���b�h�A�t�@�C�o�[�A�v���Z�X�Ƃ������g�s�b�N�ɂ��ĉ�����܂����B�����̒m�������p���邱�Ƃɂ��A�f�[�^�̓��o�͂����݂ɃR���g���[��������A�����̃^�X�N���X���b�h��v���Z�X�Ƃ������P�ʂŕ����������s�����肷�邱�Ƃ��ł��܂��B
�@�A�ڑ�12��̍���́ARuby��Ruby���炵�߂�A�u���^�v���O���~���O�v�Ƃ����T�O�ɂ��ĉ�����܂��B���ݓ������b�ɂȂ�̂ŏ��������������܂���B�ł����A���^�v���O���~���O�Ƃ͂ǂ��������̂���m���Ă������Ƃ́A���S�҂���X�e�b�v�A�b�v���邽�߂ɂ͔����Ēʂ�Ȃ����ł��B
�@���^�v���O���~���O�ɂ́A���܂��܂ȃp�^�[��������܂��B���^�v���O���~���O�Ƃ�����ނň���̖{�ɂȂ��Ă��܂��قǂł��B�����ł́A�����郁�^�v���O���~���O�̃p�^�[���𗝉����邽�߂̓y��ƂȂ�Aself����كN���X�A���ك��\�b�h�Ƃ������g�s�b�N�ɂ��ĉ�����܂��B�����čŌ�ɁA�������̊ȒP�ȃ��^�v���O���~���O�̃p�^�[�����Љ�܂��B
�@���������A���^�v���O���~���O�Ƃ͉��ł��傤���H C#��Java�Ƃ�����������w���͂��܂�Ȃ��݂��Ȃ���������܂���B�܂��AC++���w���́A�e���v���[�g�𗘗p�������^�v���O���~���O���������̕�������Ǝv���܂��B
�@�f���Q�[���A����Ȃǂ̍�i�ŁA�쒆�̓o��l���ł͂Ȃ������҂Ɍ�肩���Ă���悤�ȃZ���t���u���^�����v�Ȃǂƌ����܂��B���̂悤�ɁA�u���^�v�Ƃ������t�ɂ́A����ʂ̑��݂⒊�ۊT�O�Ƃ������Ӗ�������܂��B
�@�u���^�v���O�����v�Ƃ́A�傴���ςɌ����Ɓu�R�[�h������R�[�h�v�̂��Ƃ��w���܂��B���������ڍׂɌ����ƁA�u��蒊�ۓI�ȋL�@���g���ăR�[�h���������Ƃɂ��A���I�ɃR�[�h������R�[�h�v�ł��B�����āA���^�v���O���~���O�̓��^�v���O�������������Ƃ������܂��B���^�v���O�����ł́A�ǂ̂悤�ȃR�[�h�����s����邩�͎��s���Ɍ��܂�܂��B
�@���t�ł͕�����ɂ����̂ŁA�ȒP�ȃR�[�h����g���Đ������܂��B
method_name = ARGV[0] define_method method_name do puts "This method is named #{method_name}." end alice
$ ruby meta_programming_01.rb alice This method is named alice. $ ruby meta_programming_01.rb white_rabbit meta_programming_01.rb:7:in �u<main>': undefined local variable or method �ualice' for main:Object (NameError)
�@�ł́A�R�[�h���m�F���Ă����܂��傤�B
�@�܂�1�s�ڂŁA�uARGV�v���g���āA�R�}���h���C�������ɗ^����ꂽ1�Ԗڂ̕�������A�umethod_name�v�Ƃ����ϐ��Ɋi�[���Ă��܂��B
�@3�`5�s�ڂł́A�udefine_method�v�Ƃ���������Ȃ����\�b�h���o�ꂵ�Ă��܂��B�udefine_method�v�́A���̖��̒ʂ�A�u���\�b�h���`���邽�߂̃��\�b�h�v�ł��B�uhoge�v�Ƃ������\�b�h���`����Ƃ��́A�udef hoge�`end�v�Ƃ����悤�ȋL�@�̃��^�łł��B
�@�udefine_method�v�̈����ɂ́A��`���������\�b�h��\���������V���{����n���܂��B�����āA�u���b�N�̒��ɒ�`�������\�b�h�ōs�������������L�q���܂��B3�`5�s�ڂŁA�R�}���h���C�������ɗ^����ꂽ���O�̃��\�b�h���`���A4�s�ڂ́uputs�v�ŁA���̃��\�b�h�����g�������b�Z�[�W���o�͂��Ă��܂��B
�@6�s�ڂł́ualice�v�Ƃ������\�b�h��P���ɌĂяo���Ă��܂��B
�@���s���1�s�ڂł́A�R�}���h���C�������Ɂualice�v�Ƃ����������^���Ă���̂ŁA������ƃ��b�Z�[�W���o�͂���Ă��܂��B3�s�ڂ̎��s��ł́uwhite_rabbit�v�Ƃ����������^���Ă��邽�߁A�uundefined local variable or method�v�A�܂�uwhite_rabbit�Ƃ������[�J���ϐ��܂��̓��\�b�h����`����Ă��Ȃ��v�Ƃ����G���[���o�Ă��܂��B
�@�����ŁA3�s�ڂ́udefine_method�v�Œ�`����郁�\�b�h���́A���s���܂ŕ�����Ȃ����Ƃɒ��ڂ��Ă��������B�Ȃ��Ȃ�A�ǂ̂悤�ȕ����R�}���h���C�������ɂ���ė^�����邩�́A���s�����u�Ԃ܂ŕ�����Ȃ�����ł��B
�@�udefine_method�v�𗘗p�����ꍇ�A�ʏ�́udef�v�ɂ�郁�\�b�h�̒�`�����A���ƂȂ�����������邩�Ǝv���܂��B����͓��R�̊��o�ŁA��蒊�ۓI�ȏ����������Ă���̂œ��������̂ł��B���w�Z�ŏK���悤�ȑ����Z������Z�́A�u�E��ɂ��1�A����ɂ��2�A���킹��3�v�̂悤�ɋ�̓I�ɑz���ł���̂ŊȒP�ł����A��w�Ŋw�Ԃ悤�Ȕ����ϕ��Ȃǂ̉�͊w�⌗�_�Ƃ��������w�͔��ɒ��ۓI�œ���̂Ɠ������R�ł��B
�@���̒��ۓx����A���^�v���O���~���O�𗐗p����ƁA�����܂��N���ǂ݉����Ȃ��i1�T�Ԍ�̎����ł���I�j�X�p�Q�b�e�B�R�[�h���o���オ���Ă��܂��܂��B���ʁA���ۓI�ł��邪�̂ɁA�����悤�ȃR�[�h�𒊏ۓI�ɃX�b�L���܂Ƃ߂ď�����A�����̃N���X�����݂Ɋg���ł���Ȃǂ̑傫�ȃ����b�g������܂��B
�@���ۂɁA�uRuby on Rails�v�uRSpec�v�Ƃ��������C�u�����ł́A���^�v���O���~���O�ɂ�鍕���p�����ʓI�ɗ��p���Ă��܂��B
�@Ruby�ł̓J�W���A���Ƀ��^�ȃR�[�h���������Ƃ��ł��܂����A�u�{���ɁA����̓��^�ɏ����ׂ����H�v�Ƃ����������ɑӂ�Ȃ��悤�ɂ��܂��傤�B
Copyright © ITmedia, Inc. All Rights Reserved.