ããã°ã©ãã³ã°ãããŠãããšãããã®ã©ã€ãã©ãªäŸ¿å©ããã ãã©ããã®ãŸãŸã ãšãã¡ã®ã³ãŒãã«åããªããªâŠããšããå Žé¢ã«å¿ ãã¶ã€ãããŸããèªåã§ã¯äžèº«ãå€ããããªãå€éšã©ã€ãã©ãªãéå»ã®è² åµçãªæ¢åã¯ã©ã¹ãããŒã ã®ä»ã¡ã³ããŒãäœã£ãç¬èªã¯ã©ã¹ããããã£ããå€ããããªããã©äœ¿ãããã¯ã©ã¹ãããèªåãã¡ã®ã³ãŒãã«ãã£ãããããããã®èšèšææ³ã ã¢ããã¿ãŒãã¿ãŒã³ ã§ãã
ãã®ãã¿ãŒã³ã䜿ãããªããããã«ãªããšãå€éšã©ã€ãã©ãªã®å·®ãæ¿ããã¬ã¬ã·ãŒã³ãŒãã®åå©çšãã¹ã ãŒãºã«ãªããæžãæããã¹ãã³ãŒãã®éããã£ãšæžããŸããããŒã å šå¡ã®ã³ãŒããå€§å¹ ã«ä¿®æ£ããã«ãå éšã ããå·®ãæ¿ããããæªæ¥ãæã«å ¥ããã§ããâš
ãã¢ããã¿ãŒããšèããŠæãæµ®ãã¶ã®ã¯ãå®¶é»ãããœã³ã³ã®å€æã¢ããã¿ãŒã§ããããããšãã°ãã£ã¹ãã¬ã€åŽãHDMIãPCåŽãUSB Type-Cãããªãå Žåããã®ãŸãŸã§ã¯æ¥ç¶ã§ããŸãããã§ãHDMI â Type-Cã®å€æã¢ããã¿ãŒãéã«æãã°ãäž¡è ãã€ãªããŠæ åãæ ããããã«ãªããŸãã
ããã°ã©ã ã§ãåãçºæ³ã§ããå©çšãããã¯ã©ã¹ïŒæ¢åã©ã€ãã©ãªãªã©ïŒãšãèªåãã¡ãæžãããã€ã³ã¿ãŒãã§ãŒã¹ã®åœ¢ãéããšããéã«ãå€æåœ¹ã®ã¯ã©ã¹ããæãã§æ©æž¡ãããããã®å€æã¯ã©ã¹ã®ããšã ã¢ããã¿ãŒïŒAdapterïŒ ãšåŒã³ãããããèšèšææ³ãã¢ããã¿ãŒãã¿ãŒã³ãšèšããŸããð
ã¢ããã¿ãŒãã¿ãŒã³ã¯ãæå㪠GoFïŒGang of FourïŒã®23ã®ãã¶ã€ã³ãã¿ãŒã³ ã®äžã€ã§ããæ§é ã«é¢ãããã¿ãŒã³ãã«åé¡ãããŸããèãæ¹ãå®è£ ãã·ã³ãã«ãªã®ã§ããã¶ã€ã³ãã¿ãŒã³ã®å ¥ãå£ãšããŠæé©ã§ããð
Pythonã§ã¢ããã¿ãŒãã¿ãŒã³ãå®è£ ãããšãã¯ãäž»ã«æ¬¡ã®2ã€ã®ã¹ã¿ã€ã«ããããŸãã
ã©ã¡ãã§ãå®çŸã§ããŸãããPythonã§ã¯ã倿Žãããéšåã ãæžãæããããäŸåé¢ä¿ã匱ãä¿ãŠãããšããçç±ã§ãå§è²ã¹ã¿ã€ã«ã奜ãŸããããšãå€ãã§ããð
ããšãã°ãæçš¿ã¯ã©ã¹ã®ã€ã³ã¿ãŒãã§ãŒã¹ïŒtweetã»retweetïŒããæœè±¡ã¯ã©ã¹ã§å®çŸ©ããŠãããå€éšã® Suppter ã¯ã©ã¹ã䜿ãããããã©14æå以äžã ãšãšã©ãŒã«ãªãâŠãšããå ŽåãSuppterAdapter ãšããã¯ã©ã¹ãäœã£ãŠãå
éšã§ããã¹ãã11æåïŒãâŠãã«çç¥ããŠããæ¬æ¥ã®tweetãåŒã³åºãããšãã圢ã«ããã°ãåŒã³åºãåŽã¯ä»ãŸã§éãã®ã³ãŒãã§äœ¿ãç¶ããããŸãã
class SuppterAdapter(Suppter_ABC):
  def __init__(self):
    self.suppter = Suppter()
  def tweet(self, text):
    if len(text) >= 14:
      text = text[:11] + "âŠ"
    self.suppter.tweet(text)
ããããã°ãé·æãæããŠãèªåã§çç¥ããã圢ã§ãã€ãŒããæç«ãåŒã³åºãåŽã¯ adapter.tweet("ããã«ã¡ã¯âŠ") ãšæžãã ãã§ãæåæ°ãæ°ã«ãã䜿ããããã«ãªããŸããâ¡
ããå°ãçŸå Žã£ãœãã·ããªãªã§èããŠã¿ãŸããæå㯠SuppMaze ãšããç¬èªã¯ã©ã¹ã§è¿·è·¯ãçæããŠããããã©ãéäžãã maze_lib ãšãããã£ãšè¯ãå€éšã©ã€ãã©ãªã«ä¹ãæãããããšããç¶æ³ã§ãã
maze_gen() ã§è¿·è·¯æååãè¿ãããã®ãŸãŸä¹ãæãããšãã¢ããªå šäœã«æ£ãã°ã£ãè¿·è·¯çæã®ã³ãŒããå šéšæžãçŽãå¿ èŠãåºãŠããŸããŸããããã¯ããŒã ã®ã¡ã³ããŒå šå¡ã«ãé¡ãããã«ã¯éãããŸããããð±
ããã§ MazeAdapter ã¯ã©ã¹ãäœããå
éšã§maze_libãåŒã³åºãã€ã€ãåºåãããæååãã#ãâã*ãã«çœ®æãã¡ãœããåãä»ãŸã§éãã® maze_gen() ãšããŠå
¬éããŸãã
åŒã³åºãåŽã®ã³ãŒã㯠SuppMaze() ã MazeAdapter() ã«çœ®ãæããã ãããã£ã1è¡ã®å€æŽã§ãå
éšå®è£
ã¯å€éšã©ã€ãã©ãªããŒã¹ã«å·æ°ã§ããããã§ãããããã倿Žã«åŒ·ãèšèšãã®åšåã§ããð¯
ãç¹å¥ãªããšãããŠããããã§ã¯ãªãããšæãããããããŸãããããããããã¢ããã¿ãŒãã¿ãŒã³ã®è¯ããšãããã·ã³ãã«ãªä»çµã¿ã§ãã³ãŒãã®å€æŽã³ã¹ããåçã«äžããã®ãæ¬è³ªã§ããðª
åç»ãããã°ã§æŠå¿µãæŽãã ããæžç±ã§äœç³»çã«åŠã¶ãšäžæ°ã«ã¬ãã«ã¢ããã§ããŸããã¢ããã¿ãŒã ãã§ãªããStrategyã»Factoryã»Observerãšãã£ãä»ã®ãã¿ãŒã³ãããªãã¡ã¯ã¿ãªã³ã°ãã¯ãªãŒã³ã¢ãŒããã¯ãã£ãŸã§äžç·ã«æŒããããšãçŸå Žã§ãããã¯ã¢ããã¿ãŒã§åãã°ç¶ºéºã ãªããšå€æã§ããåãã€ããŸããð
23ã®ãã¶ã€ã³ãã¿ãŒã³ã身è¿ãªäŸã§äžå¯§ã«è§£èª¬ããåèãã¢ããã¿ãŒãã¿ãŒã³ãå³è§£ä»ãã§çè§£ãããããååŠè ã®æåã®1åã«æé©ã§ãã
Pythonã®åçãªç¹æ§ã掻ããããã¶ã€ã³ãã¿ãŒã³å®è£ ãç¶²çŸ ãã¢ããã¿ãŒããã³ã¬ãŒã¿ãªã©ãPythonãããæžãæ¹ãåŠã¹ãŸãã
ã䜿ãã«ããã³ãŒããã©ãæ¹åãããããäœç³»çã«åŠã¹ãå€å žãã¢ããã¿ãŒçãªçºæ³ããªãã¡ã¯ã¿ãªã³ã°ã®ã©ã®å Žé¢ã§æŽ»ããããè ã«èœã¡ãŸãã
ã¯ã©ã¹éã®è²¬ååæ ãç¶æ¿ãšå§è²ã®äœ¿ãåããäžå¯§ã«è§£èª¬ãã¢ããã¿ãŒãã¿ãŒã³ã®èæ¯ã«ããèšèšææ³ãæ·±ãçè§£ã§ããŸãã
ã¢ããã¿ãŒãã¿ãŒã³ãæ¡çšãã¹ããè¿·ã£ããšãã®å€æè»žãšããŠããèªã¿ãããã³ãŒããšã¯äœããã®æèŠãé€ããåèãã·ã³ãã«ãªèšèšãæ¯ããåå°ã«ãªããŸãã
æ¬è³ªçã«ã¯ãšãŠãè¿ãã§ããã¢ããã¿ãŒãã¿ãŒã³ã¯ãã€ã³ã¿ãŒãã§ãŒã¹ã倿ããããšãã«äž»çŒããããã©ãããŒã¯ããåºããæ©èœãå ããæŠå¿µãã¢ããã¿ãŒã¯ã©ãããŒã®äžçš®ãšæãããšæŽçããããã§ãã
è¿·ã£ããå§è²ïŒã³ã³ããžã·ã§ã³ïŒãããããã§ããç¶æ¿ã¯èŠªã¯ã©ã¹ã®å éšå®è£ ã«åŒ·ãäŸåãããããã©ã€ãã©ãªã®ããŒãžã§ã³ã¢ããã§å£ãããããšãããªã¹ã¯ããããŸããå§è²ãªãå¿ èŠãªã¡ãœããã ãå ¬éã§ããã®ã§ãçµå床ãäžãã£ãŠä¿å®ããããã§ãã
ãããŸããå°èŠæš¡ã§ããå€éšAPIãã©ãããããããã¹ãæã«ã¢ãã¯ã«å·®ãæ¿ããããããããšãã£ãå Žé¢ã§éå®ããŸãããã ãããŸã£ããå·®ãæ¿ãäºå®ã®ãªãåŠçã«æåããã¢ããã¿ãŒãåãŸãããšéå°èšèšã«ãªãã®ã§ãå€ãããããªå¢çã«ã ãå°å ¥ããã®ãã³ãã§ãã
Decoratorã¯ãåãã€ã³ã¿ãŒãã§ãŒã¹ã®ãŸãŸæ©èœã远å ããFacadeã¯ãè€éãªãµãã·ã¹ãã ãã·ã³ãã«ãªAPIã§é ãããAdapterã¯ãç°ãªãã€ã³ã¿ãŒãã§ãŒã¹ã倿ããããç®çã®éããæèãããšäœ¿ãåããã¹ãããªããŸãã
倧äžå€«ã§ããããããå€éšã©ã€ãã©ãªãå·®ãæ¿ããããããã¹ããããããããããšãªã£ãã¿ã€ãã³ã°ã§ãå¢çéšåã«ã¢ããã¿ãŒãåãåºããªãã¡ã¯ã¿ãªã³ã°ã¯çéã®ã¢ãããŒããå°ããã€å°å ¥ããããšã§ãæ¢åæ©èœãå£ããã«æ¹åã§ããŸãã
ã¢ããã¿ãŒãã¿ãŒã³ã¯ã倿Žã§ããªãã¯ã©ã¹ãèªåãã¡ã䜿ãããã圢ã«å€æããããã®ã·ã³ãã«ã§åŒ·åãªèšèšææ³ã§ããå®è£ ã¯å§è²ãç¶æ¿ãçµã¿åãããã ããé£ããããšã¯ããŠããªããŠãããããã¯ã¢ããã¿ãŒã§åããããšå€æã§ããç®ãæã€ããšã§ãã³ãŒãããŒã¹å šäœã®æè»æ§ãšä¿å®æ§ã倧ããåäžããŸããð
å€éšã©ã€ãã©ãªã®å·®ãæ¿ããã¬ã¬ã·ãŒã³ãŒãã®ã©ããããã¹ãå®¹ææ§ã®åäžããããã1ã€ã®èãæ¹ã§æ¯ããŠãããã®ãã¢ããã¿ãŒãã¿ãŒã³ã§ããä»å玹ä»ããæžç±ãçžæ£ã«ããã²ããªãã®ã³ãŒããã倿Žã«åŒ·ãèšèšããžãšã¢ããããŒãããŠã¿ãŠãã ãããð
ð ãåãã³ãŒãããããèœã¡ãª…
ð Pythonã®ãå¶åŸ¡æ§æã…
ð ãæååãèªåšã«æãã人ã…
ð ãèªã¿ãããã³ãŒããã¯å€æ°…
ð ããã°ã©ãã³ã°ã®ãã¹ãŠã¯ã…
ð ãæååã«å€æ°ãå ¥ãããã…