��������́I Ruby�̃��^�v���O���~���O�Aself�A���كN���X�^���\�b�h�A�I�[�v���N���X�ƃ����L�[�p�b�`�F���G���W�j�A�^���S�҂̂��߂�Ruby 2.1����i12�j�i2/4 �y�[�W�j

» 2015�N01��06�� 20��15�� ���J
[���F���c�D�^�A�ďC�F�R�����i�C������ЃA�W���C���E�F�A]

�N���X���̂Ƀ��\�b�h���`����uself�v�u���ك��\�b�h�v�u���كN���X�v

�@�����̃I�u�W�F�N�g�w���v���O���~���O����ł́A�uKlass�v�N���X�ɑ΂��āA�uKlass.hoge�v�Ƃ����`�Ń��\�b�h���Ăяo����悤�Ȏd�g�݂�������Ă��܂��B����ɂ�薼�O�͈Ⴂ�܂����A��ʓI�Ɂu�N���X���\�b�h�v�ƌ����ꍇ�������悤�ł��B

�@�������ARuby�ł����l�̂��Ƃ��ł��܂��B��{�I�ȋ@�\�̂悤�Ɏv���܂����A���̂Ƃ���ARuby�̃��^�v���O���~���O�𗝉������ő�؂ȁA�uself�v�u���ك��\�b�h�v�u���كN���X�v�Ƃ������T�O���o�ꂷ��A���̐[�����E�Ȃ̂ł��B�����ł́A�����̊T�O�ɂ‚��Đ������܂��B

�u���݂̃I�u�W�F�N�g�v��\��self

  • pry��self�������悤

�@Ruby�ŃR�[�h�������Ă���ƁA�����ɂ͂��‚��uself�v�����݂��܂��B�Ƃ͂����A���i������ӎ����邱�Ƃ͂��܂�Ȃ��ł��傤�B�uself�v��Ruby�ɑg�ݍ��܂�Ă���ǂݎ���p�̕ϐ��ł��B�C���X�^���X�ϐ��ɃA�N�Z�X����ꍇ��A���\�b�h���Ăяo���ꍇ�ɂ͂��́uself�v���d�v�Ȍ��ƂȂ�܂��B

�@�ł́Apry���g���āA�g�߂ɑ��݂���uself�v�������Ă݂܂��傤�B

[1] pry(main)> self
=> main
[2] pry(main)> self.class
=> Object

�@Ruby�̃C���^�v���^�[���J������Ԃ��u�g�b�v���x���v�ƌĂсA�g�b�v���x���ł́uself�v�A���Ȃ킿���݂̃I�u�W�F�N�g�́umain�v�ł��邱�Ƃ�[1]���番����܂��B[2]�ł́A���́umain�v�̃N���X���uclass�v���\�b�h���g���Ē��ׂĂ���A�uObject�v�N���X�ł��邱�Ƃ�������܂��B�‚܂�A�g�b�v���x���ł́A�uself�v�́uObject�v�N���X�̃I�u�W�F�N�g�ł���A�Ƃ������Ƃł��B

  • self���ώ@����

�@�ł́A�ȒP�ȃN���X�̗���g���āA�uself�v�ɉ��������Ă���̂����ώ@���܂��傤�Bmeta_programming_02.rb�ɃR�[�h�������܂��B

puts "====================="
p self
p self.class
puts "====================="
 
class Rabbit
  puts "====================="
  p self
  p self.class
  puts "====================="
 
  def jump
    puts "====================="
    p self
    p self.class
    puts "pyon pyon"
    puts "====================="
  end
end
 
Rabbit.new.jump
meta_programming_02.rb

$ ruby meta_programming_02.rb 
=====================
main
Object
=====================
=====================
Rabbit
Class
=====================
=====================
#<Rabbit:0x007fc43b0daf78>
Rabbit
pyon pyon
=====================

�@�R�[�h��1�`4�s�ڂ́A�g�b�v���x���ł́uself�v�����ł��邩�������Ă��܂��B�o�͎͂��s���2�`5�s�ڂ��Ή����Ă��܂��Bpry�Ŋm���߂����Ɠ��l�ɁA�g�b�v���x���ł́uself�v�́umain�v�Ƃ������O�̃I�u�W�F�N�g��Ԃ��A���̃N���X�́uObject�v�ł��B

�@�R�[�h��7�`10�s�ڂ́A�N���X�̒�`�̒��ł́uself�v�����ł��邩�������Ă��܂��B�o�͎͂��s���6�`9�s�ڂ��Ή����Ă��܂��B�N���X��`�̒��ł́A�uself�v��Rabbit�N���X���̂��́iRuby�ł̓N���X���̂��̂��A�uClass�v�N���X�̃I�u�W�F�N�g�ł��邱�Ƃ��v���o���Ă��������I�j�ł��B

�@�R�[�h��13�`17�s�ڂ́A���\�b�h�̒�`�̒��ł́uself�v�����ł��邩�������Ă��܂��B�o�͎͂��s���10�`14�s�ڂ��Ή����Ă��܂��B���\�b�h��`�̒��ł́A�uself�v��Rabbit�N���X�̃I�u�W�F�N�g�ł��邱�Ƃ�������܂��B

�@���̂悤�ɁA�uself�v�̒��g�́A�R�[�h�̏ꏊ�ɂ���ĕς�邱�Ƃ�������܂��B

  • �ÖٓI��self

�@�����܂ł̗�ŁA�uself�v�͊m���ɂ����ɂ����āA�R�[�h�̏ꏊ�ɂ���ĕς�邱�Ƃ��m�F���܂����B�ł́A�uself�v�͂ǂ��Ŗ��ɗ��‚̂ł��傤���H �����́A���\�b�h��C���X�^���X�ϐ��փA�N�Z�X�̂Ƃ��ɖ𗧂��܂��B���̗��meta_programming_03.rb��meta_programming_04.rb�Ɏ����܂��傤�B

class Rabbit
  def initialize
    @roar = "boo"
  end
 
  def _speak
    puts @roar
  end
 
  def speak
    _speak
  end
end
 
Rabbit.new.speak
meta_programming_03.rb
class Rabbit
  def initialize
    @roar = "boo"
  end
 
  def _speak
    puts @roar
  end
 
  def speak
    self._speak
  end
end
 
Rabbit.new.speak
meta_programming_04.rb
$ ruby meta_programming_03.rb 
boo
meta_programming_03�i04�j.rb�̎��s��

�@�����̃R�[�h�ł́A�uRabbit�v�N���X���`���āA�R���X�g���N�^�[�ŃC���X�^���X�ϐ��u@roar�v�ɁA������boo��ݒ肵�Ă��܂��B�܂��A�u_speak�v����сuspeak�v���\�b�h���`���Ă���A�uspeak�v�́u_speak�v���Ăяo�����Ƃɂ���āA�C���X�^���X�ϐ��u@roar�v�̓��e���o�͂��Ă��܂��B

�@meta_programming_03.rb��meta_programming_04.rb�̈Ⴂ�́A11�s�ڂ́u_speak�v�̌Ăяo�������ł��B����܂ŁAmeta_programming_03.rb�̂悤�ȋL�@�𗘗p���Ă��܂������A�����meta_programming_04.rb�̂悤�ɁA�����I�Ɂuself�v���w�肷�邱�ƂŌĂяo�����Ƃ��ł��܂��B

�@Ruby�ł́A�u�o���V�[�o�[�i���\�b�h���Ăяo���Ώۂ̃I�u�W�F�N�g�j�p.�o���\�b�h�p�v�Ƃ����`�Ń��\�b�h���Ăяo�����Ƃ���{�ł��B����I�u�W�F�N�g�uobj�v�̃��\�b�h�uhoge�v���Ăяo���ꍇ�́A�uobj.hoge�v�ƂȂ�܂��B

�@���V�[�o�[���ȗ������ꍇ�imeta_programming_03.rb��11�s�ځj�́A���V�[�o�[�Ƃ��ĈÖٓI�Ɂuself�v���g���邽�߁A�����ɁuRabbit�v�N���X�́u_speak�v���\�b�h���Ăяo����Ă��܂��B�܂��A7�s�ڂ̂悤�ɃC���X�^���X�ϐ��ɃA�N�Z�X����ꍇ�́A�uself�v�̃C���X�^���X�ϐ����T������ĕԂ���܂��B

Copyright © ITmedia, Inc. All Rights Reserved.

'; if( !this.isSubscription ) { this.insertTarget = document.querySelector('#cmsBody .subscription') || document.querySelector('#cmsBody .inner'); } }; BodyAdIMSWithCCE.prototype = Object.create(BodyAdContent.prototype); BodyAdIMSWithCCE.prototype.activate = function () { refreshGam('InArtSpecialLink'); } // global reference window.itm = itm; //entry point BodyAdEventBase.polyfill(); const bodyAdManager = BodyAdManager.getInstance(); bodyAdManager.addEventListener(BodyAdManager.EVENTS.READY, function (ev) { bodyAdManager.loadAdvertise(); }); bodyAdManager.init(); })();
�X�|���T�[����̂��m�点PR

���ڂ̃e�[�}

4AI by IT - AIAAA
Microsoft  WindowsőO2025
AI for GWjAO
[R[h^m[R[h Zg by IT - ITGWjArWlX̒SŊ􂷂gD
Cloud Native Central by IT - XP[uȔ\͂gD
�V�X�e���J���m�E�n�E �y�����i�r�zPR
���Ȃ��ɂ������߂̋L��PR

RSS�ɂ‚���

�A�C�e�B���f�B�AID�ɂ‚���

���[���}�K�W���o�^

��IT�̃��[���}�K�W���́A �������A���ׂĖ����ł��B���Ѓ��[���}�K�W�������w�ǂ��������B