Powered by SmartDoc

WiiFlash���g�����Ȃ��Ă݂悤(Processing��)

2009�N3��7����
�ؑ� �G�h
http://akihiko.shirai.as/projects/BookWii/

�ڎ�

���̏͂ł͖ؑ��G�h����̂����͂ɂ��AWiiFlash��Flash��ActionScript�‹��ł͂Ȃ��AProcessing���g���ė��p������@��������Ă��Ă����܂��B

Processing����WiiRemote�ɂ‚Ȃ�

Processing�́A�}�T�`���[�Z�b�c�H�ȑ�w��Ben Fry��Casey Reas�ɂ���ĊJ�����ꂽ�t���[�̃v���O�����J���‹��ł��B�f�������o���A�C���^���N�e�B�u�ȍ�i�����Ƃ������p�r�Ɍ����Ă���A�A�[�e�B�X�g��f�U�C�i�[�ł��g���₷���悤�ɍ���Ă��܂��B

Processing�̃z�[���y�[�W

�yProcessing�zhttp://processing.org/

�x�[�X��Java����Ȃ̂ŁALinux�CMac OS X�CWindows�Ƒ��l�Ȋ‹��œ��삵�܂��BJava�ŊJ���Ƃ����ƁAJDK���C���X�g�[��������A�R�}���h���C�����g���������������Ƃ��������Ƃ��K�v�ł͂Ǝv���Ă��܂���������܂��񂪁AProcessing�͂����̕~���������邽�߂̍H�v���Ȃ���Ă��܂��B���̂��߁AJava�͂��Ƃ��A���܂Ńv���O���~���O������g�������Ƃ������Ƃ������ɂ������Ă��܂��B

�܂��A�v���O�����ɂ‚��Ă��u�X�P�b�`�v�Ƃ����Ăѕ���p���C�T�b�Ə����Ă����Ɏ��s�ł���_���������Ă��܂��BJava����̓���ɂ��肪���Ȃ��܂��Ȃ��I�ȃv���O�����͕s�v�ŁA�����Ȃ��ړI�ƂȂ镔�����珑���n�߂邱�Ƃ��ł��܂��B���̂�����́AJava�Ƃ�������Perl��Python�Ȃǂ̌y�ʌ���̃C���[�W�ł��B

���̂悤�ɊȒP�Ɏg����Processing�ł����A��@�\���Ƃ����Ƃ����������͂���܂���B�J��������̓�����͂�A�l�b�g���[�N�Ƃ̒ʐM�AOpenGL���g����3D�v���O���~���O�ȂǁA��������̋@�\�����C�u�����ɂ���ăT�|�[�g����Ă��܂��BWiiRemote����O�ł͂���܂���BProcessing����WiiRemote���������߂̃��C�u�����Ƃ��āAWrj4P5�Ƃ������C�u�������p�ӂ���Ă��܂��B

�yWrj4P5�zhttp://sourceforge.jp/projects/wrj4p5/wiki/FrontPage

���������̃��C�u�������g�����߂ɕK�v��Bluetooth�X�^�b�N�Ȃǂ����Ȃ���肳��Ă���A�K�������S�Ă̊‹��œ����Ƃ͌���܂���B����Windows�‹��ł͓����Ȃ����Ƃ������悤�ł��B

������WiiFlash�̓o��ł��B�O�͂ŏЉ��Ă���ʂ�AWiiFlash�͂��Ƃ���Flash����WiiRemote���������߂̃c�[���A���C�u�����ł����A���͑��̃v���O���~���O���ꂩ����g�����Ƃ��o���܂��B��x�d�g�݂����m���Ă��܂��΁AWiiFlash��WiiRemote�ɑ΂���ėp�I�ȃC���^�t�F�[�X�Ƃ��ċ@�\���܂��B

Processing����O�ł͂Ȃ��Anet���C�u�������g�����Ƃ�WiiFlash�o�R��WiiRemote���������Ƃ��ł���悤�ɂȂ�܂��B�M�҂̊��o�ł́AWiiFlash�̂ق���Wrj4P5���������̊‹��œ��삵�Ă���悤�Ȃ̂ŁAWiiFlash���g���΂�葽���̊‹���Processing����WiiRemote���������Ƃ��ł���̂ł͂Ȃ����Ǝv���܂��B

Processing����WiiFlash���g���ɂ�

Processing����WiiFlash���o�R����WiiRemote�ɂ‚Ȃ����߂ɕK�v�Ȋ‹��͈ȉ��̂Ƃ���ł��B

�����ł́AProcessing�̃Z�b�g�A�b�v���@�ƁAWiiRemote���������߂̕��@�ɂ‚��Đ������܂��BWiiFlash�ɂ‚��Ă͑O�͂��Q�l�ɃZ�b�g�A�b�v���Ă��������B�܂��AProcessing���̂��̂ɂ‚��Ă̏ڍׂȐ����ɂ‚��Ă��������܂��B

Processing�̃Z�b�g�A�b�v

Processing�̃Z�b�g�A�b�v�͂ƂĂ��ȒP�ł��BProcessing�̃T�C�g���爳�k�t�@�C�����_�E�����[�h���Ă��ĉ𓀂��邾���ł��B���ɃC���X�g�[�����g���ăC���X�g�[������Ȃǂ̍�Ƃ͕K�v����܂���B�_�E�����[�h�͈ȉ���URL����s�����Ƃ��ł��܂��Bhttp://processing.org/download/index.html

Processing����HP�ɂ�����_�E�����[�h�I��

��������A���g����OS�ɍ������t�@�C�����_�E�����[�h���Ă��������BWindows�ɂ‚��Ă͒��ӏ����ɂ�������Ă���Ƃ���A���ɗ��R��������΁uWithout Java�v�ł͂Ȃ��ق��������߂��܂��B

�Ȃ��A���M���_�ł̍ŐV�o�[�W������11��29�����J��1.0.1�ł��̂ŁA�Ȍ�̐����͂���1.0.1��ΏۂƂ��܂��B�F���񂪂��̕��͂�ǂ܂�Ă���Ƃ��̍ŐV�o�[�W�����͂��ł�1.0.1�ł͂Ȃ��Ȃ��Ă��邩������܂��񂪂��������������B

�_�E�����[�h�������k�t�@�C����W�J����ƁA�ȉ��̂悤�ȃt�@�C��������܂��B

Processing.exe�����s

���Ƃ�Processing.exe���N�����邾���ł��B�N�����̃X�v���b�V���E�B���h�E���\�����ꂽ��A�ȉ��̂悤�ȉ�ʂɂȂ�ΐ����ł��B

Processing�N������

Processing�̃T���v���𓮂���

�܂���WiiFlash���g��Ȃ��AProcessing���̂��̂̃T���v���𓮂����Ă݂܂��傤�B������Processing�ɕt�����Ă���Mouse1D�Ƃ����T���v���𓮂������Ƃɂ��܂��B���j���[����[File]��[Examples]��I������ƁA�ƂĂ������̃T���v���X�P�b�`���p�ӂ���Ă��邱�Ƃ�������܂��B���̒�����[Basics] - [Input] - [Mouse1D]��I�����܂��B����ƁA50�s������Ƃ̃X�P�b�`���J����܂��B

Mouse1D

���g�̗����͒u���Ă����āA�܂��͎��s���Ă݂܂��傤�B�����Run�{�^���������ƁA�X�P�b�`�����s����܂��B�����ȃE�B���h�E��2�‚̐����`�����ꂽ�ł��傤���B�}�E�X�J�[�\�������E�ɓ������ƁA����ɔ������ĐF��T�C�Y���ω����܂��B

Mouse1D���s�̗l�q

��ʂ肱�̃T���v�����ǂ̂悤�ȓ�������邩����������A�E�B���h�E��‚��ăX�P�b�`�̂ق��ɖڂ������Ă݂܂��BJava����₻��ɋ߂�������g�������Ƃ�������Ȃ�A���̃X�P�b�`��setup���\�b�h�Adraw���\�b�h�Aupdate���\�b�h��3�‚ō\������Ă��邱�Ƃ������邩�Ǝv���܂��B

setup���\�b�h�ł́A�E�B���h�E�T�C�Y�̐ݒ�Ȃǂ̏��������s���Ă��܂��Bdraw���\�b�h�ł́A�w�i��h��‚Ԃ��A�}�E�X�̈ʒu�ɉ�����2�‚̐����`��`���������s���Ă��܂��Bupdate���\�b�h�ł́A�����`�̐F����W�v�Z�Ɏg���p�����[�^���v�Z���Ă��܂��B

update���\�b�h���̏ڍׂȌv�Z�ɂ‚��Ă͓��ɗ������Ȃ��Ă������̂ł����A���̈�����mouseX�Ƃ����ϐ����w�肵�Ă���Ƃ���ɒ��ڂ��Ă��������BmouseX�Ƃ́A���O�̂Ƃ��茻�݂̃}�E�X�J�[�\����X���W�ł��B�J�[�\�����W��update���\�b�h�ɓn�����Ƃɂ���āAleftColor�ArightColor�Agx�Agy�Ƃ������ϐ��ɓK�؂Ȓl���ݒ肳��܂��B�����Ă����̒l���g���Đ����`���`����܂��B

���āA���̃T���v���ł̓}�E�X�J�[�\����X���W���g���Ă��܂����A�����WiiRemote���g���đ���ł��Ȃ����̂ł��傤���B��������́AWiiFlash���g���Ă��������������@�ɂ‚��Đ������܂��B

WiiFlash���g�����T���v���𓮂���

�T���v���X�P�b�`��Mouse1DWii���J���Ă݂Ă��������B����𓮂����ɂ́A�܂�WiiFlash���N������K�v������܂��B�O�͂��Q�l�ɁABluetooth��WiiRemote��F�������AWiiFlash���N�����Ă��������B������WiiFlash���N��������AProcessing��Run�{�^���������Ă��������B�\��������ʂ͂܂�����Mouse1D�ƕς��܂��񂪁AWiiRemote���Ђ˂�悤�ɉ�]������ƁA�}�E�X�J�[�\���𓮂������Ƃ��̂悤�ɉ�ʂ��ω����܂��B

����ł̓X�P�b�`�ɂ‚��ďڂ������Ă����܂��傤�B�X�P�b�`�ɂ́A�ȉ��̂悤��Mouse1DWii��Wiimote��2�‚̃^�u������܂��B

Wiimote�̂ق��ɂ‚��Ă͌�ŏڂ�����������̂ŁA�܂���Mouse1DWii�̂ق��ɒ��ڂ��Ă��������B

Mouse1DWii�́A���ƂȂ��Ă���Mouse1D�������������������̂ł��B�ȉ��̂悤��4�s�̒lj��A�ύX������܂��B

  // �O��
  float leftColor = 0.0;
  float rightColor = 0.0; 
  Wiimote wiimote; ..... (1) WiiRemote���g�����߂̕ϐ�
  void setup(){  
    size(200, 200);
    colorMode(RGB, 1.0);
    noStroke();
    wiimote = new Wiimote(this); ..... (2) ������
  }
  
  void draw() {
    wiimote.update(); ..... (3) WiiRemote����̓��͂���荞��
    background(0.0);
    update((int)((wiimote.x + 1) * width / 2)); ..... (4) �����x�Z���T�̒l���g��
  // �㗪

�܂��ŏ��ɁAWiiFlash�o�R��WiiRemote���g�����߁AWiimote�^��wiimote�Ƃ����ϐ����`���Ă��܂�(1)�Bsetup���\�b�h�ł́A���̕ϐ������������Ă��܂�(2)�B

draw���\�b�h�ł͂܂��AWiiRemote����̓��͂���荞�ނ��߂ɁAWiimote�N���X��update���\�b�h���Ăяo���܂�(3)�Bupdate���\�b�h�̏ڍׂɂ͂����ł͓��ݍ��݂܂��񂪁A����ɂ���Č��݂�WiiRemote�̉����x�Ȃǂ̃p�����[�^���g����悤�ɂȂ�܂��B�Ⴆ��WiiRemote�𐳖ʂɌ������Ƃ��ɂЂ˂�����iX�����j�̉����x�́Awiimote.x�Ƃ����ϐ��ɓ����Ă��܂��B

�Ō�͉����x��`�悷�鐳���`�̃T�C�Y�ɔ��f�����镔���ł�(4)�B����Mouse1D�ł́Aupdate���\�b�h�Ƀ}�E�X�J�[�\����X���W�imouseX�j��n���Ă��܂����BMouse1DWii�ł́A����ɂȂ炤�`��WiiRemote��X�����̉����x��ϊ����Aupdate���\�b�h�ɓn���Ă��܂��B

X�����̉����x��\��wiimote.x�́A���S�ɍ��ɌX�����Ƃ���-1�A�t�Ɋ��S�ɉE�ɌX�����Ƃ���1�Ƃ����l�ɂȂ�܂��B�������‚��Ă����肷��Ƃ��͈̔͂𒴂��܂����A��{�I�ɂ�-1����1�͈̔͂ƍl���Ė�肠��܂���B�X�P�b�`�ɏ������Ƃ���A1�𑫂��ĉ�ʕ��iwidth�j�������A2�Ŋ���΁A-1����1�͈̔͂�0�����ʕ��͈̔͂ɕϊ��ł��܂��B

Wiimote�̎g����

WiiRemote��Processing����g�����߂ɂ́AWiimote�N���X���g���܂��BWiimote�N���X�́A����WiiFlash�̎������Q�l�ɕM�҂��I���W�i���ō쐬�������̂ŁA����ɂ‚��Ă͖��ۏ؂Ƃ��܂��B����Wiimote���g�����߂̃X�e�b�v�͑傫��������3�‚ł��B

������

new��Wiimote�̃R���X�g���N�^���Ăяo���AWiimote�^�̃C���X�^���X�����܂��B���̂Ƃ��A�����ł�WiiFlash�Ƃ̐ڑ����s����̂ŁAWiiFlash���N�����Ă��Ȃ��Ƃ����ŃG���[���������A�ȍ~�̏��������܂������܂���B���̏����͊�{�I��1�x�����Ăׂ΂����̂ŁAsetup���\�b�h�̒��ŌĂяo���̂��悢�ł��傤�B

  Wiimote wiimote; // �ϐ��̐錾
  wiimote = new Wiimote(this); // setup���\�b�h���Ȃǂ�

�f�[�^�̎擾

Wiimote��update���\�b�h���Ăяo���AWiiRemote����AWiiFlash�o�R�Ńf�[�^���擾���܂��B���̏����͈�ʓI�ɂ�draw���\�b�h�̒��ň�x�����s���܂��B

  // draw���\�b�h���Ȃǂ�
  wiimote.update();

��xupdate���\�b�h���Ă�ł��玟��update���\�b�h���Ăяo�����܂ł́AWiiRemote�N���X���瓾����WiiRemote�̏�Ԃ͕ς��Ȃ��܂܂ł��B

�f�[�^�̗��p

Wiimote��x��y�Ȃǂ̃t�B�[���h���Q�Ƃ��邱�ƂŁA���݂�WiiRemote�̏�Ԃ�m�邱�Ƃ��ł��܂��B��ɗp������̂́A�e�����̉����x�ƁA�{�^���̏�Ԃł��傤�B

  // (100, 100)�̓_����WiiRemote�̌����ɉ����Đ�������
  line(100, 100, 100 + wiimote.x * 50, 100 + wiimote.y * 50);

Wiimote�N���X���g���ē�����f�[�^�͕\�̒ʂ�ł��B

Wiimote�N���X
�t�B�[���h�� �^ �Ӗ�
x�Cy�Cz float �e�������x�B-1�`+1�̒l���Ƃ�A1G�̎��ɒl��1�ƂȂ�B
one�Ctwo�Ca�Cb�Cplus�Cminus�Chome�Cup�Cdown�Cright�Cleft Button ���ꂼ��̃{�^���̏��
batteryLevel float �o�b�e���[�̎c��
extensionType int �g���R���g���[���̃^�C�v

�{�^���֘A�̃t�B�[���h�́AButton�N���X���g���ĕ\����Ă��܂��BButton�N���X�ɂ́Apressed��pushed��2�‚�boolean�ϐ�������܂��B

�����2�‚̕ϐ��^�C�v�����܂��g�������Ă��������B

�㉺�{�^����������Ă���ԃp�����[�^���㉺������
// �㉺�{�^����������Ă���ԃp�����[�^���㉺������
if (wiimote.up.pressed) {
   someparam++;
} else if (wiimote.down.pressed) {
   someparam--;
}
if (wiimote.a.pushed) {
   background(10); // A�{�^���������ꂽ���ʂ�����
}

�T���v���X�P�b�`��WiiRemote�Ή��ɂ���

WiiRemote�����p�����X�P�b�`���‚���ɂ������āA1����Processing�̃X�P�b�`��g��ł����WiiRemote�Ή��ɂ���ƁAWiimote���g���Ƃ����_����t�H�[�J�X������Ă��܂��܂��B�K���AProcessing�ɂ͑����̃T���v���X�P�b�`���Y�t����Ă��܂��̂ŁA�����̂��������‚���WiiRemote�Ή��ɂ��邱�Ƃʼn�����Ă����܂��B

�����ł́AFireCube�ADirectional�ALightsGL�ASineWaveSignal��4�‚̃X�P�b�`��WiiRemote�ɑΉ���������ɂ‚��ďЉ�܂��BWiiRemote�ɑΉ��������X�P�b�`�́A���̃T���v���X�P�b�`�Ƌ�ʂ��邽�߂ɁA���O�̍Ō��Wii��t���Ă��܂��B

FireCubeWii

FireCube�́A�����R���オ��悤�ȕ��G�ȃG�t�F�N�g��100�s���x�ŏ����ꂽ���̂ł��B���̃T���v�����AWiiRemote��U��ΐU��قlj����o�Ă���悤�ɂ��Ă݂܂����B�T���v����FireCubeWii�ł��B

draw�̒��ł́A�����x����power�Ƃ����l���v�Z���Ă��܂��B���̒l�ɉ����ĉ��̏o��ʂ��ς��܂��B

  float power = sqrt(wiimote.x * wiimote.x +
   wiimote.y * wiimote.y +
   wiimote.z * wiimote.z);
  power = constrain(power - 1, 0.1, 1);
  

�ŏ��Ɍv�Z���Ă���̂�WiiRemote�ɂ������Ă�������x�ł��BWiiRemote�������Ȃ���Ԃł́A���̒l�����1�ɂȂ�܂��B���̏�Ԃł͉����o�������Ȃ��̂ŁA���̍s��1�������ƂƂ��ɁAconstrain�Ƃ����֐����g���Ēl��0.1����1�̊ԂɎ��߂Ă��܂��B

�����Ōv�Z����power�́A�����̂ƁA������オ���Ă��鉊�̏����l�ɐݒ肵�܂��B�ڂ����̓X�P�b�`����power�Ƃ����ϐ����������Ă݂Ă��������B

DirectionalWii

Directional�́A�}�E�X�J�[�\���̈ʒu�ɉ����ăs���|�����̂悤�Ȃ��̂����C�g�A�b�v�������̂ł��B�����WiiFlash���瓾����X�����AY�����̉����x���g�����ƂŁA��������WiiRemote�������d���ɂȂ������̂悤�Ȋ��o�����킦�܂��B

���̃X�P�b�`�ł́A�����d���̂悤�Ȋ��o���o�����߂ɁAWiiRemote��A�{�^����������Ă���Ƃ����������\�������悤�ɂ��Ă��܂��B���L�̂悤�ɁAA�{�^����������Ă����draw���\�b�h����r���Ŕ����o���܂��B

  if (!wiimote.a.pressed) {
   return;
  }

���𓖂Ă�����ɂ‚��ẮA�����x�̒l�����̂܂܎g���Ă��܂��B

  directionalLight(204, 204, 204, wiimote.x, wiimote.y, -1);

WaveSignalWii

�Ō��1�•ς�����l�^�����グ�܂��BWaveSignalWii�͍��܂ł̃X�P�b�`�Ƃ͈قȂ�A�����g�����X�P�b�`�ł��B���ƂȂ��Ă���X�P�b�`��[Libaries] - [Minim (Sound)] - [SineWaveSignal]�ł��B���̃X�P�b�`���N������ƁA�v�[�Ƃ����悤�ȉ����‚�o���܂��B����͉�ʂɂ��\������Ă���ʂ�A�����鐳���g�ł��B�}�E�X�J�[�\�����㉺���E�ɓ��������ƂŁA���̍����i�s�b�`�j���㉺������A�X�e���I�̍��E�̃o�����X�i�p���j���ړ������肷��̂�������ł��傤���B

Processing�ł��̂悤�ɉ����‚点��̂́AMinim�Ƃ������C�u�����̂������ł��B�����g��\���ϐ������A�s�b�`��p�����w�肷�邾���ŁA���̂悤�ɉ���‚炷���Ƃ��ł��܂��B

SineWaveSignal�͂��̖��̒ʂ萳���g�ɂ����Ή����Ă��Ȃ��̂ł����A�����WiiRemote�Ή�������WaveSignalWii�́A�̂�����g���`�g�ɂ��Ή������܂����B���E�{�^�����������Ƃł�����؂�ւ��邱�Ƃ��ł��܂��B�܂��A�㉺�{�^���ʼn��ʂ�ς��邱�Ƃ��ł��܂��B

�܂��A������ς��邱�ƂŃs�b�`��p�����ω����܂��B��Ɍ�����Ɖ��������A���Ɍ�����Ɖ����Ⴍ�Ȃ�܂��B���E�����Ɍ�����ƁA������̕����特���������Ă���悤�ɂȂ�܂��B

WiiFlash��Processing������g���闝�R

���āA�����܂œ��ɂ��̘b�̏ڍׂɂ͓��ݍ���ł��܂���ł������A�Ȃ�Processing����WiiFlash���g�����Ƃ��ł���̂ł��傤���B������WiiFlash�ɓY�t����Ă���\�[�X�R�[�h�̒��ɂ���܂��B

���C���ƂȂ�\�[�X�R�[�h�́ACore/api/source-classes/org/wiiflash�f�B���N�g���̒��ɂ�܂��B�����ɂ���̂�WiiFlash���̂��̂̃\�[�X�R�[�h�ł͂Ȃ��AFlash����WiiFlash�ɂ‚Ȃ����߂�ActionScript3�̃\�[�X�R�[�h�ł����A���ꂾ����WiiFlash�̋����𐄑����邱�Ƃ��ł��܂��BWiimote.as��WiiSocket.as������΁A��{�I�ȋ������‚��ނ��Ƃ��ł��܂��B

WiiSocket.as�ł́Aconnect���\�b�h��localhost��19028�Ԃɐڑ����Ă��܂��B���̂��Ƃ���AWiiFlash��19028�Ԃ̃|�[�g���g���ăT�[�o�𗧂ĂĂ��邱�Ƃ�������܂��B�����ă\�P�b�g����f�[�^����M�����Ƃ��̏�����onSocketData���\�b�h�ɏ�����Ă��܂��B����������ƁA�f�[�^��80�o�C�g�P�ʂŎ�M����Ă��邱�Ƃ�������܂��B�ŏ���1�o�C�g�̓R���g���[����ID�ƂȂ��Ă���A����ȍ~�̃f�[�^��Wiimote�N���X��update���\�b�h�œǂݍ��܂�Ă��܂��BWiiFlash���瑗���Ă����{�I�ȃf�[�^���܂Ƃ߂�ƁA�\�̂悤�ɂȂ�܂��B

��{�f�[�^���C�A�E�g

���O �ʒu �^ �Ӗ�
index 0 byte �R���g���[����ID
batteryLevel 1 byte �o�b�e���[�c��
buttonState 2 ushort �{�^���̏��
x 4 float X�����̉����x
y 8 float Y�����̉����x
z 12 float Z�����̉����x
extensionType 16 byte �g���^�C�v

�g���^�C�v�ɂ́A�k���`���N�A�N���V�b�N�R���g���[���A�o�����X�{�[�h������܂��B���̃^�C�v�ɂ���āA17�o�C�g�ڈȍ~�̃f�[�^�̉��ߕ��@���ς��܂��B�����ɂ‚��Ă�Nunchuk.as�AClassicController.as�ABalanceBoard.as������ƃf�[�^�̓��e��������܂����A�{���ł͂����ɂ‚��Ă̐����͊������܂��B

Processing����WiiFlash�ɂ‚Ȃ����߂ɂ́Anet���C�u������Client�N���X���g���܂��BClient�N���X���g�����ƂŁA�\�P�b�g���g����WiiFlash�ƒʐM���邱�Ƃ��ł��܂��B�‚Ȃ�����́Aread���\�b�h�Ȃǂ��g�����Ƃ�WiiFlash����o�C�g���ǂݍ��ނ��Ƃ��ł��܂��B

Wiimote�N���X�̏ڍׂȎ����ɂ‚��Ă͖{�͂ł͏q�ׂ܂��񂪁A�\�[�X�R�[�h�͌������ԂƂȂ��Ă���̂ŁA�C�ɂȂ���͂�������Q�Ƃ��Ă��������B