LECTURE 4 ¥Þ¥¤¥¯ÆþÎϤò¥¹¥Ô¡¼¥«¡¼¤Ë½ÐÎϤ¹¤ë

¡û ¤Ï¤¸¤á¤Ë

LECTURE 2 ¤Ç¤Ï¡¢¥¹¥Ô¡¼¥«¤Ë²»¤ò½ÐÎϤ¹¤ëÊýË¡¤Ë¤Ä¤¤¤Æ²òÀ⤷¤Þ¤·¤¿¡£¤³¤³¤Ç¤Ï¿·¤¿¤Ë¥Þ¥¤¥¯ÆþÎϤòÏ¿²»¤¹¤ë¤¿¤á¤ÎÊýË¡¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£¥¹¥Ô¡¼¥«¡¼½ÐÎÏ¤Ç¤Ï write() ¥·¥¹¥Æ¥à¥³¡¼¥ë¤ò»È¤¤¤Þ¤·¤¿¤¬¡¢¥Þ¥¤¥¯ÆþÎϤò°·¤¦¤¿¤á¤Ë¤Ï read() ¥·¥¹¥Æ¥à¥³¡¼¥ë¤ò»È¤¤¤Þ¤¹¡£

¡û ¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à

5 Éô֤Υޥ¤¥¯ÆþÎϤòÏ¿²»¤·¡¢Â³¤±¤Æ¤½¤ÎÆâÍƤò¥¹¥Ô¡¼¥«¡¼¤Ë½ÐÎϤ¹¤ë¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à mic.c ¤Ç¤¹¡£¤Ï¤¸¤á¤Ë ¤Î¥Ú¡¼¥¸¤«¤é¡¢Á´¤Æ¤Î¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à¤ò¸Ç¤á¤¿ tar ¥Ü¡¼¥ë¤ò¥À¥¦¥ó¥í¡¼¥É¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£

gcc -o mic mic.c

¤È¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤Þ¤¹¡£¥³¥ó¥Ñ¥¤¥ë¥ª¥×¥·¥ç¥ó¤Ï³Æ¼«¤Î´Ä¶­¤Ê¤É¤Ë±þ¤¸¤Æ½¤Àµ¤·¤Æ²¼¤µ¤¤¡£

¼Â¹Ô¤¹¤ë¤È¡¢Æä˥¨¥é¡¼¤¬Ìµ¤±¤ì¤Ð

########################################
# Now speak to your mic for 5 seconds. #
########################################

¤Èɽ¼¨¤µ¤ì¤ë¤Î¤Ç¡¢Ìó 5 ÉôÖÄø¥Þ¥¤¥¯¤Ë¸þ¤«¤Ã¤Æ²¿¤«²»¤ò¤Õ¤­¤³¤ó¤Ç²¼¤µ¤¤¡£Ï¿²»»þ´Ö¤¬²á¤®¤ë¤È

########################################
# Playing what you have said.          #
########################################

¤È¤¤¤¦É½¼¨¤Ë³¤¤¤ÆÀèÄø¤Õ¤­¤³¤ó¤À²»¤¬ºÆÀ¸¤µ¤ì¤Þ¤¹¡£

²»¤¬½Ð¤Ê¤¤¾ì¹ç¤ÎÃí°ÕÅÀ¤È¤·¤Æ 2 ÅÀ¤¢¤ê¤Þ¤¹¡£¤Þ¤º¡¢¥¹¥Ô¡¼¥«¡¼½ÐÎϤÈƱÍͤ˥ޥ¤¥¯ÆþÎϤΥܥê¥å¡¼¥à¤¬ 0 ¤Ë¤Ê¤Ã¤Æ¤¤¤Ê¤¤É¬Íפ¬¤¢¤ê¤Þ¤¹¡£¥ß¥­¥µ¡¼ÁàºîÍÑ¥½¥Õ¥È¤ò»È¤¦¤«¡¢LECTURE 7 /dev/mixer ¤òÁàºî¤¹¤ë ¤Ë½¾¤Ã¤Æ¥Ü¥ê¥å¡¼¥à¤òÀßÄꤷ¤Æ²¼¤µ¤¤¡£

¼¡¤Ë¡¢OSS ( /Free )¤Ç¤ÏÆþÎϲ»¸»¤È¤·¤Æ¥Þ¥¤¥¯ÆþÎϤ¬¥Ç¥Õ¥©¥ë¥È¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤Ï¤º¤Ç¤¹¤¬¡¢¤Ò¤ç¤Ã¤È¤¹¤ë¤ÈÆþÎϲ»¸»¤È¤·¤Æ¥é¥¤¥óÆþÎϤʤÉÊ̤β»¸»¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤Ë¤Ä¤¤¤Æ¤â¡¢¥ß¥­¥µ¡¼ÁàºîÍÑ¥½¥Õ¥È¤ò»È¤¦¤« LECTURE 7 /dev/mixer ¤òÁàºî¤¹¤ë ¤Ë½¾¤Ã¤ÆÆþÎϲ»¸»¤ò¥Þ¥¤¥¯ÆþÎϤËÀßÄꤷ¤Æ²¼¤µ¤¤ ( °Ê¾å¡¢¤³¤ì°Ê¹ß¤Î¥µ¥ó¥×¥ë¤Ç¤âƱÍÍ )¡£

¤Á¤Ê¤ß¤Ë¡¢¥ß¥­¥µ¡¼¤òÁàºî¤·¤ÆÆþÎϲ»¸»¤òÊѤ¨¤ë¤È¡¢¤½¤Î²»¸»¤òÁ´¤¯Æ±¤¸¥µ¥ó¥×¥ë¥³¡¼¥É¤ÇÏ¿²»¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

--- mic.c ---

    1	#include <fcntl.h>
    2	#include <linux/soundcard.h>
    3	#include <stdio.h>
    4	#include <sys/ioctl.h>
    5	#include <unistd.h>
    6	
    7	
    8	/*
    9	 * Î̻Ҳ½¥Ó¥Ã¥È¿ô : 16 bits
   10	 * ¥µ¥ó¥×¥ê¥ó¥°¼þÇÈ¿ô : 44.1 KHz
   11	 * ¥Á¥ã¥ó¥Í¥ë¿ô : 1
   12	 * Ï¿²»/ºÆÀ¸»þ´Ö : 5 sec
   13	 *
   14	 * ʬ¤Î¥Ð¥Ã¥Õ¥¡Îΰè
   15	 *
   16	 * 16 (bits) * 44100 (Hz) * 5 (sec) = 3528000 (bits)
   17	 *                                  = 441000  (bytes)
   18	 */
   19	#define BUFSIZE 441000
   20	
   21	static int setup_dsp( int fd );
   22	
   23	int 
   24	main( void )
   25	{
   26		short buf[ BUFSIZE / sizeof(short) ];
   27		int   fd, rtn;
   28	
   29		if ( ( fd = open( "/dev/dsp", O_RDWR ) ) == -1 ) {
   30			perror( "open()" );
   31			return 1;
   32		}
   33	
   34		/* /dev/dsp ¤ÎÀßÄê */
   35		if ( setup_dsp( fd ) != 0 ) {
   36			fprintf( stderr, "Setup /dev/dsp failed.\n" );
   37			close( fd );
   38			return 1;
   39		}
   40	
   41	
   42		printf( "########################################\n" );
   43		printf( "# Now speak to your mic for 5 seconds. #\n" );
   44		printf( "########################################\n" );
   45	
   46		/* 5 ÉÃ´Ö ¥Þ¥¤¥¯ÆþÎϤòÏ¿²»¤¹¤ë */
   47		if ( ( rtn = read( fd, buf, BUFSIZE ) ) == -1 ) {
   48			perror( "read()" );
   49			close( fd );
   50			return 1;
   51		}
   52	
   53	
   54		printf( "\n" );
   55		printf( "########################################\n" );
   56		printf( "# Playing what you have said.          #\n" );
   57		printf( "########################################\n" );
   58	
   59		/* Ï¿²»¤·¤¿²»¤òºÆÀ¸¤¹¤ë */
   60		if ( write( fd, buf, rtn ) == -1 ) {
   61			perror( "write()" );
   62			close( fd );
   63			return 1;
   64		}
   65	
   66		close( fd );
   67		return 0;
   68	}
   69	
   70	
   71	/*
   72	 * /dev/dsp ¤ò°Ê²¼¤ÎÍͤËÀßÄꤹ¤ë¡£
   73	 *
   74	 * Î̻Ҳ½¥Ó¥Ã¥È¿ô     : 16   bits
   75	 * ¥µ¥ó¥×¥ê¥ó¥°¼þÇÈ¿ô : 44.1 KHz
   76	 * ¥Á¥ã¥ó¥Í¥ë¿ô       : 1
   77	 * PCM ¥Ç¡¼¥¿¤ÏÉä¹æÉÕ¤­¡¢¥ê¥È¥ë¥¨¥ó¥Ç¥£¥¢¥ó
   78	 *
   79	 */
   80	static int 
   81	setup_dsp( int fd )
   82	{
   83		int fmt     = AFMT_S16_LE;
   84		int freq    = 44100;
   85		int channel = 1;
   86	
   87		/* ¥µ¥¦¥ó¥É¥Õ¥©¡¼¥Þ¥Ã¥È¤ÎÀßÄê */
   88		if ( ioctl( fd, SOUND_PCM_SETFMT, &fmt ) == -1 ) {
   89			perror( "ioctl( SOUND_PCM_SETFMT )" );
   90			return -1;
   91		}
   92	
   93		/* ¥Á¥ã¥ó¥Í¥ë¿ô¤ÎÀßÄê */
   94		if ( ioctl( fd, SOUND_PCM_WRITE_CHANNELS, &channel ) == -1 ) {
   95			perror( "ioctl( SOUND_PCM_WRITE_CHANNELS )" );
   96			return -1;
   97		}
   98	
   99		/* ¥µ¥ó¥×¥ê¥ó¥°¼þÇÈ¿ô¤ÎÀßÄê */
  100		if ( ioctl( fd, SOUND_PCM_WRITE_RATE, &freq ) == -1 ) {
  101			perror( "ioctl( SOUND_PCM_WRITE_RATE )" );
  102			return -1;
  103		}
  104	
  105		return 0;
  106	}
  107	
  108	/* End of mic.c */


¡û ¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à¤ÎÀâÌÀ

¤Ç¤Ï¡¢¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Æ¤¤¤­¤Þ¤¹¡£¤È¤¤¤Ã¤Æ¤â¡¢¤Û¤È¤ó¤É¤ÎÉôʬ¤Ï LECTURE 2 ¤Î sound.c ¤Ç²òÀ⤷¤¿¤â¤Î¤Ð¤«¤ê¤Ç¤¹¤¬¡£¡£¡£

  • 8 ¡Á 19 ¹ÔÌÜ

    PCM ¥Ç¡¼¥¿¤ò³ÊǼ¤¹¤ë¤¿¤á¤ËɬÍפʥХåե¡Îΰè¤Î¥µ¥¤¥º¤Ç¤¹¡£LECTURE 2 ¤Î sound.c ¤Î¤½¤ì¤ÈÁ´¤¯Æ±¤¸Â礭¤µ¤Ç¤¹¡£Î̻Ҳ½¥Ó¥Ã¥È¿ô 16 ¥Ó¥Ã¥È¡¢¥µ¥ó¥×¥ê¥ó¥°¼þÇÈ¿ô 44.1 KHz¡¢ ¥Á¥ã¥ó¥Í¥ë¿ô 1 ¤È¤¤¤¦ PCM ¥Ç¡¼¥¿¤ò 5 Éôְ·¤¦¤Î¤Ç¡¢ 16 ( bits ) * 44100 (Hz) * 5 (sec) = 441000 (bytes) ¤Î¥Ð¥Ã¥Õ¥¡¤ò»È¤¤¤Þ¤¹¡£

    2007/12/03 Äɵ­¡£34 ¹ÔÌܤǼºݤ˥Хåե¡¤ò³ÎÊݤ·¤Æ¤¤¤Þ¤¹¤¬¡¢short ·¿¤Ç³ÎÊݤ·¤Æ¤¤¤ë¤Ë¤â´Ø¤ï¤é¤º BUFSIZE ¤ò¤½¤Î¤Þ¤ÞÍ×ÁÇ¿ô¤Ë»ØÄꤷ¤Æ¤¤¤Þ¤·¤¿ (short buf[BUFSIZE];)¡£ Àµ¤·¤¯¤Ï short buf[BUFSIZE / sizeof(short)]; ¤Ç¤·¤¿¡£ËÙ¤µ¤ó¡¢¤´»ØŦ¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤·¤¿¡ª

  • 23 ¡Á 68 ¹ÔÌÜ ( main() )
    • 29 ¡Á 32 ¹ÔÌÜ

      mic.c ¤Ç¤Ï¥Þ¥¤¥¯ÆþÎϤȥ¹¥Ô¡¼¥«¡¼½ÐÎϤÎξÊý¤ò¹Ô¤¦¤Î¤Ç¡¢/dev/dsp ¤ò O_RDWR ( Æɤ߽ñ¤­Î¾ÍÑ ) ¤Ç³«¤¤¤Æ¤¤¤Þ¤¹¡£

    • 34 ¡Á 39 ¹ÔÌÜ

      ¼«ºî´Ø¿ô setup_dsp() ¤Ç /dev/dsp ¤ÎÀßÄê¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£LECTURE 2 ¤Î setup_dsp() ¤ÈÁ´¤¯Æ±¤¸½èÍý¤ò¤·¤Æ¤¤¤ë¤Î¤Ç¡¢¤½¤Á¤é¤Î²òÀâ¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£

    • 42 ¡Á 51 ¹ÔÌÜ

      /dev/dsp ¤ò read() ¤¹¤ë¤³¤È¤Ç¥Þ¥¤¥¯ÆþÎϤòÏ¿²»¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£Ï¿²»¤·¤¿ PCM ¥Ç¡¼¥¿¤Ï buf ¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£

      ¤³¤³¤ÇÃí°Õ¤·¤Æ¤ª¤¤¤ÆÍߤ·¤¤¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£¥µ¥¦¥ó¥É¥É¥é¥¤¥Ð¤«¤é PCM ¥Ç¡¼¥¿¤òÆɤ߹þ¤àºÝ¡¢ ¥µ¥¦¥ó¥É¥É¥é¥¤¥ÐÆâÉô¤Î¥Õ¥é¥°¥á¥ó¥È¤È¸Æ¤Ð¤ì¤ë¥Ð¥Ã¥Õ¥¡¤¬¡¢ ºÇÄã°ì¤Ä¤Ï¥Ç¡¼¥¿¤ÇËä¤á¤é¤ì¤Ê¤±¤ì¤Ð read() ¤Ï¥Ö¥í¥Ã¥¯¤·¤Þ¤¹¡£

      ¤³¤ì¤Ç¤Ï¡¢¥Õ¥é¥°¥á¥ó¥È¤Î¥µ¥¤¥º¤è¤ê¾®¤µ¤Ê¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¤¿¤¤¾ì¹ç¤ËÉÔÍפ˥֥í¥Ã¥¯ ¤·¤Æ¤·¤Þ¤¤¤Þ¤¹¡£¤³¤ì¤òÈò¤±¤ë¤Ë¤Ï¡¢¥Õ¥é¥°¥á¥ó¥È¤Î¥µ¥¤¥º¤òÊѹ¹¤·¤¿¤ê¡¢ ¥Ö¥í¥Ã¥¯¤»¤º¤ËÆɤ߹þ¤à¤³¤È¤Î¤Ç¤­¤ë¥Õ¥é¥°¥á¥ó¥È¤Î¿ô¤ò¼èÆÀ¤·¤¿¤ê¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ ¤³¤ì¤é¤ÎÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï LECTURE 5 ¥ê¥¢¥ë¥¿¥¤¥àÀ­¤ò¹Íθ¤¹¤ë ¤Ç¾Ò²ð¤·¤Þ¤¹¤¬¡¢¤³¤³¤Ç¤Ï¤³¤ÎÍͤÊÌäÂ꤬¤¢¤ë¤³¤È¤ò³Ð¤¨¤Æ¤ª¤¤¤Æ²¼¤µ¤¤¡£

    • 54 ¡Á 64 ¹ÔÌÜ

      sound.c ¤ÈƱ¤¸¤¯¡¢buf ¤ÎÆâÍƤò /dev/dsp ¤Ë write() ¤¹¤ë¤³¤È¤Ç¥¹¥Ô¡¼¥«¡¼¤Ë ½ÐÎϤ·¤Æ¤¤¤Þ¤¹¡£

  • 71 ¡Á 106 ¹ÔÌÜ ( setup_dsp() )

    /dev/dsp ¤ÎÀßÄê¤ò¹Ô¤¦¤¿¤á¤Î´Ø¿ô¤Ç¤¹¡£LECTURE 2 ¤Î setup_dsp() ¤ÈÁ´¤¯Æ±¤¸¤Ê¤Î¤Ç¡¢ ¾ÜºÙ¤Ï¤½¤Á¤é¤Î²òÀâ¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£


mic.c ¤ÎÀâÌÀ¤Ï°Ê¾å¤Ç¤¹¡£OSS API ¤ò»È¤Ã¤¿¥×¥í¥°¥é¥ß¥ó¥°¤Ç¤Ï¡¢¥Þ¥¤¥¯ÆþÎϤòÏ¿²»¤¹¤ë¤Ë¤Ï read() ¤¹¤ë¤À¤±¤ÇÎɤ¤¤Î¤Ç¤¹¡£¤³¤ì¤Þ¤¿¤È¤Æ¤â´Êñ¤Ç¤¹¤Í¡£

¡û ¥µ¥¦¥ó¥É¤ÎÏ¿²»¤ÈºÆÀ¸¤òƱ»þ¤Ë¹Ô¤¦

mic.c ¤Ç¤Ï¡¢read() ¤Ç¥Þ¥¤¥¯ÆþÎϤòÏ¿²»¤·¤¿¸å¤Ë write() ¤ÇÏ¿²»¤·¤¿¥Ç¡¼¥¿¤òºÆÀ¸¤·¤Æ¤¤¤Þ¤¹¡£¤³¤Î¾ì¹ç¤Ï¡¢ºÆÀ¸¤·¤Æ¤¤¤ë´Ö¤ÏÆþÎϲ»¸»¤ò¼è¤ê¹þ¤àɬÍפÏ̵¤¤¤Î¤ÇÌäÂꤢ¤ê¤Þ¤»¤ó¡£

¤·¤«¤·¡¢write() ¤ÇºÆÀ¸¤·¤Æ¤¤¤ë´Ö¤âÆþÎϲ»¸»¤ò¥É¥é¥¤¥ÐÆâ¤Î¥Ð¥Ã¥Õ¥¡¤Ë¼è¤ê¹þ¤ó¤Ç¤ª¤¤¤ÆÍߤ·¤¤¤È¤¤¤Ã¤¿¾ì¹ç¤Ï¡¢¥µ¥¦¥ó¥É¥«¡¼¥É¤¬Á´Æó½Å¥â¡¼¥É¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£»ÈÍѤ·¤Æ¤¤¤ë¥Ç¥Ð¥¤¥¹¤¬Á´Æó½Å¥â¡¼¥É¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤«¤É¤¦¤«¤Ï¡¢LECTURE 3 /dev/dsp ¤Îµ¡Ç½¤òÄ´¤Ù¤ë ¤Ç¾Ò²ð¤·¤Æ¤¤¤ë ioctl SNDCTL_DSP_GETCAPS ¥³¥Þ¥ó¥É¤ÇÄ´¤Ù¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

int caps;
ioctl( fd, SNDCTL_DSP_GETCAPS, &caps );

¾å¤Î ioctl() ¤òȯ¹Ô¤·¤ÆÆÀ¤é¤ì¤ë caps ¤È DSP_CAP_DUPLEX ¤Î AND ¤Î·ë²Ì¤¬ 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢¤½¤Î¥Ç¥Ð¥¤¥¹¤ÏÁ´Æó½Å¥â¡¼¥É¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£

¥Ç¥Ð¥¤¥¹¤ò»ÈÍѤ¹¤ë»þ¤ËÁ´Æó½Å¥â¡¼¥É¤Ë°Ü¹Ô¤¹¤ë¤Ë¤Ï¡¢¥Ç¥Ð¥¤¥¹¤ò O_RDWR ¥â¡¼¥É¤Ç open() ¤·¤¿Ä¾¸å¤Ë²¼µ­¤Î ioctl() ¤ÇÀßÄꤷ¤Þ¤¹¡£

ioctl( fd, SNDCTL_DSP_SETDUPLEX, 0 );

¤³¤Î ioctl() ¤Ï¥Ç¥Ð¥¤¥¹¤ò open() ¤·¤¿Ä¾¸å¡¢Â¾¤Î ioctl() ¤ä read()¡¢write() ¤Ê¤É¤ò¼Â¹Ô¤¹¤ëÁ°¤Ë¹Ô¤¤¤Þ¤¹¡£¤³¤Î ioctl() ¤Ë¤è¤Ã¤Æ¥Ç¥Ð¥¤¥¹¤ÏÁ´Æó½Å¥â¡¼¥É¤Ç»ÈÍѤǤ­¤Þ¤¹¡£

SNDCTL_DSP_GETCAPS ¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ëºÝ¤Ï¡¢¤Þ¤º SNDCTL_DSP_SETDUPLEX ¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤Ù¤­¤À¤È OSS ¥×¥í¥°¥é¥Þ¡¼¥º¥¬¥¤¥É¤Ëµ­½Ò¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤½¤¦¤·¤Ê¤¤¤È¡¢SNDCTL_DSP_GETCAPS ¥³¥Þ¥ó¥É¤¬ DSP_CAP_DUPLEX ¤Î¥Ó¥Ã¥È¤ÏÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¤ÈÊó¹ð¤¹¤ë¤«¤â¤·¤ì¤Ê¤¤¤«¤é¤È¤¤¤¦¤³¤È¤Ç¤¹¡£

¤È¤¤¤¦¤³¤È¤Ê¤ó¤Ç¤¹¤¬¤¤¤¯¤Ä¤«¤Î¥É¥é¥¤¥Ð¤Î¥³¡¼¥É¤ò¸«¤¿¤È¤³¤í¡¢SNDCTL_DSP_SETDUPLEX ¤¬È¯¹Ô¤µ¤ì¤¿¾ì¹ç¡¢´û¤ËÀßÄꤵ¤ì¤Æ¤¤¤ë¥Õ¥é¥°¤ÈÈæ³Ó¤·¤ÆÁ´Æó½Å¥â¡¼¥É¤Ç¤¢¤ì¤ÐÀ®¸ù¤È¤ß¤Ê¤¹¤È¤«¡¢ºÇ½é¤«¤éÁ´Æó½Å¥â¡¼¥É¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤Î¤Ç¤³¤Î¥³¥Þ¥ó¥Éȯ¹Ô»þ¤Ë¤Ï²¿¤â¤·¤Ê¤¤¤È¤«¡¢Á´Æó½Å¥µ¥Ý¡¼¥È¤·¤Æ¤Ê¤¤¤«¤é¥¨¥é¡¼¤òÊÖ¤¹¤È¤¤¤Ã¤¿¡¢¥µ¥Ý¡¼¥È¾õ¶·É½¼¨ÍѤߤ¿¤¤¤Ê¥³¡¼¥É¤¬Â¿¤¤ÍͤǤ¹ ( Á´¤Æ¸«¤¿¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó )¡£