.. title:: Pythonã§å¿ƒç†å®Ÿé¨“ - 例題19-5 例題19-5:ioHubを試㙠============================== **A:** ã ã‚ã‚ã‚ã‚ã‚ã£ã£ï¼ ãµãŒãƒ¼ãƒ¼ã£ï¼ï¼ **B:** ã…ã‚ã£ï¼ ãªã‚“ã ãªã‚“ã 。 **A:** ï¼ƒï¼„ï¼…ï¼†â€™ï¼ ï¼›ï¼šï¼ï¼ **B:** ãªã‚“ã Aã•ã‚“ã‹ã€‚æš‘ã•ã§ç†±æš´èµ°ã—ã¾ã—ãŸã‹ã€‚ **A:** ã¯ã‚ã¯ã‚ã€ãªã‚“ã ã€Bå›ã„ãŸã®ã‹ã€‚ **B:** Aã•ã‚“ãŒå…¥ã£ã¦ãã‚‹å‰ã‹ã‚‰ãšãƒ¼ã£ã¨ã„ã¾ã™ãŒã€‚ã¾ã‚è½ã¡ç€ã„ã¦ãŠã¿ã‚„ã’ã®ãšã‚“ã プリッツã§ã‚‚食ã¹ã¦ãã ã•ã„よ。 **A:** ã†ã€ã†ã‚€ã€‚ã™ã¾ã‚“ãªã€å–り乱ã—ã¦ã€‚ **B:** ã§ã€ã©ãƒ¼ã—ãŸã‚“ã§ã™ã‹ã€‚ **A:** ã‚ã‚ã€ãれãŒã ãªãƒ»ãƒ»ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã£ï¼ãƒƒãƒƒï¼ **B:** ã©ã†ã©ã†ã€‚ã•ã•ã€é£Ÿã¹ã¦é£Ÿã¹ã¦ã€‚ **A:** ã¯ã‚ã¯ã‚。ãã‚“ãªã‚ã‘ã 。察ã—ã‚。 **B:** ãªã‚“ã ã‹çŸ¥ã‚‰ãªã„ã‘ã©ãŠãŠã£ã´ã‚‰ã«å‡ºæ¥ãªã„事ãªã‚“ã§ã™ã。 **A:** ãŠãŠã£ã´ã‚‰ã«å‡ºæ¥ãªã„事ãªã‚“ã§ã™ã‚ˆã€‚ãれã ã‘ã§ã‚‚大変ãªã®ã«ä»Šå¹´åº¦ã¯ä½“èª¿ãŒæ‚ªãã¦ã。ã„ã‚„ã€æœ¬å½“ã«ä½“èª¿ãŒæ‚ªã„ã¨ä»•事もã¸ã£ãŸãれもãªã„ã。猛暑ãŒç¶šãã¾ã™ãŒèªè€…ã®çš†ã•ã‚“ã‚‚ãれãれも体調ã®ãŠæ°—ã‚’ã¤ã‘下ã•ã„ãã£ã¦ãªã‚‚んよ。 **B:** å…¨ç„¶ä½“èª¿ãŒæ‚ªã„人ã®ã‚ˆã†ã«è¦‹ãˆã¾ã›ã‚“ãŒã€‚ **A:** ãれよ。最近よã†ã‚„ãå°‘ã—元気ãŒå‡ºã¦ãã¦ãªã€‚ãƒã‚¿ã¯ã„ã‚ã„ã‚ã‚ã£ãŸã‚“ã ãŒã©ã†ã«ã‚‚気力ãŒã‚ã„ã¦ã“ãªãã¦æ”¾ã£ãŸã‚‰ã‹ã—ã«ã—ã¦ã„ãŸã®ã ãŒã€å…ƒæ°—ãŒã‚ã‚‹ã†ã¡ã«å°‘ã—ã§ã‚‚åã出ã—ã¦ãŠã“ã†ã¨æ€ã£ã¦ã€‚ **B:** ã¯ã‚ã€ãりゃマメãªã“ã¨ã§ã€‚ã§ã€ä»Šå›žã®ãŠé¡Œã¯ï¼Ÿ **A:** æ–°ãŸã«ä¾‹é¡Œ20ã«ã™ã‚‹ã‹ã©ã†ã‹è¿·ã£ãŸã‚“ã ãŒãªã€å˜ç™ºã®è©±é¡Œã ã—PsychoPyã®è©±ãªã‚“ã§ã€ä¾‹é¡Œ19ã®ç¶šãã¨ã„ã†ä½ç½®æ¼¬ã‘ã«â€¦ã˜ã‚ƒãªã„ã€ä½ç½®ã¥ã‘ã«ã—ãŸã€‚ **B:** ã¾ãŸPsychoPyã§ã™ã‹ã€‚ã§ã€ä½•を? **A:** 今回ã®ãŠé¡Œã¯PsychoPy 1.77ã§å°Žå…¥ã•れ㟠**ioHub** ã§ã‚る。ã“れã¯ã¨ã¦ã‚‚大ããªå¤‰æ›´ãªã®ã ãŒã€å˜ãªã‚‹ãƒžã‚¤ãƒŠãƒ¼ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚¢ãƒƒãƒ—扱ã„ã®ã‚ˆã†ã«ã„ã¤ã‚‚ã®ã”ã¨ãã•らã£ã¨å°Žå…¥ã•れãŸã®ã§é¢é£Ÿã‚‰ã£ãŸã€‚ã§ã€è§£èª¬ã‚’書ã‹ãªã„ã¨ã„ã‘ãªã„ãªã‚ã¨æ€ã£ã¦ã„ãŸã‚‰ã‚‚ã†1.78ãŒãƒªãƒªãƒ¼ã‚¹ã•れã¦ã—ã¾ã£ã¦æ£ç›´ã‚ã¾ãã‚‹ã—ã•ã«ã¤ã„ã¦ã„ã‘ãªã„感ãŒã‚る。 **B:** ioHubã¨ã„ã†ã®ã¯ä½•ã§ã™ã‹ã? **A:** ã“れã¯é‡Žå¿ƒçš„ãªãƒ‘ッケージã§ã€ä»£è¡¨çš„ãªå¸‚販アイトラッカーを統一的ãªã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã§æ‰±ã†ã‚‚ã®ã ï¼ioHubを覚ãˆãŸã‚‰ã€ã„ã¡ã„ã¡å€‹ã€…ã®ã‚¢ã‚¤ãƒˆãƒ©ãƒƒã‚«ãƒ¼ã®ãƒ©ã‚¤ãƒ–ラリã«ç¿’熟ã™ã‚‹å¿…è¦ãŒãªã„ã¨ã„ã†çŠ¶æ…‹ã«ãªã‚‹ã®ã ï¼ï¼ï¼ˆã°ã°ãƒ¼ã‚“) **B:** ãµã†ã‚“。ãªã‚“ã‹Aã•ã‚“ãŒèˆˆå¥®ã—ã¦ã„ã‚‹ã®ã¯ã‚ã‹ã‚‹ã‚“ã§ã™ãŒã€ã‚¢ã‚¤ãƒˆãƒ©ãƒƒã‚«ãƒ¼ã£ã¦ã€ä½•?ã©ã“を見ã¦ã„ã‚‹ã‹èª¿ã¹ã‚‹ã‚„ã¤ã§ã™ã‹ï¼Ÿ **A:** ã†ã‚€ã€‚ã ã„ãŸã„ãれã§ã‚ˆã„ãžã‚ˆã€‚ **B:** んー。Aã•ã‚“ã®å£ã¶ã‚Šã ã¨å‡„ãã†ã§ã™ãŒã€ã»ã¨ã‚“ã©ã®äººã«ã¯é–¢ä¿‚ãªã„話ãªã‚“ã˜ã‚ƒãªã„ã‹ãªã‚。 **A:** ãµã£ã€‚ã„ãらç§ã§ã‚‚アイトラッカーãªã©ã¨ã„ã†ãƒžãƒ‹ã‚¢ãƒƒã‚¯ãªãƒ‡ãƒã‚¤ã‚¹ã®è§£èª¬ã‚’ã“ã“ã§ã™ã‚‹ã¤ã‚‚りã¯ãªã„ãžã€‚ioHubã¯ãŸã ã®ã‚¢ã‚¤ãƒˆãƒ©ãƒƒã‚«ãƒ¼ç”¨ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースã§ã¯ãªãã€ãã®å®Ÿæ…‹ã¯ **多様ãªãƒ‡ãƒã‚¤ã‚¹ã‚’ディスプレイã®ãƒªãƒ•レッシュレートã«ç¸›ã‚‰ã‚Œãšé«˜é€Ÿãƒãƒ¼ãƒªãƒ³ã‚°** ã™ã‚‹ãŸã‚ã®ãƒ‘ッケージãªã®ã ï¼ ã¤ã¾ã‚Šã€ :doc:`例題11-1 <11-1>` ã§å–り上ã’ãŸå•題ã«å¯¾ã™ã‚‹ :doc:`例題13-1 <13-1>` ã®è§£æ±ºç–を通常ã®ã‚ーボードやマウスã«å¯¾ã—ã¦æä¾›ã™ã‚‹ã‚‚ã®ãªã®ã ッï¼ï¼ï¼ **B:** Aã•ã‚“ã€è½ã¡ç€ã„ã¦ã€‚マニアックã¨ã‹ã„ã†ã¨Så…ˆç”ŸãŒæ³£ãã¾ã™ã‚ˆã€‚ **A:** ã¯ã‚ã¯ã‚ã€‚ã‚‚ã†æ¯åˆ‡ã‚Œã—ã¦ããŸã€‚ã¨ã«ã‹ãã€å応時間計測精度ã«ä¸Žãˆã‚‹ãƒ‡ã‚£ã‚¹ãƒ—ãƒ¬ã‚¤ãƒªãƒ•ãƒ¬ãƒƒã‚·ãƒ¥ãƒ¬ãƒ¼ãƒˆã®æ‚ªå½±éŸ¿ã‹ã‚‰è§£æ”¾ã•れる **ã¯ãš** ã®ãƒ‘ッケージãªã®ã 。ã“れãŒèˆˆå¥®ã›ãšã«ãŠã‚‰ã‚Œã‚‹ã‹ï¼ **B:** ã†ãƒ¼ã‚“。æ£ç›´ã¤ã„ã¦ã„ã‘ãªã„ãªã‚…。ãã‚‚ãも例題11ã®æ™‚ã¯Aã•ã‚“ã®æ–¹ãŒé†’ã‚ã¦ãŸã˜ã‚ƒãªã„ã§ã™ã‹ã€‚リフレッシュレートã®å½±éŸ¿ãŒã‚ã‚‹ã“ã¨ã¯ä»•æ–¹ãŒãªã„ã‚“ã ã‹ã‚‰ã€ãれã¯ãれã§ä»˜ãåˆãˆã°ã„ã„ã£ã¦ã€‚ã‚ã€èªè€…ã®ã¿ãªã•ã‚“ã§ä½•ã®è©±ã‹ã•ã£ã±ã‚Šåˆ†ã‹ã‚‰ãªã„ã‹ãŸã¯ã¾ãš :doc:`例題11-1 <11-1>` 㨠:doc:`例題11-2 <11-2>` ã‚’èªã‚“ã§ãã ã•ã„ã。余裕ãŒã‚れ㰠:doc:`例題13-1 <13-1>` ã‚‚ãŠå‹§ã‚ã—ã¦ãŠãã¾ã™ã€‚ **A:** ã†ã‚€ã€‚対ç–ãŒãªã„ãªã‚‰ã†ã¾ã付ãåˆã£ã¦ã„ãã—ã‹ãªã„ãŒã€ã›ã£ã‹ãç´ æ™´ã‚‰ã—ã„対ç–パッケージãŒå‡ºãŸã‚“ã ã‹ã‚‰ä½¿ã†ã—ã‹ãªã„ã ã‚? **B:** ã¾ã‚ãりゃãã†ã§ã™ãŒâ€¦ã€‚ã¨ã“ã‚ã§ã•ã£ãã®ã€Œè§£æ”¾ã•れる **ã¯ãš** ã€ã¦ã®ãŒæ°—ã«ãªã£ã¦ã„ã‚‹ã‚“ã§ã™ãŒã€‚ãªã‚“ã§ã™ã‹ã€Œã¯ãšã€ã£ã¦ã€‚ **A:** ã‚ã‚… ãれã¯ã ãªâ€¦ ãã®â€¦ **B:** Aã•ã‚“Aã•ã‚“ï¼ ã—ã£ã‹ã‚Šï¼ï¼ ãšã‚“ã プリッツ食ã¹ã¦ï¼ **A:** ã¶ãµã£ï¼ ã’ãµã’ãµã£ï¼ å£ã«çªã£è¾¼ã‚€ãªã€‚大丈夫ã ã‚ã„。 **B:** ã„ã‚„ã€ä½“調悪ã„ã¨ã‹è¨€ã£ã¦ãŸã‹ã‚‰ã€‚ **A:** ã¾ã‚ä½“èª¿ã¯æ‚ªã„ã‚“ã ãŒã€ãれã¯ã•ã¦ãŠãioHubã®è©±ã 。ç†å±ˆã®ä¸Šã§ã¯ãã†ãªã‚“ã ãŒã€å®Ÿéš›ã«ä½¿ã£ã¦ã¿ã‚‹ã¨å®Ÿã«å¾®å¦™ã¨è¨€ã†ã‹â€¦ã€‚ãã®â€¦ã€‚ **B:** ã‚ã¾ã‚Šè‰¯ã„ãªã„ã‚“ã§ã™ã‹ã€‚ **A:** ã„ã‚„ã€è‰¯ã„。 **B:** (椅åã‹ã‚‰ã™ã¹ã‚Šè½ã¡ã¦)ãªã‚“ã˜ã‚ƒãã‚Šã‚ƒï¼ ã˜ã‚ƒã‚ãªã‚“ãªã‚“ã§ã™ã‹ã€‚ **A:** ã„ã‚„ã€ç†å±ˆé€šã‚Šã«å‹•作ã—ã¦ã„ã‚‹ã‚“ã 。ãã®ã†ãˆã§ã€å¾®å¦™ã¨è¨€ã†ã‹ãªã‚“ã¨ã„ã†ã‹ã€‚ **B:** ã‚ーã£ã£ã€ã˜ã‚Œã£ãŸã„。ã•ã£ã•ã¨è©±ã‚’進ã‚ã¦ãã ã•ã„ã‚ˆï¼ **A:** ã†ã‚€ã€‚今回ã¯PsychoPy 1.77を使用ã—ã¦USBã‚ーボード入力ã®å応速度をioHubã¨å¾“æ¥ã®å…¥å‡ºåŠ›ã§æ¯”較ã—ãŸã®ã 。ãã®çµæžœã€ç¢ºã‹ã«ioHubã«ã‚ˆã‚‹é«˜é€Ÿãƒãƒ¼ãƒªãƒ³ã‚°ã®åŠ¹æžœã¯ç¢ºèªã§ããŸã®ã ãŒã€å¹³å‡å応時間ã§è©•価ã™ã‚‹é™ã‚Šå¾“æ¥ã®å…¥å‡ºåŠ›ã‹ã‚‰ã»ã‚“ã®ã‚ãšã‹ãªæ”¹å–„ã—ã‹è¦‹ã‚‰ã‚Œãªã„ã“ã¨ã‚‚ã‚ã‹ã£ãŸã®ã 。以上。 **B:** ã¡ã‚‡ã€è©±é€²ã‚ã™ãŽï¼ **A:** 以下ã«ç¤ºã™ã®ãŒä»Šå›žä½¿ç”¨ã—ãŸã‚µãƒ³ãƒ—ルプãƒã‚°ãƒ©ãƒ ã§ã‚る。4ã¤ã‚ã‚‹ã®ã ãŒã€ã¾ãšã¯æ™®é€šã«å¾“æ¥ã®æ–¹æ³•ã§ã‚ー押ã—ã®å応時間を計測ã™ã‚‹19-5-gpc2000.py。 + 4ã¤ã¾ã¨ã‚ã¦ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰â†’ `19-5.zip <source/19-5.zip>`_ + 行番å·ãªã—ã®ã‚½ãƒ¼ã‚¹ãƒ•ァイルをダウンãƒãƒ¼ãƒ‰â†’ `19-5-gpc2000.py <source/19-5-gpc2000.py>`_ .. literalinclude:: source/19-5-gpc2000.py :language: python :encoding: shift-jis :linenos: :lineno-match: **A:** ã¾ã‚見ã¦ã®é€šã‚Šã®ãƒ—ãƒã‚°ãƒ©ãƒ ã ãŒã€ãƒã‚¤ãƒ³ãƒˆã¨è¨€ã†ã‹ãƒ•ツーã¯ã¾ãšã‚ã‹ã‚“ãªã„点を一ã¤ã€‚今回ã¯åå¿œæ™‚é–“è¨ˆæ¸¬ã®æ£ç¢ºã•を期ã™ãŸã‚ã« **自動ã‚ー押ã—マシーン** を作æˆã—ãŸã€‚ã¨ã„ã£ã¦ã‚‚テã‚トーãªUSBã‚ーボードをã°ã‚‰ã—ã¦ãƒ¡ã‚«ãƒ‹ã‚«ãƒ«ãƒªãƒ¬ãƒ¼ãƒœãƒ¼ãƒ‰ã«æŽ¥ç¶šã—ãŸã ã‘ã§ã‚る。 .. figure:: img/19-5-01.jpg **B:** 自動ã‚ー押ã—マシーン? ã“れãŒï¼Ÿ **A:** ãã€‚æ‰‹ã«æŒã£ã¦ã„ã‚‹ã®ãŒUSBã‚ーボードをã°ã‚‰ã—ãŸåŸºç›¤ã€‚基盤ã¡ã‚…ã†ã‹ã‚·ãƒ¼ãƒˆã よãªã€‚メンブレンå¼ã®ã‚ーボードã«ã‚ˆãã‚るタイプã ã€‚ã‚¯ãƒªãƒƒãƒ—ã§æŠ¼ã•ãˆã¦ã„ã‚‹ã¨ã“ã‚ã‹ã‚‰èµ¤ã¨é»’ã®ã‚±ãƒ¼ãƒ–ルãŒå‡ºã¦ã„ã‚‹ã ã‚? ã“れã¯ã‚¹ãƒšãƒ¼ã‚¹ã‚ーã«ç›¸å½“ã™ã‚‹æŽ¥ç‚¹ã«ã‚±ãƒ¼ãƒ–ルを圧ç€ã—ã¦ã‚ã‚‹ã‚“ã ãŒã€ã“ã®ã‚±ãƒ¼ãƒ–ルをメカニカルリレーボードã«ã¤ãªã„ã§ã€PCã«ã‚ーを押ã•ã›ã‚‹ã¨ã„ã†ã‚ã‘ã 。ã™ã”ã„ã ã‚。 **B:** ãªã‚“ã ã‹ã™ã”ã安ã£ã½ã„工作ã«è¦‹ãˆã‚‹ã‚“ã§ã™ãŒã€‚ã¨ã„ã†ã‹å·¥ä½œã¨è¨€ã†ãƒ¬ãƒ™ãƒ«ã§ã‚‚ãªã„よã†ãªâ€¦ **A:** ã„ã„ã‚“ã よ動ãゃ。 **B:** ã§ã€ãƒ¡ã‚«ãƒ‹ã‚«ãƒ«ãƒªãƒ¬ãƒ¼ãƒœãƒ¼ãƒ‰ã£ã¦ãªã‚“ã§ã™ã‹ï¼Ÿ **A:** ん。ã“ã‚Œã¯æ–‡å—通り機械å¼ã®æŽ¥ç‚¹ãŒçµ„ã¿è¾¼ã¾ã‚ŒãŸãƒœãƒ¼ãƒ‰ã§ã€é›»ç£çŸ³ãªã©ã®åŠ›ã§ã‚¹ã‚¤ãƒƒãƒã‚’æ–‡å—通り「押ã™ã€ã€‚今回使用ã—ãŸã®ã¯Interface社ã®PCI-2503ã¨ã„ã†ãƒœãƒ¼ãƒ‰ã 。é…延時間ã¯10ms以内ã¨ã•れã¦ã„る。 **(2013/8/28追記:詳ã—ãã¯ãƒšãƒ¼ã‚¸ä¸‹éƒ¨ã®è£œè¶³ãã®1ã‚’ã”覧ãã ã•ã„)** .. figure:: img/19-5-02.jpg **B:** ãŠãŠã€ãªã‚“ã ã‹çŸ¥ã‚‰ãªã„ã‘ã©ãƒœãƒ¼ãƒ‰ã®å†™çœŸãŒå†™ã‚‹ã¨ã¡ã‚‡ã£ã¨ã™ã”ã„ã“ã¨ã‚’ã—ã¦ã„るよã†ãªã‚¤ãƒ¡ãƒ¼ã‚¸ã«ãªã‚‹ã‹ã‚‰ä¸æ€è°ã 。 **A:** プãƒã‚°ãƒ©ãƒ ã®è§£èª¬ã€‚ã“ã®ãƒœãƒ¼ãƒ‰ã¯ãƒ¡ãƒ¼ã‚«ãƒ¼ã‹ã‚‰C言語用ã®ãƒ©ã‚¤ãƒ–ãƒ©ãƒªãŒæä¾›ã•れã¦ã„ã‚‹ã®ã§ã€ :doc:`例題9 <09-1>` ã§ç´¹ä»‹ã—㟠**ctypes** を使ã£ã¦pythonã‹ã‚‰åˆ©ç”¨ã™ã‚‹ã€‚4行目ã§ctypesをインãƒãƒ¼ãƒˆã€11行目ã§ãƒ©ã‚¤ãƒ–ラリをãƒãƒ¼ãƒ‰ã—ã¦12行目ã§ãƒ‡ãƒã‚¤ã‚¹ã‚’オープンã—ã¦ä½¿ç”¨å¯èƒ½ãªçŠ¶æ…‹ã«ã™ã‚‹ã€‚ã§ã€13行目ã®DioOutputByte()ã¨ã„ã†é–¢æ•°ã ãŒã€ç¬¬2å¼•æ•°ã§æŒ‡å®šã—ãŸç•ªå·ã®ã‚¹ã‚¤ãƒƒãƒã®çŠ¶æ…‹ã‚’ç¬¬3引数ã®å€¤ã§ã—ã¦ã„る。具体的ã«ã¯obj.DioOutputByte(device,0,0)ã§ã‚¹ãƒšãƒ¼ã‚¹ã‚ーを押ã—ã¦ã„ãªã„状態ã€obj.DioOutputByte(device,0,1)ã§æŠ¼ã—ã¦ã„る状態ã«ãªã‚‹ã€‚ **B:** ãµã‚€ãµã‚€ã€‚13行目ã§ã¯ã¾ãšæŠ¼ã—ã¦ã„ãªã„状態ã«ã—ã¦ã„ã‚‹ã‚“ã§ã™ã? **A:** ãã®é€šã‚Šã€‚後ã¯24行目ã‹ã‚‰27行目。試行ãŒå§‹ã¾ã£ã¦ã‹ã‚‰offsetã§æŒ‡å®šã—ãŸæ™‚刻ãŒçµŒéŽã—ãŸã‚‰ã€DioOutputByte()を使ã£ã¦ã‚¹ãƒšãƒ¼ã‚¹ã‚ーを押ã—ãŸçŠ¶æ…‹ã«ã™ã‚‹ã€‚ã§ã€ãã®ç›´å¾Œã«ã€ŒæŠ¼ã—ãŸçŠ¶æ…‹ã«ã—ãŸæ™‚刻ã€ã‚’onTimeã«ä¿å˜ã—ã¦ãŠã„ã¦ã€ä½•度もDioOutputByte()を呼ã°ãªã„よã†ã«onFlagã‚’Trueã«ã—ã¦ãŠã。 **B:** …。 **A:** ã§ã€29行目ã§getKeys()を使ã£ã¦ã‚ー押ã—イベントをå–得。押ã•れãŸã‚ーã®ãƒªã‚¹ãƒˆã®ä¸ã«ã‚¹ãƒšãƒ¼ã‚¹ã‚ーãŒã‚れã°ã€onTimeã‹ã‚‰ã®å·®ã‚’ä¿å˜ã—ã¦ãŠã。msecå˜ä½ã®å€¤ãŒæ¬²ã—ã„ã‘ã©getTimeã¯secã‚’è¿”ã™ã®ã§1000å€ã—ã¦ãŠã。 **B:** ãªã‚‹ã»ã©ã€‚ **A:** 後ã¯ç‰¹ã«è§£èª¬ã®å¿…è¦ãªã„ã。34行目ã§ãã£ã¡ã‚Šflip()ã—ã¦ã„ã‚‹ã“ã¨ã«æ³¨æ„ã™ã‚‹ãらã„ã‹ã€‚34行目を実行ã™ã‚‹ã¨ãƒ‡ã‚£ã‚¹ãƒ—レイã®åž‚ç›´åŒæœŸã‚’å¾…ã¤ã®ã§ã€æœ€å¤§ç´„16.7msecè¶³æ¢ã‚を食らã†ã€‚ã“ã®ã¸ã‚“ã®ç†å±ˆãŒã‚ã‹ã‚‰ãªã„方㯠:doc:`例題11-2 <11-2>` を復習ã—ã¦ãã ã•ã„。 **B:** 今回ã¯[発展]を付ã‘ã¨ãã¹ã内容ã˜ã‚ƒãªã„ã‹ãªã‚。 **A:** flipを終ãˆãŸã‚‰DioOutputByte()ã—ã¦ã¾ãŸã‚¹ãƒšãƒ¼ã‚¹ã‚ーを押ã—ã¦ã„ãªã„状態ã«ã—ã¦ãŠã。100回計測を終ãˆãŸã‚‰ãƒ†ã‚ストファイルã«çµæžœã‚’書ãã ã—ã¦çµ‚了。続ã„ã¦ã“れをioHubを使ã†ã‚ˆã†ã«æ›¸ãç›´ã—ãŸ19-5-gpc2000_iohub.py。 + 行番å·ãªã—ã®ã‚½ãƒ¼ã‚¹ãƒ•ァイルをダウンãƒãƒ¼ãƒ‰â†’ `19-5-gpc2000_iohub.py <source/19-5-gpc2000_iohub.py>`_ .. literalinclude:: source/19-5-gpc2000_iohub.py :language: python :encoding: shift-jis :linenos: :lineno-match: **A:** æ£ç›´ioHubã®ãƒ‰ã‚ュメントやソースをã¡ã‚ƒã‚“ã¨èªã‚“ã§ãªã„ã‚“ã§ã‚µãƒ³ãƒ—ルプãƒã‚°ãƒ©ãƒ ã®ä¸¸å†™ã—ãªã‚“ã ãŒã€8行目ã§psychopy.iohubã‹ã‚‰launchHubServerã¨EventConstantsをインãƒãƒ¼ãƒˆã™ã‚‹ã€‚ã§ã€9行目。Hubサーãƒã‚’åˆæœŸåŒ–ã—ã¦ioã¨ã„ã†å¤‰æ•°ã«æ ¼ç´ã—ã¦ãŠã。モニターã¯å„自ãŒã¤ã‘ã¦ã„ã‚‹åç§°ã«æ›¸ãæ›ãˆã¦ãã ã•ã„。ã¾ã‚ã¾ãšdefaultã¨ã„ã†ãƒ¢ãƒ‹ã‚¿ã¯ã‚ã‚‹ã¯ãšã€‚ **B:** むむむ。ã„ããªã‚Šã‚ã‹ã‚‰ãªã„ãžã€‚Hubサーãƒã£ã¦ãªã‚“ã§ã™ã‹ï¼Ÿ **A:** 直感的ã«è¨€ã†ã¨ã€ioHubã¯åˆºæ¿€æç¤ºã®ãƒ—ãƒã‚°ãƒ©ãƒ ã¨ç‹¬ç«‹ã«å‹•作ã—ã¦ã€è£ã§å‹æ‰‹ã«ã‚ーボードやマウスを監視ã™ã‚‹ã®ã ã€‚å‹æ‰‹ã«ã‚„ã£ã¦ã„ã‚‹ã‹ã‚‰ã“ãåž‚ç›´åŒæœŸå¾…ã¡ã«æ•ã‚れãªã„ã®ã§ã‚る。ãã®å‹æ‰‹ãƒ—ãƒã‚°ãƒ©ãƒ をスタートã•ã›ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ãŒlaunchHubServer()ã§ã‚る。 **B:** ã†ãƒ¼ã‚“ã€ã‚ã‹ã£ãŸã‚ˆã†ãªã€ã‚ã‹ã‚‰ãªã„よã†ãªã€‚ **A:** ã§ã€æ¬¡ã¯å®Œå…¨ã«ãŠã¾ã˜ãªã„モードãªã‚“ã ãŒâ€¦12行目。PsychoPyã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’é–‹ãã„ã¤ã‚‚ã®ãƒ¡ã‚½ãƒƒãƒ‰ãªã‚“ã ãŒã€ioHubã¨ãƒªãƒ³ã‚¯ã•ã›ã‚‹ãŸã‚ã«ã„ã‚ã„ã‚ã¨é¢å€’ãã•ã„。10行目ã§ioHubãŒç®¡ç†ã—ã¦ã„るディスプレイをå–å¾—ã—ã¦displayã¨ã„ã†å¤‰æ•°ã«æ ¼ç´ã—ã¦ãŠã„ã¦ã€ãã“ã‹ã‚‰è§£åƒåº¦ã‚„モニターåã€å˜ä½ã€ã‚¹ã‚¯ãƒªãƒ¼ãƒ³ç•ªå·ãªã©ã‚’å–å¾—ã—ã¦ã„る。ã¾ã‚コピペã™ã‚Šã‚ƒã„ã„よ。コピペ。 **B:** ã¯ã‚。 **A:** ã§ã€åŒã˜ã‚ˆã†ã«17行目ã§ioHubãŒç®¡ç†ã—ã¦ã„ã‚‹ã‚ーボードをå–å¾—ã—ã¦keyboardã¨ã„ã†å¤‰æ•°ã«æ”¾ã‚Šè¾¼ã‚“ã§ãŠã。ã‚ã¨ã®ãƒ¡ã‚«ãƒ‹ã‚«ãƒ«ãƒªãƒ¬ãƒ¼åˆæœŸåŒ–ãªã©ã¯ã•ã£ãã¨åŒã˜ã€‚ **B:** …。 **A:** ã§ã€æ¬¡ãŒåބ介ãªã‚“ã ãŒã€å„è©¦è¡Œã®æœ€åˆã€‚32行目ã‹ã‚‰34行目。ã©ã†ã‚‚ioHubã®ã‚ー押ã—イベントãŒä¿æŒã—ã¦ã„る時刻ãŒåބ介ã§ã€ã¾ãšè©¦è¡Œã®é–‹å§‹æ™‚ã«ä¸€å›žflip()を空打ã¡ã—ã¦ãŠã„ã¦flipã—ãŸæ™‚刻を得る。ã“ã®å€¤ãŒã©ã†ã‚‚ioHubã®æ™‚刻ã¨èµ·ç‚¹ãŒä¸€è‡´ã—ã¦ã„ã‚‹ã£ã½ã„ã®ã§ã€ã“れをå応時間計測ã®åŸºæº–ã¨ã™ã‚‹ã€‚一方ã€ãƒ¡ã‚«ãƒ‹ã‚«ãƒ«ãƒªãƒ¬ãƒ¼ã§ã‚¹ãƒšãƒ¼ã‚¹ã‚ーを「押ã—ãŸã€æ™‚刻ã¯ã“ã®æ–¹æ³•ã§å–å¾—ã™ã‚‹ã‚ã‘ã«ã¯ã„ã‹ãªã„ã®ã§ã€flip時刻をå–å¾—ã—ãŸå¾Œã«clock.reset()ã—ã¦ã€Œæ™‚計åˆã›ã€ã‚’ã—ã¦ãŠãã€ã‚¹ãƒšãƒ¼ã‚¹ã‚ー押ã—ã®æ™‚刻ã¯clock.getTime()ã§æ¸¬ã‚‹ã“ã¨ã«ã™ã‚‹ã€‚「時計åˆã›ã€ã¯34行目ã ã。 **B:** むむむむむ? 全然ã‚ã‹ã‚‰ãªã„ãžï¼Ÿ **A:** ã‹ãªã‚Šç„¡èŒ¶ãªã“ã¨ã€ã¨ã„ã†ã‹æ™®é€šã®ç”¨é€”ãªã‚‰ã¾ãšæ¸¬ã‚‰ãªã„時間を測ã£ã¦ã„ã‚‹ã‹ã‚‰ã‚„ã‚„ã“ã—ã„ã®ã¯ä»•æ–¹ãŒãªã„。ã‚ã¨ã€33行目ã®clearEvents('all')ã¯ioHubã«ã‚ャッシュã•れã¦ã„ã‚‹ã‚¤ãƒ™ãƒ³ãƒˆã‚’å…¨ã¦æ¶ˆåŽ»ã™ã‚‹ã¨ã„ã†ã‚‚ã®ã€‚消去ã—ã¦ãŠã‹ãªã„ã¨ã†ã¾ãå‹•ã‹ãªã‹ã£ãŸã®ã§å…¥ã‚Œã¦ã‚る。ã“ã®ã¸ã‚“㯠**呪術** ã®ä¸–界ã ãªã€‚ãŠã¾ã˜ãªã„ã€ãŠã¾ã˜ãªã„。 **B:** 呪術ã§ã™ã‹ã€‚ **A:** 後ã®é•ã„ã¯ã‚ー押ã—イベントã®å–得。42行目。従æ¥ã®getKeys()ã§ã¯ãªãioHubã®ã‚ーボードオブジェクトã®getEvent()を使ã†ã€‚戻ã£ã¦ããŸãƒªã‚¹ãƒˆã‹ã‚‰ã‚ー押ã—イベントオブジェクトをå–りã ã—ã€keyデータ属性をã¿ã‚Œã°ã©ã®ã‚ãƒ¼ãŒæŠ¼ã•れãŸã®ã‹ã‚ã‹ã‚‹ã€‚ã‚ーåã¯å¾“æ¥ã®PsychoPyã¨åŒã˜ã€‚多分。 **B:** 多分ã£ã¦ã€ã‚ーãŸã€‚ **A:** ç§ãŒè©¦ã—ãŸç¯„囲ã§ã¯åŒã˜ã€‚ソースをã¾ã èªã‚“ã§ãªã„ã‹ã‚‰çµ¶å¯¾ãã†ã¨ã¯è¨€ã‚ãªã„。ã¨ã‚‚ã‹ãã€timeã¨ã„ã†ãƒ‡ãƒ¼ã‚¿å±žæ€§ã«ã‚ãƒ¼æŠ¼ã—æ™‚刻ãŒå…¥ã£ã¦ã„ã‚‹ã®ã§ã€ã“れをflip時刻ã‹ã‚‰å¼•ã‘ã°è©¦è¡Œé–‹å§‹æ™‚刻を基準ã¨ã—ãŸã‚ãƒ¼æŠ¼ã—æ™‚刻ãŒã‚ã‹ã‚‹ã€‚後ã¯ã‚¤ãƒ™ãƒ³ãƒˆã‚’å–å¾—ã—ãŸã‚‰clearEvents()。48行目。ãã—ã¦ãªãœã ã‹ã‚ˆãã‚ã‹ã‚‰ãªã„ã‚“ã ãŒä¸€è©¦è¡Œçµ‚ã‚ã£ãŸå¾Œã™ãã«æ¬¡ã®è©¦è¡Œã«è¡Œã“ã†ã¨ã™ã‚‹ã¨ä¸Šæ‰‹ãã‚ー押ã—ãŒæ‹¾ãˆãªã‹ã£ãŸã®ã§è©¦è¡Œé–“ã«0.1secã®æ™‚é–“ã‚’ã¨ã£ã¦ã‚る。53行目。後ã¯åŒã˜ã€‚ **B:** ã¶ãµãƒ¼ã£ã€‚ãªã‚“ã ã‹ã‚ˆãã‚ã‹ã‚Šã¾ã›ã‚“ã‘ã©ãŠã¾ã˜ãªã„ã¨ã‹å¤šã„ã§ã™ã。Aã•ã‚“ã‚‚ã¾ã 使ã„ã“ãªã›ã¦ã„ãªã„感ã˜ã§ã™ã‹ï¼Ÿ **A:** ん。ãƒã‚¯ã«æ™‚é–“ãŒãªã„ã®ã§ãªã‚。ã§ã€æ¬¡ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã ãŒâ€¦ **B:** ãˆã€ã¾ã ã‚ã‚‹ã‚“ã§ã™ã‹ï¼Ÿ **A:** 最åˆã«4ã¤ã‚ã‚‹ã£ã¦è¨€ã£ãŸã˜ã‚ƒãªã„ã®ã€‚ **B:** ãã†ã„ã‚れã¦ã¿ã‚Œã°â€¦ã€‚ã§ã‚‚ã€å¾Œãªã‚“ã®ãƒ—ãƒã‚°ãƒ©ãƒ ãŒã‚ã‚‹ã‚“ã§ã™ï¼Ÿ **A:** ã¡ã‚‡ã£ã¨ã“れらã®ãƒ—ãƒã‚°ãƒ©ãƒ ã‚’å‹•ã‹ã—ã¦ç–‘å•ã«æ€ã£ãŸã“ã¨ãŒã‚ã£ãŸã®ã§ã€ç¢ºèªç”¨ã«æ›¸ã„ãŸã®ã 。普段ãªã‚‰ã¾ãšã“ã®äºŒã¤ã‚’走らã›ã¦çµæžœã‚’見ã¦ã€è§£èª¬ã—ã¦ã‹ã‚‰æ¬¡ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã«å…¥ã‚‹ã¨ã“ã‚ãªã‚“ã ãŒã€æ£ç›´ãã“ã¾ã§ã¦ã„ãã„ã«ã™ã‚‹å…ƒæ°—ãŒãªã„ã®ã§ä¸€æ°—ã«ã‚„る。 **B:** ã™ã‚。気åˆã§ã™ãªã€‚ **A:** 次ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã¯19-5-gpc2000_noflip.py。19-5-gpc2000.pyをベースã«ã—ã¦ã„ã¾ã™ã€‚ + 行番å·ãªã—ã®ã‚½ãƒ¼ã‚¹ãƒ•ァイルをダウンãƒãƒ¼ãƒ‰â†’ `19-5-gpc2000_noflip.py <source/19-5-gpc2000_noflip.py>`_ .. literalinclude:: source/19-5-gpc2000_noflip.py :language: python :encoding: shift-jis :linenos: :lineno-match: :lines: 22-33 **B:** ã‚れã€é€”ä¸ã ã‘? **A:** 29行目ã‹ã‚‰33行目以外ã¯å…¨ã19-5-gpc2000.pyã¨åŒã˜ã ã‹ã‚‰çœç•¥ã—ãŸã€‚ã“ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã§ã¯ã€25行目ã§ã‚¹ãƒšãƒ¼ã‚¹ã‚ーを押ã—ãŸå¾Œã€flip()ã«ç§»ã‚‰ãšã«å…¨åŠ›ã§getKeys()ã—ã¾ãã£ã¦ã‚¹ãƒšãƒ¼ã‚¹ã‚ãƒ¼ãŒæŠ¼ã•れるã®ã‚’å¾…ã¤ã€‚ **flip()ã«å½±éŸ¿ã•れãªã„本æ¥ã®getKeys()ã®åŠ›ã‚’è©•ä¾¡ã™ã‚‹ãŸã‚ã®ã‚‚ã®** ã ãªã€‚本æ¥ã‚¹ãƒšãƒ¼ã‚¹ã‚ー押ã—ã®å応時間を記録ã—ãŸã‚‰ç›´ã¡ã«æ¬¡ã®è©¦è¡Œã«ç§»ã£ã¦ã‚‚å•題ãªã„ã®ã ãŒã€ **é¢å€’ãã•ã„** ã®ã§å¾‹å„€ã«draw()ã¨ã‹flip()ã¨ã‹ã—ã¦trialDurationãŒçµŒéŽã™ã‚‹ã®ã‚’å¾…ã¤ã€‚ **B:** Aã•んらã—ã„ã§ã™ãªã€‚ **A:** ã¾ã‚ã“ã“ã¾ã§æ¥ãŸã‚‰å¯Ÿã—ã¦ã„ãŸã ã‘ã‚‹ã¨æ€ã†ãŒã€æœ€å¾Œã®ãƒ—ãƒã‚°ãƒ©ãƒ ã¯â€¦ **B:** 19-5-gpc2000_noflip.pyã®ioHub版ã€ã§ã™ã‹ã€‚ **A:** 御åç”。 + 行番å·ãªã—ã®ã‚½ãƒ¼ã‚¹ãƒ•ァイルをダウンãƒãƒ¼ãƒ‰â†’ `19-5-gpc2000_noflip_iohub.py <source/19-5-gpc2000_noflip_iohub.py>`_ .. literalinclude:: source/19-5-gpc2000_noflip_iohub.py :language: python :encoding: shift-jis :linenos: :lineno-match: :lines: 35-48 **B:** 例ã«ã‚ˆã£ã¦19-5-gpc2000_iohub.pyã‹ã‚‰ã®å¤‰æ›´ç‚¹ã ã‘ã§ã™ã。 **A:** ã†ã‚€ã€‚スペースã‚ーを押ã—ãŸã‚‰ç›´ã¡ã«å…¨åŠ›ã§getEvents()ã—ã¾ãる。ã§ã€ã‚¹ãƒšãƒ¼ã‚¹ã‚ãƒ¼ãŒæŠ¼ã•れãŸã®ã‚’確èªã—ãŸã‚‰å応時間を記録ã™ã‚‹ã€‚ **B:** ãれã ã‘? **A:** ãれã ã‘。ã•ã‚ã€çµæžœã‚’見ã¦ã¿ã‚ˆã†ã€‚ **B:** ã‚れã€ã‚°ãƒ©ãƒ•ã‚‚ã‚‚ã†ç”¨æ„ã—ã¦ã‚ã‚‹ã‚“ã§ã™ã‹ï¼Ÿ 普段ãªã‚‰ã¼ããŒã€Œã˜ã‚ƒã‚走らã›ã¦ã¿ã¾ã—ょã†ã‹ã€ã¨ã‹è¨€ã£ã¦â€¦ **A:** é¢å€’ãã•ã„ã£ã¤ã£ã¦ã‚“ã ã‚。何度も言ã‚ã›ã‚“ãªã€‚ .. figure:: img/19-5-03.png **B:** ãˆãƒ¼ã£ã¨ã“れã¯ã©ã†è¦‹ã‚Œã°ã„ã„ã‚“ã§ã™ã‹ã。 **A:** å応時間ã®ãƒ’ストグラムã 。横軸ãŒå応時間ã€ç¸¦è»¸ãŒè©¦è¡Œæ•°ã€‚プãƒã‚°ãƒ©ãƒ ã‚’ãれãžã‚Œ2回走らã›ã¦ãƒ‡ãƒ¼ã‚¿ã‚’åˆã‚ã›ã¦ã‚ã‚‹ã®ã§ç·è©¦è¡Œæ•°ã¯200試行ã 。ã¾ãšã¯å·¦ä¸Šã®é’ã„グラフã¨å·¦ä¸‹ã®èµ¤ã„グラフを見ãŸã¾ãˆã€‚é’ãŒioHubã«ã‚ˆã‚‹çµæžœã€èµ¤ãŒå¾“æ¥ã®æ–¹æ³•ã«ã‚ˆã‚‹çµæžœã 。 **B:** ãŠãŠãŠã€‚従æ¥ã®æ–¹æ³•ã£ã¦ã‚„ã¤ã¯34msecãらã„ã¨50msecãらã„ã«é›†ä¸ã—ã¦ã‚‹ã˜ã‚ƒãªã„ã§ã™ã‹ã€‚集ä¸ã£ã¦è¨€ã†ã‹ã€ãã“ã«ã—ã‹æ£’ãŒç«‹ã£ã¦ã„ãªã„ã—。 **A:** ãã†ã€‚ã“れãŒä¾‹é¡Œ11ã§è¨€ã£ã¦ããŸã“ã¨ã®åˆ¥ã®è¡¨ç¾ã§ã€å¾“æ¥ã®æ–¹æ³•ã§ã¯ã‚ー押ã—å応時間ã®è¨ˆæ¸¬ã¯ãƒ‡ã‚£ã‚¹ãƒ—レイã®ãƒªãƒ•レッシュ周期ã«ç¸›ã‚‰ã‚Œã‚‹ã“ã¨ãŒã¨ã¦ã‚‚良ãã‚ã‹ã‚‹ã€‚今回使用ã—ãŸãƒ‡ã‚£ã‚¹ãƒ—レイã¯60Hzã€ãƒªãƒ•レッシュ周期ã¯16.7msec。二ã¤ã®åˆ†å¸ƒã®é–“éš”ã¨ã»ã¼ä¸€è‡´ã—ã¦ã„ã‚‹ã ã‚ã†ï¼Ÿ **B:** ãªã‚‹ã»ã©ã€‚ã“れã¯ã™ã”ãã‚ã‹ã‚Šã‚„ã™ã„ã§ã™ã。グラフ上ã®é»’ã„点線ã¯ï¼Ÿ **A:** 縦ã®ç‚¹ç·šãŒå応時間ã®å¹³å‡ã€æ¨ªã®ç‚¹ç·šãŒå¹³å‡å€¤Â±1SDを示ã—ã¦ã„る。 **B:** ãªã‚‹ã»ã©ãªã‚‹ã»ã©ã€‚ **A:** ã§ã€å·¦ä¸Šã®ioHubã®çµæžœãªã‚“ã ãŒã€30msecå‰ã‹ã‚‰50msecä½ã¾ã§ãªã らã‹ã«åˆ†å¸ƒã—ã¦ã„る。ã¡ã‚‡ã£ã¨35msec付近ãŒå¤šã„ã‹ãªï¼Ÿã¨æ€ã†ã‘ã©ã“れã¯å›žæ•°ã‚’増やã™ã¨æ¶ˆãˆã¦ã—ã¾ã†ã‹ã‚‚ã—れãªã„。ãã®ç‚¹ã¯å¾Œã§è§¦ã‚Œã‚‹ã€‚ **B:** ディスプレイã®ãƒªãƒ•レッシュã«é–¢ä¿‚ãªãã‚ー押ã—ã‚’å–å¾—ã§ãã‚‹ã‹ã‚‰åˆ†å¸ƒãŒã°ã‚‰ã‘ã‚‹ã‚“ã§ã™ã‚ˆã。ãれã«ã—ã¦ã‚‚ã‚ーを押ã—ã¦ã‹ã‚‰å®Ÿéš›ã«æ¤œå‡ºã•れるã¾ã§å¹³å‡ã§38msecã‚‚ã‹ã‹ã‚‹ã‚“ã ãªã‚。 **A:** ã•ã£ã書ã„ãŸã‚ˆã†ã«ãƒ¡ã‚«ãƒ‹ã‚«ãƒ«ãƒªãƒ¬ãƒ¼ã®å‹•作ã§10msec未満ã®é…å»¶ãŒã‚ã‚‹ã‹ã‚‰ã€å®Ÿéš›ã«ã¯ã‚‚ã†å°‘ã—速ã„ã¨æ€ã‚れる。ã¾ã‚ã“ã‚“ãªã‚‚ã‚“ã ã‚。 **B:** 左下ã¨å·¦ä¸Šã®ã‚°ãƒ©ãƒ•ã®å·®ã¯æ´ç„¶ã€‚ã„ã‚„ã‚ã€ãれã„ãªçµæžœã˜ã‚ƒãªã„ã§ã™ã‹ã€‚ **A:** ã†ã‚€ã€‚ioHubãŒç†å±ˆé€šã‚Šã«å‹•作ã—ã¦ã„ã‚‹ã“ã¨ãŒç¢ºèªã§ããŸã€ã¨ã„ã†ã®ãŒã“ã®ã“ã¨ã‚ˆã€‚å•題ã¯å³å´ã®ãƒ—ãƒãƒƒãƒˆãªã‚“ã ãŒâ€¦ã€‚ **B:** å³å´ï¼Ÿ **A:** å³ä¸Šã®ã‚·ã‚¢ãƒ³ã®ã‚°ãƒ©ãƒ•ãŒioHubã§flip()ã›ãšã«å…¨åŠ›ã§ã‚ー押ã—ã‚’å¾…ã£ãŸã‚‚ã®ã€å³ä¸‹ã®ãƒžã‚¼ãƒ³ã‚¿ã®ã‚°ãƒ©ãƒ•ãŒå¾“æ¥ã®æ–¹æ³•ã§flip()ã›ãšã«å…¨åŠ›ã§å¾…ã£ãŸã‚‚ã®ã€‚ã¾ãšã¯å³ä¸‹ã‹ã‚‰è¦‹ã¦ã¿ã‚ˆã†ã€‚ **B:** ãŠãŠã€ã“れã¯åˆ†å¸ƒãŒã‚·ãƒ£ãƒ¼ãƒ—ã§ã™ã。 **A:** 従æ¥ã®æ–¹æ³•ã§å…¨åŠ›ã§ã‚ー押ã—ã‚’å¾…ã¦ã°å¹³å‡å応時間ã¯32.18msecã€SDãŒ2.38msec。ã“ã®åˆ†å¸ƒã‚’ç´„33msecã§äºŒã¤ã«åˆ†å‰²ã™ã‚Œã°ã¡ã‚‡ã†ã©å·¦ä¸‹ã®flip()ã—ãŸæ™‚ã¨åŒã˜ã‚ˆã†ãªæ„Ÿã˜ã«ãªã‚‹ã€‚ã¤ã¾ã‚Šã€flip()ã—ãŸæ™‚ã¯ã“ã®ç´„33msecã®ã‚¿ã‚¤ãƒŸãƒ³ã‚°ã®flip()ã«é–“ã«åˆãˆã°å‰åŠã®ã€é–“ã«åˆã‚ãªã‹ã£ãŸæ™‚ã«ã¯å¾ŒåŠã®åˆ†å¸ƒã«å«ã¾ã‚Œã‚‹ã¨ã„ã†ã‚ã‘ã 。 .. figure:: img/19-5-04.png **B:** ãµã‚€ãµã‚€ã€‚ **A:** ã§ã€å³ä¸Šã®å›³ã‚’見ã¦ã‚‚らã„ãŸã„ã®ã ãŒã€‚ **B:** ã‚らら? ã“れã¯flip()ã‚’å¾…ãŸãšã«å…¨åŠ›ã§ã‚ー押ã—ã‚’å¾…ã£ãŸçµæžœãªã‚“ã§ã™ã‚ˆã? ãšã„ã¶ã‚“é…ã„試行ãŒã‚ã‚‹ã¿ãŸã„ã§ã™ã‘ã©ï¼Ÿ **A:** ãã†ã€‚ã“れãŒç§ãŒã™ã£ãりã—ãªã„ç†ç”±ã€‚ **flip()ã›ãšã«å…¨åŠ›ã§å¾…ã¤ã¨ã€ioHubã®æ–¹ãŒæˆç¸¾ãŒæ‚ªã„** ã®ã§ã‚る。最åˆç§ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã®æ›¸ãæ–¹ãŒæ‚ªã„ã®ã‹ã¨æ€ã£ã¦æ‚©ã‚“ã ã®ã ãŒã€ã‚ˆã考ãˆã¦ã¿ã‚Œã° **ioHubã¯ãƒ‡ã‚£ã‚¹ãƒ—レイã®ãƒªãƒ•レッシュをã—よã†ãŒã—ã¾ã„ãŒé–¢ä¿‚ãªãã‚ー押ã—ã‚’å–å¾—ã™ã‚‹ã®ã ã‹ã‚‰ã€flip()ã—よã†ãŒå…¨åŠ›ã§å¾…ã¨ã†ãŒé–¢ä¿‚ãªã„** ã¨ç†è«–上ã¯äºˆæ¸¬ã™ã¹ããªã®ã 。ãã†ã„ã†è¦³ç‚¹ã§å·¦ä¸Šã¨å³ä¸Šã®ã‚°ãƒ©ãƒ•を見比ã¹ã¦ã¿ã‚‹ã¨ã€ç¢ºã‹ã«ioHubã§å…¨åЛ待ã¡ã—ãŸçµæžœ(å³ä¸Š)ã¨flip()ã—ãŸçµæžœ(左上)ã¯ã»ã¨ã‚“ã©å¤‰ã‚らãªã„。検定ã¯ã—ã¦ã„ãªã„ãŒã€ã™ã‚‹æ„味ãŒã‚ã‚‹ã¨ã¯æ€ãˆãªã„。 **B:** …。 **A:** å³ä¸‹ã®å¾“æ¥ã®æ–¹æ³•ã§å…¨åЛ待ã¡ã—ãŸã‚‚ã®ã¨æ¯”ã¹ã‚‹ã¨ã€æ˜Žã‚‰ã‹ã«ioHubã®çµæžœã¯é…å»¶ã—ã¦ã„る。ã—ã‹ã‚‚å¹³å‡å€¤ãƒ™ãƒ¼ã‚¹ã§åˆ¤æ–ã™ã‚‹é™ã‚Šã€é…å»¶é‡ã¯å¾“æ¥ã®æ–¹æ³•ã§flip()ã—ãªãŒã‚‰è¨ˆæ¸¬ã—ãŸçµæžœã¨ã»ã¨ã‚“ã©å·®ãŒãªã„。もã¡ã‚ん従æ¥ã®æ–¹æ³•ã§flip()ã—ãªãŒã‚‰ã®æ™‚ã¨åˆ†å¸ƒãŒå¤§ããç•°ãªã‚‹ã®ã§ã€ã“ã“ã«æ„義を見出ã™äººã«ã¨ã£ã¦ã¯ioHubã¯æœ‰æ„義ãªã‚‚ã®ã‹ã‚‚知れãªã„。ã ãŒç§ã¯â€¦ã€‚ **B:** ç§ã¯ï¼Ÿ **A:** …言葉ãŒå‡ºã¦ã“ãªã„ãªã€‚ioHubãŒç›®æŒ‡ã—ã¦ã„る到é”点ã¯ã™ã°ã‚‰ã—ã„ã‚‚ã®ã§ã€ãœã²ãã“ã¸åˆ°é”ã§ãるよã†ã«å¿œæ´ã—ã¦ã„る。ã ãŒã€ãƒ‰ã‚ュメントãŒã‚ã¾ã‚Šæ•´ã£ã¦ã„ãªã„ç¾çжã§ã€ioHubã¸ã®ä¹—りæ›ãˆã‚’ç©æ¥µçš„ã«ä»–人ã«å‹§ã‚よã†ã¨ã„ã†æ°—ã«ã¯ãªã‚Œãªã„ã®ã¯ç¢ºã‹ã 。 **B:** ãªã‚“ã§é…å»¶ã—ã¡ã‚ƒã†ã‚“ã§ã™ã‹ã? **A:** ã¾ã ソースコードも全然èªã‚“ã§ãªã„ã—ã€æ†¶æ¸¬ã§ç™ºè¨€ã™ã‚‹ã®ã¯æŽ§ãˆãŸã„。 **B:** むー。ãã†ã§ã™ã‹ã€‚仕方ã‚りã¾ã›ã‚“ã。 **A:** ãã†ãã†ã€ãã†ã„ãˆã°ç§è‡ªèº«ã¯ã¾ã 確èªãƒ—ãƒã‚°ãƒ©ãƒ を書ã„ã¦ã„ãªã„ã‚“ã ãŒã€ioHubã¯ä»–ã«ã‚‚Ctrl-Cã¨ã„ã£ãŸctrlã‚ーã¨ã®åŒæ™‚押ã—ã‚„ã€ã‚ーリリースã«ã‚‚対応ã—ã¦ã„るらã—ã„ã®ã§ã€ã‚€ã—ã‚ã“ã£ã¡ã®æ”¹å–„点ã«ä¾¡å€¤ã‚’見出ã™äººã«ã¯ãŠå‹§ã‚ã—ãŸã„。 **B:** ãã€ãれé‡è¦ãªæ‹¡å¼µã˜ã‚ƒãªã„ã§ã™ã‹ï¼ **A:** ã‚ã‚。ã§ã‚‚今日ã¯ãã“ã¾ã§ç¢ºèªã™ã‚‹å…ƒæ°—ãŒãªãã¦ã€‚ã“ã“ã§ç· ã‚ããりã¨ã„ã†äº‹ã«ã—ãŸã„。 **B:** ãªã‚“ã‹ã—ã‚“ã©ãã†ã§ã™ã。大丈夫ã§ã™ã‹ã€‚ **A:** ã‚ã‚。ã¡ã‚‡ã£ã¨å®¶ã«å¸°ã£ã¦ä¼‘ã‚€ã‚。ãã†ãã†ã€æœ€å¾Œã«ã²ã¨ã¤ã€ä¼è¨€ãŒã€‚ **B:** ãªã‚“ã§ã—ょã†ï¼Ÿ **A:** 「ã“ã®ç‰©èªžã¯ãƒ•ィクションã§ã‚りã€å®Ÿåœ¨ã®ã—ãŒãªã„大妿•™å“¡ãªã©ã¨ã¯ä¸€åˆ‡é–¢ä¿‚ã”ã–ã„ã¾ã›ã‚“ã€ã£ã¦æ›¸ã„ã¨ã„ã¦ã€‚ãšã‚“ã プリッツã¯ã„ãŸã ã„ã¦ã„ãよ。んã˜ã‚ƒã€‚ **B:** (呆れ顔ã§ï¼‰â€¦ãƒ›ãƒ³ãƒˆã«ã‚ã‚“ãŸä½“調悪ã„ã®ï¼Ÿ 補足ãã®1 ~~~~~~~~~~ 使用ã—ãŸæ©Ÿæã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™ã€‚ .. csv-table:: :delim: $ CPU$Intel Core i7 2600K マザーボード$Intel DZ68DB (Intel Z68 chipset) OS$Windows7(x86) SP1 PsychoPy$1.77.01 ã‚ーボード$ELECOM製 USB接続ã‚ーボード(åž‹ç•ªä¸æ˜Ž) ã‚ーボードドライãƒ$Windows 標準USBã‚ーボードドライム「自動ã‚ー押ã—マシーンã€ã®ä»•組ã¿ã«ã¤ã„ã¦è£œè¶³ã—ã¾ã™ã€‚メンブレンå¼ã®ã‚ãƒ¼ãƒœãƒ¼ãƒ‰ã¯æ–‡å—通りä¸ã«ã‚ーボードã®é…線をプリントã—ãŸã‚·ãƒ¼ãƒˆãŒäºŒæžšå…¥ã£ã¦ã„ã¦(下図左上)ã€ã‚ーを押ã—ã“ã‚€ã¨äºŒæžšã®ã‚·ãƒ¼ãƒˆã«ãƒ—リントã•れã¦ã„ã‚‹æŽ¥ç‚¹ãŒæŽ¥è§¦ã—ã¦é›»æµãŒæµã‚Œã‚‹ã“ã¨ã«ã‚ˆã£ã¦ã€Œã‚ãƒ¼ãŒæŠ¼ã•れãŸã€ã“ã¨ã«ãªã‚Šã¾ã™(下図å³ä¸Š)。ã‚ーボードを分解ã—ã¦ã‚·ãƒ¼ãƒˆã‚’å–りã ã—ã€ã‚¹ãƒšãƒ¼ã‚¹ã‚ãƒ¼ã®æŽ¥ç‚¹ã®ã¨ã“ã‚ã«å°Žç·šã‚’å–り付ã‘ã¦ã€ã“れをメカニカルリレーã¨å‘¼ã°ã‚Œã‚‹è£…ç½®ã«æŽ¥ç¶šã—ã¾ã™ã€‚メカニカルリレーã®ä¸ã«ã¯é›»ç£çŸ³ãŒå…¥ã£ã¦ã„ã¦ã€é›»ç£çŸ³ã‚’ON/OFFã™ã‚‹ã¨ä¸ã®ãƒ—レートãŒå‹•ã„ã¦ã‚¹ã‚¤ãƒƒãƒãŒON/OFFã•れã¾ã™ã€‚本文ä¸ã®PC内部ã®å†™çœŸã®ãƒœãƒ¼ãƒ‰(Interface PCI-2503)ã¯åŸºæ¿ä¸Šã«ã“ã®ãƒ¡ã‚«ãƒ‹ã‚«ãƒ«ãƒªãƒ¬ãƒ¼ã‚’æè¼‰ã—ã¦ã„ã¦ã€ãƒ—ãƒã‚°ãƒ©ãƒ 上ã‹ã‚‰é«˜é€Ÿã«ã‚¹ã‚¤ãƒƒãƒã‚’ON/OFFã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚ã“ã®ON/OFFã‚’PsychoPyã®ã‚¹ã‚¯ãƒªãƒ—ト上ã‹ã‚‰è¡Œã£ã¦ã‚ー押ã—イベントを発生ã•ã›ã¦ãれを検出ã™ã‚‹ã®ãŒä»Šå›žã®ã‚µãƒ³ãƒ—ルプãƒã‚°ãƒ©ãƒ ã§ã™ã€‚ .. figure:: img/19-5-05.png 補足ãã®2 ~~~~~~~~~~ 本文ä¸ã®ioHubã®çµæžœ(é’ã„グラフ)ã¨å¾“æ¥ã®æ–¹æ³•ã®çµæžœ(赤ã„グラフ)ã®ãれãžã‚Œã«flipãªã—ã®çµæžœ(マゼンタã®ã‚°ãƒ©ãƒ•)ã‚’é‡ããŸå›³ã‚’以下ã«ç¤ºã—ã¾ã™ã€‚従æ¥ã®æ–¹æ³•ã§ã¯flipã®å¾Œã«å›žã£ã¦ã—ã¾ã£ãŸ65個(32.5%)ã®ã‚µãƒ³ãƒ—ルã¯é…å»¶ã—ã¦ã—ã¾ã£ã¦ã„ã¾ã™ãŒã€æ®‹ã‚Šã®135個ã®ã‚µãƒ³ãƒ—ルã¯flipãªã—ã®çµæžœã¨æ¯”ã¹ã¦ã‚‚é…れã¦ã„ã¾ã›ã‚“。一方ã€ioHubã§ã¯81個(41%)ã‚‚ã®ã‚µãƒ³ãƒ—ルãŒflipãªã—ã®æœ€é…ã®binよりé…れã¦ã„ã¾ã™ã€‚ã“れã§ã¯ç„¡æ¡ä»¶ã«ã€ŒioHubã®çµæžœã®æ–¹ãŒå„ªã‚Œã¦ã„ã‚‹ã€ã¨ã¯è¨€ãˆãªã„ã¨ã„ã†ã®ãŒAã•ã‚“ã®åˆ¤æ–ã§ã™ã€‚ .. figure:: img/19-5-06.png