ç§ã®ååã¯ã»ã«ã²ã€ã»ã©ã³ãã§ããRostelecomITã®B2Géšéã®è²¬ä»»è ã§ãã Jira Query LanguageïŒJQLïŒã«ã€ããŠãå®éã®äœ¿ç𿹿³ãåºæ¬çãªãã¯ããã¯ãçºçããåé¡ãããã³ãããã®è§£æ±ºæ¹æ³ã«ã€ããŠèª¬æããŸãã
deviniti.com/atlassianããæ®åœ±ããå
ã®åç
ã¿ã¹ã¯ãã©ãã«ãŒã¯ãããããããŸããããããããããã€ãã®åé¡ã解決ããã®ã«é©ããŠãããä»ã®åé¡ã解決ããã®ã«å®éã«ã¯åœ¹ç«ã¡ãŸãããç§ãã¡ã¯ãããã®å€ãã䜿çšããŸããããä»ã§ã¯Jiraã«èœã¡çããŸãã-ãããç§ãã¡ã®äž»èŠãªããŒã«ã§ããå人çã«ã¯ãäœæ¥ãå€§å¹ ã«ç°¡çŽ åããç®±ããåºããŠãã±ãããèŠã€ããããã®åŒ·åã§æè»ãªããŒã«ã䜿çšã§ããJQLèšèªãæ¬åœã«æ°ã«å ¥ã£ãŠããŸãã
ç®±ããåºããŠãJiraã«ã¯åºæ¬çãªæ€çŽ¢ãšé«åºŠãªæ€çŽ¢ããããŸãããããã®2ã€ã®æ€çŽ¢ãªãã·ã§ã³ã¯ããŠãŒã¶ãŒãçŽé¢ããŠããåé¡ã®ã»ãšãã©ã解決ã§ããŸããåºæ¬çãªæ€çŽ¢ã¯ããªã³ã©ã€ã³ã¹ãã¢ã®ãµãŒãã¹ãå°ãªããšã1å䜿çšããããšããã人ãªã誰ã§ãç¥ã£ãŠããŸããããã¯ãåãåçŽãªã¹ããŒã ã«åŸã£ãŠæ©èœããŸããå€ãã®ãã£ã«ã¿ãŒããããŸãïŒãããžã§ã¯ãå¥ãã¿ã¹ã¯ã®ã¿ã€ãå¥ãå®è¡è å¥ãã¹ããŒã¿ã¹å¥ã Jiraã§ãµããŒããããŠããåºæºã«åºã¥ããŠãã£ãŒã«ãã远å ããããšãã§ããŸãã
ãã ããåºæ¬çãªã¯ãšãªãè¶ ããå¿ èŠãããå Žåã¯åé¡ãçºçããŸããããšãã°ãç¹å®ã®å®è¡è ã«ãããŸã§ã«å®è¡ãããã¿ã¹ã¯ãæ€çŽ¢ãããã1ã€ã®ãããžã§ã¯ããé€ããã¹ãŠã®ã¿ã¹ã¯ãæ€çŽ¢ãããããå Žåã§ããåºæ¬æ€çŽ¢ã䜿çšããŠã1ã€ã®ã¿ã¹ã¯ã¹ããŒã¿ã¹ãšå®è¡è ãããã³ãã1ã€ã®å®è¡è ãšå¥ã®ã¿ã¹ã¯ã¹ããŒã¿ã¹ãæã€ãããžã§ã¯ãã«å¯ŸããŠããªãããŒãªéžæãè¡ãããšã¯ã§ããªããªããŸããã
é«åºŠãªæ€çŽ¢ã圹ã«ç«ã¡ãŸãã JQLæ§æã¯SQLãšéåžžã«ãã䌌ãŠããŸãããã ããJQLã§ã¯ãéžæããç¹å®ã®ãã£ãŒã«ããéžæããå¿ èŠã¯ãªãã衚瀺ããããŒãã«ãšããŒã¿ããŒã¹ã瀺ããŸããæ¡ä»¶ä»ãã®ãããã¯ã®ã¿ãæå®ããäžŠã¹æ¿ããåŠçããŸããæ®ãã¯Jiraãèªåçã«å®è¡ããŸãã
JQLã䜿çšããããã«ç¥ã£ãŠããå¿ èŠãããã®ã¯ããã±ãããéžæãããã£ãŒã«ãã®ååãæŒç®åïŒ=ãïŒ =ã<ã>ãInãnot inãwasãisãªã©ïŒãããŒã¯ãŒãïŒ AND ãORãNOTãEMPTYãORDER BYãªã©ïŒããã³è©³çްã¢ãŒãã§ããã«äœ¿çšã§ãã颿°ïŒ NowïŒïŒãCurrentUserïŒïŒãIssueHistoryïŒïŒãEndOfDayïŒïŒãªã©ïŒã
ç°ç
Jiraã¯ãæ€çŽ¢ããŒã«å ¥åãããšããã£ãŒã«ããšãããã®ãã£ãŒã«ãã®å€ã®äž¡æ¹ã«ãã£ãŠãæ¢ããŠãããã¹ãŠã®å¯èœãªå€ã®ãã³ããæäŸããŸããç§èªèº«ãæè¿ãè峿·±ãã·ã¹ãã ãã£ãŒã«ãlastViewedãçºèŠããŸãã ã Jiraã¯ãã±ãããã¥ãŒã远跡ããŸãã
æè¿ã®ã¿ã¹ã¯ã衚瀺ããããã®ãã£ã«ã¿ãŒãäœæããããã®2ã€ã®ãªãã·ã§ã³ã次ã«ç€ºããŸãã 1ã€ç®ã¯lastViewedãªãã·ã§ã³ã§ã Jiraã¯éå»7æ¥éã«è¡šç€ºããåé¡ãéé ã§è¿ããŸãããã®ãã£ã«ã¿ãŒã¯ããã·ã¥ããŒãã§ã¬ãžã§ãããšããŠæ§æãããŠãããé »ç¹ã«äœ¿çšããŸãããã±ãããéããŠããã®ã§ãã¿ããšçªå·ãèŠããŠããªãã£ãã®ã§ãããã«éããŠãæåŸã®ãã±ãããäœã§ãããã調ã¹ãŸããã
æè¿è¡šç€ºãããæšæºãã£ã«ã¿ãŒããããŸããIssueHistoryïŒïŒé¢æ°ã䜿çšã ãäžŠã¹æ¿ããlastViewedãã£ãŒã«ãã«ãã£ãŠè¡ãããŸã ãçµæã¯åãã§ãããJiraã§ããæ¹æ³ã¯ç°ãªããŸããããã¯ãããšã¯æ³šç®ã«å€ãã LastViewedãš IssueHistoryïŒïŒãã£ãŒã«ãã¯ãããªãã第äžè ã®æŽå²ããã®ããã«èŠãããšãã§ããŸãã-ã®ã¿é²èЧ履æŽãè¿ããŸãã
ã»ãšãã©ã®å ŽåãJiraã«ã¯æšæºã®æŒç®åããããŸããç§ã®ãæ°ã«å ¥ãã®ãªãã¬ãŒã¿ãŒã¯ã WASã WAS INã WAS NOT INã WAS NOTã CHANGED圌ãã¯æéã§åäœããŠãããããããã¯ãåŸæ¥ã®ããŒã¿ããŒã¹ã§ã¯äžå¯èœã§ãã
Jiraã䜿çšãããšãç®±ããåºããŠããã«å±¥æŽããŒã¿ãæäœã§ããŸããWASãªãã¬ãŒã¿ãŒã䜿çšãã ãšãå®è¡è ãUser1ã§ãã£ããã±ãããèŠã€ããããšãã§ããŸãããã±ãããç§ã«ãã£ãåŸãä»ã®èª°ãã«æž¡ãããå Žåããªã¯ãšã¹ãã«ã¯ããã®ãã±ããããã€ãŠç§ã«ãã£ãããšã瀺ãããŸãããã詳现ãªéžæãè¡ãã«ã¯ãããã«ããã€ãã®æ¡ä»¶ã远å ããå¿ èŠãããããšã¯æããã§ãããããã«ã€ããŠã¯åŸã§èª¬æããŸãã
ãã ããæ³šæç¹ã1ã€ãããŸããJiraã¯ããã¹ããã£ãŒã«ãã®å±¥æŽãä¿åããŸããããã±ããåãšãã®èª¬æã§ããããã«æžãããšã¯ã§ããŸããïŒã æŠèŠãã£ãŒã«ãã«ãRostelecomããšããåèªãå«ãŸããŠãããã±ãããæã£ãŠããŠãã ãããã
2çªç®ã®äŸã¯ãCHANGEDæŒç®åã䜿çšãããã® ã§ãã2020幎1æ1æ¥ä»¥éã«ã¢ãŒãã£ã¹ãã倿Žããããã±ãããåãåãããã§ããä»ã®è¿œå ã®åèªãããšãã°ãBEFOREãŸãã¯signs>ã<ã䜿çšã§ããŸãã ããã¯ã誰ã«ãšã£ãŠã䟿å©ã§ãããç¹å®ã®æ¥ä»ã§ããåãäŸã§ãåŠå®ãè¡ã£ãŠãã©ã®ãŠãŒã¶ãŒãã¹ã¿ãã¯ããŠãããã±ããã確èªããããšãã§ããŸããæ åœè 㯠ã2020-01-01ãã®åŸã§å€æŽãããŠããŸããã
ããŒã¯ãŒã
äž»ãªããŒã¯ãŒã㯠ORã ANDã NOTã§ãããããã¯è«çæŒç®åãšåãããã«æ©èœããŸããORã䜿çšã㊠ã2ã€ã®ãããžã§ã¯ãAãšBãããã±ããã®å®å šãªã»ãããååŸããŸããéžæãçµã蟌ãå¿ èŠãããå Žåã¯ãANDã䜿çšããŸã ãäŸ-ãŠãŒã¶ãŒãBedãå®è¡ããŠãããã©ããAããã®ãã±ãããå¿ èŠã§ããã project = A = Bedããã³ANDæ åœè ã§ããããã¯åŠå®ãšåãã§ãã
颿°
ããã¥ã¡ã³ãã«ãããšãJiraã«ã¯47ã®é¢æ°ããããŸãããç§ã¯ããããã¹ãŠã䜿çšããããšã¯ãããŸãããç§ã®æèŠã§ã¯ãäž»ãªãã®ã¯æ¬¡ã®ãšããã§ã
ãnowïŒïŒã¯ãããšãã°æéåãã®ãã±ãããæ€çŽ¢ã§ãã人æ°ã®ããæ©èœã§ãã
currentUserïŒïŒã¯çŸåšã®ãŠãŒã¶ãŒãè¿ããŸãã Jiraã«ã¯ããã®æ©èœã䜿çšããäºåæ§ææžã¿ã®ãã£ã«ã¿ãŒãå«ãŸããŠããŸããã§ ããCurrentUserïŒïŒãããªãã¯äžè¬çãªæ€çŽ¢ãè¡ãããšãã§ããŸãããããç§ãéçºããŒã å šäœã®ããã®ãŠãããŒãµã«ããã·ã¥ããŒããäœæããæ¹æ³ã§ããããã·ã¥ããŒãã«ã¬ãžã§ãããè©°ã蟌ã¿ãããããã®ç¹å®ã®ãŠãŒã¶ãŒã®ä»£ããã«currentUserïŒïŒã瀺ããŸãã ããã®ããã·ã¥ããŒãã¯ãæ§æã¯åãã§ããããã°ã€ã³ããŠãããŠãŒã¶ãŒããšã«äžæã«ãªããŸãã
unreleasedVersionsïŒïŒã¯ãæªãªãªãŒã¹ããŒãžã§ã³ã®ãã±ãããè¿ã颿°ã§ãããã ããããŒãžã§ã³ã®ãªããã±ããã¯è¿åŽãããŸããã
startOfDayïŒïŒã¯ãåœæ¥ã®éå§ãè¿ããŸããé±ãæãå¹Žã®æ©èœããããŸããåãããšãendOfDayïŒïŒçµäºé¢æ°ã«ãåœãŠã¯ãŸããŸã ãç¹å®ã®æ¥ä»ãåãé€ãããšãã§ããåŒæ°ãäžããããšãã§ããŸããstartOfDayïŒ-1ïŒãšæžã ãšã忥ã®å§ãŸããè¿ãããŸãããã¹ãŠããã®ãŸãŸã«ããŠãããšãåœæ¥ã®å§ãŸãã衚瀺ãããåºåã¯æå»ã«ãªããŸãããããã®é¢æ°ã¯ããŒãã³ãŒããåé¿ããã®ã«åœ¹ç«ã¡ãç§ãã¡ã¯ããããé »ç¹ã«äœ¿çšããŸãã issueHistory
ãã ïŒïŒãã§ã«äŸãæããŸãããããã®é¢æ°ã¯ãã¥ãŒã®ã¿ã®ãªã¹ããè¿ããŸãã
linkedIssuesïŒïŒã¯ãç¹å®ã®ãã±ããã«ãªã³ã¯ãããŠãããã±ãããèŠã€ããããšãã§ãã颿°ã§ãã
ãããã¯æãåçŽãªé¢æ°ã§ããããããããå°ãæ·±ãæãäžããŠãããè€éãªæ¥ç¶ãèŠãŠã¿ãŸãããã
assignee was currentUser()
AND fixVersion was in
unreleasedVersions()
AND created > startOfYear()
å°ãç·åçãªäŸã§ãããããã§ããããã¯ã3ã€ã®ãããã¯ã«åå²ãããåäžã®ãªã¯ãšã¹ãã§ãããªã¯ãšã¹ãã®æåã®éšåãå®äºãããšãç§ããããŸã§ã«å®è¡è ã§ãã£ãããçŸåšå®è¡è ã§ãããã±ãããåãåããŸããWASãååšããã ãã§ãªãããŸã ååšããŠããããšã¯éåžžã«éèŠã§ã ã
2çªç®ã®éšåã§ã¯ããã£ã«ã¿ãªã³ã°ã远å ãããŸãããããŸã§ã«ãªãªãŒã¹ãããŠããªãããŒãžã§ã³ã§ãã£ããã±ããã®åä¿¡ã¹ã³ãŒãããã£ã«ã¿ãªã³ã°ããŸããã€ãŸãããã®æªãªãªãŒã¹ããŒãžã§ã³ã«ãã±ããããããçŸæç¹ã§ã¯ãŸã ãªãªãŒã¹ãããŠããªãã®ã«ããã±ãããå¥ã®ããŒãžã§ã³ã«è»¢éãããã§ã«ãªãªãŒã¹ãããŠããå Žåããã®ãã±ããã¯ãã®éžæã«å«ãŸããŸãã
3çªç®ã®æ¡ä»¶ã¯äœææ¥ã§ããä»å¹Žã®åã以éã«äœæããããã±ããã®ã¿ããã£ã«ã¿ãªã³ã°ããŸãã
ScriptRunner
ããã¯ãJiraã®æ©èœãå€§å¹ ã«åŒ·åãããã©ã°ã€ã³ã§ããéåžžãããã»ã¹ãèªååããããã«äœ¿çšãããŸãããJQLã«å€ãã®è¿œå æ©èœã远å ããŸãã ScriptRunnerã¯ã2018幎ã®çµããã«Jiraã«ç§»è¡ãããšããã«æäŸããæåã®ãã©ã°ã€ã³ã§ããããã®ãã©ã°ã€ã³ããªããšããšããã¯ãšã®ãªã³ã¯ã«é¢ããããŒã¿ãåéã§ããªãã£ãããããã®ãã©ã°ã€ã³ã®ã€ã³ã¹ããŒã«ãéåžžã«ç©æ¥µçã«äŸé ŒããŸãããããšãã°ãç¹å®ã®ãªã¯ãšã¹ãã®ãã¹ãŠã®ãšããã¯ãã±ãããããµãã¯ãšãªããã®ãã±ããã®ãã¹ãŠã®ãšããã¯ãè¿ãå¿ èŠãããããšããããããŸããã ScriptRunnerã䜿çšãããšãããããã¹ãŠãæ£åžžã«å®è¡ã§ããŸãã
ScriptRunneræ©èœã䜿çšããã«ã¯ã远å ã®åèªã远å ããå¿ èŠã ã§issueFunctionã®ã ã§ã¯ãªãã«JQLãæ¬¡ã¯ãããšãã°é¢æ°ã§ãã epicsOfïŒïŒ -ãµãã¯ãšãªæ¡ä»¶ã«äžèŽãããã±ãããšããã¯ãè¿ããŸãããµãã¯ãšãªã¯æ¬åŒ§å ã®2è¡ç®ã«ããã詳ããèŠãŠãããŸãã
issueFunction in epicsOf
("worklogDate >= startOfWeek(-1) AND worklogDate <= endOfWeek(-1)")
AND project in (".B2G")
æåã®äŸã§ã¯ãå é±ã®æéååŽã®ããåäºè©©ãæ¢ããŠããŸããããŒã ãªãŒããŒãšãããŒãžã£ãŒã®ã©ã€ãããã¯ïŒã¿ã€ã ã·ãŒãã«èšå ¥ããã®ãå¿ããŠãå é±äœããããèŠããŠããªãå Žåã¯ããã®ãªã¯ãšã¹ããå®äºãããšãããŒã ãã©ã®ãããªåäºè©©ã«åãçµãã ããããããŸãããããŠããããããããŒã ãæããã«è³ªåãããŠããã®ã§ãããªãããããã«åãçµã¿ãŸãããäžè¬ã«ããã®ã¯ãšãªã¯ããªããäœãããŠããããæãåºãã®ã«åœ¹ç«ã¡ããã¹ãŠãããŸããã€ã³ãã§ããŸãã
ã¯ãšãªèªäœã¯ãæ¬åŒ§ãããã€ãŸããworklogDateãµãã¯ãšãªïŒåæ¹èšå ¥ã®æ¥ä»ïŒããå®è¡ãéå§ããŸã ãããã«ã> = startOfWeekïŒ-1ïŒ -é±ã®åããšãã仿§ ããããŸãããã ãã-1ãšããæ°åã«æ³šæããŠãã ãããããã¯ãä»é±ã®æææ¥ã§ã¯ãªããæåŸã®æææ¥ãå¿ èŠã§ããããšãæå³ããŸãããŸãã worklogDate <= endOfWeekïŒ-1ïŒãã€ãŸããå é±ã®çµãããããå°ãªãã§ãããã®ãªã¯ãšã¹ãã¯ããã°ãã¿ã¹ã¯ããŠãŒã¶ãŒã¹ããŒãªãŒãªã©ãåŸæ¥å¡ãå é±ã®æææ¥ããæ¥ææ¥ãŸã§ã®æéãæžãçãããã±ãããçºè¡ããŸãã
ããªãã¯ã¯ããšããããšã§ãstartOfWeekïŒïŒãš endOfWeekïŒïŒé¢æ°ã¯ã æ¥ä»ãåãé€ãããšãã§ããŸããç§ããã®ãªã¯ãšã¹ããè¡ãä»é±ã®æéã«é¢ä¿ãªããããã¯ç§ã«åã壮倧ãªç¯å²ãäžããŸããä»é±ãçµãããšããã«ã圌ã¯ãã®åäºè©©ãè¿ããŸããé©ããããšã«ã誰ãããã®æ©äŒãå©çšããŠããããã§ã¯ãããŸãããç§ã¯æè¿ãå ¬éãããŠãããªãŒãã³ãªã¯ãšã¹ãã調æ»ããããã§å€ãã®ããŒãã³ãŒãã®æ¥ä»ã確èªããŸããããããŠããããã®æ¥ä»ã¯çµ¶ããå€åããŠãããšããçãããããŸãããããŠãç§ãèšããããšã¯ãæåã¯èªåã§ãã£ãããšã§ãã
ãµãã¯ãšãªãå®è¡ããããšã«ãããéåžžã®ãã±ããã®ã»ãããååŸããŸããæ¬¡ã¯epicsOf颿°ã§ã ãããã¯ããããã®ãã±ããã«é¢é£ä»ããããŠãããšããã¯ã®ãªã¹ããæäŸããŸãããããŠããããžã§ã¯ãã«ãããã£ã«ã¿ãªã³ã°ããããŸãããªããªããç§ã¯èªåã®ãããžã§ã¯ãã«ãšããã¯ã ããå¿ èŠã§ãããä»ã®èª°ããé¢çœããªãããã§ãã
次ã®ãªã¯ãšã¹ãã¯ãä»å¹Žã¯ååŽã®ããåäºè©©ã§ãããå¥çŽã¯ãããŸããããã®ãªã¯ãšã¹ãã¯ãJiraãã¿ã¹ã¯ãã©ãã«ãŒãšããŠã ãã§ãªãã財åäŒèšã«ã䜿çšããŠããããã«çºçããŸãããå¥çŽçšã®å¥ã®ãããžã§ã¯ããããããã±ããã®åœ¢ã§å®è¡ãããããé»åããã¥ã¡ã³ã管çã·ã¹ãã ãšããŠäœ¿çšããŸããã¹ããŒã¿ã¹ã¯çµ¶ããå€åããå¥çŽãåäºè©©ãšãªã³ã¯ããäœäººã®äººãã©ã®åäºè©©ã«æžãçããããç¥ãããããããããããããç¥ã£ãŠããŸããå¥çŽããšã«äœæ¥è²»ãèšå®ããŸããããã«ãå¥çŽãéããŠã人件費ã¯Redmine2.0ã«è»¢éãããŸããã€ãŸããJiraã§ååŽããèªåã¹ã¯ãªããããããã®å¥çŽã«åºã¥ããŠã³ã¹ããRedmine2.0ã«è»¢éããŸãã
ãã®èªååãæ©èœãå§ãããšããç§ã¯ã¿ã€ãã®ååãããªã¯ãšã¹ããåãåãå§ããŸãããããã«ã¯å¥çŽããªãããã人件費ãRedmineã«è»¢éã§ããªãåäºè©©ããããŸãããªã¯ãšã¹ããããã«è©³ããèããŠã¿ãŸãããã
issueFunction in epicsOf("worklogDate >= startOfYear()")
AND issueFunction not in hasLinkType(Contract)
AND project in (".B2G")
åå°ã®ãªã¯ãšã¹ãã¯ãä»å¹Žè«æ±ããããã±ããã«é¢å¿ãããããšãæå³ããŸããepicsOf颿° ã¯åã®äŸã«ç¶ããepicã®ãªã¹ããæäŸããŸããæ¬¡ã«ãå¥çŽã®ååšã§ãã£ã«ã¿ãªã³ã°ããŸãã
æ¬åŒ§å ã®å¥çŽã¯ãå¥çŽããšããã¯ã«æ¥ç¶ããäžçš®ã®å éšãªã³ã¯ã§ãã hasLinkTypeïŒïŒã¯ããã®ãªã³ã¯ã¿ã€ãã®ãã±ãããè¿ãScriptRunnerã®é¢æ°ã§ããããããç§ã¯ãã®ã¿ã€ãã®é¢ä¿ãå«ãŸãªããã±ãããå¿ èŠãªã®ã§ãã§ã¯ãªãåŠå®ã䜿çšããŸãã
æåã®æ¡ä»¶ãæºãããããšããç§ã¯ä»å¹Žé¢é£ããåäºè©©ã®ç¯å²ãæã«å ¥ããŸãããããã«ãå¥çŽã®ãªãåäºè©©ã¯ãã£ã«ã¿ãªã³ã°ãããæçµçã«ã¯ç¹å®ã®ãããžã§ã¯ããVideo.B2Gãã®ããã«ãã£ã«ã¿ãªã³ã°ãããŸããããã®ããã«ããŠãç§ã¯ãã¹ãŠã®åäºè©©ãæ±ãããšãã§ããŸããã
ãããŠæåŸã«ããã®æçš¿ã®ãããã¯ã«é¢ãã3ã€ã®è³ªåã®å°ããªãã¹ãã«åæ Œããããšãææ¡ããããšæããŸãã2åããããŸããåæ ŒããåŸãããªãã¯ããªãã®è©äŸ¡ãèŠãã§ãããã
ããŒãªã³ã°ãªã³ã¯ã³ã¡ã³ãã§äœããæç¢ºã«ãããã質åã«çãããã§ããã°å¹žãã§ãã
ããããšãããããŸããã