ã¯ããã«
æ¨å¹´ã2022 å¹´ã«ãã½ããã¦ã§ã¢ã¢ã¼ããã¯ãã£ã®åºç¤ã[1] ã¨ããæ¸ç±ãåºçããã¾ããã ããã¯ä»å¹´ã2023 å¹´ã® 1 æ 16 æ¥ã«çºè¡¨ããããIT ã¨ã³ã¸ãã¢æ¬å¤§è³2023ãæè¡æ¸é¨éãã¹ã10 ã«é¸ã°ãããªã©ãã½ããã¦ã§ã¢ã¨ã³ã¸ãã¢ããã®æ³¨ç®ãå¤ãã£ãæ¸ç±ã§ããã¨è¨ããã§ãããã
ããã§ç´¹ä»ããã ã¢ã¼ããã¯ãã£ãã£ã·ã¸ã§ã³ã¬ã³ã¼ã (Architectural Decision Records; ADR) ã¨ããæ¹æ³ã¯ããã®æ¸ç±ã®è©å¤ã浸éããã«ã¤ããç®ã«è³ã«ãããã¨ãå¤ããªã£ãå°è±¡ãããã¾ãã æ¬è¨äºã§ã¯ããã® ADR ã¨ã¯ã©ã®ãããªæ¹æ³ã§ããã®ããã¾ãããã«å¯¾ããå人çãªèå¯ãéæã«ã¤ãã¦ãè¨è¿°ãã¦ãã¾ãã
ãªãæ¬è¨äºã«ãããã夿ããæ±ºå®ããããã®ç¨èªããDecision ã®è¨³èªã§ããã¨è§£éãã¦ããã ãã¦å·®ãæ¯ããããã¾ããã æèãåºå ¸ã®é½åä¸ãè¨èã使ãåãã¦ããã ãã§ãã
ADR ã®æ¦ç¥
ADR ã¨ã¯ãç¹å®ã®ã¢ã¼ããã¯ãã£æ±ºå®ãè¨è¿°ããçãããã¹ããã¡ã¤ã«ã[1] ã§ãã ã¢ã¼ããã¯ãã£æ±ºå®ã¯ãã©ã®ãããªããã¸ã§ã¯ãã§ãããå¿ ãè¡ããã¦ããã¨èãã¦è¯ãã§ãããã ã¾ãããã®æ±ºå®ã®å 容ã«ã¤ãã¦ããå¤ããå°ãªããããã£ã¨ä½ããã®å½¢å¼ã§ææ¸åããã¦ããã¯ãã§ãã
ãããã£ãææ¸åã®å½¢å¼ã ADR ã¨åä»ãã¦èªèãåºå¥ãããã¨ã«ãããå¿ è¦ãªæ©ä¼ã«ä¸è²«æ§ã®ããææ¸ã使ããæç¶ãããéç¨ã«çµã¿è¾¼ããããã«ãªãã¾ãã ããã¯ã䏿²ãããIT ã¨ã³ã¸ãã¢æ¬å¤§è³2023ãã®å¤§è³ã«é¸ã°ãããè¯ãã³ã¼ãï¼æªãã³ã¼ãã§å¦ã¶è¨è¨å ¥éã[2]ã®åé ã§è¿°ã¹ããã¦ããããçåã¼ããªãã¡æ£ä½ãç¥è¦ã§ããã°ãæ£ãã対å¦ã§ãããã¨ããçºæ³ã«ãè¿ãããã®ãè¦åºããããããã¾ããã
ã¢ã¼ããã¯ãã£æ±ºå®
å è¿°ããããã« ADR ã¨ã¯ãã¢ã¼ããã¯ãã£æ±ºå® (Architectural Decision; AD) ãè¨è¿°ãããææ¸å½¢å¼ã®ï¼ã¤ã§ãã ããã§ ADR ããå ã«ãã¢ã¼ããã¯ãã£æ±ºå®ã«ã¤ãã¦è¨è¿°ãã¾ãã
ã¢ã¼ããã¯ãã£æ±ºå®ã®ã¹ããã
wikipedia ã® Architectural Decision è¨äº[3] ã§ã¯ã以ä¸ã®ããã«ã¹ããããç´¹ä»ããã¦ãã¾ãã
- 決å®ã®èå¥ (Decision identification)
- 決å®ãä¸ã (Decision making)
- 決å®ã®ææ¸å (Decision documentation)
- 決å®ã®å¶å®ï¼æ½è¡ (Decision enactment/enforcement)
- 決å®ã®å ±æ (Decision sharing)
決å®ã®èå¥ã«ããã¦ã¯ãç·æ¥æ§ãéè¦æ§ãè©ä¾¡ãã¾ãã ãããã¯ãããã¯ãã°ã®ãããªãã¢ã¼ããã¯ãã£æ±ºå®ã®ããã¯ãã°ããç¨æãã¦ããã¨ããã¾æ±ºå®ãä¸ãå¿ è¦ããªããã®ãä¿çã§ãã¾ãã ADR ã¯ãä¸ãããã¢ã¼ããã¯ãã£æ±ºå®ã®ææ¸åãè¡ãã¨ãã®ãå½¢å¼ã§ããã¨è§£éã§ããã§ãããã
ä¸ãããã¢ã¼ããã¯ãã£æ±ºå®ã¯ã½ããã¦ã§ã¢è¨è¨ã«ä½¿ç¨ããããããæ±ºå®ã®å¶å®ï¼æ½è¡ãéãã¦ãã·ã¹ãã ã®è³é調éã»éçºã»éç¨ãè¡ãã¹ãã¼ã¯ãã«ãã¼ã«ä¼ããããåãå ¥ããããªããã°ãªãã¾ããã ã¾ããå¤ãã®ã¢ã¼ããã¯ãã£å¤æã¯ããã¸ã§ã¯ãã«ã¾ããã£ã¦ç¹°ãè¿ããããããéå»ã«ä¸ãããæ±ºå®ã®å ±æãè¡ããã¨ã«ãããè¯ããã®ãæªããã®ãå«ãã¦ãè²´éãªã»åå©ç¨å¯è½ãªè³ç£ã¨ãªãã¯ãã§ãã
ç§è¦ã¨ãªãã¾ãããæ±ºå®ã®èå¥ãè¡ããã¢ã¼ããã¯ãã£æ±ºå®ã®ããã¯ãã°ãã«è¿½å ãããã¨ããã®ã¯éè¦ãªã¢ã¤ãã¢ã§ããããã«æãã¾ãã ãã®åé¡ã«ã¯ã¢ã¼ããã¯ãã£æ±ºå®ãå¿ è¦ã§ã¯ãªããï¼ã¨ããæèµ·ã«ã¤ãã¦ãæ¶æ¥µçã«ãªã£ã¦ã¯ãªãããå¿ãå»ããã¦ããªããªãã¨èãã¦ããããã§ãã
ã¢ã¼ããã¯ãã£ä¸éè¦ãªãã®
Michael Nygard ã®è¨äº[4] ã«ããã¦ãADR ã¨ã¯ãã¢ã¼ããã¯ãã£ä¸éè¦ãª (architecturally significant) 決å®ã®è¨é²ã§ããã¨ãã¦ãã¾ãã ã¾ãããã®ã¢ã¼ããã¯ãã£ä¸éè¦ãªæ±ºå®ã¨ãã¦ã以ä¸ã®ãã®ãæãããã¦ãã¾ããâ
- æ§é (structure)
- éæ©è½ç¹æ§ (non-functional characteristics)
- ä¾åé¢ä¿ (dependencies)
- ã¤ã³ã¿ã¼ãã§ã¼ã¹ (interfaces)
- æ§é ææ³ (construction technique)
ã¾ãããã®è¨äºã®æ«å°¾ã«ãã Philipe Kruchten ã®æ¸ç±[5] ã«ããã¦ã¯ã以ä¸ã®è¨è¿°ãããã¾ãã
ï¼è±æã¯ [5] ã® 16 ç« ããå¼ç¨ã馿ã¯çè
ã«ãã翻訳ï¼
…, that the architect focuses only on the architecturally significant requirements and the corresponding architecturally significant design decisions (see Figure 16.1).
â¦ã ã¢ã¼ããã¯ãã£ä¸éè¦ãªè¦ä»¶ã¨ãããã«å¯¾å¿ããã¢ã¼ããã¯ãã£ä¸éè¦ãªè¨è¨å¤æã¨ã®ã¿ã«ãã¢ã¼ããã¯ãã¯ç¦ç¹ãå½ã¦ã¾ãï¼ä¸å³åç §ï¼ã

ï¼å³16.1. ä¸ç»åã [5] ã® 16 ç« ï¼ãªã©ã¤ãªã¼å¦ç¿ãã©ãããã©ã¼ã https://learning.oreilly.com/ ããå¼ç¨ï¼
Architects need to consider and balance the impact along a number of different dimensions when making architectural decisions. This forces the architects to constantly make difficult tradeoffs.
ã¢ã¼ããã¯ããã¢ã¼ããã¯ãã£æ±ºå®ãä¸ãã¨ãã«ã¯ãå¤ãã®ç°ãªã次å ã«æ²¿ãå½±é¿ãèæ ®ãã¦ããã©ã³ã¹ãåãå¿ è¦ãããã¾ãããã®ãããã¢ã¼ããã¯ãã¯å¸¸ã«é£ãããã¬ã¼ããªããå¼·ãããããã¨ã«ãªãã¾ãã
By âarchitecturally significant,â we mean the ones that will have a long and lasting effect on the system performance, quality, and scalability, as opposed to the myriad other design decisions that will be made during the construction of the system.
ãã¢ã¼ããã¯ãã£ä¸éè¦ãªãã¨ããã®ã¯ãã·ã¹ãã æ§ç¯ä¸ã«è¡ãããä»å¤æ°ã®è¨è¨å¤æã¨ã¯ç°ãªããã·ã¹ãã ã®æ§è½ã»åè³ªã»æ¡å¼µæ§ã«ãé·æçãã¤æ°¸ç¶çã«å½±é¿ãä¸ãããã®ãæå³ãã¾ãã
â : æãããã¦ãããããã«ã¤ãã¦ã¯ããã½ããã¦ã§ã¢ã¢ã¼ããã¯ãã£ã®åºç¤ã[1] ã§ãããã説æãå ãããã¦ãã¾ã
ã¢ã¼ããã¯ãã£æ±ºå®ã«ãããã¢ã³ããã¿ã¼ã³
ãã½ããã¦ã§ã¢ã¢ã¼ããã¯ãã£ã®åºç¤ã[1] ã§ã¯ã以ä¸ã®ãããªã¢ã³ããã¿ã¼ã³ãç´¹ä»ããã¦ãã¾ãã
ï¼æ¦è¦ãå¼ç¨ããã«çããã®ã§ã詳細ã¯è©²å½æ¸ç±ãåç
§ãã¦ãã ããï¼
- ã°ã©ã¦ã³ãããã°ãã¼ã¢ã³ããã¿ã¼ã³ (Groundhog Day -)
- ãããæ±ºå®ãä¸ãããçç±ãããããã«ãç¹°ãè¿ãä½åº¦ãè°è«ããã¦ãã¾ãããã¨
- è³ç£é²å¾¡ã¢ã³ããã¿ã¼ã³ (Covering Your Assets -)
- ã鏿ã誤ããã¨ãæãã¦ãã¢ã¼ããã¯ãã£æ±ºå®ãä¸ããã¨ãé¿ããããå å»¶ã°ãããããã¨
- åæéº»çºã¢ã³ããã¿ã¼ã³ (Analysis Paralysis -)
- ãé度ã«åæãéãããã¨ã«ãã£ã¦æ±ºå®ãã麻çºããã¦ãã¾ãã解決çãè¡åæ¹éãæ±ºã¾ããªãããã¨
- ã¡ã¼ã«é§åã¢ã¼ããã¯ãã£ã¢ã³ããã¿ã¼ã³ (Email-Driven Architecture -)
- ã人ã ãã¢ã¼ããã¯ãã£æ±ºå®ãè¦å¤±ã£ãããå¿ãããããããã¯æ±ºå®ããããã¨ããç¥ããªãã£ããããããã«ããã®ã¢ã¼ããã¯ãã£æ±ºå®ãå®è£ ã§ããªããªã£ã¦ãã¾ãããã¨
Michael Nygard ã®è¨äº[4] ã«ããã¦ã¯ãéé²ã«å¤æãåãå ¥ããï¼å¤æ´ãããã¨ãã¢ã³ããã¿ã¼ã³ã¨ãã¦æãããã¦ãã¾ãã ã¢ã¼ããã¯ãã£æ±ºå®ã®æèã»èæ¯ãåããã¦ãã¾ã£ã¦ãããããã«ãæèã»èæ¯ã«å¤åãçããã®ã«æ±ºå®ã®åæ¤è¨ãæãã¦ãã¾ãã ã¾ãã¯æèã»èæ¯ã«å¤åããªãã®ã«æ±ºå®ã夿´ãã¦ãã¾ããã¨ã«ãããããã¸ã§ã¯ãå ¨ä½ã®ä¾¡å¤ãæãªããã¦ãã¾ãå¯è½æ§ãããã¾ãã
ADR
ä¸è¬ã« ADR ã¯ãããã¤ãã®ã»ã¯ã·ã§ã³ï¼é ç®ï¼ãããªãã¾ãã ã©ã®ã»ã¯ã·ã§ã³ãæ¡ç¨ãããï¼æ¨æºã¨ãã ADR ã®ãã³ãã¬ã¼ããã©ãå®ç¾©ãããï¼ã«ã¤ãã¦ã¯ãç¶æ³ã«ãã£ã¦åæ¨é¸æããããç¬èªå®ç¾©ãã¦ãè¯ãã§ãããã ã©ãããã夿ãè¨é²ãããã¨ããç®çã§ããããã©ã®ããã«å¤æãè¨é²ããããã¯ææ®µã§ãããã¨ã«ãçæãå¿ è¦ã§ãã joelparkerhenderson/architecture-decision-record ãªãã¸ããª[6] ã§ç´¹ä»ããã¦ãã ADR ã®ãã³ãã¬ã¼ãã確èªããã¨ã æ¯è¼çèªç±ã«ã»ã¯ã·ã§ã³ãå®ç¾©ããã¦ãããã¨ããããã¾ãã
ADR ã®éç¨ããµãã¼ãããããã®ãã¼ã«ã¯ãããã¤ãã®è¨èªã§ä½æããã¦ãã¾ãããã¨ãã° PHP ãªãã° globtec/phpadr ãªã©ãããã¾ãã
æ¬è¨äºã§ã¯ Michael Nygard ãç´¹ä»ããå½¢å¼ã¨ãJeff Tyree, Art Akerman ãç´¹ä»ããå½¢å¼ã示ãã¾ãããªã便å®ä¸ãADR ã®ã»ã¯ã·ã§ã³ã¯å¢¨å¡ã«ãã³ããã§ããããåºå¥ãã¦ä»¥ä¸è¡¨è¨ãã¦ããã¾ãã
Michael Nygard ã«ããå½¢å¼
Michael Nygard ã®è¨äº[4]ã«ããã¦ãç´¹ä»ããã¦ããå½¢å¼ã«ãªãã¾ãã ãã®å½¢å¼ã¯ ThoughWorks ãã¯ããã¸ã¼ã¬ã¼ãã¼ã« Lightweight Architecture Decision Records ã¨ãã¦æ¡ç¨ããã¦ãã[7]ãããã軽éADRãã¨å¼ç§°ãã¦ãããããããã¾ããã éåã«è¨è¿°ããã¨ã ADR ã®ä½æãä¿å®ã®ã³ã¹ããé«ããªã£ã¦ãã¾ã£ãããèªã¾ããªããªã£ã¦ãã¾ãæããããããã軽éãã¯ç¡è¦ã§ããªãè¦ç´ ã¨è¨ããã§ãããã
ãã½ããã¦ã§ã¢ã¢ã¼ããã¯ãã£ã®åºç¤ã[1] ããDesign It!ã[8] ã§ç´¹ä»ããã¦ããã®ããã®å½¢å¼ã§ãã ãããã®æ¸ç±ã«ããã¦ã¯ãè§£éã®è£è¶³ãæ¡å¼µãè¡ããã¦ããããããããè¸ã¾ãã¦ä»¥ä¸è¨è¿°ãã¾ãããªã Michael Nygard ã®è¨äº[4] ã§ç´¹ä»ããã¦ããã»ã¯ã·ã§ã³ã¯ã title, context, decision, status, consequences ã® 5 ã¤ã¨ãªãã¾ãã
ã¿ã¤ãã« (Title)
ãæ±ºå®ããèå¥ã§ããç¨åº¦ã«ã¯èª¬æçãªãç°¡æ½ãªè¡¨é¡ãè¨è¿°ãã¾ããé常ã¯é£çªãæ¯ãã¾ãã
æèã»èæ¯ (Context)
ãæ±ºå®ããä¸ãããæèã»èæ¯ã«ã¤ãã¦è¨è¿°ãã¾ãã ãã®ã決å®ããä¸ãè¦å ã¨ãªã£ãè¦æ±ä»æ§ã«ã¤ãã¦è¨è¿°ããã»ã¯ã·ã§ã³ã§ããã¨ãèãããã¾ãã
価å¤ä¸ç«ç (value-natural) ãªäºå®ãè¨è¿°ããã®ãæã¾ããã¨ããã¦ãã¾ãã ä¾ãã°éå»ã®ã¢ã¼ããã¯ãã£æ±ºå®ãæè¡ãã¹ãã«ããã¸ãã¹ã社ä¼ã»æ¿æ²»äºæ ãããã¸ã§ã¯ãã®å°åæ§ã¨ãã£ããã¢ã¼ããã¯ãã£ã«ä½ç¨ããå (forces) ãæãããã¾ãã
ã¢ã¼ããã¯ãã£æ±ºå®ã¯ãé£éçã«å½±é¿ãåã¼ããã¨ãããã¾ãã ãã® ADR ããå è¡ãã ADR ã®ã決å®ãã«å½±é¿ãåãã¦ããã®ãªãã°ããããè¨è¿°ãã¦ãããã¨ãã§ãã¾ãã
ä»£æ¿æ¡ (Alternatives)
ãæ±ºå®ãã®ä»£æ¿æ¡ã«ã¤ãã¦ããã®åæã®è©³ç´°ããæèã»èæ¯ãã»ã¯ã·ã§ã³ãè¨è¿°ããã¨ãçè§£ãã¥ãããã®ã«ãªã£ã¦ãã¾ãããããã¾ããã ãã®ãããªã¨ãã¯ãä»£æ¿æ¡ãã追å ãã¦ãå¥éã«è¨è¿°ãããã¨ãã§ãã¾ãã
æ±ºå® (Decision)
ã¢ã¼ããã¯ãã£æ±ºå®ãã®ãã®ã«ã¤ãã¦è¨è¿°ãã¾ãã
è½åçã»è¯å®çã«ãå½ä»¤å½¢ã§ãå®å ¨ãªæç« (full sentences) ã§è¨è¿°ãããã¨ãæã¾ããã¨ããã¦ãã¾ãã ãæèã»èæ¯ãã«ã¦è¨è¿°ãããã¢ã¼ããã¯ãã£ã«ä½ç¨ãã¦ããåã¸ã®å¯¾å¿ãè¨è¿°ããã®ãè¯ãã§ãããã
ã¹ãã¼ã¿ã¹ (Status)
ãã® ADR ã®ã¹ãã¼ã¿ã¹ãè¨è¿°ãã¾ãã
ã¹ãã¼ã¿ã¹ã¨ãã¦ãææ¡æ¸ã¿ (Proposed)ããæ¿èªæ¸ã¿ (Accepted)ããä»£æ¿æ¸ã¿ (Superseded)ãã鿍奍 (Deprecated)ãããæ£å´ (Rejected)ãã®ï¼ã¤ï¼ã®ãã¡ããããï¼ãé常ç¨ãããã¾ãã
ã¯ããã¯ãææ¡æ¸ã¿ãã¨ããã¹ãã¼ã¿ã¹ã«ããããã¸ã§ã¯ãã®ã¹ãã¼ã¯ãã«ãã¼ããåæãå¾ãããã¨ããæ¿èªæ¸ã¿ãã¨ãã¾ãã åæãå¾ãããªãã£ãã¨ãããã® ADR ãä¿®æ£ãããããã¦åæãå¾ããã¨ã¯ããªãã®ã§ããã°ããæ£å´ãã¨ãã¾ãã 以éã«ãå¾ç¶ã® ADR ã«ãã£ã¦å¤æã代æ¿ãããã¨ãã¯ãä»£æ¿æ¸ã¿ããªããã鿍奍ãã¨ãã¾ãã ãªã代æ¿ãããã¨ãã«ã¯ããã®å¾ç¶ã® ADR ã¨ç¸äºã«åç §ãããã¹ãã§ãããã
ä¸è¨ã«å ããã䏿¸ã (Draft)ãã¨ããã¹ãã¼ã¿ã¹ãè¨å®ãããã¨ãèãããã¾ãã ãã®å ´åã¯ã¯ããã䏿¸ããã¨ããã¹ãã¼ã¯ãã«ãã¼ã«ã¬ãã¥ã¼ãä¾é ¼ãããæ®µéã§ãææ¡æ¸ã¿ãã¨ãã¾ãã ã¾ãããã½ããã¦ã§ã¢ã¢ã¼ããã¯ãã£ã®åºç¤ã[1] ã§ã¯ãã³ã¡ã³ãåé (Request For Comments; RFC)ãã¨ããã¹ãã¼ã¿ã¹ãç´¹ä»ããã¦ãã¾ãã
çµæã»å½±é¿ (Consequences)
ãæ±ºå®ãã«ããçµæã»å½±é¿ããªããææ (outcomes) ãã¢ã¦ããããã»ãã©ãã¼ã¢ãããè¨è¿°ãã¾ãã
è¯å®çã»ä¸ç«çã»å¦å®çããããã®è¦³ç¹ãããåæãã¹ãã§ãã ãã®ã»ã¯ã·ã§ã³ã«ããã©ã¹ã®çµæãããã¤ãã¹ã®çµæãã¨ãã£ãå°é ç®ãäºãç¨æãã¦ããã¨ãè¨è¿°ãããããªãããããã¾ããã
ç¹°ãè¿ãã«ãªãã¾ãããã¢ã¼ããã¯ãã£æ±ºå®ã¯ãé£éçã«å½±é¿ãåã¼ããã¨ãããã¾ãã ãã® ADR ã§ã®ã決å®ãããå¾ç¶ã® ADR ã«ãå½±é¿ããã®ãªãã°ããããè¨è¿°ãã¦ãããã¨ãã§ãã¾ãã
ãçµæã»å½±é¿ããè¨è¿°ããã¿ã¤ãã³ã°ã¯ãããã¤ãèãããã¾ãã ãæ±ºå®ããä¸ããã®ã¨åãã¿ã¤ãã³ã°ã§ãããããäºæ³ãã¦è¨è¿°ãã¦ãæ§ãã¾ããã ã¾ããä¾ãã°ï¼ã¶æå¾ã¨ãã£ãä¸å®æéå¾ã«ãã¬ãã¥ã¼ãè¡ã追è¨ãããã¨ãã§ãã¾ãã ãã®å ´å㯠After-Action Review ãããã¬ã¼ããªãåæãªã©ãèãããã¾ãã
é 宿¹æ³ (Compliance)
ãæ±ºå®ããé å®ããããã®æ¹æ³ã¨ãé å®ããã¦ããããè©ä¾¡ããããã®æ¹æ³ãè¨è¿°ãã¾ãã
åè (Notes)
ADR ã«é¢ããã¡ã¿ãã¼ã¿ãè¨è¿°ãã¾ãã ãã½ããã¦ã§ã¢ã¢ã¼ããã¯ãã£ã®åºç¤ã[1] ã§ã¯ã以ä¸ã®é ç®ãä¾ç¤ºããã¦ãã¾ãã
- ãªãªã¸ãã«ã®èè
- æ¿èªæ¥
- æ¿èªè
- 代æ¿ãããæå»
- æå¾ã«æ´æ°ãããæå»
- 夿´ç¹
- æçµæ´æ°å 容
Michael Nygard ã«ããå½¢å¼ã«ãããéç¨ããã¼ä¾
以ä¸ãè¸ã¾ãããéç¨ããã¼ã®ä¸ä¾ã以ä¸ã«ç¤ºãã¾ãã ãªãéç¨ããã¼ã«ã¤ãã¦ã¯ãAWS ã«ãã ADR ã«é¢ããè¨äº[9] ã kawasima ããã® scrapbox[10] ã«ãå³ç¤ºããã¦ãããã®ãããã¾ãã

Jeff Tyree, Art Akerman ã«ããå½¢å¼
“Documenting Software Architectures” [11] ã¨ããæ¸ç±ã«ããã¦ãç´¹ä»ããã¦ããå½¢å¼ã«ãªãã¾ãã IEEE Software ã¨ããã¸ã£ã¼ãã«ã§ 2005 å¹´ã«çºè¡¨ãããã¢ã¼ããã¯ãã£æ±ºå®ã«é¢ããè¨äº [12] ã§ãé¡ä¼¼ã®ãã®ãèªããã¨ãã§ãã¾ã ï¼ãªãããã¯ãDesign It!ã[8] ã«ããã¦ã¯ããåé¡ã¸ã®ãã¬ã¼ãµããªãã£ã強調ãããã³ãã¬ã¼ããã¨èª¬æããã¦ãã¾ãï¼ã
ãã®å½¢å¼ã«ã¤ãã¦è©³èª¬ããã¨é·ããªã£ã¦ãã¾ãããã joelparkerhenderson/architecture-decision-record ãªãã¸ããª[6] ããããã fork ããé¦è¨³ã§ãã kawasima ããã® kawasima/architecture_decision_record [13] ãªãã¸ããªãåç §ãã¦ãã ããã ãªããã®å½¢å¼ãç´¹ä»ããã®ãã¨ããã¨ããã¹ã¦ã®ã¢ã¼ããã¯ãã£æ±ºå®ã軽éã«æç« åãããã¨ã¯éããªãããã§ãã ãªãã¸ããªå ã®ä¾ã«ããããããã¯ãã§ä½¿ç¨ããè¨èªãç£è¦ãã¼ã«ã®é¸æãªã©ã¯ãå社å ã§è¤æ°ã®ãããã¯ããéçºããã¦ããã¨ãã¯ç¹ã«ãããææç¾©ãªè³ç£ã«æãå¾ãã§ãããã
ADR ã®ãªã¼ãã¼
AWS ã«ãã ADR ã«é¢ããè¨äº[9]ã§ã¯ãADR ã®ãªã¼ãã¼ã«ã¤ãã¦è§¦ãããã¦ãã¾ãã ãã ADR ã®å·çè ã¯åæã«ãªã¼ãã¼ã¨ãªããä¿å®ãä¼éããªããå¾ç¶ã® ADR ã«ãã£ã¦ä»£æ¿ãããã¨ãã®ã¬ãã¥ã¼ãè¡ã責åãæ ãã¨ãããã®ã§ãã ç°åãªã©ã«ããããã® ADR ã«ã¤ãã¦è²¬åãè² ããªããªã£ãã¨ãã¯ãä»ã¡ã³ãã¼ã«è²¬åãç§»è²ãã¾ãã
åºå ¸ã»åèæç®ãªã©
learning.oreilly.com ã®ãªã³ã¯ã¯ããªã©ã¤ãªã¼å¦ç¿ãã©ãããã©ã¼ã ã«ãããè©²å½æ¸ç±ã¸ã®ãªã³ã¯ã§ãã
- [1] Mark Richards, Neal Ford. ãã½ããã¦ã§ã¢ã¢ã¼ããã¯ãã£ã®åºç¤ – ã¨ã³ã¸ãã¢ãªã³ã°ã«åºã¥ãä½ç³»çã¢ããã¼ãã å³¶ç° æµ©äº è¨³. ãªã©ã¤ãªã¼ã¸ã£ãã³. 2022.
- [2] ä»å¡²å¤§ä¹. ãè¯ãã³ã¼ãï¼æªãã³ã¼ãã§å¦ã¶è¨è¨å ¥é – ä¿å®ãããã æé·ãç¶ããã³ã¼ãã®æ¸ãæ¹ã æè¡è©è«ç¤¾. 2022.
- [3] “Architectural decision”. https://en.wikipedia.org/wiki/Architectural_decision. 2023/02/28 é²è¦§.
- [4] Michael Nygard. “DOCUMENTING ARCHITECTURE DECISIONS”. https://www.cognitect.com/blog/2011/11/15/documenting-architecture-decisions. 2023/02/28 é²è¦§.
- [5] Per Kroll, Philippe Kruchten. “The Rational Unified Process Made Easy: A Practitioner’s Guide to the RUP”. Addison-Wesley Professional. 2003.
- https://learning.oreilly.com/library/view/the-rational-unified/0321166094/
- é¦è¨³ï¼ ãã©ã·ã§ãã«çµ±ä¸ããã»ã¹ãRUPãã¬ã¤ããã㯠: RUPå®è·µè ãæåã«å°ãã ææ¬å®£ç·, è½åä¿® 訳. æ°¸ç°èå ç£è¨³. ã¨ã¹ã¢ã¤ãã¼ã»ã¢ã¯ã»ã¹. 2004
- [6] Joel Parker Henderson. “Architecture decision record (ADR)”. https://github.com/joelparkerhenderson/architecture-decision-record. 2023/02/28 é²è¦§.
- [7] Thoughtworks. “Lightweight Architecture Decision Records”. https://www.thoughtworks.com/radar/techniques/lightweight-architecture-decision-records. 2023/02/28 é²è¦§.
- [8] Michael Keeling. ãDesign It! – ããã°ã©ãã¼ã®ããã®ã¢ã¼ããã¯ãã£ã³ã°å ¥éã å³¶ç° æµ©äº è¨³. ãªã©ã¤ãªã¼ã¸ã£ãã³. 2019.
- [9] AWS. “ADR process”. https://docs.aws.amazon.com/prescriptive-guidance/latest/architectural-decision-records/adr-process.html. 2023/02/28 é²è¦§.
- [10] kawasima. “å®è·µADR”. https://scrapbox.io/kawasima/%E5%AE%9F%E8%B7%B5ADR. 2023/02/28 é²è¦§.
- [11] Paul Clements, Felix Bachmann, Len Bass, David Garlan, James Ivers, Reed Little, Paulo Merson, Robert Nord, Judith Stafford. “Documenting Software Architectures: Views and Beyond”. 2nd Edition. Addison-Wesley Professional. 2010.
- https://learning.oreilly.com/library/view/documenting-software-architectures/9780132488617/
- é¦è¨³ï¼ ãã½ããã¦ã§ã¢ã¢ã¼ããã¯ãã£ããã¥ã¡ã³ã – ã½ããã¦ã§ã¢æ¦ç¥ã®ä¸æ ¸:ã¢ã¼ããã¯ãã£ãæãããã¸ã§ã¯ãã驿°ããã åç° åé 訳. æ¥åå·¥æ¥æ°è社. 2004
- [12] Jeff Tyree, Art Akerman. “Architecture Decisions: Demystifying Architecture”. IEEE Software, Volume22, Issue2. 2005. https://personal.utdallas.edu/~chung/SA/zz-Impreso-architecture_decisions-tyree-05.pdf. 2023/02/28 é²è¦§.
- [13] Joel Parker Henderson, kawasima. “Architecture decision record (ADR)”. https://github.com/kawasima/architecture_decision_record/tree/japanese. 2023/02/28 é²è¦§.
ãã®ã»ãåèã«ããã¦ããã ãããªã³ã¯
- GitHub ã«ããã ADR ã®èª¬æ
- Cloud ã¢ã¼ããã¯ãã£ã»ã³ã¿ã¼ã«ããã ADR ã®èª¬æ
- Qiita, Zenn, Scrapbox ã§ã¿ã¤ããè¨äº
- 伿¥ããã°ã¨ãã¦ã¿ã¤ããè¨äº
ã¤ã³ãã£ãããã«ã¼ãã§ã¯ PHP ã¨ã³ã¸ãã¢ã®ãå¿åãçµ¶è³ãå¾ ã¡ãã¦ããã¾ãã