ã¯ããã« ããã«ã¡ã¯ãInsight Edgeã§ããŒã¿ãµã€ãšã³ãã£ã¹ããããŠããåä¹ã§ãã AIã§ã®PowerPointè³æã®äœæãã¿ãªãããäžåºŠã¯è©Šããããšãããã®ã§ã¯ãªãã§ããããããããŠããããªæ©ã¿ãæããããšã¯ãããŸãããïŒ ãçæãããã¹ã©ã€ãããæäœæ¥ã§èªç±ã«ç·šéã§ããªãâŠã ããã¶ã€ã³ãã€ãã€ãâŠã ãäžèŠãã£ããããã©ãèªåã®ãã€ãã®ãã¶ã€ã³ã§ã¯ãªãã®ã§ãç·šéãã¥ãããå
容ãé ã«å
¥ã£ãŠããªãâŠã ç§ãåãæ©ã¿ãæ±ããªãããAIã䜿ã£ãã¹ã©ã€ãçæããããã詊ããŠããŸããããããŠè©Šè¡é¯èª€ã®æ«ã ããã€ãã®èªåãäœæãããã®ãããªãã¹ã©ã€ããèªåçæãã ããšã§ããããã®åé¡ã解決ã§ããŸããã ãŸããå®éã«Claude Codeã§äœæããã¹ã©ã€ãã®äŸããèŠãããŸãã â» æ¬èšäºçšã«çšæããæ¶ç©ºãããžã§ã¯ãïŒé£åã¹ãŒããŒã®éèŠäºæž¬AIå°å
¥æ€èšïŒã®ãµã³ãã«ã¹ã©ã€ãã§ã ã©ããç§ã以åããæäœæ¥ã§äœã£ãŠããã¹ã©ã€ããšãã䌌ãŠããŠããç§ãæäœæ¥ã§äœæããããšèšã£ãŠãæ°ã¥ããªãååãå€ããšæããŸãã ãèªåã®ãã€ãã®ãã©ãŒããããã«ãã ããçç±ã¯2ã€ãããŸãã å
容ãçè§£ãããããè¯ãæªãããã倿ã§ãã ïŒãã€ãã®èªåã®ãã©ãŒãããã§åºãŠããã®ã§ãèªåã«ãšã£ãŠïŒããããåšå²ã«ãšã£ãŠãïŒå
容ãçè§£ãããããææç©ã®è¯ãæªããããã«å€æã§ããŸã ä¿®æ£ãããæãããã€ãã®äœæ¥ã§ããçŽãã ïŒçæç©ããã€ãã£ããªPowerPointãªããžã§ã¯ãã§ããã€èŠæ
£ãããã©ãŒããããªã®ã§ãããã¹ãã®åŸ®ä¿®æ£ã衚ã®çµã¿æ¿ããæ®æ®µã©ããã®æäœã§å®çµããŸã éã«ããä»äººãäœã£ãæãã®ããã¹ã©ã€ãã¯ãäžéšã ãçŽããããšãã«ããã©ãçŽãã°å
šäœã®ãã¶ã€ã³ãã©ã³ã¹ãä¿ãŠãã®ããããã«ãããããç·šéã«æéãããããŸãã çµå±AIã«ä¿®æ£ãé Œãããšã«ãªããããåãã®åŸåŸ©ã§ããã«æéãããã£ãŠããŸããŸããããããªãæåããèªåã§ãŒãããäœã£ãæ¹ãæ©ãã£ãããšããã±ãŒã¹ããããŸããã äžè¬çã«ããæ¡çšãããŠããã¢ãããŒãã«ã¯ããã®èгç¹ã§éçããããŸããã PowerPointçŽæ¥çææ¹åŒ ïŒãã€ãã£ããªpptxãåŸããããã®ã®ãããã³ããã®æç€ºãæå³éãã«å®ã£ãŠãããªãããšãå€ãããã¶ã€ã³ã®èŠæ ããè¯ããªãã±ãŒã¹ãå€ãïŒãã®æ¹åŒã§LLMãã€ãŸãããããå
·äœçãªèª²é¡ã¯ã以åã®èšäºã LLMã«ãããã¯ãèªåçæã«ãã£ã¬ã³ãžããŠããã£ãèª²é¡ ãã§ã解説ããŠããŸãïŒã ç»åçææ¹åŒ ïŒèŠæ ãã¯ãããªãã«è¯ããã®ã®ãç·šéã§ããªãããèªåã®çްããªæããã蟌ããããªã HTMLçææ¹åŒ ïŒèŠæ ããè¯ãAIã«ããç·šéãšçžæ§ãè¯ãããèªèº«ã§ã®ç·šéã¯é£ãããçµå±AIãžã®æç€ºã«é Œãããšã«ãªã ãããŠãã©ã®æ¹åŒã«ãå
±éããã®ããçµå±ã èªåã®å¥œã¿éãã®ãã®ã«ä»äžãåãã®ãé£ãã ããšããããšã§ãã ããã§ãã®èšäºã§ã¯ã詊è¡é¯èª€ã®æ«ã«èŸ¿ãçããçŸæç¹ã®æé©è§£ãšããŠã æžåŒã»ã«ãŒã«ãå
šãŠPythonã³ãŒãã«èŠå®ããClaude Codeã®ã¹ãã«ã§ã¯ãŒã¯ãããŒãå¶åŸ¡ããæ¹åŒ ã玹ä»ããŸãã æ¬èšäºã¯ãAIã«ããã¹ã©ã€ãçæã詊ãããã®ã®ããªããéãããšæããçµéšã®ããæ¹ããèªå奜ã¿ã®ãã©ãŒãããã§è³æãèªåçæãããæ¹ã«åããå
容ãšãªã£ãŠããŸãã ç®æ¬¡ 1. ãŸã詊ããŠãã¡ã ã£ãããš 2. 蟿ãçããæé©è§£ïŒæžåŒã»ã«ãŒã«ãå
šãŠPythonã³ãŒãã«èŠå®ãã 3. ä»çµã¿ã®è©³çްâ ïŒãã¶ã€ã³ãã³ãŒãã«åºå®ãã 4. ä»çµã¿ã®è©³çްâ¡ïŒå質ãæ
ä¿ããã¯ãŒã¯ãã㌠5. ä»çµã¿ã®è©³çްâ¢ïŒããŒã¯ã³å¹ç 6. å®éã«äœã£ãã¹ã©ã€ãã®äŸ ææ³ã»ãŸãšã 1. ãŸã詊ããŠãã¡ã ã£ãããš 1-1. XMLïŒOOXMLïŒçŽæ¥ç·šéïŒAnthropicå
¬åŒskillããã®ãŸãŸäœ¿ã æåã«è©Šããã®ã¯ãAnthropicãå
¬éããŠããå
¬åŒskillãªããžããªã® pptxã¹ãã« ããã®ãŸãŸäœ¿ãæ¹åŒã§ããpptxãã¡ã€ã«ã®å®äœã§ããOOXMLïŒXMLïŒãAIãçŽæ¥èªã¿æžãããŸãã çµæã¯ã以äžã®çç±ã§äœ¿ãç©ã«ãªããŸããã§ããã ãã¶ã€ã³ãåŽ©å£ ïŒã·ã§ã€ãã®åº§æšã»é
è²ã»æŽåãšãã£ã现ããå¶åŸ¡ãXMLã¬ãã«ã§æ£ç¢ºã«è¡ãã®ã¯ãAIã«ã¯é£æåºŠãé«ãããã¶ã€ã³ã厩å£ããŠããŸããã ã³ã³ããã¹ãæ¶è²»ãæ¿ãã ïŒã¹ã©ã€ã1æåã®XMLã ãã§ãèšå€§ãªéã«ãªããèªã¿æžãã®ãã³ã«ã³ã³ããã¹ããå§è¿«ãããŸãããããå
šäœãæ±ããšãããã«ããŒã¯ã³æ¶è²»éãèšå€§ã«ãªããŸããã 1-2. ç»åçææ¹åŒ ã¹ã©ã€ããç»åãšããŠçæããæ¹åŒã¯ã第äžå°è±¡ã®èŠæ ãã¯æªããããŸããã§ããããããã ç·šéã§ããªãããšãäžäŸ¿ã§ãã ã 1æåçŽãã«ãAIã«æç€ºãåºããŠåçæãåŸ
ã€å¿
èŠããããŸããã 1-3. HTMLçææ¹åŒ HTMLçæã¯èŠæ ããæ¯èŒçè¯ããç·šéèªäœã¯å®¹æã§ããããã®ç·šéã¯åºæ¬çã«AIãžã®èªç¶èšèªæç€ºã«ãªããŸããèªåã®æã§çŽæ¥ä¿®æ£ã§ãããæè§ŠãæããããŸããã ããã«ããã¶ã€ã³ã®æå®ãèªç¶èšèªããŒã¹ãªã®ã§å®ãããªãã±ãŒã¹ããããã©ãããŠããHTMLæããåºãŠããŸããŸãããèªåãäœã£ãæãã®ãªãè³æã¯ãã¬ãã¥ãŒãç·šéãã©ããä»äººäºã«ãªã£ãŠããŸããçããªã£ãŠããŸãããšããããŸããã 1-4. 3æ¹åŒã«å
±éããæå æ¯ãè¿ããšã倱æããæ¹åŒã«ã¯å
±éç¹ããããŸããã ãã¶ã€ã³ã«ãŒã«ããèªç¶èšèªã®ããã³ãããã§å®ãããããšããŠãã ããšã§ãã ãäœçœã¯0.3ã€ã³ã以äžãããã©ã³ãã¯Meiryo UIãããã®é
è²ã䜿ã£ãŠããããããæç€ºãããã³ããã§äžããŠããAIã¯æ¯åå°ããã€éãè§£éãããŸãã èªç¶èšèªã§ã®æç€ºã«é Œãéããããã€ãã®èªåã®ãã©ãŒããããã®åçŸæ§ã¯æ
ä¿ã§ããªããšæããŸããã 2. 蟿ãçããæé©è§£ïŒæžåŒã»ã«ãŒã«ãå
šãŠPythonã³ãŒãã«èŠå®ãã 2-1. ã³ã¢ã®çºæ³ïŒãã¶ã€ã³å€æãAIããåãäžãã æçµçã«èŸ¿ãçããçãã¯ã·ã³ãã«ã§ã ãã¶ã€ã³ãAIã«å€æãããã®ã§ã¯ãªããèªäœãã«ããŒã©ã€ãã©ãªã®é¢æ°ã«çµã¿èŸŒã ãšãããã®ã§ãã python-pptxã©ã€ãã©ãªã掻çšãããèªäœã®ãã«ããŒã©ã€ãã©ãª pptx_helpers.py ãæ§ç¯ããŸããã衚ãäœã make_table ãèŠåºãã眮ã add_heading ãã¹ã©ã€ã1æã®äžã§ã®åå²ã¬ã€ã¢ãŠããçµã draw_split_layout ããããã®é¢æ°ã«ã¯ãç§ã®ããã€ãã®ãã©ãŒããããã®é
è²ã»çœ«ç·ã»ãã©ã³ãã»äœçœãå
šãŠããŒãã³ãŒããããŠããŸãã ã¹ãã«ã«ã¯ãããæèšããŠããŸãã 颿°ã®ãã¶ã€ã³ãããæ¿èªæžã¿ãã¶ã€ã³ pptx_helpers.py ã® make_table ã» add_heading ãªã©ã®ãã«ããŒã«çµã¿èŸŒãŸããããžã¥ã¢ã«ãã¶ã€ã³ãæ¿èªæžã¿ã®ãã¶ã€ã³ãã®ãã®ã§ãããèªèº«ã®çŸç倿ã«åãããŠè²ã»çœ«ç·ã»ãã©ã³ãã»äœçœãäžæžãããŠã¯ãªããªãã颿°ããã©ã¡ãŒã¿ãåãä»ããªããªããããã¯æå³çã«åºå®ãããŠããã AIã®ä»äºã¯ãã©ã®é¢æ°ããã©ã®ããŒã¿ã§åŒã¶ããã ãã§ããèªç¶èšèªã§ãã¶ã€ã³ãå®ãããã®ã§ã¯ãªããããããå®ã以å€ã®éžæè¢ããªãããŠããŸãã®ããã€ã³ãã§ããã 2-2. ã¯ãŒã¯ãããŒã¯Anthropicå
¬åŒskillã®èšèšææ³ãåèã«å®è£
ã¯ãŒã¯ãããŒèªäœã¯ãŒãããçºæ³ããããã§ã¯ãªããAnthropicå
¬åŒã®pptxã¹ãã«ã®èšèšææ³ãåèã«ããŠããŸããå
¬åŒskillãã以äžã®èãæ¹ãåãå
¥ããŠããŒãããèªåã®skillãšããŠæžãèµ·ãããŸããã åèã«ããèãæ¹ ïŒæ®µéçãªã¯ãŒã¯ãããŒæ§æããµããšãŒãžã§ã³ãã«ããã¬ãã¥ãŒã®ä»çµã¿ ç¬èªã«å®è£
ããéšå ïŒOOXMLçŽæ¥ç·šéã§ã¯ãªãpython-pptx+èªäœãã«ããŒé¢æ°ãæ¡çšããèªç¶èšèªã§æžãããã¡ãªãã¶ã€ã³ã«ãŒã«ãã³ãŒãã«åºå® 2-3. ãªããžããªå
šäœå . âââ scripts/ # å
±æã©ã€ãã©ãªãšããŒã« (git管ç) â âââ pptx_helpers.py # ã¹ã©ã€ãæ§ç¯ãã«ããŒ(å
šãã«ãã¹ã¯ãªããã®åºç€) â âââ generate_template_images.py # ãã³ãã¬ãŒãããé«è§£å床åç
§ç»åãçæ âââ template/ # ããŒã¹ãã³ãã¬ãŒãè³ç£ (git管ç) â âââ template.pptx # ããã€ãã®èªåã®ãã©ãŒãããããäœçŸããããŒã¹ãã³ãã¬ãŒã â âââ template_images/ # ã¬ã€ã¢ãŠãã»ãã£ãŒãå¥ã®åç
§ç»å âââ output/ # çæç© (ããŒãããšã«1ãã£ã¬ã¯ããª) â âââ <theme>/ â âââ python/ # ãã«ãã¹ã¯ãªãã (git管çãåŸããä¿®æ£ã»åçæå¯) â â âââ slideNN_build.py # ã¹ã©ã€ã1æ = ã¹ã¯ãªãã1æ¬ â âââ <theme>.pptx # çæãããpptxæ¬äœ (git管ç察象å€) â âââ slides/ # AIã¬ãã¥ãŒçšã¹ã©ã€ãç»å (git管ç察象å€) âââ .claude/skills/ # PowerPointçæã»ã¬ãã¥ãŒçšã¹ãã« âââ pptx/ â âââ SKILL.md # äžæ žã¯ãŒã¯ãããŒ(äœæã»ç·šé) âââ pptx_review/ â âââ SKILL.md # 宿ãããã®ã¬ãã¥ãŒ âââ pptx_overall_structure_review/ âââ SKILL.md # ã¹ã©ã€ãæ§ææ¡ã®ã¬ãã¥ãŒ èšèšäžã®ãã€ã³ãã¯ã ã¹ã©ã€ã1æãPythonã¹ã¯ãªãã1æ¬ïŒ slideNN_build.py ïŒã«å¯Ÿå¿ãããã¹ã¯ãªããã®æ¹ãgit管çãã ããšã§ããpptxæ¬äœã¯ã¹ã¯ãªãããããã€ã§ãåçæã§ãããããgit管çããŠããŸããã 3. ä»çµã¿ã®è©³çްâ ïŒãã¶ã€ã³ãã³ãŒãã«åºå®ãã 3-1. ãã¶ã€ã³ã®åæ¬ã¯Pythonã³ãŒã ç§ã®ããã€ãã®ãã©ãŒããããã®é
è²ã»çœ«ç·ã»ãã©ã³ãã»äœçœã¯ãå
šãŠ pptx_helpers.py ã®é¢æ°ã®äžã«å®è£
ãããŠããŸãã衚ãªã make_table ãèŠåºããªã add_heading ãåå²ã¬ã€ã¢ãŠããªã draw_split_layout ãšããå
·åã«ãã¹ã©ã€ãã®æ§æèŠçŽ ããšã«å°çšé¢æ°ãçšæããã¹ãã«ã«ã¯ãå¿
ããããã®é¢æ°ã䜿ãããšãã颿°ã®ãã¶ã€ã³ãèªèº«ã®å€æã§äžæžãããªãããšããæç€ºããŠããŸãã ãã¶ã€ã³ã®æ£è§£ãã³ãŒããšããŠ1ç®æã«éçŽãããŠããã®ã§ãAIã®è§£éãæºããäœå°ããããŸããããã¶ã€ã³ãå€ããããªã£ãã颿°ãçŽãã°ããã以éã®çæç©å
šãŠã«åæ ãããŸãã 3-2. Grand RulesïŒäŸå€ãªãå®ããã匷å¶ã«ãŒã« ã¹ãã«ã®åé ã«ã¯ãGrand Rulesããšããã»ã¯ã·ã§ã³ã眮ãããã¶ã€ã³å€æã®äœå°ã朰ããŠããŸããäŸãã°ä»¥äžã®ãããªã«ãŒã«ã§ãã åå²ã¬ã€ã¢ãŠãã¯å¿
ã draw_split_layout() ã䜿ã ã³ã³ãã³ãé åãå·Šå³ã«åå²ããã¹ã©ã€ãã§ãã»ã¯ã·ã§ã³ããšã«èŠåºããåå¥ã«çœ®ããšãèŠåºãã®çžŠäœçœ®ããºã¬ããªã¹ã¯ãçãŸããŸããããã§åå²ãšããããŒé
眮ã1ã€ã®é¢æ°ã«éã蟌ããæ§é çã«ãºã¬ãèµ·ããªãããã«ããŸããã äŸãã°ä»¥äžã®ã³ãŒãã¯ãã³ã³ãã³ãé åããèæ¯ãïŒå·Š1/3ïŒãšã課é¡åæãïŒå³2/3ïŒã«åå²ããå·Šã«åæã®ç®æ¡æžããå³ã«èª²é¡ã®äžèŠ§è¡šãé
眮ããŠãéãäžè§ã³ãã¯ã¿ã§ã€ãªããã®ã§ãã draw_split_layout() ãèŠåºãä»ãã®åå²ãšãªã¢ãšã³ãã¯ã¿çšã®é åãäœã£ãŠåº§æšãè¿ãã®ã§ãããšã¯ãã®åº§æšã䜿ã£ãŠã³ã³ãã³ããæãã ãã§ãã areas, triangle_arrow_areas = draw_split_layout( slide, col_ratios=[ 1 , 2 ], titles=[ "èæ¯" , "課é¡åæ" ], triangle_arrow_width=TRIANGLE_ARROW_WIDTH, ) left_x, content_top, left_w, content_h = areas[ 0 ] right_x, _, right_w, _ = areas[ 1 ] conn_x, _, conn_w, _ = triangle_arrow_areas[ 0 ] add_bullet_list(slide, items=[...], x=left_x, y=content_top, cx=left_w, cy=content_h) add_triangle(slide, x=conn_x + BETWEEN_SHAPE_GAP, y=content_top + TRIANGLE_ARROW_V_PAD, cx=conn_w - BETWEEN_SHAPE_GAP * 2 , cy=content_h - TRIANGLE_ARROW_V_PAD * 2 , direction= "right" , fill=COLOR_BORDER) make_table(slide, ..., x=right_x, y=content_top, cx=right_w, cy=content_h) ãã®ã³ãŒãããçæãããã¹ã©ã€ãããã¡ãã§ãã 衚ã¯å¿
ã make_table(HeaderCell, BodyCell) ã§äœã è¡ãšåã§æ
å ±ãæŽçããæ§é ããã·ã§ã€ãã®æåé
眮ã§å®è£
ããããšãçŠæ¢ããŠããŸããããããŒã®ã¹ã¿ã€ã«ãã°ã«ãŒãã©ãã«ã®å¡ããã»ã«å
ç®æ¡æžãã®äœè£ã¯å
šãŠé¢æ°åŽã§æ±ºãŸãããã¹ãŠç§å¥œã¿ã®ãã¶ã€ã³ã«ããŠããŸãã èŠåºãã¯å¿
ã add_heading() ãäœ¿ã æåè²ãšäžç·è²ã¯é¢æ°å
ã§åºå®ãããŠãããç¬èªã®è²ãæž¡ãããšã¯ã§ããŸããã 3-3. ã«ã©ãŒãã¬ããã»ã¿ã€ãã°ã©ãã£ã宿°å è²ã¯ COLOR_PRIMARY ïŒãã©ã€ããªã®éïŒã COLOR_PRIMARY_MID ã COLOR_PRIMARY_PALE ã COLOR_ACCENT ïŒåŒ·èª¿ã®èµ€ïŒãªã©ã®å®æ°ã®ã¿äœ¿çšå¯èœãšããhexã³ãŒãã®çŽæžãã蚱容ããªã圢ã«ããŠããŸãã åã«è²ãåæããã ãã§ãªãããMid Primaryã¯äºæ¬¡çãªå¡ãã®æ¢å®è²ããPale Primaryã¯è¡šã®äº€äºè¡ãªã©ãèæ¯ãããããã«åºå¥ã§ããã°è¶³ããå Žé¢ã ãããšãã£ã 䜿ãåãã®ã«ãŒã« ãŸã§ã¹ãã«ã«èŠå®ããŠããŸãã ã¿ã€ãã°ã©ãã£ãåæ§ã§ããã©ã³ãã¯Meiryo UIåºå®ããµã€ãºã¯ã¹ã©ã€ãã¿ã€ãã«24ptã»ãªãŒãæ18ptã»Bodyããã¹ã12ã16ptãšæ±ºããŠããŸãã 3-4. ã¹ãã«ã«æžãã ãã§ã¯å®ãããªãïŒçµ¶å¯Ÿã«å®ããããã«ãŒã«ã¯ãšã©ãŒã§æ¢ãã éçšããŠã¿ãŠæ°ã¥ããã®ã¯ã ã¹ãã«ã«ãããæç¢ºã«ã«ãŒã«ãæžããŠããAIãå®ããªãããšããã ãšããäºå®ã§ãã 象城çã ã£ãã®ããã©ã³ããµã€ãºã§ããã¹ãã«ã«ã¯ãBodyããã¹ãã¯12pt以äžå¿
é ããšæèšããŠããã«ãããããããæ
å ±éã®å€ãã¹ã©ã€ãã§ããã¶ã€ã³äžãäœãšã1è¡ã«åãããããšå€æããAIããåæã«11pt以äžã«äžããã±ãŒã¹ãèŠãããŸããã ããã¯ãskillã§æç€ºã®æžãæ¹ã匷ããŠãæ ¹çµ¶ã§ããŸããã§ããã ããã§ããã®ã«ãŒã«ã¯ããã³ããã§ã¯ãªãã³ãŒãã§åŒ·å¶ããããšã«ããŸãããå
±éã®ãã©ã³ãèšå®åŠçã«æ€èšŒãå
¥ãã12ptæªæºãæž¡ãããã ValueError ãæããŠå®è¡ãã®ãã®ãæ¢ããŸãã MIN_BODY_PT = 12 # Bodyããã¹ãã®äžéãããæªæºã¯ValueErrorã«ãã raise ValueError ( f "ãã©ã³ããµã€ãº {sz_pt}pt ã¯Bodyããã¹ãã®äžé {MIN_BODY_PT}pt æªæºã§ãã" ) ãšã©ãŒã§å®è¡ãæ¢ãŸãã°ãAIã¯æåæ°ãåãã»ã¬ã€ã¢ãŠãã調æŽãããªã©ããã©ã³ããäžãã以å€ã®éãæ¢ããããããŸãããããã«ããã12ptæªæºã®ããã¹ãã¯çºçããªããªããŸããã 4. ä»çµã¿ã®è©³çްâ¡ïŒå質ãæ
ä¿ããã¯ãŒã¯ãã㌠ãã¶ã€ã³ã®åçŸæ§ã¯ã³ãŒãã§æ
ä¿ã§ããŸãããããã ãã§ã¯ãããããªã ãã§äžèº«ã®ãªãã¹ã©ã€ãããã§ããŠããŸããŸããããã§ãã1ã€ã®æ±ãšããŠã èªåã®ã¹ã©ã€ãäœæã®äœæ³ãã¯ãŒã¯ãããŒãšããŠåŒ·å¶ãã ããšã«ããŸããã 4-1. ã¹ã©ã€ãèšç»ïŒäœæ³ãèšç»æ®µéã§åŒ·å¶ãã ã¹ã©ã€ãäœæã®èµ·ç¹ã¯AIã§ã¯ãªãç§ã§ããè°äºé²ãéå»è³æãããšã«éåžžã®ChatåAIãšå£æã¡ããŠãäœãäŒãããããåºãããã®çµè«ãèªç¶èšèªã§ã¹ãã«ã«æž¡ããšããããå§ããŸãã ãã ãããã®åŸãããªãã¹ã©ã€ããAIã«äœãããããšã¯ããŸãããå®è£
ã«å
¥ãåã«ãAIã«ã¯å
šã¹ã©ã€ãã«ã€ããŠãSection/Title/Lead text/Layout/Chart type/Body outlineããæåã§æžãåºãããŸãã ã©ãããã¹ã©ã€ãèšèšã«ããã€ãããªã®ããäºåã«èŠããåããèªèº«ã®ç®ã§ã¬ãã¥ãŒããŠããäœæã«åãæããããããšã§ããpptxã¯ã§ãããã£ããã©ãå
šäœã®ã¹ããŒãªãŒãã€ãã€ããªã®ã§äœãçŽãããšããæéã®ç¡é§ãé¿ããããŸãã ãã®ãã¹ããŒãªãŒã©ã€ã³ãæåã«åºããããšããèãæ¹èªäœã¯ã以å玹ä»ããã æè¡è
ãç¥ã£ãŠããã¹ããã¬ãŒã³è³æäœæè¡ïŒç€Ÿå
ç ä¿®äŒã¬ããŒã ãã®ç ä¿®å
容ããAIã®ã¯ãŒã¯ãããŒã«å¿çšãããã®ã§ãã 4-2. ãã³ãã¬ãŒãpptxïŒè€è£œã®ããŒã¹ã§ããããã¶ã€ã³ã®ã«ã¿ãã° template/template.pptx ã¯ãç§ãæ®æ®µäœ¿ã£ãŠãããã©ãŒãããããã®ãŸãŸè©°ã蟌ãã ããŒã¹ãã³ãã¬ãŒãã§ãããã®ãã³ãã¬ãŒãã«ã¯2ã€ã®åœ¹å²ããããŸãã 1ã€ç®ã¯ã ã¹ã©ã€ããè€è£œããŠã³ã³ãã³ããæžã蟌ãããã®ããŒã¹ ãšããŠã®åœ¹å²ã§ãã衚çŽã»ç®æ¬¡ã»ã»ã¯ã·ã§ã³åºåãã»æšæºã¹ã©ã€ããšãã£ãè€è£œå
ã¹ã©ã€ããå«ãã§ãããåã¹ã©ã€ãã¯speaker notesã«æžããèå¥åïŒ layout_title ã layout_toc ã base_template ãªã©ïŒã§å
å®¹ãæ©æ¢°çã«ç¹å®ã§ããŸããAIã¯ãããã³ããŒããäžã«ã³ã³ãã³ããé
眮ããŠããã®ã§ãæå®ã®ãã³ãã¬ãŒãïŒäŒç€Ÿãã³ãã¬ãŒããªã©ïŒã«æ²¿ã£ãäœè£ãæåããä¿èšŒãããŸãã 2ã€ç®ã¯ã æšæºçãªèŠèŠãã¶ã€ã³ãAIã«æããã«ã¿ãã° ãšããŠã®åœ¹å²ã§ãããã¶ã€ã³ã®ååã¯Pythonã³ãŒãã§èŠå®ããŠããŸãããã颿°ãã©ãçµã¿åããããšãã©ã®ãããªèŠãç®ã®ã¹ã©ã€ãã«ãªãã®ããã¯èŠèŠçã«æããå¿
èŠããããŸãã ããã§ãç§ãæ®æ®µãã䜿ãã¬ã€ã¢ãŠã5çš®ïŒåäžãã£ãŒãããã£ãŒã+å·Šã«åæããã£ãŒã+å³ã«çµè«ãªã©ïŒãšãã£ãŒãçŽ20çš®ïŒããªãŒãã¹ãããå³ããããªã¯ã¹ãããŒãããããè©äŸ¡ããŒãã«ãªã©ïŒãåç
§ç»åã®ã«ã¿ãã°ãšããŠæŽåããAIã«ã¯ãã®ã«ã¿ãã°ãããã¶ã€ã³ãéžã°ããããã«ããŸããã 4-3. 倿®µã¬ãã¥ãŒïŒããµããšãŒãžã§ã³ããšèªåèªèº«ã«ããã¬ãã¥ãŒã ãã®ã¯ãŒã¯ãããŒã§ãã€ã³ãã«ãªãã®ããå
¬åŒskillããèžè¥²ã»çºå±ãããã¬ãã¥ãŒã®ä»çµã¿ã§ãã äœæéçšã®ã³ã³ããã¹ããäžåæããªãæ°ãããµããšãŒãžã§ã³ããèµ·åããå
å
¥èгã®ãªãç®ã§ã¬ãã¥ãŒãããŸãã ã¬ãã¥ãŒã¯2段éãããŸãã æ§æã¬ãã¥ãŒïŒå®è£
åïŒ ïŒ ã¹ã©ã€ããäœãåã«ãèšç»ãã©ãããå¥ã®ãµããšãŒãžã§ã³ããã¬ãã¥ãŒããŸããã¬ãã¥ã¢ãŒã«ã¯èªåèªèº«ã®èãæ¹ãèžè¥²ãããã«ãœããäžããå³ããã¬ãã¥ãŒãããããæç€ºããŠããŸãã ããã«ãAIã®ã¬ãã¥ãŒãåæ ããèšç»ã¯å¿
ãç§èªèº«ã«ãæç€ºããã ç§ãæ¿èªããªãéãAIã¯å®è£
ãéå§ããªã ãããŒã«ããŠããŸããã¹ã©ã€ããäœã蟌ãã åŸã«æ§æããããçŽãã®ãæå€§ã®æéã®ç¡é§ãªã®ã§ãå®è£
åã®æ®µéã§äººéã®ã¬ãã¥ãŒãå¿
ãæãããã«ããŠããŸãã 宿åŸã¬ãã¥ãŒ ïŒ ãããã宿ããããå
šã¹ã©ã€ããç»ååããŠãå¥ã®ãµããšãŒãžã§ã³ããç®èŠã¬ãã¥ãŒãè¡ããŸããèŠçŽ ã®éãªãã1ã2pxã®äžæŽåãäœã³ã³ãã©ã¹ãããã©ã³ãã®äžçµ±äžãšãã£ãããžã¥ã¢ã«å質ãšãå
šäœã®ã¹ããŒãªãŒã»åã¹ã©ã€ãã®ãªãŒãæãå
šæ°ãã§ãã¯ããŸãã ææã¯Must fix/Nice to fixã®åªå
床ä»ãã§è¿ã£ãŠããã®ã§ãç§ãæçµçã«å¯Ÿå¿ããé
ç®ãåæšéžæãæç€ºãåºããŸãããã®ããã§ãä¿®æ£ãå¿
èŠãªã¹ã©ã€ãã®ãã«ãã¹ã¯ãªããã ããä¿®æ£ã»åå®è¡ããŸãã 4-4. AIç®èŠã¬ãã¥ãŒã®ããã®ã¬ã³ããªã³ã°åºç€ AIã«ããç®èŠã¬ãã¥ãŒã«ã¯pptxã®ã¹ã©ã€ãç»ååãå¿
é ã§ããåœåã¯LibreOfficeã§å€æããŠããŸãããããã©ã³ã代æ¿ã§äžéšã®æåãåææäœã«ãªã£ããããªããžã§ã¯ããæ¬ èœãããããåé¡ããããŸããã ããã§Microsoft PowerPointã®ãã€ãã£ã倿ïŒmacOSã¯osascriptãWindowsã¯COMçµç±ïŒãã§ããã¬ã³ããªã³ã°CLIãæŽåããŸããã 5. ä»çµã¿ã®è©³çްâ¢ïŒããŒã¯ã³å¹ç ãã£ãŠã¿ãŠæ³å以äžã«éèŠã ã£ãã®ããããŒã¯ã³å¹çã®èšèšã§ããpptxçæã¯ç»åã»å€§ããªãœãŒã¹ã³ãŒããšãã£ãææç©ãæ±ããããæèããªããšã¡ã€ã³ã³ã³ããã¹ããããæº¢ããå質ãã³ã¹ããæªåããŠããŸããŸãã ããã§ã¹ãã«ã«ã¯ããå質ãèœãšããããŒã¯ã³ãç¯çŽãããããã®ã«ãŒã«ãæèšããŸããã ãã«ããŒã©ã€ãã©ãªã¯å®è£
ãå«ããå
šæãèªãŸããªã ïŒã¹ãã«å
ã®é¢æ°ãªãã¡ã¬ã³ã¹è¡šãšdocstringã ãã§äœ¿ç𿹿³ãå
šãŠãããèšèšã«ãã ç®èŠã¬ãã¥ãŒã¯ãµããšãŒãžã§ã³ãã«å§è²ãã ïŒå
šã¹ã©ã€ãã®ç»åã¯ãµããšãŒãžã§ã³ãïŒç¬ç«ã³ã³ããã¹ãïŒåŽã§èªã¿ãã¡ã€ã³ãšãŒãžã§ã³ãã¯ããã¹ãã®æèŠã ããåãåã ä¿®æ£åŸã¯å€æŽããã¹ã©ã€ãã ããåã¬ã³ããªã³ã°ã»åèªèŸŒãã 6. å®éã«äœã£ãã¹ã©ã€ãã®äŸ åé ã§ãèŠãããã¹ã©ã€ãã¯ãããããæ¶ç©ºã®ãé£åã¹ãŒããŒã®éèŠäºæž¬AIå°å
¥æ€èšããšããããŒãã§ããã®ä»çµã¿ã䜿ã£ãŠçæãããã®ã§ãã ã¹ã©ã€ã1æåã®ãã«ãã¹ã¯ãªãããã©ã®ãããªãã®ããåé 2æç®ã®ãéèŠäºæž¬AIå°å
¥ã¹ã±ãžã¥ãŒã«ãã®ã¹ã©ã€ããäŸã«ãèŠãããŸãã import sys from datetime import date sys.path.insert( 0 , "." ) from pptx import Presentation from scripts.pptx_helpers import ( COLOR_BG_WHITE, COLOR_PRIMARY_MID, COLOR_PRIMARY_PALE, COLOR_TEXT_DARK, add_step_arrow, clear_body_shapes, make_schedule_frame, set_base_slide, ) PPTX = "output/techblog_sample/techblog_sample.pptx" # æ
åœå¥ã®å¡ãè² FILL_OURS = COLOR_PRIMARY_MID # åŒç€Ÿ(çœæå) FILL_CLIENT = COLOR_PRIMARY_PALE # 貎瀟(æ¿è²æå) prs = Presentation(PPTX) slide = prs.slides[ 5 ] # 6æç®ã®ã¹ã©ã€ã clear_body_shapes(slide) # ã»ã¯ã·ã§ã³ã»ã¿ã€ãã«ã»ãªãŒãæããŸãšããŠèšå® set_base_slide( slide, "å°å
¥èšç»" , "éèŠäºæž¬AIå°å
¥ã¹ã±ãžã¥ãŒã«" , "12æäžæ¬ãŸã§ã«ãã€ãããæ€èšŒãå®äºããæ¥æåããã®å
šåºå±éãç®æã4ã¶æã®å°å
¥èšç»ã§ã" , ) # å¹Žã»æã»é±ã®ããããŒãšã¿ã¹ã¯åé¡è¡ãæã€ã¹ã±ãžã¥ãŒã«æ ãæç»ãã # (å³äžã®å¡äŸãåŒç€Ÿ/貎瀟ãã®æç»ã¯çç¥) info = make_schedule_frame( slide, from_date=date( 2026 , 9 , 7 ), to_date=date( 2026 , 12 , 27 ), task_categories=[ "èŠä»¶å®çŸ©ã»ããŒã¿æŽå" , "ã¢ãã«éçºã»æ€èšŒ" , "å°å
¥ã»å±é" ], category_sz_pt= 14 , ) col_xs = info[ "col_xs" ] col_w = info[ "col_width" ] cat_ys = info[ "category_ys" ] cat_h = info[ "category_h" ] # (ã«ããŽãªindex, éå§é±, çµäºé±, ã©ãã«, å¡ãè²)ãé±ã¯1å§ãŸã bars = [ ( 0 , 1 , 3 , "çŸç¶åæã»KPIå®çŸ©" , FILL_OURS), ( 0 , 4 , 7 , "è²©å£²ã»æ°è±¡ããŒã¿ã®æŽå" , FILL_CLIENT), # ...æ®ã4æ¬ã¯çç¥ ] BAR_CY = 520000 for cat_i, w_from, w_to, label, fill in bars: bar_x = col_xs[w_from - 1 ] bar_cx = col_xs[w_to - 1 ] + col_w - bar_x bar_y = cat_ys[cat_i] + (cat_h - BAR_CY) // 2 text_color = COLOR_TEXT_DARK if fill == FILL_CLIENT else COLOR_BG_WHITE add_step_arrow(slide, label, x=bar_x, y=bar_y, cx=bar_cx, cy=BAR_CY, fill=fill, text_color=text_color, sz_pt= 13 ) prs.save(PPTX) ãã¶ã€ã³ã«é¢ããèšè¿°ãã»ãŒãªãããšãããããšæããŸãã座æšãšããŒã¿ãæž¡ãã°ããã€ãã®èªåã®ãã©ãŒããããã§æç»ãããããšããã®ããã®ä»çµã¿ã®æ¬è³ªã§ãã åæ²ã«ãªããŸããããã®ã³ãŒãã«ãã£ãŠçæãããã¹ã©ã€ãããã¡ãã§ãã Plotlyã§çæããå®éãã£ãŒããåã蟌ãã¹ã©ã€ãããåãä»çµã¿ã§äœããŸãã â»æ¬ãã£ãŒãã¯èšäºçšã«äœæããæ¶ç©ºã®ãµã³ãã«ããŒã¿ã§ãããåœç€Ÿã®å®çžŸãå°å
¥å¹æã瀺ããã®ã§ã¯ãããŸãã ãããŠãã¹ã©ã€ã=Pythonã¹ã¯ãªããããªã®ã§ããã®åŸã®ä¿®æ£ã¯2éãããéžã¹ãŸãã倧å¹
ã«å€ããããã°ã¹ã¯ãªãããAIã«ç·šéããŠããã£ãŠåå®è¡ããã°ããã§ãããæèšã衚ã®äžèº«ããã£ãšçŽããããã°pptxãéããŠæ®æ®µã©ããæã§ç·šéã§ããŸãã ã©ã¡ãã®æ¹æ³ã䜿ãã ããšããå®éçšã§ã¯éåžžã«äŸ¿å©ã§ãã ææ³ã»ãŸãšã åœåã®ç®çã¯æããã ä»åäœã£ãä»çµã¿ã¯ãéåžžã«çްãããšãããŸã§èªåã®å¥œã¿ã«åãããããŸãããå®éã«ããªã䟿å©ã§ãåœåã®ç®çã¯æãããŠããŸãã åºãŠããã¹ã©ã€ãã¯èªåã«ãšã£ãŠèªã¿ãããã倧å¹
ãªä¿®æ£ãåºæ¬çã«äžèŠ ä¿®æ£ãããæãããã€ãã®èªåã®ãã©ãŒãããããªã®ã§ã奜ã¿ã®ä¿®æ£ããã€ãã®äœæ¥ã§pptxäžã§ããã§ãã äœææéã«ã€ããŠããæ£ç¢ºã«èšæž¬ã¯ããŠããŸããããæäœæ¥ã§äœãå Žåãšæ¯ã¹ãŠ6å²ã»ã©åæžã§ããŠããäœæã§ãã å·¥çš äœææéã®åæžç äž»ãªæ
åœ æ§æã»ã¹ããŒãªãŒèšèš çŽ5岿ž AIãåæ¡ãç§ãã¬ãã¥ãŒãšæ¿èª ã¹ã©ã€ãäœæ çŽ9岿ž AIïŒãã«ãã¹ã¯ãªããã®çæãšå®è¡ïŒ èŠçŽãã»æä¿®æ£ ã»ãŒå€åãªã ç§ å
šäœ çŽ6岿ž åæžãå¹ããŠããã®ã¯äž»ã«ã¹ã©ã€ãäœæã®å·¥çšã§ãæ§æã®æ€èšãšæåŸã®æä¿®æ£ã¯ãããŸã§åæžã§ããŠããŸãããç¹ã«æä¿®æ£ããŸã£ããæžã£ãŠããªãã®ã¯ãä»çµã¿ãäžååã ããã§ã¯ãªããæå³çã«æ®ããŠããéšåã§ãã æžããªãã£ãæä¿®æ£ã¯ããããå¿
èŠãªå·¥çš æä¿®æ£ã®äžèº«ã¯ãããã¹ãã®ä¿®æ£ãã¡ã€ã³ã§ããã衚ã®é
ç®ã倧å¹
ã«åã£ãã远å ãããããããšããããŸãã ãã ãããã¯ãããŸã§èŠã«ãªããŸãããèªåã®ãã€ãã®ãã©ãŒããããªã®ã§ä¿®æ£ã¯æ¥œã§ããããèªåãäœã£ãæãã®ããã¹ã©ã€ããªã®ã§ãä¿®æ£ã«éã蟌ããããã§ãã ãããŠãã®æä¿®æ£ã¯ã æåŸã«äººéãèªåã§èªããè³æã«ããããå¿
èŠãªå·¥çš ã ãšèããŠããŸããå®å
šã«æ¶ãããšã¯ã§ãããæçµçã«ãã®ã¹ã©ã€ããããšã«èªåã®å£ã§èª¬æãã以äžãæ¶ãã¹ãã§ããªããšæã£ãŠããŸãã pptxã®ãã€ã¹ãã¯äŒæ¥ã«ãã£ãŠã人ã«ãã£ãŠå
šç¶éã ãããŸã§æ§ã
ãªäŒæ¥ã®è³æãèŠãŠããŠæãã®ã¯ãpptxã®ãã€ã¹ãã¯äŒæ¥ã«ãã£ãŠæ¬åœã«éããšããããšã§ããé
è²ãã¬ã€ã¢ãŠãã®å¯åºŠããªãŒãæã®æžãæ¹ã衚ã®äœ¿ãæ¹ãªã©ãã©ããçµç¹ã®æåãã®ãã®ã§ããããã«èšãã°ãåãäŒæ¥ã®äžã§ã人ã«ãã£ãŠå¥œã¿ãéããŸãã ã ãããããã¹ã©ã€ãèªåçæã¯äžäººåãã®æ±çšãµãŒãã¹ã§æžããã®ã§ã¯ãªãã å人ãèªåã®å¥œã¿ã§ã«ã¹ã¿ãã€ãºã§ããä»çµã¿ã§ããã¹ã ã ãšæããŸãããã³ãã¬ãŒããšãã«ããŒé¢æ°ãèªåçšã«äœã蟌ããã®æ¹åŒã¯ããã®ç¹ã§çã«ããªã£ãä»çµã¿ãªã®ã§ã¯ãšèããŠããŸãã ãã®èšäºããèªå奜ã¿ã®PowerPointãèªåçæãããæ¹ã®å©ãã«ãªãã°å¹žãã§ãã