EIP / Pipes and Filters


EIP

Chapter 3 : ¥Ñ¥¤¥×¤È¥Õ¥£¥ë¥¿¡¼ (Pipes and Filters)

¿¤¯¤Î´ë¶ÈÅý¹ç¥·¥¹¥Æ¥à¤Ë¤ª¤¤¤Æ¡¢¤¢¤ëñ°ì¤Î¥¤¥Ù¥ó¥È¤Ï°ìÏ¢¤ÎÆÃÄê¤Îµ¡Ç½¤ò¼Â¹Ô¤¹¤ë½èÍý¥¹¥Æ¥Ã¥×¤Î°ú¤­¶â¤ò°ú¤¯¡£ ¤¿¤È¤¨¤Ð¡¢¤¢¤ë¿·µ¬Ãíʸ¤¬¥á¥Ã¥»¡¼¥¸¥Õ¥©¡¼¥à¤È¤·¤Æ¤ï¤ì¤ï¤ì¤Î²ñ¼Ò¤ËÆϤ¤¤¿¤È²¾Äꤷ¤Þ¤·¤ç¤¦¡£ ¤¢¤ë¤Ò¤È¤Ä¤ÎÍ×µá¤Ï¡¢ÅðÄ°¼Ô¤¬¸ÜµÒ¤ÎÃíʸ¤òÅðÄ°¤¹¤ë¤Î¤òËɤ°¤¿¤á¤Ë¡¢¤½¤Î¥á¥Ã¥»¡¼¥¸¤Ï°Å¹æ²½¤µ¤ì¤Æ¤¤¤ë¤³¤È¤«¤â¤·¤ì¤Þ¤»¤ó¡£ £²ÈÖÌܤÎÍ×µá¤Ï¡¢¥á¥Ã¥»¡¼¥¸¤Ï¡¢Ãíʸ¤Ï¿®ÍѤǤ­¤ë¸ÜµÒ¤Ë¤è¤êȯ¹Ô¤µ¤ì¤¿¤³¤È¤òÊݾ㤹¤ë¤¿¤á¤Î¥Ç¥¸¥¿¥ë¾ÚÌÀ½ñ¤Î¥Õ¥©¡¼¥à¤ÎÃæ¤Ëǧ¾Ú¾ðÊó¤ò´Þ¤ó¤Ç¤¤¤ë¡¢¤È¤¤¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ ²Ã¤¨¤Æ¡¢³°Éô¤Î´Ø·¸¼Ô¤«¤éÆó½Å¤Ë¥á¥Ã¥»¡¼¥¸¤¬Á÷¤é¤ì¤ë¤³¤È¤â¤¢¤ê¤Þ¤¹¡£(¤¹¤Ù¤Æ¤Îͭ̾¤Ê¥·¥ç¥Ã¥Ô¥ó¥°¥µ¥¤¥È¤Ç¡Ö¤¤¤Þ¤¹¤°Ãíʸ¡×¥Ü¥¿¥ó¤ò°ìÅÙ¤À¤±¥¯¥ê¥Ã¥¯¤¹¤ë¤È¤¤¤¦·Ù¹ð¤¬¤¢¤ë¤³¤È¤ò»×¤¤½Ð¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£) Æó½Å½Ð²Ù¤ÈÉÔ¹¬¤»¤Ê¸ÜµÒ¤òËɤ°¤¿¤á¤Ë¡¢½èÍý¥¹¥Æ¥Ã¥×¤¬Â³¤±³«»Ï¤µ¤ì¤ëÁ°¤Ë¡¢Æó½Å¥á¥Ã¥»¡¼¥¸¤òºï½ü¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ ¤³¤ì¤é¤ÎÍ×µá¤Ë¹çÃפ¹¤ë¤¿¤á¤Ë¡¢¤â¤·¤«¤·¤¿¤éÆó½Å¤Ë¤Ê¤Ã¤Æ¤¤¤Æ¡¢ÄɲäÎǧ¾Ú¥Ç¡¼¥¿¤ò´Þ¤à°Å¹æ²½¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤ò¡¢³°Éô¤«¤é¤Î¥Ç¡¼¥¿¥Õ¥£¡¼¥ë¥É¤Î̵¤¤°ìÏ¢¤Î¥æ¥Ë¡¼¥¯¤Çñ½ã¤Ê¥×¥ì¡¼¥ó¥Æ¥­¥¹¥ÈÃíʸ¥á¥Ã¥»¡¼¥¸¤ËÊÑ´¹¤¹¤ëɬÍפ¬¤¢¤ë¡£


ÆÈΩÀ­¤È½ÀÆðÀ­¤òÊݤÁ¤Ê¤¬¤é¡¢¤É¤Î¤è¤¦¤ËÊ£»¨¤Ê¥á¥Ã¥»¡¼¥¸½èÍý¤ò¼Â¹Ô¤¹¤ì¤Ð¤è¤¤¤Î¤«¡£


¤Ò¤È¤Ä¤Î²ÄǽÀ­¤Î¤¢¤ë²ò·èË¡¤Ï¡¢¤¹¤Ù¤Æ¤ÎɬÍפʵ¡Ç½¤ò¼Â¹Ô¤¹¤ëÊñ³çŪ¤Ê¡ÖÆþÎÏ¥á¥Ã¥»¡¼¥¸¤Î¥Þ¥Ã¥µ¡¼¥¸¥â¥¸¥å¡¼¥ë¡×¤ò½ñ¤¯¤³¤È¤Ç¤¹¡£ ¤·¤«¤·¤Ê¤¬¤é¡¢¤½¤¦¤¤¤Ã¤¿¥¢¥×¥í¡¼¥Á¤Ï½ÀÆðÀ­¤¬Ìµ¤¯¥Æ¥¹¥È¤¹¤ë¤Î¤¬Æñ¤·¤¤¡£¤È¤¢¤ë½èÍý¤ò²Ã¤¨¤¿¤ê¼è¤ê½ü¤¤¤¿¤ê¤¹¤ëɬÍפ¬¤¢¤Ã¤¿¤é¤É¤¦¤Ê¤ë¤À¤í¤¦¤«¡£ ¤¿¤È¤¨¤Ð¡¢¥×¥é¥¤¥Ù¡¼¥È¥Í¥Ã¥È¥ï¡¼¥¯¾å¤Ç°Å¹æ²½¤¬Í׵ᤵ¤ì¤Æ¤¤¤Ê¤¤¡¢Â¿¤¯¤Î¸ÜµÒ¤«¤éȯÃí¤µ¤ì¤¿¤é¤É¤¦¤Ê¤ë¤À¤í¤¦¤«¡£

¤¹¤Ù¤Æ¤Îµ¡Ç½¤òñ°ì¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥ÈÆâ¤Ë¼ÂÁõ¤¹¤ë¤³¤È¤Ï¡¢¤Þ¤¿¡¢ºÆÍøÍѤε¡²ñ¤ò¸º¤é¤¹¤³¤È¤Ë¤Ê¤ë¡£ ¾®¤µ¤¯¤Æ¤¦¤Þ¤¯ÄêµÁ¤µ¤ì¤¿¥³¥ó¥Ý¡¼¥Í¥ó¥È¤òºî¤ë¤³¤È¤Ç¡¢Â¾¤Î½èÍý¤Ç¤½¤ì¤é¤òºÆÍøÍѤ¹¤ë¤³¤È¤¬½ÐÍè¤ë¡£ ¤¿¤È¤¨¤Ð¡¢Ãíʸ¥¹¥Æ¡¼¥¿¥¹Í×µá¥á¥Ã¥»¡¼¥¸¤Ï°Å¹æ²½¤µ¤ì¤ë¤«¤âÃΤì¤Ê¤¤¤¬¡¢Æó½Å½èÍý¤ò¼è¤ê½ü¤¯É¬ÍפÏ̵¤¤¡£¤Ê¤¼¤Ê¤é¡¢Æó½Å¤Î¥¹¥Æ¡¼¥¿¥¹»²¾ÈÍ×µá¤Ï°ìÈÌŪ¤Ë³²¤Ë¤Ï¤Ê¤é¤Ê¤¤¡£ Éü¹æ½èÍýµ¡Ç½¤òʬΥ¤µ¤ì¤¿¥â¥¸¥å¡¼¥ë¤Ëʬ¤±¤ë¤³¤È¤Ç¡¢Â¾¤Î¥á¥Ã¥»¡¼¥¸¤Ë¤³¤Îµ¡Ç½¤òºÆÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£

Åý¹ç¥½¥ê¥å¡¼¥·¥ç¥ó¤Ï¡¢¤¿¤¤¤¬¤¤°Û¼Á¤Î¥·¥¹¥Æ¥à¤Î½¸¤Þ¤ê¤ËÀܳ¤¹¤ë¡£ ¤½¤Î·ë²Ì¡¢°Û¤Ê¤ë½èÍý¥¹¥Æ¥Ã¥×¤Ï°Û¤Ê¤ëʪÍý¥Þ¥·¥ó¾å¤Ç¼Â¹Ô¤¹¤ëɬÍפ¬¤¢¤ë¤«¤âÃΤì¤Ê¤¤¡£¸ÄÊ̽èÍý¥¹¥Æ¥Ã¥×¤ÏÆÃÄê¤Î¥·¥¹¥Æ¥à¾å¤Ç¤Î¤ß¼Â¹Ô¤Ç¤­¤ë¤È¤­¤Î¤è¤¦¤Ë¡£ ¥á¥Ã¥»¡¼¥¸¤òÉü¹æ²½¤¹¤ë¤¿¤á¤ËɬÍפʥץ饤¥Ù¡¼¥È¥­¡¼¤Ï»ØÄꤵ¤ì¤¿¥Þ¥·¥ó¾å¤À¤±¤ÇÆþ¼ê²Äǽ¤Ç¡¢¤Þ¤¿¡¢¤½¤ì¤Ï¥»¥­¥å¥ê¥Æ¥£¾å¤ÎÍýͳ¤«¤é¾¤Î¤É¤ó¤Ê¥Þ¥·¥ó¤«¤é¤â¥¢¥¯¥»¥¹¤Ç¤­¤Ê¤¤¡¢¤È¤¤¤¦»ö¤¬²Äǽ¤Ë¤Ê¤ë¡£ ¤³¤ì¤Ï¡¢Éü¹æ²½¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ï»ØÄꤵ¤ì¤¿¥Þ¥·¥ó¾å¤Ç¤Î¤ß¼Â¹Ô¤µ¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤Î¤Ë¡¢Â¾¤Î¥¹¥Æ¥Ã¥×¤Ï¾¤Î¥Þ¥·¥ó¾å¤Ç¼Â¹Ô¤µ¤ì¤ë¤«¤âÃΤì¤Ê¤¤¡¢¤È¤¤¤¦¤³¤È¤ò°ÕÌ£¤¹¤ë¡£ ƱÍͤˡ¢°Û¤Ê¤ë½èÍý¥¹¥Æ¥Ã¥×¤Ï¡¢Æ±¤¸¥³¥ó¥Ô¥å¡¼¥¿¾å¤Ç¤µ¤¨ÊÌ¤Î¥×¥í¥»¥¹Æâ¤Ç¼Â¹Ô¤¹¤ë¤³¤È¤ò˸¤²¤ë¤è¤¦¤Ê¡¢°Û¤Ê¤ë¸À¸ì¤äµ»½Ñ¤òÍѤ¤¤Æ¼ÂÁõ¤µ¤ì¤ë¤«¤âÃΤì¤Ê¤¤¡£

³Æµ¡Ç½¤òÊÌ¡¹¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ë¼ÂÁõ¤¹¤ë¤³¤È¤À¤±¤Ç¤Ï¡¢¤Þ¤À¡¢¥³¥ó¥Ý¡¼¥Í¥ó¥È´Ö¤Î°Í¸À­¤òƳÆþ¤·¤Æ¤·¤Þ¤¦¡£ ¤¿¤È¤¨¤Ð¡¢¤â¤·¡¢Éü¹æ¤¹¤ë¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬Ç§¾Ú¥³¥ó¥Ý¡¼¥Í¥ó¥È¤òÉü¹æ¤·¤¿·ë²Ì¤È¶¦¤Ë¸Æ¤Ó½Ð¤¹¤Ê¤é¤Ð¡¢Ç§¾Úµ¡Ç½Ìµ¤·¤ÇÉü¹æ½èÍýµ¡Ç½¤ò»È¤¦¤³¤È¤¬½ÐÍè¤Ê¤¤¡£ ¤â¤·¡¢³Æ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬¥·¥¹¥Æ¥àÆâ¤Î¾¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¤«¤éÆÈΩ¤ÊÊýË¡¤Ç¡¢´û¸¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò°ìÏ¢¤Î½èÍý¥¹¥Æ¥Ã¥×¤Ë¡Ö¹½À®¤¹¤ë¡×¤³¤È¤¬½ÐÍè¤ë¤Ê¤é¡¢¤½¤ì¤é¤Î°Í¸À­¤ò²ò·è¤Ç¤­¤ë¡£ ¤³¤ì¤Ï¡¢¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ÏÈÆÍÑŪ¤Ê³°Éô¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò¤µ¤é¤¹¤³¤È¤Ë¤è¤ê¡¢¤½¤ì¤é¤Ï¸ò´¹²Äǽ¤Ë¤Ê¤ë¡¢¤È¤¤¤¦¤³¤È¤ò°Å¼¨¤·¤Æ¤¤¤ë¡£

¤â¤·¡¢ÈóƱ´ü¥á¥Ã¥»¡¼¥¸¥ó¥°¤ò»ÈÍѤ·¤Æ¤¤¤ë¤Ê¤é¡¢¤¢¤ë¥³¥ó¥Ý¡¼¥Í¥ó¥È¤«¤é¾¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ø¥á¥Ã¥»¡¼¥¸¤òÁ÷¤ë¤È¤¤¤¦ÈóƱ´ü¤Ê¦Ì̤ò³èÍѤ¹¤ë¤Ù¤­¤Ç¤¢¤ë¡£ ¤¿¤È¤¨¤Ð¡¢¤È¤¢¤ë¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ï¤½¤ÎÀè¤Î½èÍý¤Î¤¿¤á¤Ë·ë²Ì¤òÂԤĤ³¤È¤Ê¤¯Â¾¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ø¥á¥Ã¥»¡¼¥¸¤òÁ÷¤ë¤³¤È¤¬½ÐÍè¤ë¡£ ¤³¤Î¥Æ¥¯¥Ë¥Ã¥¯¤ò»ÈÍѤ·¤Æ¡¢³Æ¥³¥ó¥Ý¡¼¥Í¥ó¥ÈÆâ¤ÎÊ£¿ô¥á¥Ã¥»¡¼¥¸¤òÊ¿¹Ô¤Ë½èÍý¤Ç¤­¤ë¡£


¤È¤¢¤ëÂ礭¤Ê½èÍý¥¿¥¹¥¯¤ò¥Á¥ã¥Í¥ë(¥Ñ¥¤¥×)¤ÇÀܳ¤µ¤ì¤¿¾®¤µ¤¯¤ÆÆÈΩ¤·¤¿°ìÏ¢¤Î½èÍý¥¹¥Æ¥Ã¥×¤Ëʬ³ä¤¹¤ë¤È¤¤¤¦¥Ñ¥¤¥×¤È¥Õ¥£¥ë¥¿¡¼¥¢¡¼¥­¥Æ¥¯¥Á¥ã¥¹¥¿¥¤¥ë¤ò»È¤ª¤¦¡£


³Æ¥Õ¥£¥ë¥¿¡¼¤Ï¤È¤Æ¤âñ½ã¤Ê¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò¸ø³«¤·¤Æ¤¤¤ë¡£¤Ä¤Þ¤ê¡¢ÆþÎϥѥ¤¥×¤«¤é¥á¥Ã¥»¡¼¥¸¤ò¼õ¤±¼è¤ê¡¢¥á¥Ã¥»¡¼¥¸¤ò½èÍý¤·¡¢½ÐÎϥѥ¤¥×¤Ø¤½¤Î·ë²Ì¤òȯ¹Ô¤¹¤ë¡£ ¤½¤Î¥Ñ¥¤¥×¤Ï¼¡¤Î¤Ò¤È¤Ä¤Î¥Õ¥£¥ë¥¿¡¼¤ËÀܳ¤·¡¢¤Ò¤È¤Ä¤Î¥Õ¥£¥ë¥¿¡¼¤«¤é¼¡¤Ø½ÐÎÏ¥á¥Ã¥»¡¼¥¸¤òÁ÷¤ë¡£ ¤¹¤Ù¤Æ¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ÏƱ¤¸³°Éô¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò»È¤Ã¤Æ¤¤¤ë¤Î¤Ç¡¢¤½¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò°Û¤Ê¤ë¥Ñ¥¤¥×¤Ø¤Ä¤Ê¤°¤³¤È¤Ë¤è¤ê¡¢¤½¤ì¤é¤Ï°Û¤Ê¤ë¥½¥ê¥å¡¼¥·¥ç¥ó¤Ë¡Ö¹½À®¤¹¤ë¡×¤³¤È¤¬¤Ç¤­¤ë¡£ ¥Õ¥£¥ë¥¿¡¼¼«¿È¤Ë¤Ï²¿¤âÊѹ¹Ìµ¤·¤Ç¡¢¿·¤·¤¤¥Õ¥£¥ë¥¿¡¼¤òÄɲäǤ­¡¢´û¸¤Î¥Õ¥£¥ë¥¿¡¼¤òºï½ü¤Ç¤­¡¢¤½¤ì¤é¤ò¿·¤·¤¤Îó¤ËºÆ¹½À®¤Ç¤­¤ë¡£ ¥Õ¥£¥ë¥¿¡¼¤ÎÀܳÉôʬ¤Ï»þ¡¹¡Ö¥Ý¡¼¥È¡×¤È¸Æ¤Ð¤ì¤ë¡£ ´ðËÜ·Á¾õ¤È¤·¤Æ¡¢³Æ¥Õ¥£¥ë¥¿¡¼¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ï¤Ò¤È¤Ä¤ÎÆþÎϥݡ¼¥È¤È¤Ò¤È¤Ä¤Î½ÐÎϥݡ¼¥È¤ò»ý¤Ã¤Æ¤¤¤ë¡£

²æ¡¹¤ÎÎãÂê¤ËŬÍѤ¹¤ë¤È¡¢¥Ñ¥¤¥×¤È¥Õ¥£¥ë¥¿¡¼¥¢¡¼¥­¥Æ¥¯¥Á¥ã¡¼¤Ï£²¤Ä¤Î¥Ñ¥¤¥×¤ÇÀܳ¤µ¤ì¤¿£³¤Ä¤Î¥Õ¥£¥ë¥¿¡¼¤È¤Ê¤ë¡£(¿Þ¤ò»²¾È) Éü¹æ¤¹¤ë¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ø¥á¥Ã¥»¡¼¥¸¤òÁ÷¤ë¤¿¤á¤Î¤Ò¤È¤Ä¤ÎÄɲäΥѥ¤¥×¤È¡¢¼õÃí½èÍý¥·¥¹¥Æ¥à¤ØÆó½Å¥á¥Ã¥»¡¼¥¸¤ò½ü¤¯¥Õ¥£¥ë¥¿¡¼(de-duper)¤«¤é¥¯¥ê¥¢¥Æ¥­¥¹¥È¤ÎÃíʸ¥á¥Ã¥»¡¼¥¸¤òÁ÷¤ë¤¿¤á¤Î¥Ñ¥¤¥×¤¬É¬ÍפǤ¢¤ë¡£ ¤³¤ì¤Ï¡¢Á´Éô¤Ç£´¤Ä¤Î¥Ñ¥¤¥×¤Ë¤Ê¤ë¡£

¡Ö¥Ñ¥¤¥×¤È¥Õ¥£¥ë¥¿¡¼¡×¤Ï¡¢¥á¥Ã¥»¡¼¥¸¥ó¥°¥·¥¹¥Æ¥à¤Î¤¿¤á¤Î´ðËÜŪ¤Ê¥¢¡¼¥­¥Æ¥¯¥Á¥ã¥¹¥¿¥¤¥ë¤òÀâÌÀ¤·¤Æ¤¤¤ë¡£¤Ä¤Þ¤ê¡¢¸ÄÊ̤νèÍý¥¹¥Æ¥Ã¥×(¥Õ¥£¥ë¥¿¡¼)¤Ï¡¢¥á¥Ã¥»¡¼¥¸¥Á¥ã¥Í¥ë(¥Ñ¥¤¥×)¤òÄ̤¸¤Æ¡¢¤ª¸ß¤¤¤ËÏ¢·ë¤µ¤ì¤ë¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë¡£ ¤³¤Î¾Ï¤È¸å¤í¤Î¾Ï¤Î¿¤¯¤Î¥Ñ¥¿¡¼¥ó(¥ë¡¼¥Æ¥£¥ó¥°¤äÊÑ´¹¥Ñ¥¿¡¼¥ó¤Ê¤É)¤Ï¡¢¤³¤Î¡Ö¥Ñ¥¤¥×¤È¥Õ¥£¥ë¥¿¡¼¡×¥¢¡¼¥­¥Æ¥¯¥Á¥ã¡¼¥¹¥¿¥¤¥ë¤ò´ðÁäȤ·¤Æ¤¤¤ë¡£ ¤³¤ì¤Ï¡¢¸Ä¡¹¤Î¥Ñ¥¿¡¼¥ó¤òÂ礭¤Ê¥½¥ê¥å¡¼¥·¥ç¥ó¤Ë°ìÂ⽤¹¤ë¤³¤È¤ò´Êñ¤Ë¤·¤Æ¤¤¤ë¡£

¡Ö¥Ñ¥¤¥×¤È¥Õ¥£¥ë¥¿¡¼¡×¥¹¥¿¥¤¥ë¤Ï¡¢¤ª¸ß¤¤¤«¤éʬΥ¤¹¤ë¤¿¤á¤Ë¡¢Ãê¾Ý¥Ñ¥¤¥×¤òÍѤ¤¤Æ¤¤¤ë¡£ ¤½¤Î¥Ñ¥¤¥×¤Ï¡¢¤Ò¤È¤Ä¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬¤½¤Î¥Ñ¥¤¥×¤Ë¥á¥Ã¥»¡¼¥¸¤òÁ÷¤ë¤³¤È¤¬½ÐÍè¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤ë¡£¤Ê¤Î¤Ç¡¢¤½¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬ÃΤé¤Ê¤¤Â¾¤Î¥×¥í¥»¥¹¤Ë¤è¤ê¸å¤Ç¤½¤ì¤¬¾ÃÈñ¤µ¤ì¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ ¤½¤Î¤è¤¦¤Ê¥Ñ¥¤¥×¤ÎÌÀ³Î¤Ê¼ÂÁõ¤Ï¡¢¡Ö¥á¥Ã¥»¡¼¥¸¥Á¥ã¥Í¥ë(60)¡×¤Ç¤¢¤ë¡£Åµ·¿Åª¤Ë¤Ï¡¢¡Ö¥á¥Ã¥»¡¼¥¸¥Á¥ã¥Í¥ë(60)¡×¤Ï¡¢¥Õ¥£¥ë¥¿¡¼´Ö¤Ç¡¢¸À¸ì¡¢¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¡¢¾ì½ê¤ÎÆÈΩÀ­¤òÄ󶡤·¤Æ¤¤¤ë¡£ ¤³¤ì¤Ï¡¢°Í¸À­¡¢±¿ÍÑÌÌ¡¢½èÍýÀ­Ç½¤È¤¤¤¦Íýͳ¤«¤é¡¢½èÍý¥¹¥Æ¥Ã¥×¤ò°Û¤Ê¤ë¥Þ¥·¥ó¤ËÆ°¤«¤¹¤È¤¤¤¦½ÀÆðÀ­¤ò¤â¤Ä;͵¤¬¤¢¤ë¡£ ¤·¤«¤·¤Ê¤¬¤é¡¢¥á¥Ã¥»¡¼¥¸´ðÈפˤè¤êÄ󶡤µ¤ì¤ë¡Ö¥á¥Ã¥»¡¼¥¸¥Á¥ã¥Í¥ë(60)¡×¤Ï¡¢¼ÂºÝ¤Ë¤ÏƱ¤¸¥Þ¥·¥ó¾å¤ËƱµï¤¹¤ë¤Ê¤é¤Ð¡¢¤È¤Æ¤â½ÅÎ̵é¤Ë¤Ê¤ê¤¨¤ë¡£ ¤½¤Î¥Ñ¥¤¥×¤òñ½ã¤Ê¥¤¥ó¥á¥â¥ê¥­¥å¡¼¤ò»È¤¦¤³¤È¤Ç¡¢¤â¤Ã¤È¤è¤ê¸úΨŪ¤Ë¤Ê¤ë¡£ ¤½¤Î¤¿¤á¡¢¤½¤ì¤é¤¬Ãê¾Ý¥Ñ¥¤¥×¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ÇÄÌ¿®¤¹¤ë¥³¥ó¥Ý¡¼¥Í¥ó¥È¤òÀ߷פ¹¤ë¤Î¤ÏÍ­ÍѤÀ¡£ ¤½¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Î¼ÂÁõ¤Ï¡¢¡Ö¥á¥Ã¥»¡¼¥¸¥Á¥ã¥Í¥ë(60)¡×¤«¥¤¥ó¥á¥â¥ê¥­¥å¡¼¤Î¤è¤¦¤ÊÂåÂؼÂÁõ¤ò»ÈÍѤ¹¤ë¤³¤È¤Ë¡¢¤¤¤º¤ì¸ò´¹¤µ¤ì¤ë¡£ ¡Ö¥á¥Ã¥»¡¼¥¸¥ó¥°¥²¡¼¥È¥¦¥§¡¼(468)¡×¤Ï¡¢¤É¤¦¤ä¤Ã¤Æ¤³¤Î½ÀÆðÀ­¤Î¤¿¤á¤Ë¥³¥ó¥Ý¡¼¥Í¥ó¥È¤òÀ߷פ¹¤ë¤«¤òÀâÌÀ¤·¤Æ¤¤¤ë¡£

¥Ñ¥¤¥×¤È¥Õ¥£¥ë¥¿¡¼¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤ÎÀøºßŪ¤ÊÉÔÅÔ¹ç¤ÊÅÀ¤Î¤Ò¤È¤Ä¤Ï¡¢Í׵ᤵ¤ì¤ë¥Á¥ã¥Í¥ë¤Î¿ô¤Î¿¤µ¤Ç¤¢¤ë¡£ ºÇ½é¤Ë¡¢¥Á¥ã¥Í¥ë¤Ï¥á¥â¥ê¤ÈCPU¥µ¥¤¥¯¥ë¤ò¾ÃÈñ¤¹¤ë¥Ð¥Ã¥Õ¥¡¥ê¥ó¥°¤È¾¤Îµ¡Ç½¤òÄ󶡤¹¤ë¤¿¤á¤Ë¡¢¥Á¥ã¥Í¥ë¤Ï̵À©¸Â¤Î¥ê¥½¡¼¥¹¤Ç¤Ï¤Ê¤¤¤«¤âÃΤì¤Ê¤¤¡£ ¤Þ¤¿¡¢¤½¤Î¥Ç¡¼¥¿¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥óÆâÉô·Á¼°¤«¤é¥á¥Ã¥»¡¼¥¸¥ó¥°´ðÈ׸ÇÍ­¤Î·Á¼°¤ËÊÑ´¹¤·¤Ê¤¤¤È¤¤¤±¤Ê¤¤¤Î¤Ç¡¢¥Á¥ã¥Í¥ë¤Ø¥á¥Ã¥»¡¼¥¸¤òȯ¹Ô¤¹¤ë¤³¤È¤Ï°ìÄêÎ̤Υª¡¼¥Ð¡¼¥Ø¥Ã¥É¤ò¤â¤¿¤é¤¹¡£ ¼õ¿®¤Î½ªÃ¼¤Ç¤Ï¡¢¤³¤Î¥×¥í¥»¥¹¤ÏµÕ¸þ¤­¤Ë¤Ê¤ë¡£ ¤â¤·¡¢¥Õ¥£¥ë¥¿¡¼¤ÎŤ¤Ï¢·ë¤ò»ÈÍѤ·¤Æ¤¤¤ë¤Ê¤é¡¢·«¤êÊÖ¤µ¤ì¤ë¥á¥Ã¥»¡¼¥¸¥Ç¡¼¥¿ÊÑ´¹¤Î¤¿¤á¤Ë¡¢½ÀÆðÀ­¤òÆÀ¤ë¤«¤ï¤ê¤ËÀøºßŪ¤ËÄãÀ­Ç½¤È¤¤¤¦Âå½þ¤ò¤Ï¤é¤¦¤³¤È¤Ë¤Ê¤ë¡£

¡Ö¥Ñ¥¤¥×¤È¥Õ¥£¥ë¥¿¡¼¡×¤Î½ã¿è·Á¼°¤È¤·¤Æ¤Ï¡¢¤Ò¤È¤Ä¤ÎÆþÎϥݡ¼¥È¤È¤Ò¤È¤Ä¤Î½ÐÎϥܡ¼¥È¤À¤±¤ò¤â¤Æ¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤ë¡£ ¡Ö¥á¥Ã¥»¡¼¥¸¥ó¥°(53)¡×¤ò¼è¤ê°·¤¦¤È¤­¤Ï¡¢¤³¤ÎÀ­¼Á¤ò¤¤¤¯¤Ö¤ó¤«´ËϤµ¤»¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ ¤¢¤ë¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ï£²¤Ä°Ê¾å¤Î¥Á¥ã¥Í¥ë¤«¤é¥á¥Ã¥»¡¼¥¸¤ò¾ÃÈñ¤¹¤ë¤«¤âÃΤ줺¡¢¤Þ¤¿¡¢£²¤Ä°Ê¾å¤Î¥Á¥ã¥Í¥ë¤Ø¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ¹¤ë¤«¤âÃΤì¤Ê¤¤¡£(¤¿¤È¤¨¤Ð¡¢¡Ö¥á¥Ã¥»¡¼¥¸¥ë¡¼¥¿¡¼[78]¡×) ƱÍͤˡ¢Ê£¿ô¤Î¥Õ¥£¥ë¥¿¡¼¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ï¡¢¤Ò¤È¤Ä¤Î¡Ö¥á¥Ã¥»¡¼¥¸¥Á¥ã¥Í¥ë(60)¡×¤«¤é¥á¥Ã¥»¡¼¥¸¤ò¾ÃÈñ¤¹¤ë¤«¤âÃΤì¤Ê¤¤¡£ ¡Ö¥Ý¥¤¥ó¥È¥È¥¥¡¼¥Ý¥¤¥ó¥È¥Á¥ã¥Í¥ë(103)¡×¤Ï¡¢¤¿¤À¤Ò¤È¤Ä¤Î¥Õ¥£¥ë¥¿¡¼¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬¤½¤ì¤¾¤ì¤Î¥á¥Ã¥»¡¼¥¸¤ò¾ÃÈñ¤¹¤ë¤È¤¤¤¦¤³¤È¤òÊݾ㤹¤ë¡£

¡Ö¥Ñ¥¤¥×¤È¥Õ¥£¥ë¥¿¡¼¡×¤ò»È¤¦¤³¤È¤Ï¤Þ¤¿¡¢¤·¤Ð¤·¤Ð¸«Æ¨¤µ¤ì¤ëÍøÅÀ¡¢¥Æ¥¹¥ÈÍÆ°×À­¤ò¤â¤â¤¿¤é¤¹¡£ ³Æ¸ÄÊ̤νèÍý¥¹¥Æ¥Ã¥×¤Ï¡Ö¥Æ¥¹¥È¥á¥Ã¥»¡¼¥¸(66)¡×¤ò¤½¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ËÅϤ·¤Æ¡¢´üÂÔ¤µ¤ì¤ë½ÐÎϤȷë²Ì¥á¥Ã¥»¡¼¥¸¤òÈæ¤Ù¤ë¤³¤È¤Ë¤è¤ê¡¢¥Æ¥¹¥È¤¹¤ë¤³¤È¤¬½ÐÍè¤ë¡£ ¸ÉΩ¤·¤Æ³Æ¥³¥¢²Äǽ¤ò¥Æ¥¹¥È¤·¥Ç¥Ð¥Ã¥°¤¹¤ë¤³¤È¤Ï¡¢¤è¤ê¸úΨ¤¬Îɤ¤¡£¤Ê¤¼¤Ê¤é¡¢ÆÃÄê¤Îµ¡Ç½¤Î¤¿¤á¤Î¥Æ¥¹¥Èµ¡¹½¤ò¤¢¤Ä¤é¤¨¤ë¤³¤È¤¬½ÐÍè¤ë¤«¤é¤Ç¤¢¤ë¡£ ¤¿¤È¤¨¤Ð¡¢°Å¹æµ¡Ç½¤ÈÉü¹æµ¡Ç½¤Î¥Æ¥¹¥È¤ò¤¹¤ë¤¿¤á¤Ë¡¢¥é¥ó¥À¥à¤Ê¥Ç¡¼¥¿¤ò´Þ¤à¿¿ô¤Î¥á¥Ã¥»¡¼¥¸¤òÅϤ¹¤³¤È¤¬½ÐÍè¤ë¡£ ³Æ¥á¥Ã¥»¡¼¥¸¤ò°Å¹æ²½¤·Ê£¹ç²½¤·¤¿¸å¤Ç¡¢¤½¤ì¤ò¸µ¤Î¤ÈÈæ¤Ù¤ì¤Ð¤è¤¤¡£ °ìÊý¡¢Ç§¾Ú¤Î¥Æ¥¹¥È¤ò¤¹¤ë¤¿¤á¤Ë¡¢¥·¥¹¥Æ¥àÆâ¤ÇÃΤé¤ì¤¿¥æ¡¼¥¶¤È°ìÃפ¹¤ëÆÃÄê¤Îǧ¾Ú¥³¡¼¥É¤È°ì½ï¤Ë¥á¥Ã¥»¡¼¥¸¤ò¶¡µë¤¹¤ëɬÍפ¬¤¢¤ë¡£

¥Ñ¥¤¥×¥é¥¤¥ó½èÍý (Pipeline Processing)

¥³¥ó¥Ý¡¼¥Í¥ó¥È¤òÈóƱ´ü¤Î¡Ö¥á¥Ã¥»¡¼¥¸¥Á¥ã¥Í¥ë(60)¡×¤ÇÀܳ¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢Ï¢·ëÆâ¤Î³Æ¥æ¥Ë¥Ã¥È¤¬Æȼ«¤Î¥¹¥ì¥Ã¥É¤«Æȼ«¤Î¥×¥í¥»¥¹Æâ¤Ç½èÍý¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ë¡£ ¤¢¤ë¥æ¥Ë¥Ã¥È¤¬¤Ò¤È¤Ä¤Î¥á¥Ã¥»¡¼¥¸¤ò½èÍý¤·½ª¤ï¤ë¤È¡¢¤½¤Î¥á¥Ã¥»¡¼¥¸¤ò½ÐÎÏ¥Á¥ã¥Í¥ë¤ËÁ÷¤ê¡¢¤¹¤°¤Ë¾¤Î¥á¥Ã¥»¡¼¥¸¤Î½èÍý¤ò³«»Ï¤¹¤ë¤³¤È¤¬½ÐÍè¤ë¡£ ¤½¤Î¥æ¥Ë¥Ã¥È¤Ï¸å³¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬¤½¤Î¥á¥Ã¥»¡¼¥¸¤òÆɤ߹þ¤ó¤Ç½èÍý¤¹¤ë¤Î¤òÂÔ¤ÄɬÍפÏ̵¤¤¡£ ¤³¤Î¤³¤È¤Ë¤è¤ê¡¢¥á¥Ã¥»¡¼¥¸¤¬¸Ä¡¹¤Î¥¹¥Æ¡¼¥¸¤òÄ̲᤹¤ë¤Î¤Ç¡¢¥á¥Ã¥»¡¼¥¸¤òÊÂΩ¤Ë½èÍý¤¹¤ë¤³¤È¤¬½ÐÍè¤ë¤è¤¦¤Ë¤Ê¤ë¡£ ¤¿¤È¤¨¤Ð¡¢ºÇ½é¤Î¥á¥Ã¥»¡¼¥¸¤¬Éü¹æ¤µ¤ì¤¿¤¢¤È¡¢¤½¤ì¤Ïǧ¾Ú¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ËÅϤµ¤ì¤ë¡£ Ʊ»þ¤Ë¡¢¼¡¤Î¥á¥Ã¥»¡¼¥¸¤Ï´û¤ËÉü¹æ¤µ¤ì¤ë¤³¤È¤¬½ÐÍè¤ë¡£(¿Þ¤ò»²¾È) ²æ¡¹¤Ï¡¢¤³¤¦¤¤¤¦ÀßÄê¤ò¥Ñ¥¤¥×¥é¥¤¥ó½èÍý¤È¤¤¤¦¡£¤Ê¤¼¤Ê¤é¡¢±ÕÂΤ¬¥Ñ¥¤¥×¤òή¤ì¤Æ¤¤¤¯¤è¤¦¤Ë¡¢¥á¥Ã¥»¡¼¥¸¤¬¥Õ¥£¥ë¥¿¡¼¤òή¤ì¤Æ¤¤¤¯¤«¤é¤Ç¤¢¤ë¡£ ¸·Ì©¤ÊϢ³½èÍý¤ÈÈæ³Ó¤·¤Æ¡¢¥Ñ¥¤¥×¥é¥¤¥ó¤Ç½èÍý¤¹¤ë¤³¤È¤Ç¡¢¥·¥¹¥Æ¥à¤Î½èÍýÎ̤ò¤­¤ï¤á¤Æ¾å¾º¤µ¤»¤ë¤³¤È¤¬½ÐÍè¤ë¡£

ÊÂÎó½èÍý (Parallel Processing)

¤·¤«¤·¤Ê¤¬¤é¡¢Á´ÂΤΥ·¥¹¥Æ¥à½èÍýÎ̤ϡ¢Ï¢·ëÆâ¤ÎºÇ¤âÃÙ¤¤½èÍý¤ËÀ©¸Â¤µ¤ì¤ë¡£ ½èÍýÎ̤ò¸þ¾å¤¹¤ë¤¿¤á¤Ë¡¢¤½¤ì¤ò½èÍý¤¹¤ëÊ£¿ô¤ÎÊÂÎ󥤥󥹥¿¥ó¥¹¤òÇÛÈ÷¤Ç¤­¤ë¡£ ¤³¤Î¥·¥Ê¥ê¥ª¤Ç¤Ï¡¢¥Á¥ã¥Í¥ë¾å¤Î³Æ¥á¥Ã¥»¡¼¥¸¤¬£Î¤³¤Î½èÍý²Äǽ¤Ê¥×¥í¥»¥Ã¥µ¡¼¤ÎÃæ¤Î¤¿¤À¤Ò¤È¤Ä¤Ë¤è¤ê¾ÃÈñ¤µ¤»¤ë¤³¤È¤òÊݾ㤹¤ë¤¿¤á¤Ë¡¢¡Ö¶¥Áè¾ÃÈñ¼Ô(Competing Consumers)(502)¡×¤È¶¦¤Ë¡Ö¥Ý¥¤¥ó¥È¥È¥¥¡¼¥Ý¥¤¥ó¥È¥Á¥ã¥Í¥ë(103)¡×¤¬É¬Íפˤʤ롣 ¤³¤ì¤Ë¤è¤ê¡¢ºÇ¤â»þ´Ö¤Î¤«¤«¤ë¥×¥í¥»¥¹¤ò¥¹¥Ô¡¼¥É¥¢¥Ã¥×¤µ¤»¡¢Á´ÂΤνèÍýÎ̤ò²þÁ±¤¹¤ë¤³¤È¤¬½ÐÍè¤ë¤è¤¦¤Ë¤Ê¤ë¡£ ¤·¤«¤·¤Ê¤¬¤é¡¢¤³¤¦¤¤¤¦¹½À®¤Ï¥á¥Ã¥»¡¼¥¸¤¬½ç½ø¤¬¤Ð¤é¤Ð¤é¤Ç½èÍý¤µ¤ì¤ë¤³¤È¤ò¾·¤¯¡¢¤È¤¤¤¦¤³¤È¤Ëµ¤¤Å¤¯É¬Íפ¬¤¢¤ë¡£ ¤â¤·¡¢¥á¥Ã¥»¡¼¥¸¤Î½ç½ø¤¬½ÅÍפǤ¢¤ë¤Ê¤é¡¢³Æ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤ò¤Ò¤È¤Ä¤À¤±Áö¤é¤»¤ë¤«¡¢¡Öʤ٤ʤª¤·²°(Resquencer)(283)¡×¤òÍѤ¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£


(¿Þ) ÊÂÎó½èÍý¤Ë¤è¤ë½èÍýÎ̤θþ¾å


¤¿¤È¤¨¤Ð¡¢¥á¥Ã¥»¡¼¥¸¤òÉü¹æ¤¹¤ë¤Î¤¬¡¢Ç§¾Ú½èÍý¤è¤ê¤â¡¢¤È¤Æ¤âÃÙ¤¤¤È²¾Äꤹ¤ë¤Ê¤é¤Ð¡¢¤³¤Î¿Þ¤Ç¼¨¤·¤¿¡¢Éü¹æ¤¹¤ë¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤ò£³¤ÄÊÂÎó¤ËÁö¤é¤»¤ë¤È¤¤¤¦¹½À®¤ò»ÈÍѤ¹¤ë¤³¤È¤¬½ÐÍè¤ë¡£ ¤â¤·¡¢³Æ¥Õ¥£¥ë¥¿¡¼¤¬¥¹¥Æ¡¼¥È¥ì¥¹(¤Ä¤Þ¤ê¡¢¤¢¤ë¥á¥Ã¥»¡¼¥¸¤¬½èÍý¤µ¤ì¤¿¸å¡¢¤½¤ì¤ÏÁ°¤Î¾õÂÖ¤ËÌá¤ë)¤Ê¤é¤Ð¡¢¥Ñ¥é¥ì¥ë²½¤·¤¿¥Õ¥£¥ë¥¿¡¼¤ÏºÇÁ±¤Ç¤¢¤ë¡£ ¤³¤ì¤Ï¡¢Æó½Å¥á¥Ã¥»¡¼¥¸¤ò½ü¤¯(de-dupe)¥³¥ó¥Ý¡¼¥Í¥ó¥È¤òÊ£¿ô¸ÄÊÂÎó¤ËÁö¤é¤»¤ë¤³¤È¤Ï´Êñ¤Ë¤Ï½ÐÍè¤Ê¤¤¡¢¤È¤¤¤¦¤³¤È¤ò°ÕÌ£¤¹¤ë¡£¤Ê¤¼¤Ê¤é¡¢¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ï´û¤Ë¼õ¿®¤·¤¿¤¹¤Ù¤Æ¤Î¥á¥Ã¥»¡¼¥¸¤ÎÍúÎò¤òÊÝ»ý¤·¤Æ¤¤¤ë¡¢¤Ä¤Þ¤ê¡¢¥¹¥Æ¡¼¥È¥ì¥¹¤Ç¤Ï¤Ê¤¤¤¿¤á¤Ç¤¢¤ë¡£

¥Ñ¥¤¥×¤È¥Õ¥£¥ë¥¿¡¼¤ÎÎò»Ë (History of Pipes and Filters)

¥Ñ¥¤¥×¤È¥Õ¥£¥ë¥¿¡¼¥¢¡¼¥­¥Æ¥¯¥Á¥ã¡¼¤Ï·è¤·¤Æ¿·¤·¤¤³µÇ°¤Ç¤Ï¤Ê¤¤¡£ ½ÀÆðÀ­¤È¹â½èÍýǽÎϤòÊ»¤»»ý¤Ä¤³¤Î¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤Î¥·¥ó¥×¥ë¤ÊÍ¥²í¤µ¤Ë¤è¤ê¡¢¥Ñ¥¤¥×¤È¥Õ¥£¥ë¥¿¡¼¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤Î¿Íµ¤¤ò´Êñ¤ËÍý²ò¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ ¥·¥ó¥×¥ë¤Ê¥»¥Þ¥ó¥Æ¥£¥Ã¥¯¥¹¤Ë¤è¤ê¡¢¤Þ¤¿¡¢¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤òÀâÌÀ¤¹¤ë¤¿¤á¤Ë¡¢·Á¼°Åª¤ÊÊýË¡¤ò¤Ë»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ë¡£

[Kahn] ¤Ï 1974ǯ¤Ë¡¢ÆÈΩ¤·¤¿FIFO(First-In, First-Out)¥Á¥ã¥Í¥ë¤ÇÀܳ¤µ¤ì¤¿ÊÂÎó½èÍý¤Î½¸¤Þ¤ê¤È¤·¤Æ¡¢Kahn Process Networks ¤ò²òÀ⤷¤¿¡£ [Garlan] ¤Ï¡¢¥Ñ¥¤¥×¤È¥Õ¥£¥ë¥¿¡¼¤ò´Þ¤à¤µ¤Þ¤¶¤Þ¤Ê¥¢¡¼¥­¥Æ¥¯¥Á¥ã¡¼¤Îɽ¸½ÊýË¡¤Î¤¢¤ëÎɤ¤¾Ï¤ò´Þ¤ó¤Ç¤¤¤ë¡£ [Monroe] ¤Ï¡¢¥¢¡¼¥­¥Æ¥¯¥Á¥ã¡¼¤Îɽ¸½ÊýË¡¤È¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó´Ö¤Î´Ø·¸¤Ë¤Ä¤¤¤Æ¡¢¾ÜºÙ¤Ê¼è¤ê°·¤¤ÊýË¡¤òÍ¿¤¨¤Æ¤¤¤ë¡£ [PLoPD1] ¤Ï¡¢[POSA] ¤ÎÃæ¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¥Ñ¥¤¥×¤È¥Õ¥£¥ë¥¿¡¼¥Ñ¥¿¡¼¥ó¤Î´ðÁäò³ÎΩ¤·¤¿¡¢Regine Meunier¤Î¡Ö¥Ñ¥¤¥×¤È¥Õ¥£¥ë¥¿¡¼¥¢¡¼¥­¥Æ¥¯¥Á¥ã¡¼¡×¤ò´Þ¤ó¤Ç¤¤¤ë¡£ ¥Ñ¥¤¥×¤È¥Õ¥£¥ë¥¿¡¼¤Î¤Û¤È¤ó¤É¤¹¤Ù¤Æ¤ÎÅý¹ç¤Ë´Ø·¸¤¹¤ë¼ÂÁõ¤Ï¡¢[POSA]¤ÎÃæ¤Ë¤¢¤ë¡Ö¥·¥Ê¥ê¥ª­¸¡×¤Ë³¤¤¤Æ¤¤¤ë¡£¤½¤ì¤Ï¡¢¥­¥å¡¼¥Ñ¥¤¥×¤«¤é¼è¤ê¹þ¤ß¡¢½èÍý¤·¡¢¤½¤³¤ØžÁ÷¤¹¤ë¡¢Ç½Æ°Åª¥Õ¥£¥ë¥¿¡¼(active filter)¤ò»È¤Ã¤Æ¤¤¤ë¡£ [POSA]¤ÇÀâÌÀ¤µ¤ì¤Æ¤¤¤ë¥Ñ¥¿¡¼¥ó¤Ï¡¢¥Õ¥£¥ë¥¿¡¼¤«¤é¥Õ¥£¥ë¥¿¡¼¤ØÅϤ·¤Æ¤¤¤ë¤¿¤á¡¢¤½¤ì¤¾¤ì¤Î¥¨¥ì¥á¥ó¥È¤ÏƱ¤¸½èÍý¥¹¥Æ¥Ã¥×¤ò·Ð¸³¤·¤Æ¤¤¤ë¡¢¤È²¾Äꤷ¤Æ¤¤¤ë¡£¤³¤ì¤Ï¡¢°ìÈÌŪ¤Ë¡¢¤È¤¢¤ëÅý¹ç¥·¥Ê¥ê¥ª¤Î»öÎã¤Ç¤Ï¤Ê¤¤¡£ ¿¤¯¤ÎÎã¤Ë¤ª¤¤¤Æ¡¢¥á¥Ã¥»¡¼¥¸¤Ï¡¢¥á¥Ã¥»¡¼¥¸¤ÎÃæ¿È¤ä³°ÉôÀ©¸æ¤Ë´ð¤Å¤­¡¢Æ°Åª¤Ë¥ë¡¼¥Æ¥£¥ó¥°¤µ¤ì¤ë¡£ »ö¼Â¡¢¥ë¡¼¥Æ¥£¥ó¥°¤Ï´ë¶ÈÅý¹ç¤Ë¤ª¤¤¤Æ¼Â¤Ë¤è¤¯È¯À¸¤¹¤ë¤·¡¢¤½¤ì¼«¿È¤Î¥Ñ¥¿¡¼¥óMessage Route(78)¤È¤·¤Æ¤ß¤È¤á¤é¤ì¤Æ¤¤¤ë¡£

¸ì×à (Vocabulary)

¥Ñ¥¤¥×¤È¥Õ¥£¥ë¥¿¡¼¤Ë¤Ä¤¤¤Æ½Ò¤Ù¤ë¾ì¹ç¡¢¥Õ¥£¥ë¥¿¡¼¤È¤¤¤¦¸ÀÍդˤĤ¤¤ÆÃí°Õ¤¹¤ëɬÍפ¬¤¢¤ë¡£ ¸å¤Ç¡¢Message Filter(237)¤ÈContent Filter(342)¤È¤¤¤¦Æó¤Ä¤Î¥Ñ¥¿¡¼¥ó¤ò²Ã¤¨¤ÆÄêµÁ¤¹¤ë¡£ ¤½¤ÎξÊý¤È¤â¡¢ÈÆÍÑŪ¤Ê¥Õ¥£¥ë¥¿¡¼¤ÎÆÃÊ̤ʾì¹ç¤Ç¤¢¤ë¤ÈƱ»þ¤Ë¡¢¥Ñ¥¿¡¼¥ó¸À¸ì¤Î¿¤¯¤Î¾¤Î¥Ñ¥¿¡¼¥ó¤Ç¤â¤¢¤ë¡£ ¸À¤¤´¹¤¨¤ë¤È¡¢¥Ñ¥¤¥×¤È¥Õ¥£¥ë¥¿¡¼¤È¤¤¤¦°ÕÌ£¤Ç¤Î¤È¤¢¤ë¥Õ¥£¥ë¥¿¡¼¤È¤¹¤ë¤¿¤á¤Ë¡¢¥Ñ¥¿¡¼¥ó¤Ï(Î㤨¤Ð°À­Ãͤä¥á¥Ã¥»¡¼¥¸¤ò¼è¤ê½ü¤¯¤È¤¤¤Ã¤¿)¤í²áµ¡Ç½¤ò»ý¤ÄɬÍפÏ̵¤¤¡£ ¥Ñ¥¤¥×¤È¥Õ¥£¥ë¥¿¡¼¤È¤¤¤¦¥¢¡¼¥­¥Æ¥¯¥Á¥ã¡¼¤Îɽ¸½ÊýË¡¤Î̾Á°¤òÊѤ¨¤ë¤³¤È¤Ë¤è¤ê¡¢¤³¤¦¤¤¤Ã¤¿º®Íð¤òÈò¤±¤ë¤³¤È¤¬½ÐÍ褿¡£ ¤·¤«¤·¤Ê¤¬¤é¡¢¥Ñ¥¤¥×¤È¥Õ¥£¥ë¥¿¡¼¤Ï¤È¤Æ¤â½ÅÍפǹ­¤¯µÄÏÀ¤µ¤ì¤¿³µÇ°¤Ç¤¢¤ê¡¢¿·¤·¤¤Ì¾Á°¤òÉÕ¤±¤ë¤È¤à¤·¤í¤è¤êº®Í𤹤ë¤È»×¤ï¤ì¤¿¡£ ¥Õ¥£¥ë¥¿¡¼¤È¤¤¤¦¸ÀÍÕ¤ò¡¢¤½¤ì¤é¤Î¥Ñ¥¿¡¼¥ó¤Ï¾ï¤ËÃí°Õ¿¼¤¯»È¤¦¤³¤È¤ò¿´¤¬¤±¤Æ¤ª¤ê¡¢¤Þ¤¿¡¢ÈÆÍÑŪ¤Ê¥Õ¥£¥ë¥¿¡¼¤¬¡¢¥Ñ¥¤¥×¤È¥Õ¥£¥ë¥¿¡¼¤«¡¢¤í²á¤¹¤ëMessage Filter(237)/Content Filter(342)¤«¤Î¡¢¤É¤Á¤é¤Ë¤Ä¤¤¤Æ½Ò¤Ù¤Æ¤¤¤ë¤«¤òÌÀ³Î¤Ë¤¹¤ë¤³¤È¤ò¿´¤¬¤±¤Æ¤¤¤ë¡£ ¤â¤·¡¢¤½¤ì¤é¤¬¤Þ¤Àº®Í𤷤Ƥ¤¤ë¤È¹Í¤¨¤¿¤Ê¤é¤Ð¡¢¤É¤ó¤ÊÌÌÅݤⵯ¤³¤µ¤Ê¤¤¤è¤¦¤Ë¡¢ÈÆÍÑŪ¤Ê¥Õ¥£¥ë¥¿¡¼¤ò(½½Ê¬¤ËÈÆÍÑŪ¤À¤¬»þ¡¹ÍðÍѤµ¤ì¤ë¸ÀÍդǤ¢¤ë)¥³¥ó¥Ý¡¼¥Í¥ó¥È¤È¸Æ¤ó¤À¡£

¥Ñ¥¤¥×¤È¥Õ¥£¥ë¥¿¡¼¤ÏϢ³¥×¥í¥»¥¹ÄÌ¿®(Communicating Sequential Processes:CSPs)¤Î³µÇ°¤ÈƱ¤¸»ö¤ò¶¦Í­¤¹¤ë¡£ Hoare¤Ë¤è¤ê1978ǯ¤Ë¤òƳÆþ¤µ¤ì¤¿CSPs[CSP]¤Ï¡¢ÊÂÎó½èÍý¥·¥¹¥Æ¥à¤ÇȯÀ¸¤¹¤ëƱ´üÌäÂê¤òÀâÌÀ¤¹¤ë¤¿¤á¤Ëñ½ã¤Ê¥â¥Ç¥ë¤òÄ󶡤·¤¿¡£ CSPs¤ËÈ÷¤ï¤ë´ðËÜŪ¤Ê¥á¥«¥Ë¥º¥à¤ÏÆþ½ÐÎϤò·Ðͳ¤·¤¿£²¤Ä¤Î¥×¥í¥»¥¹¤ÎƱ´ü¤Ç¤¢¤ë¡£ Æþ½ÐÎϤϡ¢¥×¥í¥»¥¹£Á¤¬¥×¥í¥»¥¹£Â¤Ø½ÐÎϤ¹¤ë½àÈ÷¤¬½ÐÍ褿¤³¤È¤ò¼¨¤·¡¢¤½¤·¤Æ¡¢¥×¥í¥»¥¹£Â¤¬¥×¥í¥»¥¹£Á¤«¤é¤ÎÆþÎϤ¹¤ë½àÈ÷¤¬½ÐÍ褿¤³¤È¤òÄ󼨤·¤¿»þ¤ËȯÀ¸¤¹¤ë¡£ ¤â¤·¡¢¤½¤ì¤é¤Î¤Ò¤È¤Ä¤¬¡¢Â¾Êý¤¬¿¿¤Ç¤Ê¤¤¤Î¤ËȯÀ¸¤¹¤ë¤Ê¤é¤Ð¡¢Â¾Êý¤¬½àÈ÷¤Ç¤­¤ë¤Þ¤Ç¡¢¤½¤Î¥×¥í¥»¥¹¤ÏÂÔ¤Á¹ÔÎó¤Ë¤ª¤«¤ì¤ë¡£ CSPs¤Ï¡¢¤½¤ì¤é¤¬ÁÄ·ë¹ç¤Ç¤Ï¤Ê¤¯¡¢¤Þ¤¿¡¢¥Ñ¥¤¥×¤¬¥­¥å¡¼¥á¥«¥Ë¥º¥à¤âÄ󶡤·¤Ê¤¤¤È¤¤¤¦ÅÀ¤Ç¡¢Åý¹ç¥½¥ê¥å¡¼¥·¥ç¥ó¤È¤Ï°ã¤¦¡£ ¤½¤ì¤Ë¤â´Ø¤ï¤é¤º¡¢³Ø³¦¤Ç¤ÎCSPs¤Î¹­ÈϰϤ˰·¤ï¤ì¤Æ¤¤¤ë¤È¤¤¤¦ÍøÅÀ¤òµý¼õ¤Ç¤­¤ë¡£


C#¤ÈMSMQ¤Ë¤è¤ëñ½ã¤Ê¥Õ¥£¥ë¥¿¡¼

°Ê²¼¤Î¥³¡¼¥ÉÃÇÊҤϡ¢¤Ò¤È¤Ä¤ÎÆþÎϥݡ¼¥È¤È¤Ò¤È¤Ä¤Î½ÐÎϥݡ¼¥È¤ò»ý¤Ä¥Õ¥£¥ë¥¿¡¼¤ÎÈÆÍÑŪ¤Ê´ðÄ쥯¥é¥¹¤ò¼¨¤·¤Æ¤¤¤ë¡£ ´ðËܼÂÁõ¤Ï¼õ¿®¥á¥Ã¥»¡¼¥¸¤ÎËÜÂΤòñ½ã¤Ë¥×¥ê¥ó¥È¤·¡¢½ÐÎϥݡ¼¥È¤Ë¤½¤ì¤òÁ÷¤ë¡£ ¤è¤ê¶½Ì£¿¼¤¤¥Õ¥£¥ë¥¿¡¼¤Ï¡¢Processor¥¯¥é¥¹¤ò¥µ¥Ö¥¯¥é¥¹²½¤·¡¢¤½¤Î¥á¥Ã¥»¡¼¥¸¤ÎÄɲÃÆ°ºî¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤ÎProcessMessage?¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤¹¤ë¡£¤½¤ì¤Ï¡¢¥á¥Ã¥»¡¼¥¸¤ÎÃæ¿È¤òÊÑ´¹¤¹¤ë¤«°Û¤Ê¤ë½ÐÎÏ¥Á¥ã¥Í¥ë¤Ø¥ë¡¼¥Æ¥£¥ó¥°¤¹¤ë¡£

Processor¤¬¤È¤¢¤ëÆþÎÏ¥Á¥ã¥Í¥ë¤È½ÐÎÏ¥Á¥ã¥Í¥ë¤Ø¤Î»²¾È¤ò¼õ¤±¼è¤Ã¤Æ¤¤¤ë¡¢¤È¤¤¤¦¤³¤È¤Ëµ¤¤Å¤¯¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢¤³¤Î¥¯¥é¥¹¤ÏÆÃÄê¤Î¥Á¥ã¥Í¥ë¤È¤â¤É¤ó¤Ê¾¤Î¥Õ¥£¥ë¥¿¡¼¤È¤â´Ø·¸¤·¤Æ¤¤¤Ê¤¤¡£ ¤³¤Î¤³¤È¤Ï¡¢Ê£¿ô¤Î¥Õ¥£¥ë¥¿¡¼¤ò¥¤¥ó¥¹¥¿¥ó¥¹²½¤Ç¤­¤Æ¡¢Ç¤°Õ¤ÎÀßÄê¤Ç¤½¤ì¤é¤ò¤ª¸ß¤¤¤Ë·ë¹ç¤Ç¤­¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤ë¡£

using System;
using System.Messaging;

namespace PipeAndFilters
{
  public class Processor
  {
    protected MessageQueue inputQueue;
    protected MessageQueue outputQueue;

    public Processor (MessageQueue inputQueue, MessageQueue outputQueue)
    {
      this.inputQueue = inputQueue;
      this.outputQueue = outputQueue;
    }

    public void Process()
    {
      inputQueue.ReceiveCompleted += new ReceiveCompletedEventHandler(OnReceiveCompleted);
      inputQueue.BeginReceive();
    }

    public void OnReceiveCompleted(Object source, ReceiveCompletedEventArgs asyncResult)
    {
      MessageQueue mq = (MessageQueue)source;

      Message inputMessage = mq.EndReceive(asyncResult.AsyncResult);
      inputMessage.Formatter = new XmlMessageFormatter(new String[]{"System.String,mscorlib"});
      Message outputMessage = ProcessMessage(inputMessage);

      outputQueue.Send(outputMessage);
      mq.BeginReceive();
    }

    protected virtual Message ProcessMessage(Message m)
    {
      Console.WriteLine("Received Message: "+m.Body);
    }
  }
}

¤³¤Î¼ÂÁõ¤Ï¡¢Event-Driven Consumer(498)¤Ç¤¢¤ë¡£ Process¥á¥½¥Ã¥É¤Ï¤ä¤Ã¤Æ¤¯¤ë¥á¥Ã¥»¡¼¥¸¤Î¤¿¤á¤ËÅÐÏ¿¤µ¤ì¡¢Ëè²ó¥á¥Ã¥»¡¼¥¸¤¬ÆϤ¯¤¿¤Ó¤Ë¡¢OnReceiveCompleted?¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤¿¤á¤Ë¡¢¥á¥Ã¥»¡¼¥¸¥·¥¹¥Æ¥à¤ËÅÁ¤¨¤é¤ì¤ë¡£ ¤³¤Î¥á¥½¥Ã¥É¤Ï¡¢¤ä¤Ã¤Æ¤¯¤ë¥¤¥Ù¥ó¥È¥ª¥Ö¥¸¥§¥¯¥È¤«¤é¥á¥Ã¥»¡¼¥¸¥Ç¡¼¥¿¤òÃê½Ð¤·¡¢¥Ð¡¼¥Á¥ã¥ë¥á¥½¥Ã¥ÉProcessMessage?¤ò¸Æ¤Ö¡£

¤³¤Îñ½ã¤Ê¥Õ¥£¥ë¥¿¡¼¤ÎÎã¤Ï¡¢¥È¥é¥ó¥¶¥¯¥·¥ç¥Ê¥ë¤Ç¤Ï¤Ê¤¤¡£ ¥á¥Ã¥»¡¼¥¸¤ò½èÍý¤·¤Æ¤¤¤ë´Ö(½ÐÎÏ¥Á¥ã¥Í¥ë¤Ø¤½¤ì¤¬Á÷¤é¤ì¤ëÁ°¤Ë)¡¢¤â¤·¥¨¥é¡¼¤¬È¯À¸¤·¤¿¤é¡¢¤½¤Î¥á¥Ã¥»¡¼¥¸¤Ï¼º¤ï¤ì¤ë¡£ ËÜÈִĶ­¤Ë¤ª¤¤¤Æ¡¢¤³¤Î¤³¤È¤Ï°ìÈÌŪ¤Ë¤Ï˾¤Þ¤·¤¯¤Ê¤¤¡£ ¤³¤ÎÌäÂê¤ò²ò·è¤¹¤ë¤¿¤á¤Ë¡¢Transactional Client(484)¤ò¸«¤ë¤³¤È¡£