4. Îã³°½èÍý

¤³¤Î¾Ï¤ÇÀâÌÀ¤¹¤ë´Ø¿ô¤ò»È¤¦¤È¡¢Python¤ÎÎã³°¤Î½èÍý¤äÁ÷½Ð¤¬¤Ç¤­¤ë¤è¤¦¤Ë ¤Ê¤ê¤Þ¤¹¡£Python¤ÎÎã³°½èÍý¤Î´ðËܤò¤¤¤¯¤é¤«Íý²ò¤¹¤ë¤³¤È¤¬ÂçÀڤǤ¹¡£ Îã³°¤ÏUnix errnoÊÑ¿ô¤Ë¤ä¤ä»÷¤¿µ¡Ç½¤ò²Ì¤¿¤·¤Þ¤¹: ȯÀ¸¤·¤¿ Ãæ¤ÇºÇ¤â¿·¤·¤¤¥¨¥é¡¼¤Î(¥¹¥ì¥Ã¥ÉËè¤Î)¥°¥í¡¼¥Ð¥ë¤Ê¥¤¥ó¥¸¥±¡¼¥¿¤¬¤¢¤ê¤Þ¤¹¡£ ¼Â¹Ô¤ËÀ®¸ù¤·¤¿¾ì¹ç¤Ë¤Ï¤Û¤È¤ó¤É¤Î´Ø¿ô¤¬¤³¤ì¤ò¥¯¥ê¥¢¤·¤Þ¤»¤ó¤¬¡¢¼ºÇÔ¤·¤¿¤È¤­¤Ë¤Ï ¥¨¥é¡¼¤Î¸¶°ø¤ò¼¨¤¹¤¿¤á¤ËÀßÄꤷ¤Þ¤¹¡£¤Û¤È¤ó¤É¤Î´Ø¿ô¤Ï¥¨¥é¡¼¥¤¥ó¥¸¥±¡¼¥¿¤â ÊÖ¤·¡¢Ä̾ï¤Ï´Ø¿ô¤¬¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¤³¤È¤Ë¤Ê¤Ã¤Æ¤¤¤ë¾ì¹ç¤ÏNULL¤Ç¤¢¤ê¡¢ ´Ø¿ô¤¬À°¿ô¤òÊÖ¤¹¾ì¹ç¤Ï-1¤Ç¤¹¡£(Îã³°: PyArg_*()´Ø¿ô¤Ï ¼Â¹Ô¤ËÀ®¸ù¤·¤¿¤È¤­¤Ë1¤òÊÖ¤·¡¢¼ºÇÔ¤·¤¿¤È¤­¤Ë0¤òÊÖ¤·¤Þ¤¹).

¤¢¤ë´Ø¿ô¤¬¸Æ¤Ó½Ð¤·¤¿´Ø¿ô¤¬¤¤¤¯¤Ä¤«¼ºÇÔ¤·¤¿¤¿¤á¤Ë¡¢¤½¤Î´Ø¿ô¤¬¼ºÇÔ¤·¤Ê¤±¤ì¤Ð ¤Ê¤é¤Ê¤¤¤È¤­¡¢°ìÈÌŪ¤Ë¥¨¥é¡¼¥¤¥ó¥¸¥±¡¼¥¿¤òÀßÄꤷ¤Þ¤»¤ó¡£¸Æ¤Ó½Ð¤·¤¿´Ø¿ô¤¬ ¤¹¤Ç¤ËÀßÄꤷ¤Æ¤¤¤Þ¤¹¡£¥¨¥é¡¼¤ò½èÍý¤·¤ÆÎã³°¤ò¥¯¥ê¥¢¤¹¤ë¤«¡¢¤¢¤ë¤¤¤Ï (¥ª¥Ö¥¸¥§¥¯¥È»²¾È¤Þ¤¿¤Ï¥á¥â¥ê³ä¤êÅö¤Æ¤Î¤è¤¦¤Ê)¤½¤ì¤¬»ý¤Ä¤É¤ó¤Ê¥ê¥½¡¼¥¹¤â ¼è¤ê½ü¤¤¤¿¸å¤ËÌá¤ë¤«¤Î¤É¤Á¤é¤«°ìÊý¤ò¹Ô¤¦ÀÕǤ¤¬¤¢¤ê¤Þ¤¹¡£¥¨¥é¡¼¤ò½èÍý¤¹¤ë ½àÈ÷¤ò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢ÉáÄ̤˳¤±¤ë¤Ù¤­¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¥¨¥é¡¼¤Î¤¿¤á¤Ë Ìá¤ë¾ì¹ç¤Ï¡¢¥¨¥é¡¼¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¤È¸Æ¤Ó½Ð¤·¸µ¤ËÃΤ餻¤ë¤³¤È¤¬ÂçÀڤǤ¹¡£ ¥¨¥é¡¼¤¬½èÍý¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Þ¤¿¤ÏÃúÇ«¤ËÅÁ¤¨¤é¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢ Python/C API¤Î¤µ¤é¤Ê¤ë¸Æ¤Ó½Ð¤·¤Ï°Õ¿Þ¤·¤¿Ä̤ê¤Ë¤Ïư¤«¤Ê¤¤²ÄǽÀ­¤¬¤¢¤ê¡¢ ÉԲIJò¤Ê·Á¤Ç¼ºÇÔ¤¹¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£

¥¨¥é¡¼¥¤¥ó¥¸¥±¡¼¥¿¤ÏPythonÊÑ¿ôsys.exc_type, sys.exc_value ¤ª¤è¤Ó sys.exc_traceback¤ËÂбþ¤¹¤ë»°¤Ä¤ÎPython¥ª¥Ö¥¸¥§¥¯¥È¤«¤é¤«¤é¤Ê¤ê¤Þ¤¹¡£ ¤¤¤í¤¤¤í¤ÊÊýË¡¤Ç¥¨¥é¡¼¥¤¥ó¥¸¥±¡¼¥¿¤È¤ä¤ê¤È¤ê¤¹¤ë¤¿¤á¤ËAPI´Ø¿ô¤¬Â¸ºß¤·¤Þ¤¹¡£ ³Æ¥¹¥ì¥Ã¥É¤ËÊÌ¡¹¤Î¥¨¥é¡¼¥¤¥ó¥¸¥±¡¼¥¿¤¬¤¢¤ê¤Þ¤¹¡£

void PyErr_Print()
sys.stderr¤ØÉ¸½à¥È¥ì¡¼¥¹¥Ð¥Ã¥¯¤ò¥×¥ê¥ó¥È¤·¡¢¥¨¥é¡¼¥¤¥ó¥¸¥±¡¼¥¿¤ò ¥¯¥ê¥¢¤·¤Þ¤¹¡£¥¨¥é¡¼¥¤¥ó¥¸¥±¡¼¥¿¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¤È¤­¤Ë¤À¤±¡¢¤³¤Î´Ø¿ô¤ò ¸Æ¤Ó½Ð¤·¤Æ¤¯¤À¤µ¤¤¡£(¤½¤ì°Ê³°¤Î¾ì¹ç¡¢Ã×̿Ū¤Ê¥¨¥é¡¼¤ò°ú¤­µ¯¤³¤¹¤Ç¤·¤ç¤¦!)

PyObject* PyErr_Occurred()
Ìá¤êÃÍ: ¼Ú¤ê¤¿»²¾È.
¥¨¥é¡¼¥¤¥ó¥¸¥±¡¼¥¿¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¤«¥Æ¥¹¥È¤·¤Þ¤¹¡£ÀßÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢ Îã³°¤Î·¿(PyErr_Set*()´Ø¿ô¤Î°ì¤Ä¤¢¤ë¤¤¤Ï PyErr_Restore()¤Ø¤ÎºÇ¤â¿·¤·¤¤¸Æ¤Ó½Ð¤·¤ËÂФ¹¤ëÂè°ì°ú¿ô)¤òÊÖ¤·¤Þ¤¹¡£ ÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤ÏNULL¤òÊÖ¤·¤Þ¤¹¡£¤¢¤Ê¤¿¤ÏÌá¤êÃͤؤλ²¾È¤ò»ý¤Ã¤Æ¤¤¤Þ¤»¤ó¤Î¤Ç¡¢ ¤½¤ì¤ËPy_DECREF()¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£Ãí°Õ: Ìá¤êÃͤòÆÃÄê¤ÎÎã³°¤È Èæ³Ó¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£¤½¤ÎÂå¤ï¤ê¡¢²¼¤Ë¼¨¤¹PyErr_ExceptionMatches()¤ò »È¤Ã¤Æ¤¯¤À¤µ¤¤¡£(Èæ³Ó¤Ï´Êñ¤Ë¼ºÇÔ¤¹¤ë¤Ç¤·¤ç¤¦¡£¤Ê¤¼¤Ê¤é¡¢Îã³°¤Ï¥¯¥é¥¹¤Ç¤Ï¤Ê¤¯ ¥¤¥ó¥¹¥¿¥ó¥¹¤«¤â¤·¤ì¤Ê¤¤¤·¡¢¤¢¤ë¤¤¤Ï¡¢¥¯¥é¥¹Îã³°¤Î¾ì¹ç¤Ï´üÂÔ¤µ¤ì¤ëÎã³°¤Î ¥µ¥Ö¥¯¥é¥¹¤«¤â¤·¤ì¤Ê¤¤¤«¤é¤Ç¤¹¡£)

int PyErr_ExceptionMatches(PyObject *exc)
"PyErr_GivenExceptionMatches(PyErr_Occurred(), exc)"¤ÈƱ¤¸¡£ Îã³°¤¬¼ÂºÝ¤ËÀßÄꤵ¤ì¤¿¤È¤­¤Ë¤À¤±¡¢¤³¤ì¤ò¸Æ¤Ó½Ð¤À¤¹¤Ù¤­¤Ç¤¹¡£Îã³°¤¬È¯À¸ ¤·¤Æ¤¤¤Ê¤¤¤Ê¤é¤Ð¡¢¥á¥â¥ê¥¢¥¯¥»¥¹°ãÈ¿¤¬µ¯¤­¤ë¤Ç¤·¤ç¤¦¡£

int PyErr_GivenExceptionMatches(PyObject *given, PyObject *exc)
givenÎã³°¤¬exc¤ÎÎã³°¤È°ìÃפ¹¤ë¤Ê¤é¿¿¤òÊÖ¤·¤Þ¤¹¡£¤³¤ì¤Ïexc¤¬ ¥¯¥é¥¹¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¢¤ë¾ì¹ç¤â¿¿¤òÊÖ¤·¤Þ¤¹¡£¤³¤ì¤Ïgiven¤¬¥µ¥Ö¥¯¥é¥¹¤Î ¥¤¥ó¥¹¥¿¥ó¥¹¤Ç¤¢¤ë¤È¤­¤â¿¿¤òÊÖ¤·¤Þ¤¹¡£exc¤¬¥¿¥×¥ë¤Ê¤é¤Ð¡¢¥¿¥×¥ëÆâ (¤ÈºÆµ¢Åª¤Ë¥µ¥Ö¥¿¥×¥ëÆâ)¤Î¤¹¤Ù¤Æ¤ÎÎã³°¤¬°ìÃפ¹¤ë¤«Ä´¤Ù¤é¤ì¤Þ¤¹¡£ given¤¬NULL¤Ê¤é¤Ð¡¢¥á¥â¥ê¥¢¥¯¥»¥¹°ãÈ¿¤¬µ¯¤­¤ë¤Ç¤·¤ç¤¦¡£

void PyErr_NormalizeException(PyObject**exc, PyObject**val, PyObject**tb)
¤¢¤ë¾õ¶·¤Ç¤Ï¡¢°Ê²¼¤ÎPyErr_Fetch()¤¬ÊÖ¤¹ÃÍ¤Ï ``Àµµ¬²½¤µ¤ì¤Æ¤¤¤Ê¤¤''²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢*exc¤Ï ¥¯¥é¥¹¥ª¥Ö¥¸¥§¥¯¥È¤À¤¬*val¤ÏƱ¤¸¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Ç¤Ï ¤Ê¤¤¤È¤¤¤¦°ÕÌ£¤Ç¤¹¡£¤³¤Î´Ø¿ô¤Ï¤½¤Î¤è¤¦¤Ê¾ì¹ç¤Ë¤½¤Î¥¯¥é¥¹¤ò¥¤¥ó¥¹¥¿¥ó¥¹²½ ¤¹¤ë¤¿¤á¤Ë»È¤ï¤ì¤Þ¤¹¡£¤½¤ÎÃͤ¬¤¹¤Ç¤ËÀµµ¬²½¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï²¿¤âµ¯¤­¤Þ¤»¤ó¡£ ÃÙ±äÀµµ¬²½¤Ï¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤ò²þÁ±¤¹¤ë¤¿¤á¤Ë¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

void PyErr_Clear()
¥¨¥é¡¼¥¤¥ó¥¸¥±¡¼¥¿¤ò¥¯¥ê¥¢¤·¤Þ¤¹¡£¥¨¥é¡¼¥¤¥ó¥¸¥±¡¼¥¿¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¤Ê¤é¤Ð¡¢ ¸ú²Ì¤Ï¤¢¤ê¤Þ¤»¤ó¡£

void PyErr_Fetch(PyObject **ptype, PyObject **pvalue, PyObject **ptraceback)
¥¨¥é¡¼¥¤¥ó¥¸¥±¡¼¥¿¤ò¥¢¥É¥ì¥¹¤òÅϤ¹»°¤Ä¤ÎÊÑ¿ô¤ÎÃæ¤Ø¼è¤ê½Ð¤·¤Þ¤¹¡£ ¥¨¥é¡¼¥¤¥ó¥¸¥±¡¼¥¿¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢»°¤Ä¤¹¤Ù¤Æ¤ÎÊÑ¿ô¤òNULL¤Ë ÀßÄꤷ¤Þ¤¹¡£¥¨¥é¡¼¥¤¥ó¥¸¥±¡¼¥¿¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¥¯¥ê¥¢¤µ¤ì¡¢ ¤¢¤Ê¤¿¤Ï¼è¤ê½Ð¤µ¤ì¤¿¤½¤ì¤¾¤ì¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î»²¾È¤ò»ý¤Ä¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ ·¿¥ª¥Ö¥¸¥§¥¯¥È¤¬NULL¤Ç¤Ê¤¤¤È¤­¤Ç¤µ¤¨¡¢¤½¤ÎÃͤȥȥ졼¥¹¥Ð¥Ã¥¯¥ª¥Ö¥¸¥§¥¯¥È¤Ï NULL¤«¤â¤·¤ì¤Þ¤»¤ó¡£Ãí°Õ: Ä̾¤³¤Î´Ø¿ô¤ÏÎã³°¤ò°·¤¦É¬ÍפΤ¢¤ë¥³¡¼¥É ¤¢¤ë¤¤¤Ï¥¨¥é¡¼¥¤¥ó¥¸¥±¡¼¥¿¤ò°ì»þŪ¤ËÊݸ¤·¤Æ¸µ¤ËÌ᤹ɬÍפΤ¢¤ë¥³¡¼¥É¤Ë ¤è¤Ã¤Æ¤Î¤ß»ÈÍѤµ¤ì¤Þ¤¹¡£

void PyErr_Restore(PyObject *type, PyObject *value, PyObject *traceback)
»°¤Ä¤Î¥ª¥Ö¥¸¥§¥¯¥È¤«¤é¥¨¥é¡¼¥¤¥ó¥¸¥±¡¼¥¿¤òÀßÄꤷ¤Þ¤¹¡£¥¨¥é¡¼¥¤¥ó¥¸¥±¡¼¥¿¤¬ ¤¹¤Ç¤ËÀßÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢ºÇ½é¤Ë¥¯¥ê¥¢¤µ¤ì¤Þ¤¹¡£¥ª¥Ö¥¸¥§¥¯¥È¤¬NULL¤Ê¤é¤Ð¡¢ ¥¨¥é¡¼¥¤¥ó¥¸¥±¡¼¥¿¤¬¥¯¥ê¥¢¤µ¤ì¤Þ¤¹¡£NULL¤Îtype¤ÈÈóNULL¤Îvalue¤¢¤ë¤¤¤Ï traceback¤òÅϤ·¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£Îã³°¤Î·¿(type)¤Ï¥¯¥é¥¹¤Ç¤¢¤ë¤Ù¤­¤Ç¤¹¡£ ̵¸ú¤ÊÎã³°¤Î·¿(type)¤¢¤ë¤¤¤ÏÃÍ(value)¤òÅϤ·¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£ (¤³¤ì¤é¤Îµ¬Â§¤òÇˤë¤È¸å¤Çµ¤ÉÕ¤­¤Ë¤¯¤¤ÌäÂê¤Î¸¶°ø¤È¤Ê¤ë¤Ç¤·¤ç¤¦¡£) ¤³¤Î¸Æ¤Ó½Ð¤·¤Ï¤½¤ì¤¾¤ì¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î»²¾È¤ò¼è¤ê½ü¤­¤Þ¤¹: ¤¢¤Ê¤¿¤Ï ¸Æ¤Ó½Ð¤·¤ÎÁ°¤Ë¤½¤ì¤¾¤ì¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î»²¾È¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤Î¤Ç¤¢¤ê¡¢ ¤Þ¤¿¸Æ¤Ó½Ð¤·¤Î¸å¤Ë¤Ï¤â¤Ï¤ä¤³¤ì¤é¤Î»²¾È¤ò»ý¤Ã¤Æ¤¤¤Þ¤»¤ó¡£ (¤³¤ì¤òÍý²ò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢¤³¤Î´Ø¿ô¤ò»È¤Ã¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£Ãí°Õ¤·¤Æ¤ª¤­¤Þ¤¹¡£) Ãí°Õ: Ä̾盧¤Î´Ø¿ô¤Ï¥¨¥é¡¼¥¤¥ó¥¸¥±¡¼¥¿¤ò°ì»þŪ¤ËÊݸ¤·¸µ¤ËÌ᤹ɬÍפΤ¢¤ë ¥³¡¼¥É¤Ë¤è¤Ã¤Æ¤Î¤ß¤Ë»È¤ï¤ì¤Þ¤¹¡£¸½ºß¤ÎÎã³°¾õÂÖ¤òÊݸ¤¹¤ë¤¿¤á¤Ë¤Ï PyErr_Fetch()¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£

void PyErr_SetString(PyObject *type, char *message)
¤³¤ì¤Ï¥¨¥é¡¼¥¤¥ó¥¸¥±¡¼¥¿¤òÀßÄꤹ¤ë¤¿¤á¤ÎºÇ¤â°ìÈÌŪ¤ÊÊýË¡¤Ç¤¹¡£Âè°ì°ú¿ô¤Ï Îã³°¤Î·¿¤ò»ØÄꤷ¤Þ¤¹¡£Ä̾ï¤Ïɸ½àÎã³°¤Î°ì¤Ä¡¢Î㤨¤ÐPyExc_RuntimeError¤Ç¤¹¡£ ¤½¤Î»²¾È¥«¥¦¥ó¥È¤òÁý²Ã¤µ¤»¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ÂèÆó°ú¿ô¤Ï¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤Ç¡¢ ʸ»úÎ󥪥֥¸¥§¥¯¥È¤ØÊÑ´¹¤µ¤ì¤Þ¤¹¡£

void PyErr_SetObject(PyObject *type, PyObject *value)
¤³¤Î´Ø¿ô¤ÏPyErr_SetString()¤Ë»÷¤Æ¤¤¤Þ¤¹¤¬¡¢ Îã³°¤Î``ÃÍ(value)''¤È¤·¤ÆÇ¤°Õ¤ÎPython¥ª¥Ö¥¸¥§¥¯¥È¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

PyObject* PyErr_Format(PyObject *exception, const char *format, ...)
Ìá¤êÃÍ: ¾ï¤Ë NULL.
¤³¤Î´Ø¿ô¤Ï¥¨¥é¡¼¥¤¥ó¥¸¥±¡¼¥¿¤òÀßÄꤷNULL¤òÊÖ¤·¤Þ¤¹¡£ exception¤ÏPythonÎã³°(¥¤¥ó¥¹¥¿¥ó¥¹¤Ç¤Ï¤Ê¤¯¥¯¥é¥¹)¤Ç¤¢¤ë¤Ù¤­¤Ç¤¹¡£ format¤Ïʸ»úÎó¤Ç¤¢¤ë¤Ù¤­¤Ç¤¢¤ê¡¢printf()¤Ë»÷¤¿ ½ñ¼°²½¥³¡¼¥É¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹¡£½ñ¼°²½¥³¡¼¥É¤ÎÁ°¤ÎÉý.ÀºÅÙ(width.precision)¤Ï ²òÀϤµ¤ì¤Þ¤¹¤¬¡¢Éý¤ÎÉôʬ¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£

ʸ»ú  °ÕÌ£ 
c ʸ»ú¡¢int°ú¿ô¤È¤·¤Æ
d 10¿Ê¿ô¡¢int°ú¿ô¤È¤·¤Æ
x 16¿Ê¿ô¡¢int°ú¿ô¤È¤·¤Æ
s ʸ»úÎó¡¢char *°ú¿ô¤È¤·¤Æ
p 16¿ÊË¡¤Î¥Ý¥¤¥ó¥¿¡¢void *°ú¿ô¤È¤·¤Æ

ǧ¼±¤Ç¤­¤Ê¤¤½ñ¼°²½Ê¸»ú¤¬¤¢¤ë¤È½ñ¼°²½Ê¸»úÎó¤Î»Ä¤ê¤¹¤Ù¤Æ¤¬¤½¤Î¤Þ¤Þ ·ë²Ì¤Îʸ»úÎ󤨥³¥Ô¡¼¤µ¤ì¡¢Í¾Ê¬¤Î°ú¿ô¤Ï¤É¤ì¤â¼Î¤Æ¤é¤ì¤Þ¤¹¡£

void PyErr_SetNone(PyObject *type)
¤³¤ì¤Ï"PyErr_SetObject(type, Py_None)"¤ò¾Êά¤·¤¿¤â¤Î¤Ç¤¹¡£

int PyErr_BadArgument()
¤³¤ì¤Ï"PyErr_SetString(PyExc_TypeError, message)"¤ò¾Êά¤·¤¿¤â¤Î¤Ç¡¢ ¤³¤³¤Çmessage¤ÏÁȤ߹þ¤ßÁàºî¤¬ÉÔÀµ¤Ê°ú¿ô¤Ç¸Æ¤Ó½Ð¤µ¤ì¤¿¤È¤¤¤¦¤³¤È¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£ ¼ç¤ËÆâÉô¤Ç»ÈÍѤ¹¤ë¤¿¤á¤Î¤â¤Î¤Ç¤¹¡£

PyObject* PyErr_NoMemory()
Ìá¤êÃÍ: ¾ï¤Ë NULL.
¤³¤ì¤Ï"PyErr_SetNone(PyExc_MemoryError)"¤ò¾Êά¤·¤¿¤â¤Î¤Ç¡¢ NULL¤òÊÖ¤·¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢¥á¥â¥êÉÔ­¤Ë¤Ê¤Ã¤¿¤È¤­¡¢ ¥ª¥Ö¥¸¥§¥¯¥È³ä¤êÅö¤Æ´Ø¿ô¤Ï"return PyErr_NoMemory();"¤È ½ñ¤¯¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

PyObject* PyErr_SetFromErrno(PyObject *type)
Ìá¤êÃÍ: ¾ï¤Ë NULL.
C¥é¥¤¥Ö¥é¥ê´Ø¿ô¤¬¥¨¥é¡¼¤òÊÖ¤·¤ÆCÊÑ¿ôerrno¤òÀßÄꤷ¤¿¤È¤­¤Ë¡¢ ¤³¤ì¤ÏÎã³°¤òȯÀ¸¤µ¤»¤ë¤¿¤á¤ËÊØÍø¤Ê´Ø¿ô¤Ç¤¹¡£Âè°ìÍ×ÁǤ¬ À°¿ôerrnoÃͤǡ¢ÂèÆóÍ×ÁǤ¬ (strerror()«¤éÆÀ¤é¤ì¤ë)Âбþ¤¹¤ë ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤Ç¤¢¤ë¥¿¥×¥ë¥ª¥Ö¥¸¥§¥¯¥È¤ò¹½À®¤·¤Þ¤¹¡£¤½¤ì¤«¤é¡¢ "PyErr_SetObject(type, object)"¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ Unix¤Ç¤Ï¡¢errnoÃͤ¬EINTR¤Ç¤¢¤ë¤È¤­¡¢¤¹¤Ê¤ï¤Á ³ä¤ê¹þ¤Þ¤ì¤¿¥·¥¹¥Æ¥à¥³¡¼¥ë¤òɽ¤·¤Æ¤¤¤ë¤È¤­¡¢¤³¤ì¤Ï PyErr_CheckSignals()¤ò¸Æ¤Ó½Ð¤·¡¢¤½¤ì¤¬¥¨¥é¡¼¥¤¥ó¥¸¥±¡¼¥¿¤ò ÀßÄꤷ¤¿¾ì¹ç¤ÏÀßÄꤵ¤ì¤¿¤Þ¤Þ¤Ë¤·¤Æ¤ª¤­¤Þ¤¹¡£´Ø¿ô¤Ï¾ï¤ËNULL¤òÊÖ¤·¤Þ¤¹¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢¥·¥¹¥Æ¥à¥³¡¼¥ë¤¬¥¨¥é¡¼¤òÊÖ¤·¤¿¤È¤­¡¢¥·¥¹¥Æ¥à¥³¡¼¥ë¤Î ¥é¥Ã¥Ñ¡¼´Ø¿ô¤Ï"return PyErr_SetFromErrno(type);"¤È ½ñ¤¯¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

PyObject* PyErr_SetFromErrnoWithFilename(PyObject *type, char *filename)
Ìá¤êÃÍ: ¾ï¤Ë NULL.
PyErr_SetFromErrno()¤Ë»÷¤Æ¤¤¤Æ¡¢filename¤¬NULL¤Ç¤Ê¤¤¾ì¹ç¤Ë¡¢ ¤½¤ì¤¬type¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¤ËÂè»°°ú¿ô¤È¤·¤ÆÅϤµ¤ì¤ë¤È¤¤¤¦¤Õ¤ë¤Þ¤¤¤¬Äɲà ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£IOError¤ÈOSError¤Î¤è¤¦¤ÊÎã³°¤Î¾ì¹ç¤Ç¤Ï¡¢ ¤³¤ì¤¬Îã³°¥¤¥ó¥¹¥¿¥ó¥¹¤Îfilename°À­¤òÄêµÁ¤¹¤ë¤¿¤á¤Ë»È¤ï¤ì¤Þ¤¹¡£

PyObject* PyErr_SetFromWindowsErr(int ierr)
Ìá¤êÃÍ: ¾ï¤Ë NULL.
¤³¤ì¤ÏWindowsError¤òȯÀ¸¤µ¤»¤ë¤¿¤á¤ËÊØÍø¤Ê´Ø¿ô¤Ç¤¹¡£ 0¤Îierr¤È¤È¤â¤Ë¸Æ¤Ó½Ð¤µ¤ì¤¿¾ì¹ç¡¢GetLastError()¤¬ ÊÖ¤¹¥¨¥é¡¼¥³¡¼¥É¤¬Âå¤ê¤Ë»È¤ï¤ì¤Þ¤¹¡£ierr¤¢¤ë¤¤¤Ï GetLastError()¤Ë¤è¤Ã¤ÆÍ¿¤¨¤é¤ì¤ë¥¨¥é¡¼¥³¡¼¥É¤ÎWindowsÍѤÎÀâÌÀ¤ò ¼è¤ê½Ð¤¹¤¿¤á¤Ë¡¢Win32´Ø¿ôFormatMessage()¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£¤½¤ì¤«¤é¡¢ Âè°ìÍ×ÁǤ¬ierrÃͤÇÂèÆóÍ×ÁǤ¬(FormatMessage()¤«¤éÆÀ¤é¤ì¤ë) Âбþ¤¹¤ë¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤Ç¤¢¤ë¥¿¥×¥ë¥ª¥Ö¥¸¥§¥¯¥È¤ò¹½À®¤·¤Þ¤¹¡£¤½¤·¤Æ¡¢ "PyErr_SetObject(PyExc_WindowsError, object)"¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ ¤³¤Î´Ø¿ô¤Ï¾ï¤ËNULL¤òÊÖ¤·¤Þ¤¹¡£ ÍøÍѲÄǽÈϰÏ: Windows¡£

PyObject* PyErr_SetExcFromWindowsErr(PyObject *type, int ierr)
PyErr_SetFromWindowsErr()¤Ë»÷¤Æ¤¤¤Æ¡¢Á÷½Ð¤¹¤ëÎã³°¤Î·¿¤ò »ØÄꤹ¤ë°ú¿ô¤¬Äɲäµ¤ì¤Æ¤¤¤Þ¤¹¡£ ÍøÍѲÄǽÈϰÏ: Windows¡£ ¥Ð¡¼¥¸¥ç¥ó2.3 °Ê¹ß¤Ç¿·µ¬Äɲ䵤줿 »ÅÍͤǤ¹¡£

PyObject* PyErr_SetFromWindowsErrWithFilename(int ierr, char *filename)
Ìá¤êÃÍ: ¾ï¤Ë NULL.
PyErr_SetFromWindowsErr()¤Ë»÷¤Æ¤¤¤Æ¡¢filename¤¬NULL¤Ç¤Ê¤¤¾ì¹ç¤Ë¤Ï WindowsError¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¤ØÂè»°°ú¿ô¤È¤·¤ÆÅϤµ¤ì¤ë¤È¤¤¤¦¿¶¤ëÉñ¤¤¤¬ Äɲäµ¤ì¤Æ¤¤¤Þ¤¹¡£ ÍøÍѲÄǽÈϰÏ: Windows¡£

PyObject* PyErr_SetExcFromWindowsErrWithFilename(PyObject *type, int ierr, char *filename)
PyErr_SetFromWindowsErrWithFilename()¤Ë»÷¤Æ¤¤¤Æ¡¢ ȯÀ¸¤µ¤»¤ëÎã³°¤Î·¿¤ò»ØÄꤹ¤ë°ú¿ô¤¬Äɲäµ¤ì¤Æ¤¤¤Þ¤¹¡£ ÍøÍѲÄǽÈϰÏ: Windows¡£ ¥Ð¡¼¥¸¥ç¥ó2.3 °Ê¹ß¤Ç¿·µ¬Äɲ䵤줿 »ÅÍͤǤ¹¡£

void PyErr_BadInternalCall()
"PyErr_SetString(PyExc_TypeError, message)"¤ò¾Êά¤·¤¿¤â¤Î¤Ç¤¹¡£ ¤³¤³¤Çmessage¤ÏÆâÉôÁàºî(Î㤨¤Ð¡¢Python/C API´Ø¿ô)¤¬ÉÔÀµ¤Ê°ú¿ô¤È ¤È¤â¤Ë¸Æ¤Ó½Ð¤µ¤ì¤¿¤È¤¤¤¦¤³¤È¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£¼ç¤ËÆâÉô¤Ç»ÈÍѤ¹¤ë¤¿¤á¤Î¤â¤Î ¤Ç¤¹¡£

int PyErr_Warn(PyObject *category, char *message)
·Ù¹ð¥á¥Ã¥»¡¼¥¸¤ò½Ð¤·¤Þ¤¹¡£category°ú¿ô¤Ï·Ù¹ð¥«¥Æ¥´¥ê(°Ê²¼¤ò»²¾È) ¤«¤Þ¤¿¤ÏNULL¤Ç¡¢message°ú¿ô¤Ï¥á¥Ã¥»¡¼¥¸Ê¸»úÎó¤Ç¤¹¡£

¤³¤Î´Ø¿ô¤ÏÄ̾ï·Ù¹ð¥á¥Ã¥»¡¼¥¸¤òsys.stderr¤Ø¥×¥ê¥ó¥È¤·¤Þ¤¹¡£ ¤±¤ì¤É¤â¡¢¥æ¡¼¥¶¤¬·Ù¹ð¤ò¥¨¥é¡¼¤ØÊѹ¹¤¹¤ë¤è¤¦¤Ë»ØÄꤹ¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£ ¤½¤Î¤è¤¦¤Ê¾ì¹ç¤Ë¤Ï¡¢¤³¤ì¤ÏÎã³°¤òȯÀ¸¤µ¤»¤Þ¤¹¡£·Ù¹ðµ¡¹½¤¬¤â¤ÄÌäÂê¤Î¤¿¤á¤Ë ¤½¤Î´Ø¿ô¤¬Îã³°¤òȯÀ¸¤µ¤»¤ë¤È¤¤¤¦¤³¤È¤â²Äǽ¤Ç¤¹¡£(¼ÂÁõ¤Ç¤Ï¤½¤ÎÌñ²ð¤Ê»Å»ö¤ò ¹Ô¤¦¤¿¤á¤Ëwarnings¥â¥¸¥å¡¼¥ë¤ò¥¤¥ó¥Ý¡¼¥È¤·¤Þ¤¹)¡£ Îã³°¤¬È¯À¸¤µ¤»¤é¤ì¤Ê¤±¤ì¤Ð¡¢Ìá¤êÃͤÏ0¤Ç¤¹¡£¤¢¤ë¤¤¤Ï¡¢Îã³°¤¬È¯À¸¤µ¤» ¤é¤ì¤ë¤È-1¤Ç¤¹¡£(·Ù¹ð¥á¥Ã¥»¡¼¥¸¤¬¼ÂºÝ¤Ë¥×¥ê¥ó¥È¤µ¤ì¤ë¤«¤É¤¦¤«¤ò·èÄê ¤¹¤ë¤³¤È¤Ï¤Ç¤­¤º¡¢¤Þ¤¿²¿¤¬¤½¤ÎÎã³°¤Î¸¶°ø¤Ê¤Î¤«¤ò·èÄꤹ¤ë¤³¤È¤â¤Ç¤­¤Ê¤¤¡£ ¤³¤ì¤Ï°Õ¿ÞŪ¤Ê¤â¤Î¤Ç¤¹¡£)Îã³°¤¬È¯À¸¤·¤¿¾ì¹ç¡¢¸Æ¤Ó½Ð¤·¸µ¤ÏÄ̾ï¤ÎÎã³°½èÍý¤ò ¹Ô¤¤¤Þ¤¹(Î㤨¤Ð¡¢Py_DECREF()¤Ï»²¾È¤ò»ý¤Ã¤Æ¤ª¤ê¡¢¥¨¥é¡¼Ãͤò ÊÖ¤·¤Þ¤¹)¡£

·Ù¹ð¥«¥Æ¥´¥ê¤ÏWarning¤Î¥µ¥Ö¥¯¥é¥¹¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ ¥Ç¥Õ¥©¥ë¥È·Ù¹ð¥«¥Æ¥´¥ê¤ÏRuntimeWarning¤Ç¤¹¡£ ɸ½àPython·Ù¹ð¥«¥Æ¥´¥ê¤Ï"PyExc_"¤ËPythonÎ㳰̾¤¬Â³¤¯Ì¾Á°¤Î ¥°¥í¡¼¥Ð¥ëÊÑ¿ô¤òÍѤ¤¤ÆÊѹ¹¤Ç¤­¤Þ¤¹¡£¤³¤ì¤é¤Ï·¿PyObject*¤ò »ý¤Á¡¢¤¹¤Ù¤Æ¥¯¥é¥¹¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¹¡£¤½¤ì¤é¤Î̾Á°¤Ï PyExc_Warning, PyExc_UserWarning, PyExc_DeprecationWarning, PyExc_SyntaxWarning, PyExc_RuntimeWarning¤ª¤è¤ÓPyExc_FutureWarning¤Ç¤¹¡£ PyExc_Warning¤ÏPyExc_Exception¤Î¥µ¥Ö¥¯¥é¥¹¤Ç¤¹¡£ ¤½¤Î¾¤Î·Ù¹ð¥«¥Æ¥´¥ê¤ÏPyExc_Warning¤Î¥µ¥Ö¥¯¥é¥¹¤Ç¤¹¡£

·Ù¹ð¤ò¥³¥ó¥È¥í¡¼¥ë¤¹¤ë¤¿¤á¤Î¾ðÊó¤Ë¤Ä¤¤¤Æ¤Ï¡¢warnings¥â¥¸¥å¡¼¥ë¤Î ¥É¥­¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¤È¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥É¥­¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¤Î -W¥ª¥×¥·¥ç¥ó¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ ·Ù¹ð¥³¥ó¥È¥í¡¼¥ë¤Î¤¿¤á¤ÎC API¤Ï¤¢¤ê¤Þ¤»¤ó¡£

int PyErr_WarnExplicit(PyObject *category, char *message, char *filename, int lineno, char *module, PyObject *registry)
¤¹¤Ù¤Æ¤Î·Ù¹ð¤Î°À­¤òÌÀ¼¨Åª¤ËÀ©¸æ¤·¤¿·Ù¹ð¥á¥Ã¥»¡¼¥¸¤ò½Ð¤·¤Þ¤¹¡£ ¤³¤ì¤ÏPython´Ø¿ôwarnings.warn_explicit()¤ÎľÀÜŪ¤Ê¥é¥Ã¥Ñ¤Ç¡¢ ¤µ¤é¤Ë¾ðÊó¤òÆÀ¤ë¤Ë¤Ï¤½¤Á¤é¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£¤½¤³¤ËÀâÌÀ¤µ¤ì¤Æ¤¤¤ë¥Ç¥Õ¥©¥ë¥È¤Î ¸ú²Ì¤òÆÀ¤ë¤¿¤á¤Ë¡¢module¤Èregistry°ú¿ô¤ÏNULL¤ËÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

int PyErr_CheckSignals()
¤³¤Î´Ø¿ô¤ÏPython¤Î¥·¥°¥Ê¥ë½èÍý¤È¤ä¤ê¤È¤ê¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ ¥·¥°¥Ê¥ë¤¬¤½¤Î¥×¥í¥»¥¹¤ØÁ÷¤é¤ì¤¿¤«¤É¤¦¤«¥Á¥§¥Ã¥¯¤·¡¢¤½¤¦¤Ê¤é¤ÐÂбþ¤¹¤ë ¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ signal⥸¥å¡¼¥ë¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢ ¤³¤ì¤ÏPython¤Ç½ñ¤«¤ì¤¿¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤ò¸Æ¤Ó½Ð¤»¤Þ¤¹¡£¤¹¤Ù¤Æ¤Î¾ì¹ç¤Ç¡¢ SIGINTΥǥե©¥ë¥È¤Î¸ú²Ì¤Ï KeyboardInterruptÎã³°¤òȯÀ¸¤µ¤»¤ë¤³¤È¤Ç¤¹¡£Îã³°¤¬È¯À¸¤·¤¿¾ì¹ç¡¢ ¥¨¥é¡¼¥¤¥ó¥¸¥±¡¼¥¿¤¬ÀßÄꤵ¤ì¡¢´Ø¿ô¤Ï1¤òÊÖ¤·¤Þ¤¹¡£ ¤½¤¦¤Ç¤Ê¤±¤ì¤Ð¡¢´Ø¿ô¤Ï0¤òÊÖ¤·¤Þ¤¹¡£¥¨¥é¡¼¥¤¥ó¥¸¥±¡¼¥¿¤¬°ÊÁ°¤Ë ÀßÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¤½¤ì¤¬¥¯¥ê¥¢¤µ¤ì¤ë¤«¤É¤¦¤«¤ï¤«¤é¤Ê¤¤¡£

void PyErr_SetInterrupt()
¤³¤Î´Ø¿ô¤ÏÇѻߤµ¤ì¤Æ¤¤¤Þ¤¹¡£SIGINT·¥°¥Ê¥ë¤¬ Åþ㤷¤¿±Æ¶Á¤ò¥·¥ß¥å¥ì¡¼¥È¤·¤Þ¤¹ -- ¼¡¤Ë PyErr_CheckSignals()¤¬¸Æ¤Ð¤ì¤ë¤È¤­¡¢ KeyboardInterrupt¤ÏÁ÷½Ð¤µ¤ì¤ë¤Ç¤·¤ç¤¦¡£¥¤¥ó¥¿¥×¥ê¥¿¥í¥Ã¥¯¤ò ÊÝ»ý¤¹¤ë¤³¤È¤Ê¤¯¸Æ¤Ó½Ð¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

PyObject* PyErr_NewException(char *name, PyObject *base, PyObject *dict)
Ìá¤êÃÍ: ¿·¤¿¤Ê»²¾È.
¤³¤Î¥æ¡¼¥Æ¥£¥ê¥Æ¥£´Ø¿ô¤Ï¿·¤·¤¤Îã³°¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¤ÆÊÖ¤·¤Þ¤¹¡£ name°ú¿ô¤Ï¿·¤·¤¤Îã³°¤Î̾Á°¡¢module.class·Á¼°¤Î Cʸ»úÎó¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ base¤Èdict°ú¿ô¤ÏÄ̾ïNULL¤Ç¤¹¡£¤³¤ì¤Ï¤¹¤Ù¤Æ¤ÎÎã³°¤Î¤¿¤á¤Î¥ë¡¼¥È¡¢ ÁȤ߹þ¤ß̾Exception(C¤Ç¤ÏPyExc_Exception¤È¤·¤Æ¥¢¥¯¥»¥¹²Äǽ) ¤«¤éƳ½Ð¤µ¤ì¤¿¥¯¥é¥¹¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¤Þ¤¹¡£ ¿·¤·¤¤¥¯¥é¥¹¤Î__module__°À­¤Ïname°ú¿ô¤ÎÁ°È¾Éôʬ(ºÇ¸å¤Î¥É¥Ã¥È¤Þ¤Ç)¤Ë ÀßÄꤵ¤ì¡¢¥¯¥é¥¹Ì¾¤Ï¸åȾÉôʬ(ºÇ¸å¤Î¥É¥Ã¥È¤Î¸å)¤ËÀßÄꤵ¤ì¤Þ¤¹¡£ base°ú¿ô¤ÏÂå¤ï¤ê¤Î¥Ù¡¼¥¹¥¯¥é¥¹¤ò»ØÄꤹ¤ë¤¿¤á¤Ë»È¤¨¤Þ¤¹¡£ dict°ú¿ô¤Ï¥¯¥é¥¹ÊÑ¿ô¤È¥á¥½¥Ã¥É¤Î¼­½ñ¤ò»ØÄꤹ¤ë¤¿¤á¤Ë»È¤¨¤Þ¤¹¡£

void PyErr_WriteUnraisable(PyObject *obj)
Îã³°¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¤¬¥¤¥ó¥¿¥×¥ê¥¿¤¬¼ÂºÝ¤ËÎã³°¤òȯÀ¸¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤¤È¤­¤Ë¡¢ ¤³¤Î¥æ¡¼¥Æ¥£¥ê¥Æ¥£´Ø¿ô¤Ï·Ù¹ð¥á¥Ã¥»¡¼¥¸¤òsys.stderr¤Ø¥×¥ê¥ó¥È¤·¤Þ¤¹¡£ Î㤨¤Ð¡¢Îã³°¤¬__del__()¥á¥½¥Ã¥É¤ÇȯÀ¸¤·¤¿¤È¤­¤Ë»È¤ï¤ì¤Þ¤¹¡£

ȯÀ¸¤µ¤»¤é¤ì¤Ê¤¤Îã³°¤¬À¸¤¸¤¿¥³¥ó¥Æ¥­¥¹¥È¤òÆÃÄꤹ¤ë¤¿¤á¤Î°ì¤Ä¤Î°ú¿ôobj¤È¤È¤â¤Ë ´Ø¿ô¤¬¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£obj¤Îrepr¤¬·Ù¹ð¥á¥Ã¥»¡¼¥¸¤Ë¥×¥ê¥ó¥È¤µ¤ì¤ë¤Ç¤·¤ç¤¦¡£



¤´°Õ¸«¤ä¤´»ØÅ¦¤ò¤ª´ó¤»¤Ë¤Ê¤ê¤¿¤¤Êý¤Ï¡¢ ¤³¤Î¥É¥­¥å¥á¥ó¥È¤Ë¤Ä¤¤¤Æ... ¤ò¤´Í÷¤¯¤À¤µ¤¤¡£