ãããã¯ãéçºããµãŒãã¹ãã¶ã€ã³ã«ãããŠããŠãŒã¶ãŒã®äœéšãæç³»åã§å¯èŠåãããã«ã¹ã¿ããŒãžã£ãŒããŒããããããŠãŒã¶ãŒçè§£ãæ·±ããããŒã ã®ç®ç·ãåãããããã®åŒ·åãªããŒã«ã§ãããäœæããäžã§ä»¥äžã®ãããªå£ã«ã¶ã€ãã£ãããšã¯ãããŸãããïŒ ãŠãŒã¶ãŒã®è¡åã¯äžŠã¹ãããããã©ããã®è£ã«ãããçã®ææ
ãããæœåšçãªèª²é¡ïŒã€ã³ãµã€ãïŒããŸã§èžã¿èŸŒããŠããªãæ°ããã ããŒã å
ã ãã§ãã¬ã€ã³ã¹ããŒãã³ã°ãããŠããããããããªèª²é¡ããèªåãã¡ã®éœåã®è¯ãè§£éã°ãããåºãŠããŠããŸã ããããè çç¶æ
ããChatGPTãGeminiãClaudeãªã©ã®AIãã£ãããå©ããŠããããããããŸããã ä»åã¯ããã£ããããããã壿ã¡çžæããšããŠæŽ»çšããã«ã¹ã¿ããŒãžã£ãŒããŒãããã®ã€ã³ãµã€ããæ·±æãããããã®å
·äœçãªã¹ããããšãããã³ããã®äŸãã玹ä»ããŸãã AIãã£ããã§ã®å£æã¡ïŒã€ã³ãµã€ããæ·±æããã4ã€ã®ã¹ããã ããã§ã¯ãå®éã«AIãã£ããã䜿ã£ãŠãžã£ãŒããŒãããããã©ãã·ã¥ã¢ããããŠããããã»ã¹ãèŠãŠãããŸãããã ã¹ããã1ïŒãã«ãœããšåææ¡ä»¶ã®ãåæã AIãã£ããã«å£æã¡ãäŸé Œããåã«ããŸãã¯ãªãµãŒãããŒã¿ããã«ãœãã®æ
å ±ãã€ã³ãããããŸããããã§ã®æ
å ±ã®å
·äœæ§ãããã®åŸã®ã¢ãŠããããã®è³ªãå·Šå³ããŸãã ãå
¥åããã³ããäŸã ãããªãã®äžæµã®UXãªãµãŒãã£ãŒãšããŠãç§ã®ã«ã¹ã¿ããŒãžã£ãŒããŒãããäœæã®å£æã¡çžæã«ãªã£ãŠãã ããã ãŸãã¯åæãšãªããã«ãœããšãããã¯ãã®æ
å ±ãå
±æããŸããå
容ãçè§£ãããã質åãããã«ãåæãçè§£ããŸããããã€ã§ããã£ã¹ã«ãã·ã§ã³ãå§ããããŸãããšã ãè¿çããŠãã ããã â ãããã¯ãïŒ20代ã30代åãã®ãè³ç£éçšãèªååããã¹ããã¢ã㪠â ãã«ãœãïŒéœå
åšäœã®äŒç€Ÿå¡ïŒ28æ³ïŒãå°æ¥ãžã®æŒ ç¶ãšããäžå®ã¯ããããæè³ã®ç¥èã¯ãªããæãããã®ãæãããšæããŠãããå¹³æ¥ã¯ä»äºãå¿ãããã¹ãããè§Šãã®ã¯éå€äžãšå°±å¯åã®ã¿ãã ã¹ããã2ïŒè¡åã®çç±ãåæããã åæãåæãããããžã£ãŒããŒãããã®ç¹å®ã®ãã§ãŒãºãåãåºããŠAIãã£ããã«ã¶ã€ããŸãããŠãŒã¶ãŒãç¹å®ã®è¡åããšã£ãæã®ãèšèªåãããŠããªãåæ©ããæãäžããŸãã ãå
¥åããã³ããäŸã ããã«ãœãããã¢ããªãããŠã³ããŒããããã®ã®ãåæèšå®ïŒéè¡å£åº§ã®é£æºïŒã®ç»é¢ã§é¢è±ããããšãããã§ãŒãºã«ã€ããŠèããŸãã åã«ãé¢åãããããããšããçç±ä»¥å€ã§ããã®æãã«ãœãã®è³å
ã§èµ·ããŠããå¿ççãªèè€ãäžå®ããããã¯ãç§ã«ã¯é¢ä¿ãªãããããšæããŠããŸããããªææ
ããèªç¥å¿çåŠãUXã®èгç¹ãã5ã€æŽãåºããŠãã ãããã AIãã£ããã¯ããã»ãã¥ãªãã£ãžã®äžå®ããä»ãããããªããã°ãããªãåŒ·å¶æãžã®åçºããæè³éé¡ã®æ±ºå®ã«å¯Ÿããã³ãããã¡ã³ããžã®ææããªã©ãè¡åã®è£ã«æœãå¿ççèæ¯ãè«ççã«èšèªåããŠãããŸãã ã¹ããã3ïŒãã«ãœãã«ãªããã£ãŠããããäžæºããåãåºããã æ¬¡ã«ãAIãã£ããã«ãã«ãœããã®ãã®ã«ãªã£ãŠããããã€ã³ã¿ãã¥ãŒåœ¢åŒã§å£æã¡ãè¡ããŸãã客芳çãªåæã§ã¯ãªããã䞻芳çãªææ
ããåŒãåºãã¢ãããŒãã§ãã ãå
¥åããã³ããäŸã ãããããã¯ãå
ã»ã©å
±æãããã«ãœãïŒ28æ³äŒç€Ÿå¡ïŒã«ãªããã£ãŠåçããŠãã ãããç§ã¯ã€ã³ã¿ãã¥ã¢ãŒã§ãã ããããã¢ããªãéããŠæåã®ç»é¢ãèŠããšããã¶ã£ã¡ããã©ãæã£ãïŒäœãäžçªã¢ã€ã¢ã€ããïŒãã AIããã«ãœããæŒããããšã§ããå°éçšèªãå€ããŠãèªåãå Žéããªãšããã«ããæ°ããããããããªããéã®è©±ããããŠãå¿ã®æºåã远ãã€ããªãã£ãããšãã£ãã人éã®ããŒã ã ãã§ã¯èŠèœãšããã¡ãªçã
ããææ
ã®ã€ã³ãµã€ããæµ®ã圫ãã«ãªãããšæããŸãã ã¹ããã4ïŒãæªãã·ããªãªããšãçæ³ã®ã·ããªãªãã®ã®ã£ãããåãã æåŸã«ããžã£ãŒããŒãããã«ããããæªãäœéšããã©ããã£ãŠãè¯ãäœéšãã«å€ããããããå
·äœçãªæ¹åã¢ã€ãã¢ã®çš®ãèããŸãã ãå
¥åããã³ããäŸã ããã«ãœããæãäžå®ã«æãããå£åº§é£æºãã®ã¹ãããã«ãããŠã仿¥çïŒäŸãã°ãšã³ã¿ã¡ãSNSãã²ãŒã ãªã©ïŒã§äœ¿ãããŠããããŠãŒã¶ãŒã®å¿ççããŒãã«ãäžãããªã³ããŒãã£ã³ã°ã®ææ³ããåèã«ããã®ã¢ããªã«è»¢çšã§ããã¢ã€ãã¢ã3ã€ææ¡ããŠãã ãããã AIãã£ãããšå£æã¡ããéã®3ã€ã®æ³šæç¹ AIãã£ããã¯åªç§ãªããŒãããŒã§ãããéä¿¡ã¯çŠç©ã§ãã å®éã®ãŠãŒã¶ãŒã€ã³ã¿ãã¥ãŒïŒäžæ¬¡æ
å ±ïŒãæåªå
ã«ãã AIãã£ãããåºããŠãããã€ã³ãµã€ãã¯ããããŸã§ãçè«äžããããªãå¯èœæ§ãé«ã仮説ãã§ããAIãšã®å£æã¡ã§åŸãããã€ã³ãµã€ãã¯ãå®éã®ãŠãŒã¶ãŒãã¹ããã€ã³ã¿ãã¥ãŒããŒã¿ãšç
§ããåãããŠæ€èšŒããŠãã ããã ãã«ã·ããŒã·ã§ã³ïŒèª€æ
å ±ïŒãåæã«ãæ ¹æ ãåã AIãã£ããããããããåçããããšãã¯ãããªãããæãã®ïŒãã®æ ¹æ ãšãªããã«ãœãã®è¡åç¹æ§ã¯ã©ãã«ããïŒããšè¿œå ã§è³ªåïŒæ·±æãïŒããŠãã ãããããã«ãããAIã®é©åœãªæãã€ããæé€ããçã®éã£ãã€ã³ãµã€ããæœåºã§ããŸãã æ©å¯æ
å ±ã®å
¥åã«ã¯é
æ
®ãã AIãã£ããã¯å
¥åãããæ
å ±ãåŠç¿ããŠããããšãåæã§å©çšããŸããããæªçºè¡šã®ãããã¯ãåããå人æ
å ±ãå
¥åããªãããã«ããããåŠç¿ãããªãèšå®ããGoogle Workspaceäžã®Geminiãå©çšãããªã©ã察çãããŠãã ããã ãŸãšãïŒAIãšã®ååã§å¯èœæ§ãæ¡ãã ã«ã¹ã¿ããŒãžã£ãŒããŒãããã®äœæã«ãããŠãAIãã£ããã壿ã¡çžæã«ãããšããããŒã ã®èŠéãåºããããšããã§ããã§ãããã äžäººã§ããããã¯ããŒã ã ãã§æ©ãã§ãžã£ãŒããŒããããã綺éºã ãã©æµ
ããã®ãã«ãªã£ãŠããŸããããªãšãã¯ãAIãã£ããã«ãã¡ãã£ãšãã®ãŠãŒã¶ãŒã®æ°æã¡ãæ³åããŠããšè©±ããããŠã¿ãŠãã ããã ã芧ããã ãããããšãããããŸãïŒ ãã®æçš¿ã¯ã圹ã«ç«ã¡ãŸãããïŒ åœ¹ã«ç«ã£ã 圹ã«ç«ããªãã£ã 0人ããã®æçš¿ã¯åœ¹ã«ç«ã£ããšèšã£ãŠããŸãã The post çæAIãã壿ã¡çžæãã«ããŠã«ã¹ã¿ããŒãžã£ãŒããŒãããã®ã€ã³ãµã€ããæãäžããŠã¿ã first appeared on SIOS Tech Lab .
ããã«ã¡ã¯ãOSSãããçžè«å®€ã®SKã§ãã OSS ã«é¢ãããåãåãããæ¥ã
å¯ããããäžã§ãä»åãçµ±åç£èŠããŒã«ãZabbixãã«é¢é£ããŠå¯ãããããåãåãããã玹ä»ããŸãã ãããŸã§æåã®ç®¡ç補åã䜿ã£ãŠãåãµãŒããŒã®ããã¹ãåããã¡ã¢ãªããCPUããOSããªã©ã®æ§ææ
å ±ã管çããŠããã客æ§ãããæ¬¡ã®ãããªãçžè«ãããã ããŸããã ãå©çšäžã®è£œåããµããŒãçµäºãè¿ãããããä»£æ¿ææ®µãšããŠããã§ã«ç£èŠã§å°å
¥ããŠããZabbixã®APIã䜿ã£ãŠæ§ææ
å ±ãååŸã§ããªããïŒã çµè«ããç³ãäžããŸããšãZabbix APIãå©çšããã°æ§ææ
å ±ã®äžæ¬ååŸãå¯èœã§ãããã§ã«ç£èŠããŒã«ãšããŠZabbixãéçšããŠããå Žåããã®åéããã»ã¹ãèªååã»é£æºãããããšãã§ããŸãã ä»åã¯ãZabbix APIã® host.get ã¡ãœãããå©çšããŠãå€éšãããµãŒããŒã®æ§ææ
å ±ïŒã€ã³ãã³ããªæ
å ±ïŒãäžæ¬ååŸããå
·äœçãªæé ãšã³ãã³ãäŸã解説ããŸãã Zabbix APIã®åºæ¬ä»æ§ Zabbix APIã¯HTTPããŒã¹ã§æäŸãããŠãããã¯ã©ã€ã¢ã³ããšAPIéã®ãªã¯ãšã¹ãã»ã¬ã¹ãã³ã¹ã«ã¯ JSON-RPC 2.0ãããã³ã« ã䜿çšããŸãã APIãåŒã³åºãããã®ãšã³ããã€ã³ãïŒURLïŒã¯ãZabbix Webã€ã³ã¿ãŒãã§ãŒã¹ã®ãã£ã¬ã¯ããªã«ãã api_jsonrpc.php ã§ããããã©ã«ãã§ã¯ä»¥äžã®ãã¹ã«ãããŸãã /usr/share/zabbix/ui/api_jsonrpc.php ã¹ããã1ïŒAPIã®èªèšŒãšããŒã¯ã³ã®ååŸ Zabbixã®ããŒã¿ã«ã¢ã¯ã»ã¹ããã«ã¯ããŸãèªèšŒãè¡ã£ãŠAPIããŒã¯ã³ïŒã»ãã·ã§ã³IDïŒãååŸããå¿
èŠããããŸãããŸã èªèšŒãããŠããªãç¶æ
ããã®ãã°ã€ã³ã«ã¯ãuser.login ã¡ãœããã䜿çšããŸãã 以äžã® curl ã³ãã³ãã䜿çšããŠãZabbixãµãŒããŒã«èªèšŒãªã¯ãšã¹ããéä¿¡ããŸãã â»ããã§ã¯ãããã©ã«ãã®ç®¡çãŠãŒã¶ãŒã§ãã “Admin” ã®ããŒã¯ã³ãååŸããäŸã玹ä»ããŸãã ãã³ãã³ãäŸã curl -X POST -H "Content-Type: application/json" -d ' { "jsonrpc": "2.0", "method": "user.login", "params": { "username": "Admin", "password": "zabbix" }, "id": 1 }' http://172.31.34.176/zabbix/api_jsonrpc.php èªèšŒæ
å ±ãæ£ãããã°ãAPIãã以äžã®ãããªJSONã¬ã¹ãã³ã¹ãè¿ãããŸãã ãååŸçµæäŸã { "jsonrpc": "2.0", "result": "82aa1b5b38a9fe6f6619ad40c64602dd", "id": 1 } ããã§ result ãšããŠè¿ãããå€ïŒ82aa1b5b38a9fe6f6619ad40c64602ddïŒãèªèšŒããŒã¯ã³ã§ãã 以åŸã®APIãªã¯ãšã¹ãã§ã¯ããã®ããŒã¯ã³ã䜿çšããŸãã ã¹ããã2ïŒæ§ææ
å ±ïŒã€ã³ãã³ããªæ
å ±ïŒã®ååŸ èªèšŒããŒã¯ã³ãååŸã§ããããæ¬¡ã«ç£èŠå¯Ÿè±¡ãã¹ãã®æ§ææ
å ±ãååŸããŸãããã¹ãæ
å ±ã®ååŸã«ã¯ host.get ã¡ãœããã䜿çšããŸãã ãã¹ãåãIPã¢ãã¬ã¹ã ãã§ãªããCPUãã¡ã¢ãªãOSãªã©ã®æ§ææ
å ±ïŒã€ã³ãã³ããªããŒã¿ïŒãåæã«ååŸããããããã©ã¡ãŒã¿ã« selectInventory ãæå®ããŸãããŸãããã¹ãŠã®ããŒã¿ãååŸãããšããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããããoutput ãã©ã¡ãŒã¿ã䜿ã£ãŠååŸãããããããã£ãæç€ºçã«çµã蟌ãããšãæšå¥šãããŠããŸãã å
ã»ã©ååŸããããŒã¯ã³ã¯ãHTTPãªã¯ãšã¹ãã® Authorization ããããŒã«æå®ããŸãã以äžã¯ãæ€èšŒç°å¢ïŒIPã¢ãã¬ã¹: 172.31.34.176ïŒã«å¯ŸããŠã³ãã³ããå®è¡ããäŸã§ãã â»ã³ãã³ãã®æ«å°Ÿã« | jq ãä»ãããšçµæãæŽåœ¢ãããŠèŠããããªããŸãïŒèŠjqã³ãã³ãã®ã€ã³ã¹ããŒã«ãRHEL9.4以éã§ã¯BaseOSã«æšæºå«ãŸããŠããŸãïŒã ãã³ãã³ãäŸã curl -X POST -H 'Content-Type: application/json-rpc' -H 'Authorization: Bearer 82aa1b5b38a9fe6f6619ad40c64602dd' -d ' { "jsonrpc": "2.0", "method": "host.get", "params": { "output": ["hostid", "host", "name"], "selectInventory": ["os", "hardware", "software"] }, "id": 2 }' http://172.31.34.176/zabbix/api_jsonrpc.php | jq ãã³ãã³ã解説ã curlã³ãã³ãã®å
šäœ é
ç® å
容 curl WebãµãŒããŒãšéä¿¡ãè¡ãããã®ã³ãã³ãã©ã€ã³ããŒã« -X POST HTTPã¡ãœããããPOSTãã«æå®ïŒZabbix APIã¯å¿
ãPOSTã䜿çšããŸãïŒ -H ‘Content-Type: application/json-rpc’ éä¿¡ããããŒã¿ãJSON-RPC圢åŒã§ããããšãZabbixãµãŒãã«äŒããããã -H ‘Authorization: Bearer <ããŒã¯ã³>’ ååŸããèªèšŒããŒã¯ã³ãæå®ããããã -d ‘{ ⊠}’ Zabbixãžéä¿¡ãããªã¯ãšã¹ãã®å®ããŒã¿ïŒJSONïŒ http://âŠ/zabbix/api_jsonrpc.php ãªã¯ãšã¹ãã®éä¿¡å
ãšãªãZabbixãµãŒããŒã®ãšã³ããã€ã³ãURL | jq åºåãããJSONããŒã¿ãèŠãããæ¹è¡ã»è²ä»ãããŠæŽåœ¢ããã³ãã³ã éä¿¡ããJSONããŒã¿ïŒ-d ã®äžèº«ïŒ ã㌠(” “) æå®ããŠããå€ æå³ã»åœ¹å² jsonrpc “2.0” JSON-RPCãããã³ã«ã®ããŒãžã§ã³ïŒ”2.0″ åºå®ïŒ method “host.get” å®è¡ãããAPIã®æäœåãä»åã¯ãã¹ãããŒã¿ã®ååŸãæå® params { ⊠} æ€çŽ¢æ¡ä»¶ãåºåãã©ãŒããããªã©ãå®çŸ©ããåŒæ° output [“hostid”, “host”, “name”] è¿åŽããããã¹ããªããžã§ã¯ãã®ãã£ãŒã«ããéå®ïŒå
šé
ç®ååŸæã¯ “extend”ïŒ selectInventory [“os”, “hardware”, “software”] ãã¹ãã«çŽã¥ãã€ã³ãã³ããªæ
å ±ãåæã«ååŸããããã®ãã©ã¡ãŒã¿ id 2 ãªã¯ãšã¹ããšã¬ã¹ãã³ã¹ãçŽã¥ããä»»æã®èå¥å 以äžãååŸçµæã§ãã ãååŸçµæã { "jsonrpc": "2.0", "result": [ { "hostid": "10084", "host": "Zabbix server", "name": "Zabbix server", "inventory": { "os": "Linux version 6.12.0-211.22.1.el10_2.x86_64 (mockbuild@df33c0284dd848a197e916486944b54f) (gcc (GCC) 14.3.1 20251022 (Red Hat 14.", "hardware": "", "software": "" } }, { "hostid": "10782", "host": "WebServer1", "name": "WebServer1", "inventory": [] } ], "id": 2 } stuser ãã®æ€èšŒç°å¢ã§ã¯ãç£èŠå¯Ÿè±¡ã« “Zabbix server” ãš “WebServer1” ã®2ã€ãååšããŠããŸãã æ€èšŒç°å¢ã®ZabbixãµãŒãã®ãã¹ãç»é¢ “WebServer1” ã¯Webç£èŠïŒURLå€åœ¢ç£èŠãªã©ïŒã®ã¿ãè¡ã£ãŠãããZabbix Agentãå°å
¥ãããŠããªããããäžèšã®çµæã®ããã«ã€ã³ãã³ããªæ
å ±ã空ïŒ[]ïŒã«ãªããŸãã é
ç®ãçµã蟌ãŸãã«ãã¹ãŠã®æ
å ±ãååŸãããå Žåã¯ã”output” ã “selectInventory” ã« “extend” ãæå®ããŸãããŸããIPã¢ãã¬ã¹ãªã©ã®ãããã¯ãŒã¯æ
å ±ãååŸãããå Žå㯠“selectInterfaces”: “extend” ã远å ããŸãã ãã³ãã³ãäŸã $ curl -X POST -H 'Content-Type: application/json' -H 'Authorization: Bearer 7a6237f38929523f74cfb0acf8566f7f' -d ' { "jsonrpc": "2.0", "method": "host.get", "params": { "output": "extend", "selectInterfaces": "extend", "selectInventory": "extend" }, "id": 2 }' http://172.31.34.176/zabbix/api_jsonrpc.php | jq ååŸã§ããé
ç®ã®è©³çްã¯å
¬åŒãµã€ãããåç
§ãã ããã Zabbix ããã¥ã¡ã³ã / 20 API https://www.zabbix.com/documentation/current/jp/manual/api Zabbix ããã¥ã¡ã³ã / 20 API / host.get https://www.zabbix.com/documentation/current/jp/manual/api/reference/host/get ãè£è¶³ãAPIã®èªèšŒãšããŒã¯ã³ã®ååŸ ã»ãã·ã§ã³ã®ç Žæ£ïŒãã°ã¢ãŠãïŒ ã¹ããã1ã§ç޹ä»ãã user.login ã¡ãœããã§ååŸããããŒã¯ã³ã¯ã䜿ãçµãã£ããå¿
ã user.logout ãå®è¡ããŠã»ãã·ã§ã³ãç Žæ£ããŠãã ãããç Žæ£ããã«æŸçœ®ãããšãäžèŠãªã»ãã·ã§ã³ããŒã¿ãããŒã¿ããŒã¹ã«èç©ãããZabbixã®ããã©ãŒãã³ã¹äœäžãæãåå ã«ãªããŸãã ãã»ãã·ã§ã³ç Žæ£ã®ã³ãã³ãäŸã $ curl -X POST -H 'Content-Type: application/json' -H 'Authorization: Bearer 1da473d0437c7bf69a22e6e057ffc1d7' -d ' { "jsonrpc": "2.0", "method": "user.logout", "params": [], "id": 3 }' http://172.31.34.176/zabbix/api_jsonrpc.php | jq { "jsonrpc": "2.0", "result": true, "id": 3 } 管çç»é¢ããçºè¡ãããAPIããŒã¯ã³ãã®å©ç𠿝åãã°ã€ã³ã»ãã°ã¢ãŠãåŠçãè¡ãã®ãæéã«æããå Žåã¯ãZabbixã®ç®¡çç»é¢ããæå¹æéãèšå®ã§ãããAPIããŒã¯ã³ããäºåã«çºè¡ããŠå©çšããæ¹æ³ãããããã§ãã ããŠãŒã¶ãŒèšå®ãâãAPIããŒã¯ã³ããéžæãããAPIããŒã¯ã³ã®äœæããéžæããŸãã ãAPIããŒã¯ã³ç»é¢ãÂ Â Â ãæ°èŠAPIããŒã¯ã³ç»é¢ã ãŠãŒã¶ã¯ãããã§ã¯ããã©ã«ãã®Adminãéžæããæå¹æéãèšå®ããŠããŸãã ãAPIããŒã¯ã³è¡šç€ºç»é¢ã åç»é¢ã§è¿œå ãã¿ã³ãæŒããšã以äžã®ããã«èªèšŒããŒã¯ã³ã衚瀺ãããŸãã ç»é¢ãäžåºŠéãããšäºåºŠãšå衚瀺ã§ããªããããå¿
ãéããåã«å€ãæ§ããŠãããŸãããã  ãŸãšã Zabbixãæšæºã§åéããŠããã€ã³ãã³ããªããŒã¿ãšZabbix APIãçµã¿åãããã°ãæå補åãå¥éå°å
¥ããªããŠããåãµãŒããŒã®æ§ææ
å ±ãäžæ¬ååŸã»ç®¡çã§ããŸãã ãŸããZabbix APIã¯æ
å ±ã®ååŸã ãã§ãªãããã¹ããã¢ã€ãã ãããªã¬ãŒã®èªåäœæãªã©ãè¡ãããããæ¥ã
ã®ç£èŠèšå®ãã®ãã®ãã¹ã¯ãªããã§èªååããããšãå¯èœã§ãã ã芧ããã ãããããšãããããŸãïŒ ãã®æçš¿ã¯ã圹ã«ç«ã¡ãŸãããïŒ åœ¹ã«ç«ã£ã 圹ã«ç«ããªãã£ã 0人ããã®æçš¿ã¯åœ¹ã«ç«ã£ããšèšã£ãŠããŸãã The post OSSãµããŒãã®çŸå ŽããïŒZabbixã§ãµãŒãã®æ§ææ
å ±ãååŸãã first appeared on SIOS Tech Lab .
AIã®äœ¿ãæ¹ãåŠã¶ããå
ã«ããœãããŠã§ã¢å·¥åŠãçè§£ããªããšãããªãããããªãããšæããŸãã AIã«ãã¹ãã³ãŒããæžãããå ŽåãäŸã«èª¬æããŸããAIã¯ãã¹ãã³ãŒããé«éã§æžããŠãããŸããããã¹ãçè«ãçè§£ããŠããªããšããã°ãèŠéããã¹ãã³ãŒããæžãããŠããŸãããšããããŸãã ãã¹ãã®è©±(äŸãšããŠ) å
ã«ãä»åã®è©±ã®åå°ã«ãªããã¹ãçè«ãç°¡åã«èª¬æããŠãããŸããããããããäŸãšããŠããã¹ãã®ææ³ã§æåãªä»¥äžã®2ã€ãæããããšæããŸãã ãã©ãã¯ããã¯ã¹ãã¹ã ã¯ãã³ãŒãã®äžèº«ãèŠãã«ã仿§ïŒå
¥åâåºåïŒã ããåºæºã«ãã¹ãããæ¹æ³ã§ããããã®å
¥åãäžãããã仿§ã©ããã®çµæãè¿ãããã確èªããŸããå¢çå€åæãåå€åå²ãšãã£ãææ³ã¯ãã¡ãåŽã§ãã ãã¯ã€ãããã¯ã¹ãã¹ã ã¯ãã³ãŒãã®å
éšæ§é ïŒåå²ãã«ãŒããåŠççµè·¯ïŒãèŠãŠãã¹ãããæ¹æ³ã§ããããã®ifæã¯trueåŽãfalseåŽãéããããã確èªããŸããã©ãã ãéãããã¯ã«ãã¬ããžãšããæ°å€ã§æž¬ããŸãã ããã§å€§äºãªã®ã¯ããã¯ã€ãããã¯ã¹ãšãã£ãŠããã³ãŒããåºæºã«ããŠããã®ã¯ãã¹ãã®çµè·¯ã®éžæã ãããšããç¹ã§ãã çµæãæ£ãããã©ããã®å€å®ïŒæåŸ
å€ïŒã¯ãå¿
ã仿§ããç«ãŠã å¿
èŠããããŸããã³ãŒããèŠãŠãã³ãŒããããåãããããããæ£è§£ããšããŠããŸããšããã°ããšãã¹ãã远èªããŠããŸãããã§ãã ã©ãããã¹ããããïŒçµè·¯ïŒ â ã³ãŒãããæ±ºããŠãã çµæãæ£ãããïŒæåŸ
å€ïŒ â 仿§ããæ±ºãã ãã®åé¢ãä»åã®è©±ã®æ žå¿ã§ãã çè«ãç¥ããªããšãAIãããŸã䜿ããªããšãããã AIã¯ãã¹ãã³ãŒãããã®ãããéãã§æžããŠãããŸãããã ãæç€ºã®åºãæ¹ãééãããšãå
šéšãã¹ããŠããã®ã«ãã°ãèŠéããã¹ãããéç£ããŸãããããæ°åã®äžã§ã¯å®ç§ã«èŠããã®ã§ãèŠéããããšã«æ°ã¥ããŸããã å®éã«ãã£ãŠã¿ãã®ã§ã倱æäŸãšæåäŸã䞊ã¹ãŸãã 顿ã®ã³ãŒã æéèšç®ã®é¢æ°ã§ãã仿§ã¯ããã ãšããŸãã 10,000å以äžã¯10%ãªããäŒå¡ã¯ããã«5%ãªãã def charge ( amount : int , is_member : bool ) - > float : """æéèšç®""" if amount < 0 : # 仿§æžã«èšèŒã®ãªãåå²ïŒå®è£
è
ãç¬èªã«è¿œå ïŒ return 0 fee = float ( amount ) if amount > 10000 : # â
ãã°: 仿§ã¯ã以äž(>=)ããªã®ã« > ã«ããŠãã fee = amount * 0.9 if is_member : fee = fee * 0.95 return fee ãããšãã°ãä»èŸŒãã§ãããŸãã仿§ã¯ã10,000å以äžããªã®ã«ãå®è£
㯠 > ïŒè¶
ïŒã«ãªã£ãŠãããã€ãŸã10,000åã¡ããã©ã®ãšããå²åŒãããã¹ããªã®ã«ãããŸãããå¢çå€ã®ãã°ãšããŠã¯ããªããããã¡ãªãã€ã§ãã ããŸãã«ã仿§æžã«ã¯æžãããŠããªãè² æ°ãã§ãã¯ã®åå²ãå
¥ããŠãããŸããå®è£
è
ãæ°ãå©ãããŠåæã«è¶³ããããšããæ³å®ã§ãã 倱æäŸïŒãã¹ãçè«ãç¥ããã«æç€ºãåºã㚠極端ãªäŸãªã®ã§ããããŸããçè«ãæèããã«ããé Œãã ãšããŸãã ãã®ã³ãŒãã®ãã¹ããæžããŠãã«ãã¬ããž100%ã«ããŠã AIã¯ã³ãŒããèªãã§ããããããã¹ããæžããŠããŸãã from charge import charge def test_normal ( ) : # ã³ãŒããèªãã§æåŸ
å€ãèšç®: 15000 > 10000 â *0.9 â 13500 assert charge ( 15000 , False ) == 13500.0 def test_member ( ) : # 15000*0.9*0.95 = 12825 assert charge ( 15000 , True ) == 12825.0 def test_boundary_10000 ( ) : # ã³ãŒãäž 10000 ã¯ã> 10000ãã«è©²åœããªã â å²åŒãªãããšèªãã assert charge ( 10000 , False ) == 10000.0 # â ãã°ã"æ£è§£"ãšããŠè¿œèª def test_negative ( ) : # ã³ãŒãã«ããããåå²ãããã®ã§ããããæåŸ
å€ã« assert charge ( - 100 , False ) == 0 åé¡ã¯  test_boundary_10000  ã§ããAIã¯ã³ãŒãããæåŸ
å€ãéç®ããã®ã§ãã10000㯠 > 10000  ã«è©²åœããªããã ããå²åŒãªããæ£ããããšè§£éããŸãã ãã°ã®åãã”æ£è§£”ãšããŠãã¹ãã«åºããŠããŸã£ãŠãã ããã§ãã å®è¡çµæãããã§ãã 4 passed branch coverage 100% å
šãã¹ããã¹ãåå²ã«ãã¬ããž100%ãæ°åã ãèŠãã°å®ç§ã§ããã§ãå¢çå€ãã°ã®æ€åºã¯ãŒããææšããã¹ãŠç·ãªã®ã§ããã®èŠéãã«æ°ã¥ãææ®µããããŸãããå人çã«ã¯ããã¹ããèœã¡ãããããã®ãå®ç§ã«èŠãããç¶æ
ã®ã»ãããã£ãœã©æããšæã£ãŠããŸãã æåäŸïŒãã¹ãçè«ãåãã£ãäžã§æç€ºãåºããš ä»åºŠã¯ããã£ãã®ãçµè·¯ã¯ã³ãŒããããæåŸ
å€ã¯ä»æ§ããããšããåé¢ãããã³ããã«èœãšã蟌ã¿ãŸãã 以äžã®æé ã§ãã¹ãã³ãŒããäœæããŠãã ããã ãã«ãã¬ããžèšèšïŒãœãŒã¹ãåç
§ã - ãœãŒã¹ã®å
šåå²(true/false)ã»äŸå€ãã¹ãæŽãåºãã åçµè·¯ãéãããã®å
¥åæ¡ä»¶ãåæããïŒåå²ç¶²çŸ
100%ç®æšïŒ ãæåŸ
å€èšèšïŒä»æ§æžã®ã¿åç
§ã - åã±ãŒã¹ã®æåŸ
å€ã¯å¿
ã仿§æžããå°åºãã - ãœãŒã¹ã³ãŒãã®åºåãæåŸ
å€ã«æµçšããããšã¯çŠæ¢ - å¢çå€åæãé©çšããå¢ç(10,000å)ã®çŽåã»ã¡ããã©ã»çŽåŸãå¿
ã詊ã - 仿§æžã«èšèŒããªãæåŸ
å€ã倿ã§ããªãã±ãŒã¹ã¯ã æåŸ
å€ãæžãããèŠç¢ºèªããšããŠè³ªåãªã¹ãã«åºã ãåºåã - åãã¹ãã«ãã©ã®åå²ãéãã(ãœãŒã¹ç±æ¥)ã ãæåŸ
å€ã®æ ¹æ (仿§æžã®ã©ãã)ããã³ã¡ã³ãã§æèš ä»æ§æžã¯ä»¥äžãšãªããŸãã 10,000å以äžã¯10%ãªããäŒå¡ã¯ããã«5%ãªãã ãã®ããã³ããã§AIãæžããã¹ãã¯ãããªããŸãã from charge import charge # 仿§æž: ã10,000å以äžã¯10%ãªããäŒå¡ã¯ããã«5%ãªããã def test_under_boundary ( ) : # 仿§: 9,999åã¯å²åŒãªã assert charge ( 9999 , False ) == 9999.0 def test_boundary_exactly_10000 ( ) : # 仿§: 10,000åã以äžããªã®ã§ 10000 ã¯10%ãªã â 9000 assert charge ( 10000 , False ) == 9000.0 # â æåŸ
å€ã¯ä»æ§ãã def test_over_boundary ( ) : assert charge ( 10001 , False ) == 10001 * 0.9 def test_member_discount ( ) : assert charge ( 20000 , True ) == 20000 * 0.9 * 0.95 def test_member_under_10000 ( ) : assert charge ( 5000 , True ) == 5000 * 0.95 # ãèŠç¢ºèªããœãŒã¹ã« amount < 0 ã®åå²ããããã仿§æžã«è² æ°ã®æ±ãã®èšèŒãªãã # æåŸ
å€ãã§ã£ã¡äžããã仿§ç¢ºèªäºé
ãšããŠå ±å: # Q. è² ã®éé¡ã¯å
¥åããåŸããïŒ ãã®å Žåã®ä»æ§ã¯ïŒïŒçŸå®è£
ã¯0ãè¿ãïŒ å®è¡çµæã§ãã FAILED test_boundary_exactly_10000 - assert 10000.0 == 9000.0 1 failed, 4 passed branch coverage 87% å¢çå€10,000åã¡ããã©ã®ãã¹ããèœã¡ãŸããã ãã°æ€åºæåã§ãã é¢çœãã®ã¯ã«ãã¬ããžã®ã»ãã§ãä»åºŠã¯87%ãšæºç¹ã§ã¯ãããŸãããæªéãªã®ã¯è² æ°ãã§ãã¯ã®åå²ã§ããããã§ããã³ããã®ã仿§æžã«ãªãã±ãŒã¹ã¯èŠç¢ºèªãšããŠåºãããå¹ããŠããŠãAIã¯è² æ°åå²ã®æåŸ
å€ãã§ã£ã¡äžããããè² ã®éé¡ã®ä»æ§ã¯ïŒããšãã質åãšããŠè¿ããŠããŸãããã«ãã¬ããžã®æªéãããã®ãŸãŸ 仿§æžã®èšèŒæŒãã®çºèŠ ã«ã€ãªãã£ãŠããŸãã 䞊ã¹ããšãããªããŸãã çŽ æŽãªããã³ãã çè«ã«åºã¥ãããã³ãã ãã¹ãçµæ 4 passedïŒå
šç·ïŒ 1 failedïŒãã°æ€åºïŒ ã«ãã¬ããž 100% 87%ïŒæªéïŒä»æ§æŒãã®å
åïŒ å¢çå€ã㰠远èªããŠèŠéã æ€åº 仿§ã«ãªãåå² æåŸ
å€ãã§ã£ã¡äžã èŠç¢ºèªãšããŠå ±å 倱æäŸã®ã»ããæ°åã¯è¯ããŠãæåäŸã®ã»ããæ°åã¯æªããã§ãå¥å
šãªã®ã¯åŸè
ã§ãããã®é転ããä»åäžçªäŒãããã£ãããšã§ãã AIã®äœ¿ãæ¹ããããœãããŠã§ã¢å·¥åŠ ãããããæ¬é¡ãšãããããã®äœéšãéããŠæã£ãããšã§ãã ãã£ãã®2ã€ã®ããã³ããã®å·®ã¯ãAIã®äœ¿ãæ¹ã®ãã¯ããã¯ã§ã¯ãããŸããããçµè·¯ã¯ã³ãŒããããæåŸ
å€ã¯ä»æ§ããããããå¢çã®ã¡ããã©ã®å€ã詊ããããå
šéšæãããããã¹ãçè«ã§ãããã¯ã€ãããã¯ã¹ããã©ãã¯ããã¯ã¹ãå¢çå€åæããããç¥ã£ãŠãããã©ããã ãã®å·®ã§ããã å¢çå€åæãç¥ããªããã°ãã10,000åã¡ããã©ã詊ããŠããšããçºæ³èªäœãããã³ããã«åºãŠããŸãããAIã¯æç€ºããã芳ç¹ããç¶²çŸ
ããŠãããªãã®ã§ã芳ç¹ãåºããªã人ããããããã³ããã®æžãæ¹ã工倫ããŠãããã®å·®ã¯åãŸããŸããã AIã®äœ¿ãæ¹è¬åº§ãšããAIã§ã®ã¹ã©ã€ãã®äœãæ¹ã¿ãããªæ
å ±ã¯ç¢ºãã«æçšã§ããããåŠã¶ããšã§æ¥åã®å¹çã¯é©ãã»ã©äžãããŸãããããããœãããŠã§ã¢éçºè
ã«å€§äºãªã®ã¯ãã¯ããœãããŠã§ã¢éçºã®åºæ¬çãªçè«ã ãšæããŸããããã®ã³ãŒãã®ãã¹ãã§äœãæ€èšŒãã¹ãããã¯ãèãåŽã«çè«ããªããšãããããæ£ãã質åã«ãªããŸããã èããŠã¿ãã°åœããåã§ãAIã«æç€ºãåºãã®ã人éã«æç€ºãåºãã®ãåããªãã§ããããåŸèŒ©ã«ããã®ã³ãŒãã®ãã¹ãæžããšããŠããšã ãèšã£ãŠæž¡ãããããã£ã±ãåã倱æããããããããªãããã¡ããšäŒããªããšæ¯åãã¡ããšãã£ãŠããããšã¯éããªãã®ã¯ãAIã人éãåãã§ãããããŠããã¡ããšäŒããããã«ã¯ãæç€ºããåŽãäžèº«ãåãã£ãŠããªããšãããªãã AIã¯ãã¹ãã³ãŒããæžãé床ãåçã«äžããŠãããŸãããã ããããããäœãæ€èšŒãã¹ããããæ±ºããåŽã®çè«ãã€ãŸããœãããŠã§ã¢å·¥åŠã®äŸ¡å€ã¯ãäžããã©ããããããäžãã£ãŠãããšæããŠããŸããAIã®æä»£ã«äœãåŠã¶ã¹ãããšèãããããç§ã¯ãœãããŠã§ã¢å·¥åŠã ãšçããŸãããã¯ãããã€ã®æä»£ã§ã倧äºã®ã¯åºæ¬ã ãšæããŸãã ã芧ããã ãããããšãããããŸãïŒ ãã®æçš¿ã¯ã圹ã«ç«ã¡ãŸãããïŒ åœ¹ã«ç«ã£ã 圹ã«ç«ããªãã£ã 0人ããã®æçš¿ã¯åœ¹ã«ç«ã£ããšèšã£ãŠããŸãã The post AIã®äœ¿ãæ¹ãåŠã¶åã«ããŸããœãããŠã§ã¢å·¥åŠã first appeared on SIOS Tech Lab .
æ¬èšäºã§ã¯ãAWSãšRed Hatãå
±åæäŸãããã«ãããŒãžããªOpenShiftãµãŒãã¹ãROSAãã«ã€ããŠç޹ä»ããŸãã ç¹ã«ãè¿å¹Žã®äž»æµã§ãããã€ã³ãã©è²»çšãéçšè² è·ãåçã«åæžã§ããROSAã®ææ°ã¢ãŒããã¯ãã£ã¢ãã«ãHCPïŒHosted Control PlanesïŒãã®ä»çµã¿ãšãå°å
¥ã«ãã4ã€ã®ã¡ãªãããåããããã玹ä»ããæé©ãªã³ã³ããåºç€éžå®ã®ãã³ãããå±ãããŸãã ROSAãšã¯ ROSAïŒRed Hat OpenShift Service on AWSïŒãšã¯ãRed HatãæäŸããŠããã³ã³ãããªãŒã±ã¹ãã¬ãŒã·ã§ã³ãã©ãããã©ãŒã ã§ããOpenShiftããAWSäžã®ãã«ãããŒãžããµãŒãã¹ãšããŠå©çšã§ããããã«ãããµãŒãã¹ã§ããïŒ OpenShiftã«ã€ããŠè©³ããç¥ãããæ¹ã¯ã ãã¡ã ã®èšäºããåèãã ããïŒ ROSAãå©çšããŠã³ã³ããåºç€ãéçšããããšã«ã¯ã以äžã®å©ç¹ããããŸãã Red HatãšAWSã®å
±åãµããŒã ROSAã¯ããµããŒãçªå£ãå®å
šã«äžå
åãããŠããŠãåãåãããåãããšãè£åŽã§AWSãšRed Hatã®ãšã³ãžãã¢ãçŽæ¥é£æºããŠåå ãçªãæ¢ããŠãããä»çµã¿ã«ãªã£ãŠããŸããèªåãã¡ã§AWSäžã«OpenShiftãæ§ç¯ããå Žåããã©ãã«ãèµ·ãããšãAWSã®ã€ã³ãã©ãæªãã®ãããããšãOpenShiftã®ãã°ãªã®ãããèªåã§èª¿ã¹ãããããã®ãµããŒãã«å¥ã
ã«åãåãããªããã°ãªããŸãããROSAã§ããã°ãã®ãããªã¢ã¯ã·ã§ã³ãäžåäžèŠã«ãªããããéçšã®è² æ
ã倧ãã軜æžã§ããŸãã Red Hatã®å°éããŒã ã«ãã24æéç£èŠ ROSAã®ã¯ã©ã¹ã¿ãŒã¯ãRed Hatã®SREããŒã ã«ãã£ãŠ24æé365æ¥äœå¶ã§ç£èŠã»éçšãããããã«ãªããŸãã ã¯ã©ã¹ã¿ãŒã«äœãé害ãèµ·ããŠããRed Hatã®SREããŒã ãè£åŽã§è¿
éã«å¯Ÿå¿ã»åŸ©æ§ãããŠãããããããŠãŒã¶ãŒãšããŠã¯ãç£èŠãé害察å¿ã«å¯Ÿããéçšã³ã¹ããé£èºçã«åæžã§ããŸãã ãŸãããããåœãŠãã»ãã¥ãªãã£ã®ã¢ããããŒããªã©ãRed HatåŽã察å¿ããŠãããã®ã§ããŠãŒã¶ãŒã¯ãã®ã¹ã±ãžã¥ãŒã«ïŒå®è¡ããã¿ã€ãã³ã°ïŒã決ããã ãã§æžã¿ãŸãã AWSãµãŒãã¹ãšé£æºãããããªã ROSAã¯ãæåããAWSã®åçš®ãµãŒãã¹ãšã¹ã ãŒãºã«é£æºã§ããããèšèšãããŠããŸããããã«ãã£ãŠãè€éãªã€ã³ãã©èšå®ã«æéãåãããªããªããããããè¿
éãã€å®å
šã«ã³ã³ããåºç€ãæ§ç¯ã»æäŸã§ããããã«ãªããŸãã Copyright © Red Hat, Inc. AWSã®RoleãšPolicyãå©çšããRed HatåŽãšã®é£æº è«æ±æžã®çµ±å ROSAã®å©çšæéïŒOpenShiftã®ã©ã€ã»ã³ã¹æãAWSã®ã€ã³ãã©è²»çšïŒã¯ããã¹ãŠAWSã®è«æ±æžã«çµ±åãããŠæ¯æãããŸãã å¥åã«å¥çŽãæ¯æããè¡ãå¿
èŠããªããããäŒæ¥ã®è³Œè²·æç¶ããäºç®ç®¡çã®è² æ
ã倧å¹
ã«è»œæžã§ããã¡ãªããããããŸãã ROSAã䜿ãããšã§ãäžèšã®ããã«æ§ã
ãªã¡ãªãããåŸãããŸãããçŸåšã®æšæºã¢ãŒããã¯ãã£ã§ãããHCPïŒHosted Control PlanesïŒãã®ç»å Žã«ãã£ãŠãæŽãªããã«ãããŒãžãã®ãµãŒãã¹ãå©çšå¯èœã«ãªããŸããã ããããã¯ãã³ã¹ããéçšã®æ¥œããåçã«åäžããããROSA with HCPãã«ã€ããŠè©³ãã説æããŸãã ROSA with HCPãšã¯ ROSA with HCP ( Red Hat OpenShift Service on AWS with hosted control planes ) ãšã¯ãç°¡åã«èšããšã³ã³ãããŒã«ãã¬ãŒã³ãRed HatåŽã®AWSã«é
眮ããå®å
šã«ç®¡çãä»»ããä»çµã¿ã§ãã HCPãç»å Žããåã®åŸæ¥ã®æ¹åŒã¯ãHCPãšåºå¥ããããã«ãROSA ClassicããšåŒã°ããŠããŸããã以äžã®æ§æå³ãèŠãŠããã ããšãäžç®ã§ãã®éããçè§£ã§ãããšæããŸãã Copyright © Red Hat, Inc. ROSA Classicã®æ§æå³ Copyright © Red Hat, Inc. ROSA with HCPã®æ§æå³ æ§æå³ããããããããã«ãClassicæ¹åŒã§ã¯ãã³ã³ãããŒã«ãã¬ãŒã³ããŒãããŠãŒã¶ãŒèªèº«ã®AWSã¢ã«ãŠã³ãïŒVPCïŒå
ã«é
眮ãããã¯ãŒã«ãŒããŒããšå
±åããŠããŸããã äžæ¹ãHCPæ¹åŒã§ã¯ãã³ã³ãããŒã«ãã¬ãŒã³ããŠãŒã¶ãŒã®ãããã¯ãŒã¯ç°å¢ããå®å
šã«åé¢ãããå Žæã«é
眮ãããAWS PrivateLinkãä»ããŠããåãããä»çµã¿ã«ãªã£ãŠããŸãã ãã®ãããªæ§æã®éã以å€ã«ããHCPæ¹åŒã¯æ°å€ãã®ã¡ãªãããæã£ãŠããŸããããããã¯ãã©ã®ãããªã¡ãªãããããã玹ä»ããŸãã ã³ã³ãããŒã«ãã¬ãŒã³ã®ç®¡çã³ã¹ãã®åæž ã³ã³ãããŒã«ãã¬ãŒã³ã«ã¯ãAPIãµãŒããŒãetcdããŒã¿ããŒã¹ãªã©ãã¯ã©ã¹ã¿ãŒå
šäœãå¶åŸ¡ããæ¥µããŠéèŠãªã³ã³ããŒãã³ããå«ãŸããŠããŸããããããRed HatåŽãå®å
šã«ç®¡çã»éçšããŠãããããããŠãŒã¶ãŒã®éçšä¿å®ã®ã³ã¹ãã倧å¹
ã«åæžãããŸãã AWSã€ã³ãã©è²»çšïŒEC2代éïŒãç¯çŽã§ãã åŸæ¥ã®Classicæ¹åŒã§ã¯ãã³ã³ãããŒã«ãã¬ãŒã³ãæ§æããããŒãïŒEC2ã€ã³ã¹ã¿ã³ã¹ïŒããŠãŒã¶ãŒèªèº«ã®AWSç°å¢å
ã«äœæããå¿
èŠããããŸããã OpenShiftã®ä»æ§äžãã¯ã©ã¹ã¿ãŒã®å®å®çšŒåïŒé«å¯çšæ§ïŒãç¶æããããã«ã¯æäœ3å°ã®ã³ã³ãããŒã«ãã¬ãŒã³ããŒããå¿
é ãšãªããŸãã®ã§ãå°èŠæš¡ãªéçºç°å¢ã§ãã£ãŠããããŒã¹ãšãªãEC2ã®åºå®è²»çšãã©ãããŠãé«ããªã£ãŠããŸããšããã³ã¹ãé¢ã®èª²é¡ããããŸããã HCPæ¹åŒã§ã¯ããã®ã³ã³ãããŒã«ãã¬ãŒã³ãRed HatåŽã«å®å
šã«ç§»åããã®ã§ããŠãŒã¶ãŒã®AWSã¢ã«ãŠã³ãããã¯æäœ3å°åã®EC2ã®æéãå®å
šã«æ¶ããããšã«ãªããŸãã ããã¯ãAWSã®ã€ã³ãã©ã³ã¹ããåçã«ç¯çŽã»åæžã§ãããšããHCPæ¹åŒã ãã®å€§ããªã¡ãªããã«ãªããŸãã ã¯ã©ã¹ã¿ãŒäœæé床ã®åäž åŸæ¥ã®Classicæ¹åŒã§ã¯ãã¯ã©ã¹ã¿ãŒãæ°èŠäœæãããã³ã«ããŠãŒã¶ãŒã®AWSç°å¢å
ã§ã³ã³ãããŒã«ãã¬ãŒã³ã®ã€ã³ãã©ãäžããçµã¿ç«ãŠãå¿
èŠããããŸããããã®ãããã¯ã©ã¹ã¿ãŒãå®å
šã«èµ·åããŠå©çšå¯èœã«ãªããŸã§ã«ãçŽ30åã40åã»ã©ã®åŸ
ã¡æéãçºçããŠããŸããã HCPæ¹åŒã§ã¯ãã³ã³ãããŒã«ãã¬ãŒã³ã®æ§ç¯ã»ããããžã§ãã³ã°ãRed HatåŽã®ç°å¢ã§è¿
éã«è¡ãããŸãã ãŠãŒã¶ãŒã®AWSç°å¢å
ã§ã¯ãã¢ããªã±ãŒã·ã§ã³ãåããããã®ã¯ãŒã«ãŒããŒãã®ã¿ãäœæããã°è¯ããããã¯ã©ã¹ã¿ãŒã®äœææéãçŽ10åçšåºŠãžãšå€§å¹
ã«ççž®ãããŸãããæ¥ãã§æ°ããç°å¢ãå¿
èŠã«ãªã£ããããããžãã¹ã·ãŒã³ã«ãããŠããã®ãããªæéã®ççž®ã¯å€§ããªã¡ãªããã«ãªããŸãã ã¢ããã°ã¬ãŒãã®æè»æ§ åŸæ¥ã®Classicæ¹åŒã§ã¯ãã³ã³ãããŒã«ãã¬ãŒã³ãšã¯ãŒã«ãŒããŒãã®ããŒãžã§ã³ã¢ãããå¯ã«é£åãããŠç®¡çããå¿
èŠããããŸããããã®ãããäºææ§ã®ç¢ºèªã圱é¿ç¯å²ã®èª¿æ»ãæ
éã«è¡ããªããã°ãªãããäºåã®èšç»ãæ€èšŒã«å€ãã®å·¥æ°ãå²ãå¿
èŠããããŸããã HCPæ¹åŒã§ã¯ãã³ã³ãããŒã«ãã¬ãŒã³ãšã¯ãŒã«ãŒããŒãã®ç®¡çãå®å
šã«åãé¢ãããŠããŸãã®ã§ãäž¡è
ã®ã¢ããã°ã¬ãŒããå¥ã
ã®ã¿ã€ãã³ã°ã§ã¹ã±ãžã¥ãŒã«ããããšãå¯èœã§ãã äŸãã°ããŸãã¯Red HatåŽã管çããã³ã³ãããŒã«ãã¬ãŒã³ã ããå
è¡ããŠã¢ããããŒãããã¢ããªã±ãŒã·ã§ã³ãåãã¯ãŒã«ãŒããŒãã¯æ¥å圱é¿ã®æãå°ãªãå¥ã®æ¥æã«å®æœããããšãã£ãæè»ãªéçšãã§ããããã«ãªããŸããã 以äžããROSA Classicãšæ¯ã¹ãHCPæ¹åŒã®ç¹åŸŽãšã¡ãªããã®è§£èª¬ã«ãªããŸããæåŸã«ããããŸã§ã玹ä»ããå
容ã衚ã§ç°¡åã«ãŸãšããŸãã ROSA ClassicãšROSA HCPã®æ¯èŒè¡š æ¯èŒé
ç® ROSA ClassicïŒåŸæ¥æ¹åŒïŒ ROSA with HCPïŒææ°ã¢ãã«ïŒ ã³ã³ãããŒã«ãã¬ãŒã³ã®é
眮 ãŠãŒã¶ãŒèªèº«ã®AWSã¢ã«ãŠã³ã Red HatåŽ ãã¹ã¿ãŒããŒãã®EC2è²»çš ãŠãŒã¶ãŒè² æ
ãŠãŒã¶ãŒåŽã®è² æ
ãŒãïŒRed HatåŽã§çšŒåããããïŒ ã¯ã©ã¹ã¿ãŒäœææé çŽ40å çŽ10å ã¢ããã°ã¬ãŒãèª¿æŽ äž¡ããŒããé£åããŠãããããã¹ã±ãžã¥ãŒã«ã®èª¿æŽããã¥ãã å¥ã
ã®ã¿ã€ãã³ã°ã§æè»ã«èª¿æŽã»å®è¡ãå¯èœ ãŸãšã 以äžãROSAã®æŠèŠãããçŸåšã®äž»æµã§ãããHCPïŒHosted Control PlanesïŒãã®ç¹åŸŽãšæ°ã
ã®ã¡ãªããã«ã€ããŠã玹ä»ããŸããã ROSA with HCPã¯ãã³ã¹ãã»é床ã»éçšã®ãã¹ãŠã«ãããŠåªããŠãããçŸåšã®ROSAæ§ç¯ã«ããããã¹ããã©ã¯ãã£ã¹ãšãªã£ãŠããŸãã ããããæ°ããã³ã³ããåºç€ãæ€èšãããæ¹ã«ããã®èšäºã®å
容ãåèã«ãªãã°å¹žãã§ãã æ¬¡åã¯ãå®éã«AWSäžã§ROSA with HCPã®ã¯ã©ã¹ã¿ãŒãæ§ç¯ããŠããæé ã詳ãã解説ããŸãããã²æ¥œãã¿ã«ããŠãã ããã åèè³æ AWS ã§ã® Red Hat ãœãªã¥ãŒã·ã§ã³ Overview of responsibilities for ROSA ROSA HCP and ROSA classic Capability Matrix ïŒãã°ã€ã³å¿
èŠïŒ ROSA Best Practices and Recommendations Red Hat OpenShift Service on AWS 4 Introduction to ROSA ã芧ããã ãããããšãããããŸãïŒ ãã®æçš¿ã¯ã圹ã«ç«ã¡ãŸãããïŒ åœ¹ã«ç«ã£ã 圹ã«ç«ããªãã£ã 0人ããã®æçš¿ã¯åœ¹ã«ç«ã£ããšèšã£ãŠããŸãã The post ROSAïŒRed Hat OpenShift Service on AWSïŒãå©çšããã³ã³ãããã©ãããã©ãŒã æ§ç¯ ~ROSAã®ç¹åŸŽãšã¡ãªãã~ first appeared on SIOS Tech Lab .
çŸåšãã¹ããŒããã©ã³ãPCã®OSãå€ãã®ã¢ããªã§åœããåã®ããã«æäŸãããŠãããããŒã¯ã¢ãŒããã æ¬èšäºã§ã¯ãããŒã¯ã¢ãŒãã®æŽå²ãããããŒã¯ã¢ãŒããæå¹ãªã±ãŒã¹ããããŠè²åœ©èšèšã®ã¬ã€ããŸã§ã解説ããŸãã ããŒã¯ã¢ãŒãã¯åç¹ååž°ïŒ ã³ã³ãã¥ãŒã¿ãŒã®æŽå²ãæ¯ãè¿ããšãç»é¢ã¯æåããããŒã¯ã¢ãŒãïŒæãèæ¯ïŒã§ããã 1970幎代ãã80幎代ååãäž»æµã ã£ãCRTïŒãã©ãŠã³ç®¡ïŒã¢ãã¿ãŒã§ã¯ãç»é¢å
šäœãæããçºå
ãããããšã¯è² è·ãé«ãã£ãããããæãèæ¯ã«ç·ãçœè²ã®ããã¹ããã衚瀺ããã®ãåºæ¬ã§ããã ããã1970幎代ã«GUIïŒã°ã©ãã£ã«ã«ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ïŒãç ç©¶æã§çãŸãã1980幎代ååããå®çšåã»æ®åãå§ãããšãç»é¢èšèšã®èãæ¹ã¯å€§ããå€ãããŸãããGUIãæ¡çšããããŒãœãã«ã³ã³ãã¥ãŒã¿ãŒã§ã¯ãææžäœæããã¹ã¯ããããããªãã·ã³ã°ïŒDTPïŒãéèŠãªçšéãšãªããç»é¢äžã§å°å·çµæãå¿ å®ã«åçŸããWYSIWYGãšããèãæ¹ãåºãŸããŸãããçœãçŽã«é»ãæåãå°å·ãããŠããããšããç»é¢äžã§è¡šãããšãåºæ¬ãšãªã£ãã®ã§ããããããŠãäžè¬åãããœã³ã³ã®GUIã§ã¯ã©ã€ãã¢ãŒããäºå®äžã®æšæºãšãªããŸããã ãã®éãäžè¬åãã®ç»é¢ã¯çœããªããŸããããã·ã¹ãã ãéçºãããšã³ãžãã¢ãã¡ã¯ãéGUIãªéçºç°å¢ãªã©ã§ãé»ãç»é¢ãã䜿ãç¶ããŠããŸããã ãããŠ2010幎代ãã¹ããŒããã©ã³ãæ®åããæãå Žæã§ãã£ã¹ãã¬ã€ãèŠãæéãå¢ããŸãããã¹ããŒããã©ã³ã§äœ¿ãããããšã®å€ãææ©ELãã£ã¹ãã¬ã€ã¯ãé»è²ïŒçºå
ããªãã«ãããä»çµã¿ã®ãããé»èæ¯ã«ããããšã§æ¶è²»é»åãæããããšãã§ããŸããOSãã¢ããªã±ãŒã·ã§ã³ã§ã¯ãã¶ã€ã³ã·ã¹ãã ãæçããã©ã€ãã¢ãŒããšããŒã¯ã¢ãŒãã®åæ¹ãåæãšããèšèšãäžè¬çã«ãªããŸãã ãããŒã¯ã¢ãŒãïŒç®ã«åªãããã¯æ¬åœïŒ ãããŒã¯ã¢ãŒãã¯ç®ã«åªããããšããèšãããŸãããç§åŠçã«ã¯ãç¡æ¡ä»¶ã«ç®ã®è² æ
ãæžãããã§ã¯ãªãããšããã®ãçå®ã§ãã人éã®ç®ã®ãç³åãã®åãã«ãã£ãŠãã©ã€ãã¢ãŒããšããŒã¯ã¢ãŒãã«ã¯äžé·äžçããããŸãã ã©ã€ãã¢ãŒãã®ã¡ãªããïŒãã³ã調ç¯ã®ãããã 人éã¯æãããã®ãèŠããšç³åãå°ãããªããŸããã«ã¡ã©ã®çµããçµã£ãæã®ããã«ãçŠç¹æ·±åºŠããæ·±ããªãããïŒãã³ããŒã«å¹æïŒãç®ã®çèã«è² æ
ããããã«æåã«ãã³ããåãããããšãã§ããŸããååãªç
§æç°å¢ã§ã¯ãã©ã€ãã¢ãŒãã®æ¹ãèªè§£é床ãæåèªè粟床ãé«ããšããç ç©¶ãå ±åãããŠããŸãã ã«ã¡ã©ã®çµããšè¢«åçæ·±åºŠ ããŒã¯ã¢ãŒãã®ã¡ãªããïŒææã§ã®ãŸã¶ããè»œæž äžæ¹ãããŒã¯ã¢ãŒããç䟡ãçºæ®ããã®ã¯ãåšå²ãæãç°å¢ãã§ããæãéšå±ã§ã©ã€ãã¢ãŒããèŠããšã匷ãã³ã³ãã©ã¹ãã«ããããŸã¶ããïŒå
ã®åºæ¿ïŒãã匷ãã¹ãã¬ã¹ãäžããŸããææã«ãããŠã¯ãçºå
éãå°ãªãããŒã¯ã¢ãŒãã®æ¹ã䞻芳çãªç®ã®ç²åŽæãæžå°ããããšããç ç©¶ã§å ±åãããŠããŸãã ããŒã¯ã¢ãŒããšãããªã³ãµã€ã³ãã®ãžã¬ã³ã ããŒã¯ã¢ãŒãã§ã¯ãçœãæåãã¢ã€ã³ã³ãªã©ãå
ã垯ã³ãããã«ã«ããã§èŠããããšããããŸãã æãç»é¢ãèŠãŠãããšãç®ã¯ããå€ãã®å
ãåã蟌ãããšããŠç³åãåºããŸããç³åã倧ããéããšãç®ã®å
åŠåå·®ãçŒçå
ã§ã®å
ã®æ£ä¹±ã®åœ±é¿ãåãããããªããããæãèæ¯ã«è¡šç€ºãããæããæåãªã©ã®é«ã³ã³ãã©ã¹ããªèŠçŽ ã¯ã茪éããŒãããããå
ãã«ããã§èŠãããããå ŽåããããŸãã ãã®èŠãæ¹ã¯ãå€ã®è¡ã§ããªã³ãµã€ã³ãè¡ç¯ã®å
ãåšå²ã«ã«ããã§èŠããçŸè±¡ãšäŒŒãŠããŸããïŒããªã³ãµã€ã³ãè¡ç¯ã®ã«ãã¿ã«ã¯ã倧æ°äžã®å¡µã氎滎ã«ããå
ã®æ£ä¹±ã圱é¿ããŠããããããŸã£ããåãçŸè±¡ã§ã¯ãããŸãããïŒ ãŸãããã®ãããªèŠãæ¹ã¯èª°ã«ã§ãèµ·ããåŸãŸãããä¹±èŠãããå Žåã¯å
ãç¹å®ã®æ¹åãžäŒžã³ãããæåãäºéã«èŠããããããªã©ãã«ãã¿ãããç®ç«ã€ããšããããŸãã ããŒã¯ã¢ãŒããå¿
èŠãªã±ãŒã¹ãšäžèŠãªã±ãŒã¹ ããããã¡ãªããã»ãã¡ãªãããèžãŸãããšãããŒã¯ã¢ãŒãã¯ãã¹ãŠã®ãµã€ããã¢ããªã§å¿
é ãšããããã§ã¯ãããŸããããŠãŒã¶ãŒã®ãå©çšæéããå©çšç°å¢ããã³ã³ãã³ãã®æ§è³ªãã«ãã£ãŠåªå
床ã¯å€§ããå€ãããŸãã ããŒã¯ã¢ãŒããæ±ããããã±ãŒã¹ å€éãææã§å©çšãããã¢ã㪠ïŒå°å³ãã«ãŒãããã¢ã©ãŒã ãé»åæžç±ãªã©ãåšå²ã®æé å¿ã劚ãããç©ãããæããé
æ
®ãå¿
èŠãªããã ã³ã³ãã³ã没å
¥åïŒãšã³ã¿ã¡ ïŒïŒåç»é
ä¿¡ãã²ãŒã ãåçã®ã£ã©ãªãŒãªã©ãåšå²ã®UIãæ²ãŸããããšã§ãã¡ã€ã³ã³ã³ãã³ããéç«ãããããã U-NEXT ããçšã®æ åãåçç·šéããŒã« ïŒäžèšã®ãšã³ã¿ã¡ã³ã³ãã³ããšåæ§ã«èŠç·ã®åæ£ãé²ã广ã«å ããåšå²ã®UIãæããã¥ãŒãã©ã«ã«ããããšã§ãç®ã®é¯èŠïŒæããèæ¯ã«åŒã£åŒµãããŠåçãæãèŠããçŸè±¡ïŒããé²ããè²ãæããã®ãã£ããŒã«ãæ£ç¢ºã«èªèã»ç·šéãããããªããŸãã ããŒã¯ã¢ãŒããå¿
èŠãšããªãã±ãŒã¹ äžéæ§ã®Webãµã€ãã»ã©ã³ãã£ã³ã°ããŒãž ïŒã¡ãŒã«ãŒããã£ã³ããŒã³ãµã€ããªã©ããã©ã³ãã®äžç芳ãåºå®ããŠäŒããããšãåªå
ããããã®ã Canva ãŠã§ãããŒãžãã³ãã¬ãŒã å°å·ãåæãšããããã¥ã¡ã³ã ïŒå±¥æŽæžã»è·åçµæŽæžãªã©ã®äœæãµãŒãã¹ãã¯ãŒãããã»ããµãŒã¢ããªãªã©ãå°å·ãããããšãåæã®å Žåãä»äžãããã€ã¡ãŒãžãããããªããŸããåè¿°ã®WYSIWYGãšãã£ã¿ãŒã§ãã Canva åãªããè²å転ãã§ã¯ãªããè²åœ©èšèšã¬ã€ã ããŒã¯ã¢ãŒãã®é
è²ã¯ãã©ã€ãã¢ãŒãã®ã«ã©ãŒãæ©æ¢°çã«å転ãããã®ã§ã¯ãããŸããã èŠèªæ§ãæ
ä¿ããã«ãã¿ã«ããç®ã®ç²åŽãé²ãããã®èšèšãå¿
èŠã§ãã å®å
šãªé»ã®èæ¯ãå®å
šãªçœã®æåã«ã¯ããªã èæ¯è²ã«ã¯å®å
šãªé»ã§ã¯ãªãé»ã«è¿ãã°ã¬ãŒãæ¡çšããŸããçã£é»ãé¿ããããšã§ã³ã³ãã©ã¹ããé©åºŠã«æããç®ãžã®åºæ¿ãåãããŸããèæ¯ãšåãããããã¹ããå®å
šãªçœãé¿ããŸãã çœãèæ¯ã«æãæåã®ã©ã€ãã¢ãŒãã§ã¯ãã«ããã§èŠããããšã¯å°ãªãã§ãããæãèæ¯ã«æããæåã®ããŒã¯ã¢ãŒãã§çã£çœãªæåã«ãããšãåè¿°ã®ããã«æ»²ããããã©ã€ãã¢ãŒããããããŒã¯ã¢ãŒãã®ã³ã³ãã©ã¹ãã¯å°ããããŸãã æ¬¡ã®è¡šã¯ãGoogle Financeã®èæ¯ãšæåã®è²ã§ãã ã©ã€ãã¢ãŒã ããŒã¯ã¢ãŒã èæ¯è² #FFFFFFïŒçœ #101218ïŒéç³»ã®é»ã«è¿ãæãã°ã¬ãŒ æåè² #0A0A0AïŒé»ã«è¿ãæãã°ã¬ãŒ #E6E8F0ïŒéç³»ã®æããã°ã¬ãŒ ã³ã³ãã©ã¹ãæ¯ 19.79 : 1 15.3 : 1 衚ã®ãã³ã³ãã©ã¹ãæ¯ãã¯ãã¢ã¯ã»ã·ããªãã£åºæºïŒWCAGïŒã§æ¡çšãããŠããèšç®æ¹æ³ã«ãã£ãŠç®åºãããã2ã€ã®è²ã®ã³ã³ãã©ã¹ãã®åºŠåããç€ºãææšã§ããã1:1ããã³ã³ãã©ã¹ããªããã21:1ããæå€§ã®ã³ã³ãã©ã¹ãã衚ããŸãã æåœ©è²ãæåºŠã圩床ãèª¿æŽ ããŒãã«ã©ãŒãã°ã©ãã®è²ïŒæåœ©è²ïŒã¯ãã©ã€ãã¢ãŒãã®è²ã®ãŸãŸããŒã¯ã¢ãŒãã§å©çšãããšãè²ã«ãã£ãŠãç®ç«ã¡ãããããèæ¯ãšèŠåãã«ãããªãå ŽåããããŸããGoogle Financeã®äŸã§ã¯ãã©ã€ãã¢ãŒãã®ç·ãšèµ€ã®ã°ã©ãã®è²ããè²çžãå€ããã«æããè²ã«èª¿æŽããŠããŒã¯ã¢ãŒãã«é©çšããŠããŸãã Google Finance ãããã«ïŒå©çšç°å¢ã«ãã£ãŠæé©ãªUIã¯å€ãã ã©ã€ãã¢ãŒããšããŒã¯ã¢ãŒãã¯åªå£ã®é¢ä¿ã§ã¯ãªããããããç°ãªãå©çšç°å¢ã«æé©åããããã¶ã€ã³ã§ããéèŠãªã®ã¯ãã©ã¡ããåªããŠããããã§ã¯ãªããããŠãŒã¶ãŒãã©ã®ãããªç°å¢ã§ãã©ã®ãããªç®çã§å©çšãããããçè§£ããããã«åãããŠèšèšããããšã§ãã ã¡ãªã¿ã«ïŒã¢ããã°æä»£ããèã
ãš… ã³ã³ãã¥ãŒã¿ãŒããã以åãããå€éã®èŠèªæ§ã«é
æ
®ãã衚瀺èšèšã¯ãèªåè»ãèªç©ºæ©ã®èšåšã§çºéããŠããŸãããå€éã«æããããèšåšãèŠããšæé å¿ã劚ããããæãéè·¯ã空ãªã©åšå²ã®ç¶æ³ãèŠèªãã«ãããªãããšããããŸãããŸããèšåšã®å
ãçªã¬ã©ã¹ã«æ ã蟌ã¿ãèŠçã劚ããããšããããŸãããã®ãããèšåšã«ã¯æãèæ¯ãæ¡çšãããã»ããçšéã«å¿ããŠèµ€ãã¢ã³ããŒãªã©ãå€éã®èŠèªæ§ã«é
æ
®ããç
§æè²ãçšããããŠããŸããã Photo by National Cancer Institute Windows Ladislav Stercell Rui Silvestre Tyler Rooney Ed Wingate Sandisk DragoÈ Grigore Nursultan Bakyt Boitumelo on Unsplash ã芧ããã ãããããšãããããŸãïŒ ãã®æçš¿ã¯ã圹ã«ç«ã¡ãŸãããïŒ åœ¹ã«ç«ã£ã 圹ã«ç«ããªãã£ã 0人ããã®æçš¿ã¯åœ¹ã«ç«ã£ããšèšã£ãŠããŸãã The post è±ã»ãªããšãªãã®ããŒã¯ã¢ãŒããæŽå²ãšççåŠããèããUIãã¶ã€ã³ first appeared on SIOS Tech Lab .
PSSLã®äœã
æšã§ã æè¿ã¯ Claude Code ãè€æ°ã»ãã·ã§ã³åæã«ç«ã¡äžããŠãæ©èœAã®å®è£
ã»æ©èœBã®ã¬ãã¥ãŒã»ããã¥ã¡ã³ãæŽåâŠãšäžŠåã§äœæ¥ãããã®ãåœããåã«ãªã£ãŠããŸããã䟿å©ãªã®ã§ãããã»ãã·ã§ã³ã§Â git checkout  ãèµ°ã£ãç¬éãå¥ã»ãã·ã§ã³ãäœæ¥äžã®ã³ãŒããäžžããšå¥ãã©ã³ãã®å
容ã«å€ãã£ãŠããŸãåé¡ãèµ·ããã®ã§è§£æ±ºããŸããã ãã®èšäºã§ã¯ã ãªãè€æ°ã® AI ãšãŒãžã§ã³ããšÂ git checkout  ã®çžæ§ãæªãã®ã git checkout  ãšÂ git worktree  ã®ä»çµã¿ã®éã worktree ã䜿ããšäœãããããã®ã ã«ãŒã«ã§çžãã ãã§ã¯å®ãããªãã®ã§Â hook ã§ checkout ã匷å¶ãããã¯ããÂ æ¹æ³ worktree éçšã®ãããã©ãã ã«ã€ããŠãŸãšããŸããã 1. äœãèµ·ããã®ã Claude Code ã®ã»ãã·ã§ã³ã¯ãåºæ¬çã« ãªããžããªã®äœæ¥ãã£ã¬ã¯ããªïŒãã§ãã¯ã¢ãŠãïŒãå
±æ ããŠåããŸããããã§è€æ°ã»ãã·ã§ã³ã䞊åã§èµ°ããããšãããããããšãèµ·ããŸãã ã»ãã·ã§ã³A: feature/foo ãå®è£
äžïŒãã¡ã€ã«ç·šéäžâŠïŒ ã»ãã·ã§ã³B: ãPR #95 ãã¬ãã¥ãŒããŠãâ git checkout feature/bar å®è¡ â ⌠ã»ãã·ã§ã³AãèŠãŠãããã¡ã€ã«ãå
šéš feature/bar ã®å
容ã«å€ãã git checkout ïŒã git switch ïŒã¯ãä»ãããã£ã¬ã¯ããªã®äžèº«ããã®ãã©ã³ãã®ç¶æ
ã«æžãæãããã³ãã³ãã§ããã€ãŸãäœæ¥ãã£ã¬ã¯ããªãšãã ã°ããŒãã«ãªç¶æ
ãç Žå£çã«åãæ¿ããŸãã1人ã®äººéã1ã€ã®ã¿ãŒããã«ã§äœæ¥ããŠããæä»£ã¯ããã§è¯ãã£ãã®ã§ãããè€æ°ã®ãšãŒãžã§ã³ããåããã£ã¬ã¯ããªã§åæã«åãåæã ãšã ã»ãã·ã§ã³Aã®ç·šééäžãã¡ã€ã«ãšã»ãã·ã§ã³Bã® checkout ãè¡çªãã ãã¹ããããªãããèœã¡ãïŒå®ã¯å¥ãã©ã³ãã®ã³ãŒããå®è¡ããŠããïŒ ã³ããããæå³ããªããã©ã³ãã«èŒã ææªãæªã³ãããã®å€æŽã checkout ã«å·»ã蟌ãŸããŠæ¶ãã ãšããããããã°ããŠãåå ã«ãã©ãçãã«ããç³»ã®äºæ
ã«ãªããŸããAI ãšãŒãžã§ã³ã㯠checkout ãããããããªããã®ã§ã人éå士ãããèžã確çãé«ãã§ãã 2. git checkout ãš git worktree ã®éã git worktree ã¯ã 1ã€ã®ãªããžããªãããè€æ°ã®äœæ¥ãã£ã¬ã¯ããªãçãã ãæ©èœã§ããGit 2.5ïŒ2015幎ïŒããããæ©èœã§ãããAI ãšãŒãžã§ã³ã䞊åæä»£ã«ãªã£ãŠæ¥ã«äŸ¡å€ãäžãã£ããšæããŠããŸãã git checkout æ¹åŒïŒç¶æ
ã®åãæ¿ãïŒ repo/ ââ ããã feature/foo ã«ãªã£ãã feature/bar ã«ãªã£ãããã ïŒåæã«ã¯1ã€ã®ãã©ã³ãããååšã§ããªãïŒ git worktree æ¹åŒïŒãã£ã¬ã¯ããªã®è¿œå ïŒ repo/ â develop ã®ãŸãŸ worktrees/feature-foo/ â feature/foo å°çšãã£ã¬ã¯ã㪠worktrees/feature-bar/ â feature/bar å°çšãã£ã¬ã¯ã㪠ïŒ.git ã®å®äœã¯ repo/ ãšå
±æãHEAD ã ã worktree ããšã«ç¬ç«ïŒ ä»çµã¿ãšããŠã¯ã .git  ã®ãªããžã§ã¯ãïŒã³ãããã»blobïŒã¯å
š worktree ã§å
±æããã HEAD  ãã€ã³ããã¯ã¹ã ãã worktree ããšã«åãããŸãããªã®ã§ clone ãšéã£ãŠãã£ã¹ã¯ãã»ãŒé£ãããfetch ã1åã§å
š worktree ã«åæ ãããŸãã git checkout / switch git worktree ãã©ã³ãã®æã¡æ¹ 1ãã£ã¬ã¯ããªã«1ã€ïŒåãæ¿ãïŒ ãã©ã³ãããšã«å¥ãã£ã¬ã¯ããªïŒäžŠåïŒ ä»ã®äœæ¥ãžã®åœ±é¿ ãã ïŒäœæ¥ãã£ã¬ã¯ããªå
šäœãå€ããïŒ ãªãïŒåãã£ã¬ã¯ããªãç¬ç«ïŒ .git ã®å®äœ ãã®ãŸãŸ å
±æïŒãã£ã¹ã¯å¹çãè¯ãïŒ äžŠåäœæ¥ äžå¯èœ å¯èœ fetch / stash / ãªããžã§ã¯ã â å
š worktree ã§å
±æ åºæ¬æäœã¯ããã ãã§ã: # ãã©ã³ãçšã® worktree ãäœãïŒãã©ã³ããç¡ããã° -b ã§äœæïŒ git worktree add ../worktrees/feature-foo feature/foo git worktree add -b feature/new ../worktrees/feature-new # äžèЧ git worktree list # çµãã£ããåé€ git worktree remove ../worktrees/feature-foo git worktree prune # æ¶ãå¿ãã®æé€ 3. ãªã AI ãšãŒãžã§ã³ã䞊åæä»£ã« worktree ãæ³šç®ãããŠããã®ã ã»ãã·ã§ã³ããšã«ç¬ç«ããäžçãæž¡ãã  â ã»ãã·ã§ã³Aã¯Â worktrees/feature-foo/ ãã»ãã·ã§ã³Bã¯Â worktrees/feature-bar/  ã§äœæ¥ããäºãäœãããŠãå¹²æžããŸããã ã¡ã€ã³ã®ãã§ãã¯ã¢ãŠããåžžã«å®å®ãã  â repo/  㯠develop ã®ãŸãŸçœ®ããŠãããã®ã§ããä»ã®æ£ã®ç¶æ
ããèŠå€±ããªãã人éã確èªããå ŽæãšããŠãå®å¿ã§ãã Claude Code ããã€ãã£ã察å¿ããŠãã  â Claude Code ã«ã¯ worktree ãµããŒããçµã¿èŸŒãŸããŠããŠã claude --worktree  ã EnterWorktreeããµããšãŒãžã§ã³ãèµ·åæã®Â isolation: "worktree"  ã䜿ããšãäžæç㪠worktree ãèªåã§äœã£ãŠäœæ¥ãã倿Žãç¡ããã°èªåã§æé€ãŸã§ããŠãããŸããã€ãŸãã䞊åã«ãšãŒãžã§ã³ããèµ°ãããããã®å
¬åŒãªçããããã§ã« worktree ãªãã§ããã ã¬ãã¥ãŒãšå®è£
ãåæã«ã§ãã  â ãPR ã®ãã©ã³ãã checkout ããŠã¬ãã¥ãŒãã®ä»£ããã«ãPR ã®ãã©ã³ãã worktree ã«çãããŠã¬ãã¥ãŒãã«ããã°ãå®è£
äžã®ã»ãã·ã§ã³ãæ¢ããã«æžã¿ãŸãã 4. ã«ãŒã«ã§çžãã ãã§ã¯å®ãããªãã®ã§ hook ã§åŒ·å¶ãã ããã©ã³ãåãæ¿ã㯠worktree ã䜿ã£ãŠãã ããããšæžããŠããã³ã³ããã¹ããé·ããªã£ãã»ãã·ã§ã³ããã¬ãã¥ãŒäŸé ŒãåãããšãŒãžã§ã³ãããããã checkout ããŸããããšãã£ãŠããŸãå¯èœæ§ã¯æ¶ããŸããã ããã§ Claude Code ã®Â PreToolUse hook  ã§ãå
±æãã£ã¬ã¯ããªã§ã®Â git checkout  / git switch  ãä»çµã¿ãšããŠãããã¯ããããšã«ããŸãããhook 㯠Claude ã Bash ã³ãã³ããå®è¡ããçŽåã«å¿
ãå²ã蟌ããã®ã§ãã«ãŒã«ãšéã£ãŠãå¿ãããããšããããŸããã 4.1 ã¬ãŒãã¹ã¯ãªãã scripts/worktree-guard-hook.sh  ãäœããŸã: #!/bin/bash # Worktree guard hook for Claude Code (PreToolUse / Bash) # å
±æäœæ¥ãã£ã¬ã¯ããªã§ã® git checkout / git switch ã«ãããã©ã³ãåãæ¿ãããããã¯ãã set -euo pipefail hook_input=$(cat) command=$(echo "$hook_input" | jq -r '.tool_input.command // empty') [ -z "$command" ] && exit 0 # git ã®ãµãã³ãã³ããšã㊠checkout / switch ãåŒã°ããŠããã # ïŒgit ã®çŽåŸããŸãã¯ã°ããŒãã«ãªãã·ã§ã³ -C/-c/--xxx ãæãã çŽåŸã®ã¿ãããïŒ git_switch_re='(^|[;&|(]|&&|\|\|)[[:space:]]*git([[:space:]]+(-C[[:space:]]+[^[:space:]]+|-c[[:space:]]+[^[:space:]]+|--[A-Za-z0-9-]+(=[^[:space:]]+)?))*[[:space:]]+(checkout|switch)([[:space:]]|$)' if echo "$command" | grep -qE "$git_switch_re"; then # ãã¡ã€ã«åŸ©å
åœ¢åŒ (`git checkout [<ref>] -- <path>`) ã¯èš±å¯ if echo "$command" | grep -qE 'checkout[^;&|]* -- '; then exit 0 fi jq -n '{ hookSpecificOutput: { hookEventName: "PreToolUse", permissionDecision: "deny", permissionDecisionReason: "🚫 å
±æäœæ¥ãã£ã¬ã¯ããªã§ã®ãã©ã³ãåãæ¿ãïŒgit checkout/switchïŒã¯çŠæ¢ã§ããä»ã®ã»ãã·ã§ã³ãšåããã§ãã¯ã¢ãŠããå
±æããŠããŸãã代ããã« git worktree ã䜿ã£ãŠãã ãã: `git worktree add ../worktrees/<branch> <branch>` ããŠããã®ãã£ã¬ã¯ããªå
ã§äœæ¥ããããã¡ã€ã«åŸ©å
ã ããªã `git checkout -- <file>` / `git restore <file>` ã¯èš±å¯ãããŠããŸãã" } }' exit 0 fi exit 0 ãã€ã³ã㯠åçŽãªÂ grep checkout  ã«ããŠããªã ããšã§ããããã ãšÂ git commit -m "switch to new API"  ã®ãããªç¡å®³ãªã³ãã³ããŸã§èª€çããã®ã§ããgit ã®ãµãã³ãã³ãäœçœ®ã« checkout/switch ãæ¥ãå Žåãã ãããããã¯ããããã«ãã©ã³ããå€ãããªã ãã¡ã€ã«åŸ©å
åœ¢åŒ ïŒ git checkout -- <file> ïŒã¯çŽ éãã«ããŠããŸãã 4.2 settings.json ã«ç»é² .claude/settings.json ïŒãããžã§ã¯ãèšå® = git ã«ã³ãããããã®ã§ããŒã å
šå¡ã«å¹ãïŒã«ç»é²ããŸã: { "hooks": { "PreToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "\"$CLAUDE_PROJECT_DIR\"/scripts/worktree-guard-hook.sh", "if": "Bash(git *)", "timeout": 10 } ] } ] } } $CLAUDE_PROJECT_DIR  ã䜿ã£ãŠãããšãworktree ã®äžã§ã»ãã·ã§ã³ãèµ·åãããšãããã¹ã解決ã§ããŸãã if  ãã£ã«ã¿ã§ git ã³ãã³ãã®ãšãã ã hook ãèµ·åããããã«ããŠãç¡é§ãªããã»ã¹èµ·åãé¿ããŠããŸãã 4.3 åäœç¢ºèª Claude ã« checkout ãããããšãããšãå®è¡åã«ãã匟ãããŸã: > git checkout develop 🚫 å
±æäœæ¥ãã£ã¬ã¯ããªã§ã®ãã©ã³ãåãæ¿ãïŒgit checkout/switchïŒã¯çŠæ¢ã§ãã 代ããã« git worktree ã䜿ã£ãŠãã ãã: ... deny ã®çç±ã¡ãã»ãŒãžã¯ãã®ãŸãŸ Claude ã«ãã£ãŒãããã¯ãããã®ã§ã Claude ã¯èªåã§Â git worktree add  ã«åãæ¿ããŠäœæ¥ãç¶è¡ ããŸããããããã¯ããŠçµãããã§ã¯ãªããæ£ããéãæããŠèªå°ãããã®ã hook ã¡ãã»ãŒãžèšèšã®ã³ãã ãšæããŸãã ããã㊠CLAUDE.md ã«ãåãã«ãŒã«ãæžããŠãããŸããhook ãã匷å¶ãã CLAUDE.md ããäºåã¬ã€ãã³ã¹ãã®äºæ®µæ§ãã§ããããã deny ãèžãåã« worktree ãéžãã§ãããããã«ãªããŸãã ### Git - **ãã©ã³ãåãæ¿ãçŠæ¢ïŒworktree å¿
é ïŒ**: å
±æäœæ¥ãã£ã¬ã¯ããªã§ã® `git checkout` / `git switch` ã¯çŠæ¢ïŒhook ã§ãããã¯ãããïŒã å¥ãã©ã³ãã§äœæ¥ãããšã㯠`git worktree add ../worktrees/<branch> <branch>` ã䜿ãã 5. 泚æç¹ïŒãããã©ããïŒ worktree ã«å¯ããã«ããã£ãŠãããã€ãç¥ã£ãŠãããã»ããããããšããããŸãã 5.1 åããã©ã³ãã¯2ã€ã® worktree ã§ãã§ãã¯ã¢ãŠãã§ããªã Git ã®ä»æ§ã§ããããã©ã³ãããã§ãã¯ã¢ãŠãã§ãã worktree ã¯åæã«1ã€ã ãã§ãããã¡ã€ã³ã§ develop ãéãããŸãŸãworktree ã§ã develop ããã¯ã§ããŸããïŒã€ã³ããã¯ã¹ãå£ããã®ãé²ãããã®å¶çŽãªã®ã§åŠ¥åœã§ãïŒãã¬ãã¥ãŒãæ€èšŒã§åãã³ããããèŠããã ããªã git worktree add --detach  㧠detached HEAD ã«ãããšåé¿ã§ããŸãã 5.2 node_modules ã .venv ã¯ä»ããŠããªã worktree 㯠git 管çäžã®ãã¡ã€ã«ããæã£ãŠããŸããã node_modules/  ã Python ã®Â .venv/  㯠worktree ããšã«äœãçŽããå¿
èŠã§ããæ¯å npm ci  ãããšãã£ã¹ã¯ãæéãé£ãã®ã§ãClaude Code ã®èšå®ã§ã·ã³ããªãã¯ãªã³ã¯ã匵ãã®ã楜ã§ã: { "worktree": { "symlinkDirectories": ["node_modules", "frontend/node_modules"] } } ãã ã symlink å
±æã¯ãäž¡æ¹ã® worktree ã§äŸåããŒãžã§ã³ãåããåæãªã®ã§ãlockfile ãããããã©ã³ãã§ã¯çŽ çŽã«å
¥ãçŽããã»ããå®å
šã§ãã 5.3 .env ãªã©ã® git 管çå€ãã¡ã€ã«ãã³ããŒãããªã secret é¡ã .env  ã«çœ®ããŠããå Žåãworktree ã«ã¯ååšããªãã®ã§ã¢ããªãèµ·åããŸãããååèšäºã® Infisical ã®ããã«ãsecret ããã¡ã€ã«ãšããŠæããªããæ§æã«ããŠãããšãworktree éçšãšãçžæ§ãè¯ãã§ãïŒ infisical run  ã¯ã©ã®ãã£ã¬ã¯ããªããã§ãåãããã«åãïŒã 5.4 stashã»fetchã»ãªããžã§ã¯ãã¯å
±æããã .git  ã®å®äœã¯å
±æãªã®ã§ã git stash  ã®äžèº«ã fetch æžã¿ã® ref ã¯å
š worktree ããèŠããŸãããworktree ããšã«å®å
šã«ç¬ç«ãã Git ç¶æ
ãã§ã¯ãªãç¹ã¯é ã«å
¥ããŠãããšæ··ä¹±ããŸãããéã« fetch ã1åã§æžãã®ã¯ã¡ãªããã§ãã 5.5 worktree ã®æ¶ãå¿ããæºãŸã 䞊åäœæ¥ãæãã»ã© worktree ãå¢ããŸãããã£ã¬ã¯ããªã rm -rf Â ã§æ¶ããã ãã ãš Git åŽã«ç®¡çæ
å ±ãæ®ãã®ã§ã git worktree remove <path> # æ£ããæ¶ãæ¹ git worktree prune # rm ããŠããŸã£ãæ®éªžã®æé€ git worktree list # 宿çã«æ£åžã ãç¿æ
£ã«ããã®ãããããã§ããClaude Code ã®èªå worktreeïŒEnterWorktree / isolationïŒã¯å€æŽãç¡ããã°èªåã§æé€ããŠãããã®ã§ãæåéçšãããã¡ãã«å¯ãããšãŽããåºã«ããã§ãã 5.6 èµ·åäžã®ãµãŒããŒã®ãã¹ã«æ³šæ dev server ããã¹ãã©ã³ããŒã¯ãèµ·åãããã£ã¬ã¯ããªã®ã³ãŒãããèŠç¶ããŸããã¡ã€ã³ã®ãã§ãã¯ã¢ãŠãã§Â npm run dev  ãç«ã¡äžãããŸãŸ worktree åŽãç·šéããŠããåœç¶ãµãŒããŒã«ã¯åæ ãããŸãããåäœç¢ºèªã¯ãã® worktree ã®äžã§ããã»ã¹ãç«ã¡äžãããã培åºããå¿
èŠããããŸãã 6. ãŸãšã git checkout Â ã¯ äœæ¥ãã£ã¬ã¯ããªãšããã°ããŒãã«ç¶æ
ã®ç Žå£çãªåãæ¿ã ãè€æ°ã® Claude Code ã»ãã·ã§ã³ã䞊åã§èµ°ãããç°å¢ã§ã¯ãä»ã»ãã·ã§ã³ã®äœæ¥ãå·»ã蟌ãäºæ
ã®ããš git worktree  ãªã ãã©ã³ãããšã«ç¬ç«ãããã£ã¬ã¯ã㪠ãçãããã®ã§ãã»ãã·ã§ã³å士ãå¹²æžããªãã .git  ã¯å
±æãªã®ã§ãã£ã¹ã¯ã fetch ãå¹çç Claude Code 㯠worktree ããã€ãã£ããµããŒãããŠããïŒ -worktree  / EnterWorktree / isolation: "worktree" ïŒã®ã§ã䞊åãšãŒãžã§ã³ãéçšã®å
¬åŒãªçãã¯ãã§ã« worktree ãã ã CLAUDE.md ã«æžãã ãã¯ããé¡ããã¬ãã« ãPreToolUse hook ã§Â git checkout  / git switch Â ãæ§é çã«ãããã¯ããdeny ã¡ãã»ãŒãžã§ worktree ãžèªå°ããã®ãç¢ºå® æ³šæç¹ã¯ãåäžãã©ã³ãã®éè€ãã§ãã¯ã¢ãŠãäžå¯ããnode_modules / .env ã¯ä»ããŠããªãããworktree ã®æé€ãããã ãã«ãŒã«ãæžãããã倧äžå€«ãã§ã¯ãªããä»çµã¿ã§äºæ
ããªãããã«ããããsecret 管çã®ãšããšåãçµè«ã«èœã¡çããŸããããAI ãšãŒãžã§ã³ããšäžŠèµ°ããéçºã§ã¯ããã®èãæ¹ãããããå Žé¢ã§å¹ããŠãããšæããŠããŸãã åèãªã³ã¯ git-worktree – Git å
¬åŒããã¥ã¡ã³ã Claude Code Hooks – Anthropic å
¬åŒããã¥ã¡ã³ã Claude Code Settings – Anthropic å
¬åŒããã¥ã¡ã³ã Anthropic Claude Code å
¬åŒ ã芧ããã ãããããšãããããŸãïŒ ãã®æçš¿ã¯ã圹ã«ç«ã¡ãŸãããïŒ åœ¹ã«ç«ã£ã 圹ã«ç«ããªãã£ã 0人ããã®æçš¿ã¯åœ¹ã«ç«ã£ããšèšã£ãŠããŸãã The post 䞊å Claude Code ã® git checkout ã§äœæ¥äžã®ã³ãŒããæžãæããã®ã§git worktree + hook ã§è§£æ±ºãã first appeared on SIOS Tech Lab .
ããã«ã¡ã¯ããµã€ãªã¹ãã¯ãããžãŒæŠäºã§ãã ä»åã¯ã100çªç
ãããããããããªããGitã®èª¬æã§ãã GitïŒã®ããïŒã¯ããã¡ã€ã«ã®å€æŽå±¥æŽãèšé²ã»ç®¡çããããã®ããŒã«ã§ããããŒã éçºã§ã¯æ¬ ãããŸããããå
¥éè
ã«ãšã£ãŠã¯æåã®å£ããšãŠãé«ãããŒã«ã§ããããŸãã ãã®çç±ã®ã²ãšã€ãã ã³ãã³ãã®å€ã ã§ãã add ã commit ã push ã fetch ã merge ã branch ã checkout ã switch ã reset ã rebase âŠâŠããããã1ã€ãã€ãäœ¿ãæ¹ããšããŠæèšããããšãããšããããŠãã©ããã§æ··ä¹±ããŠããŸããŸããããšãã° Â checkout  ã¯ãã©ã³ãã®åãæ¿ãã«ããã¡ã€ã«ã®ç Žæ£ã«ã䜿ãããŸããã reset  㮠 --soft / --mixed / --hard  ã®éãã¯ãªããªãèŠããããŸããã ã§ããããããå€å10幎ãããGitãšä»ãåã£ãŠãããããããŸãããã以äžã®ããšã ãèŠããã°OKã ãšæã£ãŠããŸãã Git ã®ã³ãã³ãã¯ãçµå±ã®ãšããããã¡ã€ã«ã®å Žæããšãã³ãããïŒå±¥æŽïŒã®åããã®2ã€ãå€ããŠããã ãã ãããã¯Gitã®ã³ãã³ãã®äœ¿ãæ¹ãå€åäžã€ãèŠããŠãªããšæããŸããã§ãäžèšã®2ã€ã®ããšãçè§£ããŠããã°ãå€åãã©ããªæäœãèªç¶ã«çè§£ã§ããããã«ãªããŸãã ãã¡ãã§ã¯ãç¹°ãè¿ãã«ãªããŸãããã Git ã®ã³ãã³ãã¯ãçµå±ã®ãšããããã¡ã€ã«ã®å Žæããšãã³ãããïŒå±¥æŽïŒã®åããã®2ã€ãå€ããŠããã ãã ããããŒã¹ã«ãã€ãã説æããŠãããŸãã 第1ç« ãã³ãããã®ä»çµã¿ ââ ãã¹ãŠã®åå° Git ãçè§£ããåºçºç¹ã¯ãã³ãã³ãã§ã¯ãªãã ã³ããããšã¯äœã ãã§ããããããããŸããªãŸãŸ  push  ã  merge  ãèŠããŠããã©ããã§ã€ãŸãããŠããŸããŸããéã«ãã³ãããã®æ£äœããåãã£ãŠããŸãã°ãæ®ãã¯é©ãã»ã©çŽ çŽã«ã€ãªãã£ãŠãããŸããå°ãé åãã«æãããããããŸãããããŸãã¯ããããã£ããèŠãŠãããŸãããã ãªããããããäœåºŠãåºãŠããèšèãå
ã«ç¢ºèªããŠãããŸãã ãªããžã㪠ïŒå€æŽå±¥æŽããŸãããšä¿ç®¡ããŠããå
¥ãç©ã®ããšã§ãã ã³ããã ïŒããæç¹ã®ãã¡ã€ã«ã®ç¶æ
ãèšé²ããæäœããŸãã¯ãã®èšé²ãã®ãã®ãæããŸãã ã³ãããã¯ãå·®åãã§ã¯ãªããã¹ãããã·ã§ããã ã³ãããã«ã€ããŠãå€ãã®æ¹ãæåã«æãæãã®ã¯ãã³ãããïŒå€æŽããéšåïŒå·®åïŒã®èšé²ããšããã€ã¡ãŒãžã§ã¯ãªãã§ããããããã€ã¯ãããã¯å°ãéããŸãã æ£ããã¯ã ã³ãããã¯ããã®æç¹ã®ãããžã§ã¯ãå
šäœã®âåçïŒã¹ãããã·ã§ããïŒâãããŸãããšå
åŽã«æ±ããŠããŸã ããã©ããå€ããããã§ã¯ãªããããã®ç¬éãå
šäœãã©ããªã£ãŠãããããäžžããšæã£ãŠããããšã€ã¡ãŒãžããŠãã ããã å³ã®ããã«ãã³ãããã¯å
¥ãåïŒç®±ã®äžã«ç®±ïŒã®æ§é ã«ãªã£ãŠããŸãã ã³ããã ã¯ããã®æç¹ã® ããªãŒ ïŒã«ãŒããã©ã«ãã®æ§é ïŒãå
åŽã«æã£ãŠããŸãã ããªãŒ ã¯ããã®äžã®ãã©ã«ãïŒ A/ ã B/ ïŒããã¡ã€ã«ïŒ C.txt ã D.txt ã E.txt ïŒã®å®äœãå
åŽã«æã£ãŠããŸãã ãã㊠ ãã©ã³ãïŒ main ïŒ Â ã¯ããã®ç®±ïŒã³ãããïŒãå€ããæã瀺ããŠãã åæ ã®ãããªãã®ã§ãã ããã§ã2çš®é¡ã®ãç»å Žäººç©ããåºå¥ããŠãããšããã®ããšããã£ãšæ¥œã«ãªããŸãã çš®é¡ ã©ããªãã®ïŒ äŸ Git ãªããžã§ã¯ã äžèº«ãã®ãã®ãäžèº«ããèšç®ããããããã·ã¥å€ïŒæçŽã®ãããªæååïŒãã§åºå¥ãããäžåºŠäœããš äžèº«ã¯å€ãããŸãã ã³ãããã»ããªãŒã»ãã¡ã€ã«ã®å®äœ ãªãã¡ã¬ã³ã¹ ã³ããããæããåæïŒãã€ã³ã¿ïŒããäžèº«ã¯æã¡ãŸãã main ã develop ã HEAD ãäžèº«ãæã€ãã®ïŒãªããžã§ã¯ãïŒããšããããæãã ãã®åæïŒãªãã¡ã¬ã³ã¹ïŒããåããŠèãã ââ ãã®èŠæ¹ã¯ããã®ããšäœåºŠãç»å ŽããŸããæåã¯ãã³ãšããªããŠã倧äžå€«ã§ããèªã¿é²ãããã¡ã«ãã ãã ããªããã§ãããŸãã ãæ¯åã¹ãããã·ã§ãããæ®ã£ãããéããªããªãïŒã ããã§ãçŽ æŽãªçåãæµ®ãã¶ãããããŸããã ã³ãããã®ãã³ã«ãã©ã«ãå
šäœã®åçãæ®ãã®ãªãããã¡ã€ã«ãã©ãã©ãå¢ããŠãããã«èšå€§ã«ãªã£ãŠããŸãã®ã§ã¯ïŒ ãšãŠãè¯ãçåã§ããã§ããå®éã«ã¯ããã¯ãªããŸãããGit ã¯ã**å€ãã£ããã¡ã€ã«ã ããæ°ããäœããå€ãã£ãŠããªããã¡ã€ã«ã¯åã®ã³ãããã®å®äœããã®ãŸãŸäœ¿ãåãïŒå
±æããïŒ**ããã«ã§ããŠããããã§ãã E.txt  ã ããç·šéããŠã³ãããããå Žé¢ãèŠãŠã¿ãŸãããã E.txt  ã¯äžèº«ãå€ãã£ãã®ã§ã æ°ãããªããžã§ã¯ã ãäœãããŸãã A/ ã» B/ ã» C.txt ã» D.txt  㯠1æåãå€ãã£ãŠããªã ã®ã§ãæ°ããã³ããã B ã¯ãããããèªåã§æãããåã®ã³ããã A ãæã£ãŠãã å®äœããã®ãŸãŸæãã ã ã§ãïŒå³ã®çŽ«ã®ç¢å°ïŒãã³ããŒã¯äœãããŸãããäžæ¹ãå€ãã£ã  E.txt  ã ã㯠A ãåç
§ãããæ°ãããªããžã§ã¯ããäœããŸãã ã³ããã B ã¯ãèªåã®èŠªïŒäžã€åïŒãšããŠã³ããã A ãæããŸãïŒ parent ïŒãããããŠã³ããããã€ãªãããéïŒãããïŒã®ãããªå±¥æŽãã§ããŠãããŸãã ãªããå€ãã£ãŠããªããã®ã¯å
±æãã§ããã®ã§ãããããããã¯ããªããžã§ã¯ãããäžèº«ããèšç®ããããã·ã¥å€ãã§åºå¥ãããããã§ããäžèº«ãåããªããããã·ã¥å€ãåãïŒåããªããžã§ã¯ããšããŠæ±ãããŸããã ãããåãå
容ã®ãã®ã¯èªç¶ãš1ã€ã«ãŸãšãŸããŸããã³ããããæ¯åã¹ãããã·ã§ããã§ã軜ãã®ã¯ããã®ãããã§ãã ãã®ã äžèº«ã¯å€ãããæ°ãããªããžã§ã¯ããäœã£ãŠãæãå
ãä»ãæ¿ããã ã ããšããæ§è³ªã¯ãããšã®ç« ã«åºãŠãã話ïŒrebase ã§ããã·ã¥ãå€ããçç±ããæ¶ããã¯ãã®ã³ããããæ®ãçç±ïŒã«ãã€ãªãã£ãŠãããŸããå°ãé ã®çé
ã«çœ®ããŠãããŠãã ããã ããäžæ©ã ãæ·±ã ââ tree ãš blob ã®æ£äœ ãããŸã§ãã³ããã â ããªãŒ â ãã¡ã€ã«ããšå
¥ãåã§èª¬æããŠããŸããããã€ã¯ããã®âäžèº«â㯠Git ã®å
éšã§ã¯  2çš®é¡ã®ãªããžã§ã¯ã ã§ã§ããŠããŸããå°ãã ãå°éçãªè©±ã«ãªããŸããããããåãããš Git ã®äžæè°ãªåãã®å€ããããªãã»ã©ãã«å€ããã®ã§ããã£ããèŠãŠãããŸãããã ãªããžã§ã¯ã ã©ããªãã®ïŒ blobïŒãããïŒ ãã¡ã€ã«ã® äžèº«ïŒããŒã¿ãã®ãã®ïŒ treeïŒããªãŒïŒ ãåå â ãªããžã§ã¯ããã® äžèŠ§è¡š ãããããããããã£ã¬ã¯ããªïŒãã©ã«ãïŒã«ããããŸã å³ã®ããã«ãtree 㯠 modeïŒæš©éïŒ/ typeïŒçš®é¡ïŒ/ objectïŒããã·ã¥ïŒ/ nameïŒååïŒ Â ãšããåãæã€äžèŠ§è¡šã§ãããã®åè¡ããblobïŒãã¡ã€ã«ïŒããå¥ã® treeïŒãµããã©ã«ãïŒãæããŠããŸãã ãã®ä»çµã¿ãããæåã¯æå€ã«æããäºå®ãããã€ãèŠããŠããŸãã blob ã¯äžèº«ããæã£ãŠããŸããã  ãã¡ã€ã«åããã©ã®ãã©ã«ãã«ãããããæš©éãããã£ããæã£ãŠããŸããããã ã®ããŒã¿ã®åºãŸãã§ãã ååã»å Žæã»æš©éã¯ããã¹ãŠ tree ã®ã»ããæã£ãŠããŸãã  ã C.txt  ãšããååã§ãããã«ããããšããæ
å ±ã¯ãblob ã§ã¯ãªã tree åŽã«ãããŸãã æã瀺ãåã㯠 commit â tree â blob  ã®äžæ¹åã ã ã§ããéåãã®ç¢å°ïŒæ»ããªã³ã¯ïŒã¯ãããŸãããã€ãŸãã blob ã¯èªåãã©ãã«çœ®ãããŠããããç¥ããŸãã ã ã ããããã äžèº«ãåããã¡ã€ã«ã¯ãååãå Žæãéã£ãŠã1ã€ã® blob ãå
±æããŸã ïŒå³ã®  C.txt  㚠 notes.txt  ã¯åãããã·ã¥ïŒåãå®äœã§ãïŒãåã®ç¯ã§èŠããå€ãããªããã®ã¯å
±æãã¯ããã®æ§è³ªãã®ãã®ã§ãã ããããçåïŒãtree ã¯ç·šéã§ããã®ïŒ 管çïŒè¿œè·¡ïŒã®å¯Ÿè±¡ãªã®ïŒã å
¥éè
ã®æ¹ããããããã ã質åã§ããçµè«ããèšããšã**ã©ã¡ããããããã**ã«ãªããŸãã Git ã® ãã¹ãŠã®ãªããžã§ã¯ãã¯ãäžåºŠäœã£ããäžèº«ãå€ãããŸãã ïŒããããäžå€ïŒã€ãã¥ãŒã¿ãã«ããšåŒã³ãŸãïŒãäžèº«ãå°ãã§ãå€ããã°ãããã¯å¥ã®ããã·ã¥å€ãæã€ãå¥ã®ãªããžã§ã¯ããã«ãªããŸããã§ããããtree ã blob ããç·šéãã¯ã§ããã倿Žãšã¯åžžã« æ°ãããªããžã§ã¯ããäœãçŽãããš ã«ãªããŸãã ã 远跡ïŒç®¡ç察象ã«ããïŒ ããšããèšèã¯ãåŸã»ã©åºãŠãããã¹ããŒãžã³ã°ããšããå Žæã®è©±ã§ãããã§ç®¡çãããã®ã¯ ãã¡ã€ã« ã ãã§ããtree ã¯çŽæ¥ããã«ç»é²ããããã®ã§ã¯ãªãã ã³ãããããç¬éã«ã管çäžã®ãã¡ã€ã«äžèЧããèªåçã«çµã¿ç«ãŠãããŸã ãã§ããããtree ã远å ããïŒç®¡çããããšããæäœã¯ãããããååšããŸããã ãã®çµæããã¡ã€ã«ã1ã€å€ãããšã ãã®åœ±é¿ã¯äžããäžãžäŒãã£ãŠãããŸã ã倿Žãããã¡ã€ã«ããäžçªäžïŒã«ãŒãïŒãŸã§ã®éããã«ãã tree ãããã¹ãŠæ°ããäœãçŽãããŸããäžæ¹ããã®éããããå€ãããã©ã«ãïŒ A/ ã» B/  ãªã©ïŒã¯ãåã®å®äœããã®ãŸãŸå
±æããŸãã ãã£ã¬ã¯ããªïŒãã©ã«ãïŒã®æ£äœã tree ã§ãããã®ããã Git ã¯ç©ºã®ãã©ã«ããèšé²ã§ããŸãã ïŒäžèŠ§è¡šã«èŒãããã¡ã€ã«ã1ã€ãç¡ãããã§ãïŒã空ãã©ã«ããæ®ããŠãããããšãã« Â .gitkeep  ã®ãããªäžèº«ã®ãªããã¡ã€ã«ã眮ãã®ã¯ããããçç±ã§ãã ã§ã¯ããã©ã«ããåé€ããããšãå
éšã§ã¯äœãèµ·ããïŒ ãã©ã«ãïŒãã£ã¬ã¯ããªïŒã¯åç¬ã§ã¯ç®¡çããããäžã®ãã¡ã€ã«ïŒblobïŒããã£ãŠåã㊠tree ã®äžèЧã«èŒãã®ã§ãããã§ãããã git rm -r A/ ïŒ A/  ãã©ã«ããåé€ããã³ãã³ãïŒã®å®äœã¯ãã A/  ã®äžã®ãã¡ã€ã«ãäžèЧããå
šéšå€ããããšã«ãªããŸãã ã³ããããããšãæ®ã£ããã¡ã€ã«ãã æ°ããã«ãŒã tree  ãçµã¿ç«ãŠãããŸããããã«ã¯ããã  A/  ãæãè¡ã å«ãŸããŸãã ãããããåé€ãã®æ£äœã§ããããã©ã«ããæ¶ããå°çšã®æäœãããããã§ã¯ãªããã æ°ãã tree ãããããæããªããªãã ã ããªã®ã§ãã ãšãããã A/  㮠tree ãããã®äžã® blob ã¯ã ããã«æ¶ããããã§ã¯ãããŸãã ããªããžã§ã¯ãã¯äžå€ãªã®ã§ã äžã€åã®ã³ãããïŒCommit BïŒããã¯ãä»ã§ããã©ãçãã ããã§ããéå»ã®ã³ãããã«åãæ¿ããã°ããã©ã«ãã¯ã¡ãããšå
ã©ããã«æ»ããŸãã æ¬åœã«æ¶ããã®ã¯ãã©ã®ã³ããããããã»ã©ã®ãã©ã³ãããããã©ãçããªããªã£ããªããžã§ã¯ããã git gc ïŒã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãäžèŠãªãã®ãçã¥ããåŠçïŒãæé€ãããšãã ãã§ãã ããã¯ã ç§å¯æ
å ±ïŒãã¹ã¯ãŒããªã©ïŒãå«ããã¡ã€ã«ããããšããåé€ããŠããéå»ã®ã³ãããã«æ®ãç¶ããŠããŸã ããšãããã»ãã¥ãªãã£äžã®ãšãŠã倧åãªãã€ã³ããšåãä»çµã¿ã§ããäžåºŠã³ãããããŠããŸã£ãç§å¯ã¯ãåé€ã§ã¯æ¶ããããšã«ãªããŸãããæŒããŠããŸã£ãå Žåã¯ãåé€ã«é Œãã®ã§ã¯ãªãããã®ãã¹ã¯ãŒãèªäœãç¡å¹åã»å€æŽããã®ãæ£ãã察åŠã§ãã ãããŸã§ãäžåºŠãŸãšããŠãããŸãã blob ã¯ãååãæããªãäžèº«ããtree ã¯ãååãšå Žæãæã€äžèŠ§è¡šããã©ã¡ããäžåºŠäœããšå€ãããã倿Žãåé€ãâæ°ãããªããžã§ã¯ããäœã£ãŠãæãå
ãä»ãæ¿ããâ圢ã§ããèµ·ããŸãããã ãããåãäžèº«ã¯å
±æãããæ¶ããã¯ãã®ãã®ã¯å±¥æŽã«æ®ãã®ã§ãã ãã®ã å€ããã«ãæ°ããäœã£ãŠãæãå
ãä»ãæ¿ãã ããšããåå°ãããã®ããšã®ãã©ã³ãã»ããŒãžã»resetã»rebase ãŸã§ããã¹ãŠã®åããæ¯ããŠããŸãã ãã©ã³ãã¯ãã³ããããæã軜ãåæã ãããããã®èšäºã§ãã¡ã°ããäŒãããã 転æç¹ ã§ãã ããã©ã³ãããšèããšãã³ãŒãã®æãããã©ã«ãã®ã³ããŒã®ãããªâéãããã®âãæ³åããã¡ã§ããç§èªèº«ãæåã¯ããæã£ãŠããŸãããã§ããæ¬åœã¯ãšãŠãã·ã³ãã«ã§ãã ãã©ã³ããšã¯ãããã³ããããæããŠããã ãã®ã軜ãåæïŒãã€ã³ã¿ïŒã§ãã git branch develop ïŒdevelop ãšãããã©ã³ããäœãã³ãã³ãïŒãå®è¡ããŠãã æ°ããã³ãããã¯1ã€ãäœãããŸãã ã develop  ãšããåæã1æå¢ããŠãä»ã®ã³ããããæãã ãã§ããã ããããã©ã³ããäœãæäœã¯ãšãŠã軜ããäžç¬ã§çµãããŸãã ãã®ãã©ã³ãã§æ°ããã³ããããããšãåæãæ°ããã³ãããã®ã»ããž é²ã¿ãŸã ã HEAD ïŒãããïŒã¯ãããŸèªåãã©ãã«ãããããæãç¹å¥ãªåæã§ãããµã ãã¯ãã©ã³ãïŒåæïŒãçµç±ããŠãã³ããããæããŠããŸãã ã ãã©ã³ãïŒåãåæ ããšããèŠæ¹ãã§ããããã«ãªããšãèŠããæ¯è²ãå€ãããŸãã reset ã» checkout ã» merge ã» rebase  ãšãã£ãé£ããããªã³ãã³ããããã¹ãŠã åæãã©ãåããã ããšããåãèŠç¹ã§ãšãããããããã«ãªãã®ã§ãã çŽèå±
ã§èŠã ââ 1ã³ãã³ããã€ãå±¥æŽãè²ã£ãŠãã ãããããã第1ç« ã®æ¬çªã§ãããã³ãããïŒã¹ãããã·ã§ãããããã©ã³ãïŒåæããHEADïŒããŸããå Žæããšãã3ã€ã®éå
·ãæã«æã£ããŸãŸã å®éã«ã³ãã³ãã1ã€ãã€æã£ãŠãå±¥æŽãã©ãè²ã£ãŠããã ããçŽèå±
ã®ããã«1ã³ããã€èŠãŠãããŸãããã èŠããã€ã³ãã¯ããã€ãåã3ã€ã ãã§ãã æ°ããã³ããããã§ããããªïŒ ïŒç·ïŒãµã€ãã®ã³ãããïŒçŽ«ïŒããŒãžã³ãããïŒ ã©ã®ãã©ã³ãïŒåæïŒããã©ããžåããããªïŒ HEADïŒããŸããå ŽæïŒã¯ãã©ããæããŠããããªïŒ ãã®3ç¹ããã®éœåºŠç¢ºèªããŠããã°ãã©ããªã«æåããããŠãè¿·åã«ãªããŸãããã§ã¯ãå§ããŸãããã STEP 1ãæåã®ã³ããã ãªããžããªãäœã£ãŠãæåã®ã³ããã  A  ãèšé²ããç¶æ
ã§ãã main  ã  A  ãæãã HEAD  ã¯ãã㟠 main  ã«ããŸããããšããããšã衚ããŠããŸãã ã³ããã â ãã©ã³ã â HEAD  ãšããæã瀺ãã®æµããããã¹ãŠã®åºçºç¹ã«ãªããŸãã STEP 2ã2åç®ã®ã³ããã E.txt  ã倿ŽããŠã³ããããããšãæ°ããã³ããã  B  ãã§ããŸãã B  ã®èŠªïŒäžã€åïŒã¯  A  ã§ãããããŠã ããŸèªåããããã©ã³ã  main  ã  B  ãžé²ã¿ãHEAD ãäžç·ã«ã€ããŠåããŸã ã 第1ç« ã®ååãæãåºããŠãã ããã B  ã®äžã§ã¯  E.txt  ã ããæ°ãããªããžã§ã¯ãã«ãªãã A/ ã» B/ ã» C.txt ã» D.txt  㯠 A  ã®å®äœããã®ãŸãŸå
±æããŠããŸããããçŽèå±
ã§ã¯1ã€ã®äžžã§è¡šããŠããŸãããäžžã®äžèº«ã¯ããã®ã¹ãããã·ã§ããã«ãªã£ãŠããŸãã STEP 3ããã©ã³ããäœã git branch develop  ãå®è¡ããŸããããã§æ³šç®ããŠããã ãããã®ã¯ã ã³ãããã1ã€ãå¢ããŠããªã ããšã§ãã develop  ãšããåæã1æå¢ããŠãä»ã®ã³ããã  B  ãæãã ãã§ãããããŠã HEAD ã¯ãŸã  main  ã®ãŸãŸ ã§ãåããŠããŸãããããã©ã³ããäœãããšããšããã®ãã©ã³ãã«ç§»ãããšãã¯ãå¥ã
ã®æäœãªã®ã§ãã STEP 4ãdevelop ã«åãæ¿ããŠã³ããã ãŸã  git checkout develop  㧠 HEAD ã  develop  ãžç§»ããŸã ïŒãã®ç¬éã¯ããŸã ã³ãããã¯å¢ããŸããïŒããããã  C.txt  ã倿ŽããŠã³ããããããšã C  ãã§ããŸãã ãããçŽèå±
ã®æåã®å±±å Žã§ãã ããŸèªåããããã©ã³ã  develop  ã ãã  C  ãžé²ã¿ã main  㯠 B  ã«åãæ®ãããŸã ãããããæåãããã®æ£äœã§ããç¹å¥ãªæäœã¯äœããªããã åãã®ã¯ãããŸèªåããããã©ã³ãã ã ããšããã«ãŒã«ããèªç¶ã«çãŸããŠããã ããªã®ã§ãã STEP 5ãfeatureA ãäœã git branch featureA  ãå®è¡ããŸããSTEP 3 ãšåãããããŸã® HEAD ã®äœçœ®ïŒ develop Â ïŒ Â C ïŒã«åæã1æè¶³ãã ãã§ããã³ãããã¯å¢ãããHEAD ã  develop  ã®ãŸãŸã§ããããã§ Â C  ã«ã¯ã develop  㚠 featureA  ã®2æã®åæã貌ãããç¶æ
ã«ãªããŸãã STEP 6ãfeatureA ã§ã³ããã featureA  ã«åãæ¿ããŠã³ããããããš Â D  ãã§ãã featureA  ã ãã  D  ãžé²ã¿ãŸã ã develop  㯠 C Â ã«æ®ã£ããŸãŸã§ããããã§ãåã  C  ãèµ·ç¹ã«ã develop  ã®ã©ã€ã³ãš  featureA  ã®ã©ã€ã³ã2æ¬ã®æµãã«æåããããŸããã STEP 7ãdevelop ã«æ»ã£ãŠ featureB ãäœã git checkout develop  㧠HEAD ã  C Â ã«æ»ããããã§ Â git branch featureB  ãå®è¡ããŸããããã§ Â C  ã«ã¯  develop  㚠 featureB  ã®åæãã featureA  ã®å
ã«ã¯  D  ãããšããæ§å³ãã§ãããããŸããã åæã¯ãã©ã®ã³ãããã«ã§ããäœæã§ã貌ããŸã ã STEP 8ãfeatureB ã§ã³ããã featureB  ã«åãæ¿ããŠã³ããããã E  ãäœããŸãã C  ããäžãžæåããããã3æ¬ç®ã®ã©ã€ã³ã§ããããŸåããŠããéçºã®æµãã¯ã main ïŒBïŒã» develop ïŒCïŒã» featureA ïŒDïŒã» featureB ïŒEïŒã®4æ¬ã«ãªããŸãããã©ãããã³ãããïŒã¹ãããã·ã§ããããšããã©ã³ãïŒåæãã®çµã¿åããã§ã§ããŠããŸãã STEP 9ãfeatureA ã§ããã«ã³ããã featureA Â ã«æ»ã£ãŠãããäžåºŠã³ãããããŸãã D  ã®äžã«  F  ãç©ãŸãã featureA  ã  F  ãžé²ã¿ãŸãã featureA  ã®ã©ã€ã³ã¯  C â D â F  ãšããã3ã€ã®ã³ãããã®éã«ãªããŸããã STEP 10ãdevelop ã« featureA ãããŒãž ããããã2ã€ã®æµãã®åæµïŒããŒãžïŒã§ãã develop  ã«åãæ¿ã㊠ git merge featureA  ãå®è¡ããŸãã ãã®ãšãã develop  ã®çŸåšå°ã¯  C ã featureA  ã®å
端㯠 F  ã§ãããã®2ã€ãåæµãããããã«ã 芪ã2ã€æã€ãããŒãžã³ãããã G Â ãæ°ããäœãããŸãïŒå³ã®çŽ«ã®äžžã§ãïŒã G  ã®èŠªã¯ Â C ïŒåæµå
ïŒãš  F ïŒåã蟌ãåŽïŒã®2ã€ã§ãããã㊠ develop  ã  G  ãžé²ã¿ãŸã ã featureA  㯠 F  ã®ãŸãŸãåããŸããã ããŒãžãšã¯ã2ã€ã®æµãã®åæµç¹ã«ã芪ã2ã€æã€ã³ããããäœããæäœã§ããé£ããèããå¿
èŠã¯ãããŸããããã£ãŠããããšã¯ããã¯ããã³ããããäœã£ãŠãããŸãããã©ã³ããé²ãããã ãã§ãã STEP 11ãmain ã« develop ãããŒãžïŒæ©éãïŒ æåŸã«ã main  ã«åãæ¿ã㊠ git merge develop  ãå®è¡ããŸãã ãã®ãšãã main  ã®çŸåšå°  B  ã¯ã develop  ã®çŸåšå°  G  㮠ç¥å
ã«ãªã£ãŠããŸãïŒ B â C â G  ãšãã©ããŸãïŒãããããå Žåã¯ãæ°ããããŒãžã³ããããäœãå¿
èŠããããŸããã main  ã®åæãããã®ãŸãŸ  G  ãŸã§ã¹ããšæ»ãããã ã ã§æžã¿ãŸããããã  fast-forwardïŒæ©éãïŒ Â ãšåŒã³ãŸãã ãã®çµæã main  㚠 develop  ãåã  G  ãæããŠããããã«æããŸããã featureA ïŒFïŒãš  featureB ïŒEïŒã®åæã¯ããã®ãŸãŸæ®ã£ãŠããŸãã 第1ç« ã®ãŸãšã ââ 11ã¹ãããã§èµ·ããŠããããš çŽèå±
ãæåããèŠè¿ããŠã¿ããšã ãã£ã2çš®é¡ã®ããšããèµ·ããŠããªã ããšã«æ°ã¥ããŸãã ã³ããããäœã ïŒSTEP 2ã»4ã»6ã»8ã»9ã»10ïŒâ æ°ããã¹ãããã·ã§ãããã§ãã ããŸèªåããããã©ã³ããããããžé²ã ã åæãåãã ïŒSTEP 3ã»5ã»7 ã®ãã©ã³ãäœæãSTEP 4ã»7ã»10ã»11 ã®åãæ¿ãïŒâ ã³ãããã¯å¢ããã åæã HEAD ãåãã ã ã æåããããããŒãžããfast-forward ããç¹å¥ãªéæ³ã§ã¯ãããŸããããã³ãããïŒäžèº«ãå€ãããªãã¹ãããã·ã§ãããããã©ã³ãïŒãããæãåæããåãã®ã¯ãããŸãããã©ã³ããš HEAD ã ããââ ãã®åçŽãªã«ãŒã«ã®ç©ã¿éãã§ã§ããŠããã®ã§ããã ãã®æèŠãæã£ããŸãŸã次ã®ç« ãžé²ã¿ãŸãããã 第2ç« ããã¡ã€ã«ãå±
ãããã5ã€ã®å Žæã 第1ç« ã§ã¯ãå±¥æŽïŒã³ãããïŒãã®è©±ãããŸããã第2ç« ã§ã¯ãããäžæ¹ã®è©±ãã ãã¡ã€ã«ã¯ãããŸã©ãã«ããã®ã ããèŠãŠãããŸãã Git ã䜿ããšãã1ã€ã®ãã¡ã€ã«ã¯ã次㮠5ã€ã®å Žæ ã®ã©ããã«ïŒå Žåã«ãã£ãŠã¯è€æ°ã«ïŒååšããŠããŸãã å Žæ ã©ããªå ŽæïŒ ã¯ãŒãã³ã°ãã£ã¬ã¯ã㪠ããŸæã§ç·šéããŠããäœæ¥ãã©ã«ãã§ãããšãã£ã¿ã§éããŠããã®ã¯ãããã§ã ã¹ããŒãžã³ã°ïŒã€ã³ããã¯ã¹ïŒ ãæ¬¡ã®ã³ãããã«å«ãããã®ããéžãã§ä»®çœ®ãããŠããå Žæã§ã ããŒã«ã«ãªããžã㪠ã³ãããã®å±¥æŽãä¿ç®¡ããŠããæ¬äœã§ãã .git  ãã©ã«ãã®äžã§ã第1ç« ã®ãªããžã§ã¯ããæ®ãããŠããå Žæã§ã ãªã¢ãŒã远跡ãªããžã㪠origin/main  ãªã©ããªã¢ãŒãã®ç¶æ
ã®âåãïŒã³ããŒïŒâã§ãã å®äœã¯ãããªãã®PCã®äžã«ãããŸã ãªã¢ãŒããªããžã㪠GitHub ãªã©ã®ããµãŒããŒäžã«ããæ¬äœã§ãã 5ã€ã®äžã§ãå¯äžããªãã®PCã®å€ ã«ãããŸã ããã§ãã²èŠããŠããã ãããã®ãã å¢çç· ã§ãã**å·Šã®4ã€ã¯ããã¹ãŠããªãã®PCã®äžïŒããŒã«ã«ïŒ**ã«ãããŸããã§ããããã€ã³ã¿ãŒãããã«ã€ãªãã£ãŠããªããŠãæäœã§ããŸãããµãŒããŒãšéä¿¡ãå¿
èŠã«ãªãã®ã¯ããã¡ã°ãå³ã®ããªã¢ãŒããªããžããªããšããåããããšãã ãã§ãã å
¥éè
ãã€ãŸãããããã®ãã origin/main Â ã®æ£äœã§ããããªã¢ãŒãã远ããããããã«ããŒã«ã«ã«ãããã®ããšãæ¬åœã®ãªã¢ãŒããã¯å¥ç©ãªã®ã§ãã origin/main  㯠ãªã¢ãŒãã®ç¶æ
ãããŒã«ã«ã«åããšã£ãã³ã㌠ã§ãå®äœã¯ããªãã®PCã®äžã«ãããŸããGit ããªãã©ã€ã³ã§ãåããã®ã¯ããæåŸã«éä¿¡ãããšãã®ãªã¢ãŒãã®ç¶æ
ããããã®åããšããŠæã£ãŠããããã§ãã ã¡ãªã¿ã«  origin  ãšããã®ã¯ããªã¢ãŒãã®å ŽæïŒURLïŒã«ã€ãã ãã å ã«ãããŸãããGitHub åŽã¯ãèªåã  origin  ãšåŒã°ããŠãããªããŠç¥ããŸããã git remote -v  ãšããã³ãã³ãã§ããã å â URLãã®å¯Ÿå¿ã確èªã§ããŸãã 1ã€ã®ã³ãã³ãã远ã£ãŠã¿ã ââ  git commit  ã§ãã¡ã€ã«ã¯ã©ããžåãïŒ 5ã€ã®å Žæãé ã«å
¥ã£ããã 1ã€ã®ã³ãã³ããåãäžããŠããã¡ã€ã«ãã©ãåããŠããã ãå
·äœçã«è¿œã£ãŠã¿ãŸããããããã§ã¯ããã¡ã°ãåºæ¬ç㪠 git commit  ã䞻圹ã«ããŸãã E.txt  ãç·šéããŠããã³ããããããŸã§ãããå Žæã®ç§»åããšããŠæããšã次ã®ããã«ãªããŸãã ã¯ãŒãã³ã°ãã£ã¬ã¯ã㪠㧠 E.txt  ãç·šéããŸãããã®æç¹ã§ã¯ãGit ã¯ãŸã äœãèšé²ããŠããŸãããã倿Žããããããšããç¶æ
ã§ãã git add E.txt  ãå®è¡ãããšããã®å€æŽã ã¹ããŒãžã³ã° ãžç§»ããŸãããæ¬¡ã®ã³ãããã«ããããå«ããŠãã ãããããšããäºçŽã®ãããªãã®ã§ãã git commit  ãå®è¡ãããšãã¹ããŒãžã³ã°ã®å
容ã ããŒã«ã«ãªããžããª ã«æžã蟌ãŸãã**æ°ããã³ãããïŒïŒç¬¬1ç« ã®ã¹ãããã·ã§ããïŒ**ãèšé²ãããŸãããã©ã³ãã®åæãããã®æ°ããã³ããããžé²ã¿ãŸãã ãã€ã³ãã¯ã commit  ããã£ãŠããã®ã¯ãçµå±**ãã¹ããŒãžã³ã°ã®å
容ããããŒã«ã«ãªããžããªã®æ°ããã³ããããšããŠæžã蟌ããããšã ã**ã ããšããç¹ã§ãã第1ç« ã§èŠããã¹ãããã·ã§ãããäœã£ãŠã main  ãåã«é²ããããããŸãã«ããã§ãã第1ç« ïŒå±¥æŽïŒãšç¬¬2ç« ïŒå ŽæïŒãã commit  ãšãã1ç¹ã§ã€ãªãã£ãŠããã®ã§ããã æ®ãã®å Žæãž ââ push / fetch / merge commit  ã¯ãããŒã«ã«ãªããžããªãŸã§ããå±ããŸããããªã¢ãŒãïŒãµãŒããŒïŒåŽã®å ŽæãŸã§å«ãããšã1ã€ã®ãã¡ã€ã«ã®æ
ã¯ã次ã®ããã«å®æããŸãã git add  ⊠ã¯ãŒãã³ã° â ã¹ããŒãžã³ã° git commit  ⊠ã¹ããŒãžã³ã° â ããŒã«ã« git push  ⊠ããŒã«ã« â ãªã¢ãŒãïŒããã㊠ origin/main  ã®åããæŽæ°ããŸãïŒ git fetch  ⊠ãªã¢ãŒã â ãªã¢ãŒãè¿œè·¡ïŒ origin/main Â ãææ°ã®ç¶æ
ã«ããŸãïŒ git merge origin/main  ⊠ãªã¢ãŒã远跡 â ã¯ãŒãã³ã°ïŒããŒã«ã«ãžåã蟌ã¿ãŸã ããã§æ³šç®ããŠããã ãããã®ã¯ã ã©ã®ã³ãã³ãããé£ã®å Žæãžéã¶ããšãã1åºéã®ç§»åã§ãããªã ããšã§ãããããŠããããŒã«ã« ãªã¢ãŒããã®å¢çãè¶ã㊠éä¿¡ããã®ã¯  push  㚠 fetch  ã ã ã§ãããã以å€ã¯ããã¹ãŠããªãã®PCã®äžã§å®çµããŠããŸãã ãã䜿ã  git pull  ã¯ããã€ã¯  git fetch  +  git merge  ããŸãšããŠå®è¡ããã³ãã³ã ã§ãã fetch  ã§ãªã¢ãŒãã®ææ°ã  origin/main ïŒåãïŒã«åã蟌ã¿ã merge  ã§ãããä»ãããã©ã³ãã«åæµãããŠããŸãã ããã§æå€ãšå€§äºãªã®ãã git merge origin/main  ã ããŒã«ã«ã®äžã ãã§å®çµããåŠç ã ãšããããšã§ãã origin/main  ã¯ååãããªã¢ãŒãã£ãœãã®ã§ãããå®äœã¯ããŒã«ã«ã«ããåããªã®ã§ãmerge ã¯éä¿¡ããã«PCã®äžã§çµãããŸããéä¿¡ããŠããã®ã¯  fetch  ã®ç¬éã ã ââ ãã®åœ¹å²åæ
ãåãããšã pull  ããããåãããªã䟿å©ã³ãã³ããã§ã¯ãªããªããŸãã origin ãšã¯ ââ ãªã¢ãŒãã«ã€ããããã åããšããã©ãŒã¯éçºã®äŸ 第2ç« ã®ã¯ããã«å°ãè§Šãããšããã origin  ã¯ç¹å¥ãªãã®ã§ã¯ãªãã ãªã¢ãŒããªããžããªïŒã® URLïŒã«ã€ããâãã åâã«ãããŸããã git clone  ãããšãã« Git ãèªåã§ä»ãããããã©ã«ãã®ãã åã  origin  ãšããã ãã§ãããããŠããã®ãªã¢ãŒãã®ç¶æ
ãããŒã«ã«ã«åããšã£ããã®ãã origin/main  ãªã©ã®ãªã¢ãŒã远跡ãã©ã³ã ã§ããã ããã§å€§åãªã®ã¯ã ãªã¢ãŒãã¯1ã€ã«éãããããã€ã§ãç»é²ã§ãã ãšããããšã§ãããã åã§åºå¥ããã®ã§ãè€æ°ãã£ãŠãè¿·ããŸããããã®å
žåäŸããOSSïŒãªãŒãã³ãœãŒã¹ïŒéçºã§ãã䜿ãããã©ãŒã¯ãã§ãã OSS ã«è²¢ç®ãããšãã¯ããããªæµãã«ãªããŸãã æ¬å®¶ã® OSS ãªããžããªããèªåã® GitHub ã¢ã«ãŠã³ãã«**ãã©ãŒã¯ïŒã³ããŒïŒ**ããŸããããããããªãå°çšã®ã³ããŒã§ãã ãã®èªåã®ãã©ãŒã¯ã  git clone  ããŸãããããšããã©ãŒã¯ã  origin  ãšãããã åã§ç»é²ãããŸãïŒããªãã push ã§ãããªã¢ãŒãïŒã ããã«ããã©ãŒã¯å
ã®æ¬å®¶ã  upstream ïŒäžæµïŒãšãããã åã§è¿œå ããŸãïŒ git remote add upstream <æ¬å®¶ã®URL> ïŒã ããã§ã 1ã€ã®ããŒã«ã«ãªããžã㪠ã«ã2ã€ã®ãªã¢ãŒãã®ãã åãç»é²ãããç¶æ
ã«ãªããŸãã git remote -v  ã§ç¢ºèªãããšã次ã®ããã«èŠããŸãã origin https://github.com/you/project.git ïŒããªãã®ãã©ãŒã¯ïŒ upstream https://github.com/original/project.git ïŒæ¬å®¶ OSSïŒ ããšã¯ã2ã€ã®ãã åã䜿ãåããŸãã æ¬å®¶ã®ææ°ãåã蟌ã ïŒ git fetch upstream Â ã§æ¬å®¶ã®æŽæ°ã  upstream/main ïŒåãïŒã«ååŸããèªåã®ãã©ã³ãã«åã蟌ã¿ãŸãã èªåã®å€æŽãéã ïŒ git push origin  ã§ãèªåã®ãã©ãŒã¯ïŒ origin ïŒãžéããŸãã æ¬å®¶ãžææ¡ãã ïŒæ¬å®¶ã«ã¯çŽæ¥ push ã§ããªãã®ããµã€ããªã®ã§ããã©ãŒã¯ãã**ãã«ãªã¯ãšã¹ãïŒPRïŒ**ã§ããã®å€æŽãåã蟌ã¿ãŸãããïŒããšææ¡ããŸãã ãã€ã³ãã¯ã origin  ã  upstream  ã ãã ã®ãã å ã§ãå®äœã¯ã©ã¡ãããURL ãæãåæãã ãšããããšã§ããã ããããã1ã€ã®ããŒã«ã«ãäž¡æ¹ãããã¡ã€ã«ãåã蟌ã¿ãéãå
ãéžãã§éãåºããã®ã§ãã 第3ç« ãã³ãã³ãããšã«èŠã ââ ãå Žæããšãã³ããããã®åãã§çè§£ãã 第1ç« ãšç¬¬2ç« ã§ãGit ãèŠãããã®2ã€ã®ç®ç·ãæã«å
¥ããŸããã â ãã¡ã€ã«ã®å Žæ ïŒã¯ãŒãã³ã° â ã¹ããŒãžã³ã° â ããŒã«ã« â ãªã¢ãŒãïŒç¬¬2ç« ïŒ â¡ ã³ãããïŒå±¥æŽïŒã®åã ïŒ HEAD  ããã©ã³ããã©ãåããïŒç¬¬1ç« ïŒ ããããã¯ã代衚çãªã³ãã³ãã1ã€ãã€åãäžãã å®è¡ãããš â å Žæãš â¡ ã³ããããããããã©ãåãã®ã ããå³ã§èŠãŠãããŸããã©ã®ã³ãã³ãããçµå±ã¯ãã®2ã€ãåãããŠããã ãã§ããæå
ã®åºæ¬ïŒadd â commitïŒãããéãã»åã蟌ãïŒpush â fetch â pull â mergeïŒãç§»åã»åãæ¶ãïŒswitch â reset â cleanïŒããããŠå¿çšïŒrebaseïŒã®é ã«èŠãŠãããŸãããã git add git add  ã¯ã ã¯ãŒãã³ã°ã§ç·šéãããã¡ã€ã«ããã¹ããŒãžã³ã°ïŒæ¬¡ã®ã³ãããã®äžæžãïŒã«ç»é²ãã ã³ãã³ãã§ãã â ãã¡ã€ã«ã®å Žæã¯ã©ãåãïŒ Â ç·šéããŠäžèº«ãå€ãã£ã  E.txt Hi!”ïŒããã¯ãŒãã³ã°ããã¹ããŒãžã³ã°ãžã³ããŒãããŸããããŒã«ã«ïŒéå»ã®ã³ãããïŒã¯ããŸã å€ã “Hello” ã®ãŸãŸã§ãã â¡ ã³ãããïŒå±¥æŽïŒã¯ã©ãåãïŒ Â äœãèµ·ããŸããã add  ã¯ãããŸã§ã次ã®ã³ãããã«å«ããæºåããªã®ã§ãå±¥æŽã¯1ããªãåããŸããã add  ã¯ãã³ãããã«å«ãããã®ãéžã¶ãæäœã§ããå Žæã ããåãããå±¥æŽã¯åãããŸããã git commit git commit  ã¯ã ã¹ããŒãžã³ã°ã«çšæããŠãããå
容ããæ°ããã³ããããšããŠããŒã«ã«ãªããžããªã«èšé²ãã ã³ãã³ãã§ãã â ãã¡ã€ã«ã®å Žæã¯ã©ãåãïŒ Â ã¹ããŒãžã³ã°ã®  E.txt Hello”ïŒããäžèº«ãã®ãŸãŸã§ããŒã«ã«ãªããžããªã«èšé²ãããŸããã¯ãŒãã³ã°ããªã¢ãŒãã¯åããŸããã â¡ ã³ãããïŒå±¥æŽïŒã¯ã©ãåãïŒ Â æ°ããã³ããã  B  ãäœããïŒèŠªã¯ Â A ïŒãããŸãããã©ã³ã  main  ããã® Â B  ãžé²ã¿ãŸãã HEAD  ãäžç·ã«åããŸãã commit  ã¯ãã¹ããŒãžã³ã°ã®å
容ãèšé²ããæ°ããã³ããããäœã£ãŠãããŸãããã©ã³ãã1ã€é²ãããã第1ç« ãšç¬¬2ç« ã§èŠãããšãã1ã€ã®ã³ãã³ãã®äžã§åæã«èµ·ããŠããŸãã git push git push  ã¯ã ããŒã«ã«ã®æ°ããã³ããããããªã¢ãŒãïŒãµãŒããŒïŒãžéã ã³ãã³ãã§ãã â ãã¡ã€ã«ã®å Žæã¯ã©ãåãïŒ Â ããŒã«ã«ã®ã³ãããå
容ããªã¢ãŒããžå±ããŸããããããŠãæå
ã® Â origin/main ïŒãªã¢ãŒãã®åãïŒãææ°ã«æŽæ°ãããŸãã â¡ ã³ãããïŒå±¥æŽïŒã¯ã©ãåãïŒ Â ãªã¢ãŒãåŽã®ãã©ã³ããé²ã¿ããããåãã  origin/main  ã  main  ã«è¿œãã€ããŸãïŒA â BïŒã push  ã¯ãããŒã«ã«ãããªã¢ãŒããžéãããªã¢ãŒãã®ãã©ã³ããé²ãããããããéä¿¡ããŠå€ãžåºããæ°å°ãªãã³ãã³ãã®1ã€ã§ãã git fetch git fetch  ã¯ã ãªã¢ãŒãã®ææ°ããããŒã«ã«ã®ãåããïŒ origin/main ïŒã«ååŸãã ã³ãã³ãã§ããäœæ¥ãã©ã³ãã¯ãŸã åããŸããã â ãã¡ã€ã«ã®å Žæã¯ã©ãåãïŒ Â ãªã¢ãŒãã®æ°ããå
容v2″ïŒãããªã¢ãŒã远跡ïŒåãïŒãžåã蟌ãŸããŸããæå
ã®äœæ¥ãã©ã«ãã¯ããŸã å€ãããŸããã â¡ ã³ãããïŒå±¥æŽïŒã¯ã©ãåãïŒ Â origin/main  ã ããæ°ããã³ããã  C  ãžé²ã¿ãŸããèªåã® Â main  㯠 B  ã®ãŸãŸæ®ã眮ãã§ãã fetch  ã¯ãåã£ãŠããã ãããæå
ã®äœæ¥ã«åæ ããã«ã¯ããã®ããš merge ãå¿
èŠã§ããã ãããããå®å
šã«ææ°ã ãã確èªã§ããŸãã git pull git pull  ã¯ã ãªã¢ãŒãã®ææ°ãååŸããŠãããŸã®äœæ¥ãã©ã³ãã«åã蟌ã ã³ãã³ãã§ããäžèº«ã¯  git fetch  +  git merge  ã®2段éããŸãšãããã®ã§ãã â ãã¡ã€ã«ã®å Žæã¯ã©ãåãïŒ Â fetch ã§åããåããmerge ã§ããŒã«ã«ãšã¯ãŒãã³ã°ãŸã§åæ ããŸããçµæãæå
ã®ãã¡ã€ã«ãææ°ïŒ”v2″ïŒã«ãªããŸãã â¡ ã³ãããïŒå±¥æŽïŒã¯ã©ãåãïŒ Â åããåã蟌ãã§ãäœæ¥ãã©ã³ã  main Â ãææ°ã®  C  ãžé²ã¿ãŸãã pull  ã¯ãfetch ã㊠merge ãããã ãã第2ç« ã§èŠã2ã€ãã1ã³ãã³ãã«ãŸãšãã䟿å©ã³ãã³ãã§ãã git merge git merge  ã¯ã å¥ã®ãã©ã³ãããããŸã®äœæ¥ãã©ã³ãã«åæµããã ã³ãã³ãã§ãã â ãã¡ã€ã«ã®å Žæã¯ã©ãåãïŒ Â åæµåŸã®å
容ããããŒã«ã«ïŒæ°ããããŒãžã³ãããïŒãšã¯ãŒãã³ã°ã®äž¡æ¹ã«åæ ãããŸãã â¡ ã³ãããïŒå±¥æŽïŒã¯ã©ãåãïŒ Â æåãããã2ã€ã®å
ç«¯ïŒ main  = B ãš Â feature  = CïŒãåæµãããããã 芪ã2ã€æã€ããŒãžã³ããã  M  ãã§ãã main  ã  M  ãžé²ã¿ãŸãã merge  ãçµå±ãã³ããããäœã£ãŠãããŸãããã©ã³ããé²ãããããã ãã芪ã2ã€ããç¹ã ããç¹å¥ã§ãã git switch / checkout git switch ïŒå€ãæžãæ¹ã§ã¯  git checkout ïŒã¯ã å¥ã®ãã©ã³ãã«ç§»åãã ã³ãã³ãã§ãã HEAD  ãç§»ããã¯ãŒãã³ã°ããã®ãã©ã³ãã®å
å®¹ã«æžãæããŸãã â ãã¡ã€ã«ã®å Žæã¯ã©ãåãïŒ Â ã¯ãŒãã³ã°ã®äžèº«ããç§»åå
ã®ãã©ã³ãïŒdevelopïŒã®ç¶æ
ã«çœ®ãæãããŸãã â¡ ã³ãããïŒå±¥æŽïŒã¯ã©ãåãïŒ Â ã³ãããã¯å¢ããŸããã HEAD  ã  main  ãã  develop  ãžç§»ãã ãã§ãã ãç§»åããšã¯ã HEAD  ãåãããã¯ãŒãã³ã°ããã®å Žæã®å
容ã«åãããããšãæ°ããã³ãããã¯äœããŸãããïŒæã® Â checkout  ã¯ãç§»åããšããã¡ã€ã«ã®åŸ©å
ãã®2圹ãå
ŒããŠçŽããããã£ããããããŸã¯  switch  㚠 restore  ã«åãããŸãããïŒ git reset  ã¯ã ãã©ã³ããš Â HEAD  ããæå®ããéå»ã®ã³ããããžæ»ã ã³ãã³ãã§ãã --soft / --mixed / --hard  ã®3ã€ã®ã¢ãŒããããããâ¡ ã³ãããïŒå±¥æŽïŒãæ»ããã®ã¯ã©ããå
±éã§ããâ ã©ããŸã§ãã¡ã€ã«ãå·»ã蟌ãã§æ»ãããã ããéããŸãã3ã€ãå¥ã
ã®ã³ãã³ããšããŠèŠãŠãããŸãããã git reset –soft ãã©ã³ããš Â HEAD  ã ã ãåã®ã³ããããžæ»ããŸããã¹ããŒãžã³ã°ãšã¯ãŒãã³ã°ã®äžèº«ã¯ããã®ãŸãŸæ®ããŸãã â ãã¡ã€ã«ã®å Žæã¯ã©ãåãïŒ Â åãããŸãããç·šéãã  "Hello2"  ã¯ãã¹ããŒãžã³ã°ã«ãã¯ãŒãã³ã°ã«ãæ®ã£ããŸãŸã§ãã â¡ ã³ãããïŒå±¥æŽïŒã¯ã©ãåãïŒ Â main  㚠 HEAD  ãåã®ã³ããã  A Â ãžæ»ããŸããåãæ®ããã  B  ã¯ãå®ã¶ããããç¶æ
ã«ãªããŸãïŒãã°ããã¯åŸ©å
ã§ããŸãïŒã ãã³ãããã ãåãæ¶ãããïŒå€æŽã¯å
šéšæ®ãããïŒããšãã«äœ¿ããŸãã git reset –mixedïŒæ¢å®ïŒ --soft  ã«å ããŠã ã¹ããŒãžã³ã°ã åã®ã³ãããã®ç¶æ
ãžæ»ããŸããã¯ãŒãã³ã°ã®å€æŽã¯æ®ããŸãããªãã·ã§ã³ãä»ããªããšãã¯ãããã«ãªããŸãã â ãã¡ã€ã«ã®å Žæã¯ã©ãåãïŒ Â ã¹ããŒãžã³ã°ã ãã  A  ã®ç¶æ
ïŒ "Hello" ïŒã«æ»ããŸããã¯ãŒãã³ã°ã®ç·šé  "Hello2" Â ã¯æ®ããŸãã â¡ ã³ãããïŒå±¥æŽïŒã¯ã©ãåãïŒ Â --soft  ãšåããã main  㚠 HEAD  ã  A Â ãžæ»ããŸãã ããã£ãã add ãåãæ¶ããŠãããäžåºŠã¹ããŒãžã³ã°ãçŽãããããšãã«äœ¿ããŸãã git reset –hard ãã©ã³ãã» HEAD ã»ã¹ããŒãžã³ã°ã»ã¯ãŒãã³ã°ãã ãã¹ãŠ åã®ã³ãããã®ç¶æ
ãžæ»ããŸãã â ãã¡ã€ã«ã®å Žæã¯ã©ãåãïŒ Â ã¹ããŒãžã³ã°ãã¯ãŒãã³ã°ã  A Â ã«æ»ããŸãã ç·šéãã  "Hello2" Â ã¯æ¶ããŠããŸã ã®ã§ã3ã€ã®äžã§å¯äžãåãæ±ãã«æ³šæãå¿
èŠãªã¢ãŒãã§ãã â¡ ã³ãããïŒå±¥æŽïŒã¯ã©ãåãïŒ Â ãã¡ãã  main  㚠 HEAD  ã  A Â ãžæ»ããŸãã 3ã€ã®ã¢ãŒãã«å
±éããã®ã¯ããã©ã³ããš HEAD ãåã®ã³ããããžåãããããšãéãã¯ããã¡ã€ã«ãã©ããŸã§éé£ãã«ããããã ãããšèŠããŠããã°åãéããŸããã git clean git clean  ã¯ã Git ã管çããŠããªãïŒè¿œè·¡ãããŠããªãïŒãã¡ã€ã«ããã¯ãŒãã³ã°ããåé€ãã ã³ãã³ãã§ãã ããã§ã æªè¿œè·¡ïŒuntrackedïŒ ããšããèšèã説æããŠãããŸããæªè¿œè·¡ãšã¯ã äžåºŠã  git add  ãããŠããªããã¡ã€ã« ã®ããšã§ããæ°ããäœã£ãã¡ã¢ããã«ãã®çæç©ãªã©ãGit ã«ãŸã äžåºŠãç»é²ããŠããªããã¡ã€ã«ããããã«ããããŸããéã«ãäžåºŠã§ã  git add ïŒãã³ãããïŒãããã¡ã€ã«ã¯ã远跡ãããŠããïŒtrackedïŒãç¶æ
ã«ãªããŸãã â ãã¡ã€ã«ã®å Žæã¯ã©ãåãïŒ Â æªè¿œè·¡ãã¡ã€ã«ïŒ temp.txt ïŒã ãããã¯ãŒãã³ã°ããæ¶ããŸããäžåºŠã§ã远跡ããããã¡ã€ã«ïŒ E.txt ïŒã¯å®ãããŸãã â¡ ã³ãããïŒå±¥æŽïŒã¯ã©ãåãïŒ Â äœãèµ·ããŸããã clean Â ãæ¶ãã®ã¯ãGit ãäžåºŠãç»é²ããŠããªãïŒæªè¿œè·¡ã®ïŒãã¡ã€ã«ãã ããäžåºŠã§ã  git add  ãããã¡ã€ã«ã¯ Git ãå®ã£ãŠãããŸãã git rebase git rebase  ã¯ã èªåã®ã³ãããããå¥ã®åå°ïŒãã©ã³ãã®å
端ïŒã®äžã«äœãçŽããŠç©ã¿çŽã ã³ãã³ãã§ãã â ãã¡ã€ã«ã®å Žæã¯ã©ãåãïŒ Â ç©ã¿çŽããããšã®ç¶æ
ããããŒã«ã«ãšã¯ãŒãã³ã°ã«åæ ãããŸãã â¡ ã³ãããïŒå±¥æŽïŒã¯ã©ãåãïŒ Â feature  ã®ã³ããã  C ã» D  ãã main  ã®å
端  B  ã®äžã«  Câ² ã» Dâ² Â ãšããŠäœãçŽãããŸã ãäžèº«ãåãã§ãã**æ°ããã³ãããïŒå¥ã®ããã·ã¥ïŒ**ã«ãªããŸããå
ã® Â C ã» D  ã¯ã©ããããæãããªããªãããããŠæ¶ããŸãã 第1ç« ã®ããªããžã§ã¯ãã¯äžå€ã倿Žã¯âäœãçŽããŠå·®ãæ¿ãâã§ããèµ·ããªãããããã¡ã°ãã¯ã£ããçŸããã®ã rebase ã§ããã ãããããå
±ææžã¿ã®ãã©ã³ãã§äœ¿ããšäºæ
ã®ããšã«ãªããŸãã ããã§äž»èŠãªã³ãã³ããäžå·¡ããŸãããã©ããçµå±ã â ãã¡ã€ã«ã®å Žæ ãš **â¡ ã³ãããïŒå±¥æŽïŒ**ã®çµã¿åããã§ãããªãã£ãããšããå³ã§ç¢ºããããããšæããŸãã ãŸãšã ãããã§ããã§ããããïŒãã®èšäºãGitãçè§£ããããã®ã圹ã«ç«ãŠãã°å¹žãã§ãã ã芧ããã ãããããšãããããŸãïŒ ãã®æçš¿ã¯ã圹ã«ç«ã¡ãŸãããïŒ åœ¹ã«ç«ã£ã 圹ã«ç«ããªãã£ã 0人ããã®æçš¿ã¯åœ¹ã«ç«ã£ããšèšã£ãŠããŸãã The post äžçäžãããã¿ãæ·±ããããããªãGit first appeared on SIOS Tech Lab .
ã¿ãªããããã«ã¡ã¯ïŒæ¬ããã°ã§ã¯Apache Kafkaã®åŒ·åãªã³ã¢æŠå¿µã§ãã ãã³ã³ã·ã¥ãŒããŒã°ã«ãŒãïŒConsumer GroupïŒã ãåãäžããŠãããŸããä»åã¯PythonãštmuxïŒ4åå²ã¿ãŒããã«ïŒã䜿ãããããã¯ãž100ä»¶ã®ã€ãã³ããéä¿¡ããéã®æåãšãè£åŽã®åæ£ããžãã¯ã«ã€ããŠæ€èšŒããèšé²ããŸãšããŸããã 1. ã³ã³ã·ã¥ãŒããŒã°ã«ãŒãïŒConsumer GroupïŒãšã¯ Kafkaã¯ãããŒã¿ãåãåãåä¿¡ã¢ããªããã°ã«ãŒãããšããåäœã§ç®¡çããŸãããã®ã°ã«ãŒãã®çµã¿æ¹ã«ãã£ãŠã1ã€ã®ãããã¯ã«å¯ŸããŠ2ã€ã®ç°ãªãæåãåæã«å®çŸã§ããŸãã ç°ãªãã°ã«ãŒãé â ãããµãåïŒã€ãã³ãã®è€è£œïŒïŒ å¥ã®ã°ã«ãŒãå士ã«ã¯ããŸã£ããåãããŒã¿ãããããå
šä»¶ã³ããŒïŒè€è£œïŒãããŠé
ä¿¡ãããŸãã åãã°ã«ãŒãå
â ãã¥ãŒåïŒè² è·åæ£ïŒïŒ åäžã°ã«ãŒãå
ã®ãµãŒããŒå士ã§ã¯ãããŒã¿ãéè€ããããšãªã綺éºã«åæ
ããŠé
ä¿¡ãããŸãã 2. æ€èšŒãã¢ã®å®è¡æé ãšç°å¢æ§æ ããŒãã£ã·ã§ã³æ°ãã3ãã«èšå®ããããã㯠five ãäœæããã¿ãŒããã«ãtmuxã§4åå²ããŠä»¥äžã®æé ã§æ€èšŒãè¡ããŸããã ãå·Šäžã»å·Šäžãã€ã³ã Group-XïŒ2å°èµ·åïŒïŒ è² è·åæ£ãæ€èšŒããã³ã³ã·ã¥ãŒããŒïŒConsumer-X1 / X2ïŒ ãå³äžãã€ã³ã Group-YïŒ1å°èµ·åïŒïŒ ã€ãã³ãã®è€è£œïŒå
šä»¶åä¿¡ïŒãæ€èšŒããã³ã³ã·ã¥ãŒããŒïŒConsumer-Y1ïŒ ãå³äžãã€ã³ã ProducerïŒ éä¿¡åŽãã userA 50ä»¶ã userB 50ä»¶ïŒèš100ä»¶ïŒãé£ç¶éä¿¡ 3. 䜿çšããPythonã¹ã¯ãªãã æ€èšŒã«äœ¿çšããäž»èŠãªãœãŒã¹ã³ãŒãã§ããïŒäºåã« pip install confluent-kafka ã®å®è¡ãå¿
èŠã§ãïŒ â åä¿¡åŽïŒconsumer_flexible.py from confluent_kafka import Consumer import sys group_id = sys.argv[1] consumer_id = sys.argv[2] conf = { 'bootstrap.servers': 'localhost:9092', 'group.id': group_id, 'auto.offset-reset': 'earliest' } consumer = Consumer(conf) consumer.subscribe(['five']) print(f"--- ã{consumer_id}ã ã°ã«ãŒãã{group_id}ããšããŠããŒã¿åŸ
ã¡äž... ---") try: count = 0 while True: msg = consumer.poll(1.0) if msg is None: continue if msg.error(): continue count += 1 print(f"[{count}ä»¶ç®] Key: {msg.key().decode('utf-8')}, Value: {msg.value().decode('utf-8')}") except KeyboardInterrupt: pass finally: consumer.close() â éä¿¡åŽïŒkey_producer.py from confluent_kafka import Producer import time p = Producer({'bootstrap.servers': 'localhost:9092'}) print("ããŒã¿ã®éä¿¡ãéå§ããŸãïŒ100ä»¶ïŒ...") for i in range(50): p.produce('five', key='userA', value=f'data-A-{i}') p.produce('five', key='userB', value=f'data-B-{i}') p.flush() time.sleep(0.05) print("éä¿¡å®äº") 4. ãã¢ã®å®è¡çµæãšåä¿¡ä»¶æ° âŒ ãã¢å®è¡ç»é¢ïŒãããã¥ãŒãµãŒããã€ãã³ãéä¿¡äžã®æ§åïŒ ã€ãã³ãéä¿¡å®äºåŸãåãã€ã³ã«ç«ã¡äžããã³ã³ã·ã¥ãŒããŒã®åä¿¡ãã°ããã³æçµçãªåèšä»¶æ°ã¯ä»¥äžã®éãã«ãªããŸããã ã°ã«ãŒãå ãµãŒããŒID æçµåä¿¡ä»¶æ° ãã°ããèŠããæ±ºå®çãªç¹åŸŽ Group-X (2å°æ§æ) Consumer-X1 50ä»¶ userB ã®ã€ãã³ãã®ã¿ã100%åºå®åä¿¡ïŒè² è·åæ£ïŒ Consumer-X2 50ä»¶ userA ã®ã€ãã³ãã®ã¿ã100%åºå®åä¿¡ïŒè² è·åæ£ïŒ Group-Y (1å°æ§æ) Consumer-Y1 100ä»¶ å
šä»¶ïŒ userA userB ïŒãæŒããªãåä¿¡ïŒã€ãã³ãã®è€è£œïŒ ãªãèªåçã«ç¶ºéºã«åãããã®ãïŒè£åŽã®ä»æ§ ãœãŒã¹ã³ãŒãåŽã«ã¯å²ãåœãŠã®èšå®ã1è¡ãèšè¿°ããŠããŸããããããªã®ã«ãã®çµæã«ãªã£ãã®ã¯ãKafkaã®ããã©ã«ãã®ä»æ§ã«ãããã®ã§ãã Keyã«ãããåºå®é
眮ãïŒ éä¿¡æã«ãŠãŒã¶ãŒåãKeyã«æå®ãããããKafkaãèªåçã«ããã·ã¥å€ãèšç®ãã userA ã¯ããŒãã£ã·ã§ã³2ã userB ã¯ããŒãã£ã·ã§ã³1ãžãšåºå®é
眮ããŸããã éè€ãªããèªåå²ãåœãŠãïŒ 3ã€ã®ããŒãã£ã·ã§ã³ã«å¯ŸããŠåãã°ã«ãŒãã«2å°ã®ãµãŒããŒããããããKafkaã¯è£åŽã§èªåçã«ä»äºãå²ãæ¯ããŸããïŒX1ãããŒãã£ã·ã§ã³1ãX2ãããŒãã£ã·ã§ã³2ãæ
åœïŒã ãã®2ã€ã®æšæºä»æ§ãåäœããçµæã ãè² è·ãå®å
šã«åæ£ããã€ã€ãåããŠãŒã¶ãŒã®ããŒã¿ã¯å¿
ãåããµãŒããŒã«å±ãïŒé åºæ§ã®ä¿èšŒïŒã ãšããæåãå®å
šèªåã§å®çŸããŠããŸãã 5. ãŸãšã ä»åã®å®èšŒãã¢ãéããŠãã³ã³ã·ã¥ãŒããŒã°ã«ãŒããåããããšã§ãã€ãã³ãã®è€è£œïŒäžŠååŠçïŒããã°ã«ãŒãå
ã§ã¯ãè² è·åæ£ã»é åºä¿èšŒããå®ç§ã«è¡ããããšã確èªã§ããŸããã ããŒã¿éãå¢ããŠããããã°ã©ã ã1è¡ãå€ããã«ã³ã³ã·ã¥ãŒããŒã®å°æ°ãå¢ããã ãã§åŠçèœåãæ°Žå¹³ã¹ã±ãŒã«ã§ãããKafkaã®æŽç·Žãããèšèšã®çŸãããäœæã§ããæ€èšŒãšãªããŸããã ã芧ããã ãããããšãããããŸãïŒ ãã®æçš¿ã¯ã圹ã«ç«ã¡ãŸãããïŒ åœ¹ã«ç«ã£ã 圹ã«ç«ããªãã£ã 0人ããã®æçš¿ã¯åœ¹ã«ç«ã£ããšèšã£ãŠããŸãã The post Apache Kafkaã®ã³ã³ã·ã¥ãŒããŒã°ã«ãŒããšã¯ïŒïœã€ãã³ãã®ãè€è£œããšãè² è·åæ£ãã«ã€ã㊠first appeared on SIOS Tech Lab .
ã©ãïŒæè¿ãã¹ã©ã€ããAIãšäžç·ã«ã¬ãã¥ãŒãç¶ããŠããéŸã¡ããã§ãã æ£çŽã«èšããšãã»ãããŒè³æã¥ããã¯å
šç¶åŸæãããªãã§ãã話ã®çµã¿ç«ãŠãèŠãæ¹ããäžæã人ã«ã¯ããããããªããªããã ãããããèªåãäœã£ãã¹ã©ã€ãã¯AIã«ã¬ãã¥ãŒãããŠãèªåã§ã¯æ°ã¥ããªã穎ãåããããã«ããŠãŸããå°éå€ã®ããšã»ã©ãAIã®ãã§ãã¯ãæåããä»çµã¿ãšããŠçµã¿èŸŒãã§ãããããã§ãããã ã§ãæåã«ãã£ãã®ãã1äœã®AIã«å
šéšãããããã§ãããçµæãæéã ããããã£ãŠåã«é²ã¿ãŸããã§ããã AIã«ãã¬ãã¥ãŒããŠããšäžžæããããšãè¿ã£ãŠããã®ã¯ãå
šäœçã«ããæŽçãããŠããŠãæµããèªç¶ã§ããã¿ãããªææ³ãããããŸããåã¯ã€ããŠãªããã©ããã§ãäœãçŽãã°ããã®ïŒãã£ãŠãªããã€ãåœããéãã®ãªãææ³ã§ãããããã穎ã¯åãŸããªãã ãã®æ£äœã¯ã·ã³ãã«ã§ã1äœã«ãããæãã«èŠãŠããšå
šéšããããŠããããªãã§ãããã芳ç¹ãæ··ãããšãæ¡ç¹ã®åæãŸã§æ··ãããè«çãèŠãç®ãšã衚çŸã®çããå©ãç®ã¯ãããããåæ Œã©ã€ã³ãéã§ããåæã«ãããããšæã¡æ¶ããã£ãŠããŸãæŠãè¯ãã®ã§ã¯ãã«èœã¡ããã ããåã¯ã芳ç¹ããšã«ãšãŒãžã§ã³ããåããŠæã£ãŠãŸããããã§èšããšãŒãžã§ã³ã㯠Claude Code ã®ãµããšãŒãžã§ã³ã ã§ã .claude/agents/ ã«èгç¹ããšã®å®çŸ©ã眮ããŠãããã€ã§ããããããæç¢ºãªèгç¹ãæãããŠèªåã®æèã®è¶³ããªãéšåãåããããã«ããŠããŸãã ãã®ã芳ç¹ããšã«åãããããæ¹ã¯ãåã®èšäºã AIãšã¹ã©ã€ããäœãé²ãæ¹ïœããªããéããä¿®æ£ã«ãŒããçµãããªã人㞠ãã§è§Šãããã®ã®ãäžèº«ã¯æžããããã«å
éãããŠããã§ããããä»åã¯ãã®ååã§ããæåãããããã«åããŠããããããªãã1äœã«æ¬²åŒµãããŠæŽŸæã«å€±æããçµæãããªã£ãããšãã話ã蟌ã¿ã§ç޹ä»ããŸãã ã¬ãã¥ãŒãããææïŒoutline / storyboard / slideïŒ ã¬ãã¥ãŒã®è©±ã«å
¥ãåã«ãäœãAIã«æž¡ãã®ããæããŠãããŸããããããšãŒãžã§ã³ãèšèšã§ã¯ãã£ãã倧äºã§ãã åãã¬ãã¥ãŒã«ãããŠãã®ã¯ãã»ãããŒã®è³æã§ããã§ãã¹ã©ã€ãã¯ãããªãäœããã«ã3段éã«åããŠäœã£ãŠãŸããæ®µéããšã«ã決ããããšããéã£ãŠããŠãããããå¥ã®ãã¡ã€ã«ãšããŠæ®ããã§ãããã outlineïŒåæã¡ã¢ïŒ ïŒ èª°ã«åããŠãäœãæã¡åž°ã£ãŠããã£ãŠãã©ãã«çå°ããããã話ã®éªšæ Œã ããæ±ºããæ®µéã§ããã¹ã©ã€ãã®ææ°ããã¶ã€ã³ããŸã ç¡ãããããããäœãäŒããäŒãªã®ãããæ¡ãããã®ææã storyboardïŒè«çã¡ã¢ïŒ ïŒ outline ãåããŠã1ã¹ã©ã€ãã«äœãåºããã»ã©ãããé ã§ç¹ãããŸã§èœãšããæ§ææ¡ããã ããã¶ã€ã³ã¯èŒããŸãããæåã ãã«ããŠããè©±ã®æµãã«é£èºãæãããªãããã ããèŠãããã®ææã§ãã slideïŒå®æç©ïŒ ïŒ å®éã«æåœ±ããæ¬çªã®ã¹ã©ã€ããããã§åããŠãå³ã»ã¬ã€ã¢ãŠãã»åŒ·èª¿ã¿ãããªèŠãæ¹ãä¹ããŸããèãæãç®ã«ãããã®ã ãã€ã³ãã¯ã3ã€ãšããæã£ãŠããæ
å ±ãéããããšã§ããoutline ã¯éªšæ Œããæã£ãŠãªããstoryboard ã¯è«çãæã£ãŠããã©èŠãç®ã¯æã£ãŠãªããslide ã¯èŠãç®ãŸã§å
šéšæã£ãŠãã ãããŠãããå¹ããã§ããã ã¬ãã¥ãŒãšãŒãžã§ã³ãã«äœãæž¡ããã§ãèŠãã芳ç¹ãå€ãã ãã§ãããè«çã®éããèŠãŠã»ãããªã storyboard ãæž¡ããèŠãæ¹ãåºãããèŠãŠã»ãããªã slide ãæž¡ããéã«ãèãæç®ç·ã§èŠãŠã»ãããšãã« storyboard ã®ãæå³ã¡ã¢ããŸã§æž¡ããšãããã£ãŠæ¬ç©ã®èãæãšãºã¬ãè©äŸ¡ã«ãªãïŒããã¯3äœç®ã§è©³ãã話ããŸãïŒã ã©ã®äžå®ããã©ã®ææã§ãã©ã®ãšãŒãžã§ã³ãã«èŠããããããããæ¬é¡ã§ãã èŠãŠã»ããããšã¯ã3ã€ã®äžå®ãã«åããã ã¹ã©ã€ããåŸåŸ©ã§è©°ããŠãããšãæ§è³ªã®éãäžå®ãåºãŠããŸããåã¯ãã£ãã3çš®é¡ã«åããŠèããŠãŸãã 1. ãããã ãã©ç©ºçãããªãã storyboard ã§è«çãéã㊠slide ã«ããŠããåºæ¥äžãããããããã ãã©äœãèšã£ãŠãªããã«ãªããã¡ã§ãããæé©åããã·ãŒã ã¬ã¹ããäŒŽèµ°æ¯æŽãã¿ãããªæ»ãã èšèã䞊ãã§ããŠãèãæãå·ãããã€ãããã¯è¡šçŸã®è³ªã0ç¹èµ·ç¹ã§å©ã奎ã«èŠãããŸãã 2. ç« ããŸããã§è«çãéã£ãŠãã ã¹ã©ã€ãã1æãã€åŸåŸ©ã§çŽããŠãããšãåã®ç« ãšåŸã®ç« ã®æŽåãæ°ã¥ããªããã¡ã«åŽ©ããŠãããã§ãããããããã§èšã£ãããšãåŸã§ååãããŠããªãããå
é£ãããŠããŸã£ããã¿ãããªãã€ãããã¯è«çã®æŽåã ããèŠã奎ã«ãstoryboard ããšæž¡ããŠèŠãããŸãã 3. ãã«ãœãç®ç·ã§èŠãæ¹ãåºããã è«çãéã£ãŠããŠã人ã«åºãããšã¯éããªãããšããã®ã¯åã®èšäºã§æ£ã
èšããŸãããããçŸå ŽãªãŒããŒã«åããã¹ã©ã€ããªããçŸå ŽãªãŒããŒã®ç®ç·ã§ãããã§æž©åºŠãäžãã£ããäžãã£ããããèŠãããããããã¯ãã«ãœãã«ãªããã奎ã«èŠãããŸãã ãã®3ã€ãèŠæ¹ã®åæããŸãã§éãªãã§ãããã ããå¥ã®å¥Žã«èŠãããããŸãšãããšè¡šã«ãããšãããªããŸãã ã¹ã©ã€ãã®äžå® èŠããã奎 æž¡ããã® ãã€äœ¿ãã ãããã ãã©ç©ºçãããªãã harshïŒ0ç¹èµ·ç¹ïŒ slide slideãããªããéããæ ç« ããŸããã§è«çãéã£ãŠãã logicïŒ100ç¹èµ·ç¹ïŒ storyboardïŒslideã®è©²åœç¯å² ç« æ«ã»å·®ãæ»ãåŸã®æŽåãã§ã㯠ãã«ãœãç®ç·ã§èŠãæ¹ãåºããã audience-reaction 該åœç« ã®slideã ã èŠãæ¹ãè©°ããæ harsh / logic / audience-reaction ãšãã3äœã§ããããããã®äžèº«ã¯åŸåã§è©³ããèŠãŠãããŸãããå
ã«äžç¹ã ãèšã£ãŠãããšã䜿ãã¿ã€ãã³ã°ã芳ç¹ããšã«éããšããã®ã倧äºãªãã€ã³ãã§ããharsh 㯠slide ãåºæ¥ãŠãã䜿ããlogic 㯠outline 段éã§ã storyboard 段éã§ã䜿ãããaudience-reaction ã¯èŠãæ¹ãè©°ããã¿ã€ãã³ã°ã§äœ¿ãããäœãæž¡ããããšããã€äœ¿ããããã»ããã§èšèšã«ãªã£ãŠãŸãã ã§ã¯1äœãã€èŠãŠãããŸãã 1äœç®ïŒãããã ãã©äžèº«ã空ã£ãœããå©ãïŒharashïŒ æåã®äžå®ããåºæ¥äžãã£ãã¹ã©ã€ãããããã ãã©äœãèšã£ãŠãªããããããèŠãããã®ã harsh-review-agent ã§ãã ããã€ã®èšèšã¯ã·ã³ãã«ã§ãæ¡ç¹ãã0ç¹ïŒãŽãç®±è¡ãïŒãããå§ããŸããå ç¹ãæ¢ãããããªããŠãããªãããã0ç¹ãªã®ããã®èšŒæ ãç©ã¿äžããŠãããå®çŸ©ã«æžããŠãã絶察ã«ãŒã«ãããã§ãã 絶察ã«ãŒã«ïŒharsh-review-agent ããïŒ 1. ç§°è³ã®çŠæ¢: æšæ¶ããçŽ æŽãããæ§æã§ãããšãã£ãããžãã£ããªãã£ãŒãããã¯ã¯ äžåäžèŠã100% æ¹å€çã»æ¹åçãªèŠç¹ã ãã§åçããã 2. 0 ç¹ã®æ ¹æ ãæ¢ã: è³æã¯çŸæç¹ã§ã0 ç¹ïŒãŽãç®±è¡ãïŒãã ãšä»®å®ããã å ç¹èŠçŽ ãæ¢ãã®ã§ã¯ãªããããªãããã 0 ç¹ãªã®ãããšãã蚌æ ãæç€ºããã åºåäžã®æ³šæïŒ - ãçŽ æŽãããããè¯ãç¹ãšããŠããªã©ã®ã¯ãã·ã§ã³èšèã¯äžå䜿ããªãã - AI çæè³æã®çŽ ç¹ã¯ 10ã30 ç¹å°ãæ®éãšå¿åŸãã ãæ»ãã èšèãã®ãªã¹ããå®çŸ©ã«çŒã蟌ãã§ãã£ãŠããæé©åããã·ãŒã ã¬ã¹ã«ããäŒŽèµ°æ¯æŽããDXæšé²ããææŸããªããªããã¿ãããªãã€ã§ãã䞊ã¹ãŠã¿ããšããããã¡ã®ã¹ã©ã€ãã«ããã£ããã£ãŠãªããŸãããïŒç¬ïŒããããå
šéšæŸã£ãŠããªãããã空çããäœãé ãããã®èšèãããæçœªããŠãããŸãã å®éã«åããåºåãå°ãèŠãããšããããªæãã§ããã»ãããŒè³æã«å¯ŸããŠ25ç¹ãåºãŠãææã®äžã€ãããã Slide #14ãæç 1 å¶æ¥æ¥ã§å°å
¥ããçŸå®çã§ãªããæ
ã·ã¹çµéšè
ãªãã1 å¶æ¥æ¥ã§ Azure ããã³ãäœæã»Entra ID 飿ºã»éåãããã¯ãŒã¯ç³è«ã»ããŒã¿åã蟌ã¿èš±å¯ã»ã»ãã¥ãªãã£ã¬ãã¥ãŒæ¿èªãéãäŒç€Ÿãååšããªãããšã¯åžžèã ããããŸã§èšããïŒç¬ïŒãã£ãŠãªããŸããã§ãå®éããã穎ãéã£ãŠãªããã§ããããææãèªãã ç¬éã«ããã確ãã«ããšãªã奎ã§ããã¯ãã·ã§ã³èšèãäžåãªããããããã©ããæ¬åœã«åé¡ãèŠããŠããŸãã ãã ã䜿ãã¿ã€ãã³ã°ã¯ã¹ã©ã€ããåºæ¥äžãã£ãŠãããã§ãããªãããšãããšãããã outline ã®æ®µéã§äœ¿ããšæŽŸæã«æŽèµ°ãããã§ãããæ¬¡ã®è©±ããŸãã«ããã§ãã 2äœç®ïŒãã®èŸå£ãæŽèµ°ãã話ïŒlogicïŒ ãããèšäºã®å±±ã«ãªããŸããæ£çŽã«è©±ããŸãã æåãharsh ã1äœäœ¿ãç¶ããŠããã§ãããoutline ãäœã£ãŠ harsh ã«æããŠãææã«å¯Ÿå¿ããŠåã³æããŠããŸãææãæ¥ãŠå¯Ÿå¿ããŠããšããã®ã3ãµã€ã¯ã«åãããã§ããã çµææŽèµ°ããŠãoutline ã®è¡æ°ã 685 è¡ãã 772 è¡ã«èšåŒµããŸãããã¹ã³ã¢ã¯47ç¹ â 44ç¹ãšäžããç¶ããŸãããæ¹ä¿®ããã°ããã»ã©æªåããè² ã®ã«ãŒãã§ãã harsh ã¯ããªã0ç¹ããã®èšŒæ ãå¿
ãèŠã€ããŠããèšèšã«ãªã£ãŠããã®ã§ãææã«å
šéšå¯Ÿå¿ããŠäœãã远å ãããšãä»åºŠã¯ãã®è¿œå éšåããå¯åºŠéå€ããå
責衚æã«èŠããããšããŠæ°ããªææã«ãªããã§ããã ã¬ãã¥ãŒãåããŠåãåçããå
容ãããã¡ãã®ãšãŒãžã§ã³ããäœããã£ããã«ãªããŸããã éŸã¡ãã ããŒéå°ãããªãããªïŒ è«ççã«ç Žç¶»ããŠããªããã°ãæ°æã¡æ¬¡ç¬¬ã ãšæããã ãã ãã®ãšãã«æ°ã¥ããã®ããharsh ã¯ãè«çç Žç¶»æ€åºåšããããªããŠãæœççãã£ã«ã¿ãŒãã ã£ããšããããšã§ããã¹ã©ã€ãã®è¡šçŸãæ°ã«å
¥ããªããã©ãããããºã¯ãŒããå
¥ã£ãŠããã©ãããå¯åºŠã奜ã¿ãã©ãããããã0ç¹èµ·ç¹ã§å
šéšäžŠã¹ãŠãããè«çãéã£ãŠããã©ãããšã¯å¥ã®è©±ãªãã§ãã harsh ã®ææããè«çç Žç¶»ããšã衚çŸã®å¥œã¿ãã§åé¡ããŸãããçµæãéåæ°ãã衚çŸã®å¥œã¿ããšããçµè«ã«ãªããŸãããè«ççã«ã¯æç«ããŠããã®ã«ãå»¶ã
ãšç²æ¢ããããç¶ããŠããããšããããšã§ãã ã ããè«çã®æŽåã ãèŠãããªããå
šç¶éãçžãããããå¥ã®å¥Žãç«ãŠããããªããããã§äœã£ãã®ã logic-reviewer ã§ããå®çŸ©ã®æ žã¯ãããªã£ãŠããŸãã 絶察ã«ãŒã«ïŒlogic-reviewer ããïŒ ### 1. è«çç Žç¶»ã® 5 é¡åã®ã¿ææãã 以äžã® 5 é¡åã®ã¿ãæ€åºããããã以å€ã®ææã¯åºåçŠæ¢: 1. åæãšçµè«ã®æ¥ç¶å€±æ 2. çšèªã®æå³å€å 3. ååãããªãçæ¿ 4. äŸåé¢ä¿ã®æ¬ èœ 5. å
éšççŸ ### 2. çŠæ¢äºé
以äžã¯è«çç Žç¶»ã§ã¯ãªããããæ¬ agent ã§ã¯äžåèšåããªã: - ããºã¯ãŒãåã»é®®åºŠå€å®ã»æäžŠã¿èªå® - ç©çéçïŒã30 åã§ 15 æã¯è©°ã蟌ã¿ãããçïŒ - ãã«ãœãã®ææ
èªåŒµïŒãâ¯â¯ããã¯é¢è±ããããåžãç«ã€ãçïŒ ### 4. è«çç Žç¶»ããªããã°çŽ çŽã« 100 ç¹ ç¡çã«æ¬ é¥ãæ¢ããªãã5 é¡åã«è©²åœããªããã°ãè«ççã«ç Žç¶»ãªãããšå ±åããã ç Žç¶»ããªããã°æœã 100 ç¹ãã念ã®ãããã匷ããŠèšãã°ããªã©ã®èè¶³ãæžããªãã ãã€ã³ãã¯ãç Žç¶»ããªããã°æœã100ç¹ããšãèè¶³ãæžããªããã§ããharsh ããå¿
ãäœããèŠã€ããŠãããèšèšãªã®ãšãèµ·ç¹ãçéã«ãªã£ãŠãŸãããã 䜿ãåãã¯ãããªããŸãããharsh 㯠slide ãåºæ¥äžãã£ãŠããã衚çŸã®ç©ºçããå©ã圹ãlogic 㯠outline 段éãããç« ããŸããã è«çã®æŽåã ããèŠã圹ãåãè³æãéã®èµ·ç¹ããèŠããã¢ã§ãã 1äœã«å
šéšãããããèµ·ç¹ããšã«éã®å¥Žããã1äœç«ãŠãŠãäœ¿ãæ®µéãåããããšããã®ãããã§ã®æ°ã¥ãã§ãã 3äœç®ïŒèãæã«ãªããã£ãŠãããïŒaudience-reactionïŒ 3äœç®ã¯ audience-reaction-agentãããã¯ãã«ãœãã«ãªããã£ãŠãã¹ã©ã€ããèããŠããäžäººã®èŽè¡ãšããŠæž©åºŠãè¿ããŠããã奎ã§ãã åæ®µã§ã誰ã®ç®ç·ã§èŠãæ¹ãè©äŸ¡ãããããšèšãç¶ããŸãããããoutline ã§ãã«ãœããåæããŠãstoryboard ã§ãã®ãã«ãœãç®ç·ã§çµã¿ç«ãŠãŠããããšãã話ã§ãããaudience-reaction ã¯ãã®å€æãå§è²ãããã®ã§ãã ããã€ã®èšèšã§äžçªå¹ããŠãã®ã¯ããäœãæž¡ãããã§ã¯ãªããäœãæž¡ããªãããã§ããå®çŸ©ã®äžå€æ¡ä»¶ã«ããæžããŠãããŸãã äžå€æ¡ä»¶ïŒaudience-reaction-agent ããïŒ - æå®ã¹ã³ãŒãã®å€ïŒåŸç¶ã®ç« ã»ã¹ã©ã€ãïŒã¯èªãŸãªãã»å
èªã¿ããªããããªãã¯ä»ãŸãã« ãã®ç¯å²ãèããŠããæäžã§ããã®å
ã«äœãæ¥ãããç¥ããªã ïŒæ¬ç©ã®èŽè¡ãšåãéšåæ
å ±æ¡ä»¶ïŒãæå®ãã¡ã€ã«ã®æå®ç¯å²ã ããèªãã - storyboard ã®ãæå³ãããã©ã³ãžã·ã§ã³æå³ãã¯ç»å£è
ã®å
éšã¡ã¢ïŒèŽè¡ã«ã¯èŠããªãã ããããæ ¹æ ã«ããªããã衚瀺ããšãããŒã¯ãã ãããåãåãã - ã¹ã³ã¢ãä»ããªããç¹æ°åã»ã©ã³ã¯ä»ãã¯ããªãã - æçœªããªãïŒãã㯠harsh ã®ä»äºïŒã ãæ¬ç©ã®èŽè¡ãšåãéšåæ
å ±æ¡ä»¶ããšããã®ãèã§ãå
ã®ç« ãæž¡ããªãããšã§å
èªã¿ã§ããªããªããŸããèŠããå±éã®ã¹ã©ã€ãããåŸã§ã¡ãããšååãããã®ã§å€§äžå€«ã§ãããšã¯è©äŸ¡ã§ããŸããã storyboard ã®æå³ã¡ã¢ãæž¡ããªãã®ãåãçç±ã§ãããããã§ã¯èŽè¡ã®äžå®ãå
ã«åºããŠã次ã®ã¹ã©ã€ãã§è§£æ¶ããèšèšã§ãããšããã¡ã¢ããã£ããšããŠãèŽè¡ã¯ãããèŠãŠããªããèŠããªããã®ãæ ¹æ ã«ããè©äŸ¡ã¯ãæ¬ç©ã®äœéšãšå€ããŠããŸãã åæ®µã§ãäœãæž¡ããã§ååæ±ºãŸãããšèšããŸãããããaudience-reaction ã¯ãã®å®èšŒã§ãæž¡ããªãæ
å ±ãèšèšããããšã§è©äŸ¡ã®ç²ŸåºŠãäžããŠãã奎ã§ãã åãåã£ãã¬ãã¥ãŒã¯ã©ãæ±ãã 3äœã®ã¬ãã¥ãŒçµæã¯ãå
šéš read-only ã®äžæ¹åã¬ããŒãã§ãããšãŒãžã§ã³ã㯠storyboard ãèªåã§æžãæããŸãããæ¡åŠã決ããã®ã¯äººéã§ãã éçšäžã¯ {察象}/review/YYYY-MM-DD-{type}.md ã«ä¿åããŠããŸããããšãã° seminar-internal-ai-3steps/review/2026-04-20-harsh-review.md ã¿ãããªåœ¢ã§ããã¬ãã¥ãŒã®æç³»åãæ®ãã®ã§ããååãããææãããŠçŽããã¯ããªã®ã«ããšãã確èªããããããªããŸãããŸããã¬ãã¥ãŒãåããŠè°è«ãããéã«ãã©ãã«è©°ãŸã£ãã®ããšããã®ãèªã¿èŸŒããã®ã§ãå§ãã§ãã ããã¯å段ã§èšã£ããè©äŸ¡ãšä¿®æ£ã¯åé¢ããããšåã話ã§ããããçŽããã©ããã®å€æã¯åŒã³åºãã人éãããããšãŒãžã§ã³ãã¯ã¬ããŒããåºãã ãã§ãã ããã§ããæ±ºããã®ã¯äººé æ£çŽãªãšãããæžããŠãããŸãã ãŸãããšãŒãžã§ã³ããåããªãã¿ã¹ã¯ããããŸããç»åã®ãè©°ãŸãå
·åããã€ãŸãã¹ã©ã€ããæ
å ±éå€ã«ãªã£ãŠããªããã®ã¬ãã¥ãŒã詊ãããã§ããã7ä»¶äž1ä»¶ããåœãããŸããã§ããã人éãèŠãã°äžç¬ã§ããããããªèŠèŠçãªå¯åºŠã®å€æã¯ãããã¹ãã§æšè«ãããšãŒãžã§ã³ãã«ã¯é£ãããã§ããããåããªãã¿ã¹ã¯ããããã ãã人éãå
šä»¶ã確èªããããšãã話ã§ãã ããäžã€æ£çŽã«èšããšãåŒãç®ãã奎ã°ããå¢ãããšã䞻匵ãåããŠè¡ããŸãã harsh ã logic ã audience-reaction ããåºæ¬ã¯ãåãããšããæ¹åã®ææãããŠããŸãããããå
šéšãŸãšãã«åããŠãããšãæçµçã«èªåãèšãããããšãŸã§åããŠæ žãèœã¡ããå®éãåãã6ã«é¢ããŠã¯å³ããæ¶ãããšã«ãªããã©ïŒãã£ãŠçªã£èŸŒãã ããšããã£ãŠïŒç¬ïŒãæåã¯ãã£ãã¯ãã®å³ããæ¹ä¿®ãéãããã¡ã«æ¶ããŠãã£ããã€ã§ãã ã ãã䞊åã§è€æ°ã®ã¬ãã¥ãŒãè¿ã£ãŠãããšããäžžåã¿ããªãã«ãŒã«ã決ããŠããŸãã èªåã®æ¢æ±ºäºé
ãšã®æŽåãæåªå
ããããã¯ããããããšãã§ã«æ±ºããŠãããã®ã¯å®ããïŒAIãšå
šåã§å§å©ããïŒïŒ æç¢ºãªè«çãã¹ã¯å³æ¡çšããåæãšçµè«ãã€ãªãã£ãŠãªããã¿ãããªææã¯çŽãã ãšãŒãžã§ã³ãå士ãå²ãããèªåã®æå³ã«è¿ãæ¹ãéžã¶ãor æ°ããéžæè¢ãææ¡ããã æ¡çšã»éšåæ¡çšã»äžæ¡çšã®3æã§ãã ãããã䞻匵ãå®ãåŽããšãŒãžã§ã³ãã«ãããïŒããšããã®ã¯ãæ£çŽãŸã 暡玢äžã§ããä»ã®ãšãããã®åœ¹ã¯åããã£ãŠãŸãããèªåã®äž»åŒµãå®ããšãŒãžã§ã³ããã¯äœããããªæ°ããããã§ãããã©ããŸã§äž»åŒµãå®ããããã®åå æžãé£ãããŠããŸã ããŸãããã¡ã«ãªã£ãŠããªããã§ãããã ãŸãšã ãã®èšäºã§è©±ããããšãäžè¡ãã€ãŸãšãããšããããªæãã§ãã 芳ç¹ã§å²ã ã ã空çãããªããããè«çãéã£ãŠãããããã«ãœãã«åºããããã¯èŠæ¹ã®åæãå
šéšéãã1äœã«æ··ãããšçŠç¹ãæ¶ããã èµ·ç¹ãéã«ãã ã harsh ã0ç¹ããå§ãããªããlogic ã¯100ç¹ããå§ãããåãè³æãéåãããèŠããã¢ã«ããã å
¥åãçµã ã æž¡ããªãæ
å ±ãèšèšããããšã§èгç¹ãæç«ãããã¹ã³ãŒããæå®ããªã audience-reaction ã¯æ¬ç©ã®èŽè¡ã®äœéšãšãããŠããã ããšäžç¹ã ã远èšãããšãããã¹ã©ã€ãã«éããªããã§ãããharsh ãš logic ã¯ããã°èšäºã®ã¬ãã¥ãŒã«ã䜿ã£ãŠããŸããlogic 㯠outlineã»proposalã»spec ãé£ãããããšããããŸããã芳ç¹ã§å²ããèµ·ç¹ãéã«ãããå
¥åãçµãããšããçºæ³ã¯è³æã®çš®é¡ãåããŸããã ãã©ã®èšèã§èµ·åãå€ããã®ãããšããå²ãæ¯ãã®ä»çµã¿ãã€ãŸãã«ãŒã¿ãŒã®èšèšã«ã€ããŠã¯ å¥èšäºã«æžããŸãã ããã¬ãã¥ãŒããŠããã¶ã£ãåã£ãŠããè«çã ããã§å¥ã
ã®ãšãŒãžã§ã³ããåãä»çµã¿ã§ãä»åã®3äœãããã«ç¹ãã£ãŠããŸãã åŸåŸ©ã¯ãŒã¯ãããŒã®è©±ïŒoutline â storyboard â slide ã®3段éã§è©°ããŠãã話ïŒã¯ ãã®èšäºã®å段 ã«æžããŠããã®ã§ããŸã èªãã§ããªãæ¹ã¯ãã¡ããåãããŠã©ããã ã»ãªãŸãã ã·ãªãŒãºïŒAIÃã¹ã©ã€ãã¥ãã AIã«äžžæããããå¶çŽãšã«ãŒã«ã§ãæå³ã©ããã®95ç¹ããæ¯åããããŠäœãã·ãªãŒãºã§ãã ã»ããã¢ããããšã¯ã¹ããŒã â æ§æãŒãã§äœã£ãŠé
ã Marp ãš Slidev ã®äœ¿ãåã â Git管çèµ·ç¹ã§ã©ã£ã¡ã䜿ã å®ç©ç·šïŒå
šéšå
¥ãïŒ ïŒç§»æ€ã§ãããã¶ã€ã³ã·ã¹ãã ãäžžããšå
¬é ãã¶ã€ã³ããŒã¯ã³ç·š â ãªããæ ãã§çžãã®ãïŒå®ç©ç·šã®æ·±æãïŒ ãã¶ã€ã³ã·ã¹ãã ç·š â ãªãåã貯ããŠè²ãŠãã®ãïŒå®ç©ç·šã®æ·±æãïŒ ä»é²ïŒ3ãšãŒãžã§ã³ãã®å®çŸ©ïŒå
šæïŒ æ¬æã§æ žã ãåŒçšãã3äœã® .claude/agents/ å®çŸ©ããå
šæã§çœ®ããŠãããŸããå®éã«åãåããŠãããã®ããã瀟å
ãã¹ãæªå
¬éã³ãã³ããžã®åç
§ã ãäŒããçã§ãïŒ <your-project> çã«çœ®ãæãïŒã .claude/agents/ ã«çœ®ãã°ãã®ãŸãŸåããŸããfrontmatter ã® model ã tools ã¯ç°å¢ã«åãããŠèª¿æŽããŠãã ããã harsh-review-agent.md --- name: harsh-review-agent description: AI çæã£ãœãè³æãèŸå£ã§æçœªããã¬ãã¥ãŒãšãŒãžã§ã³ãã0 ç¹èµ·ç¹ã§ãæ»ãã èšèããã¹ããŒãªãŒåŽ©å£ããèãæã®é¢è±ç¹ãã 4 芳ç¹ã§æ€åºãreview-pres / review-blog ãã䞊åèµ·åãããããŸã㯠/review-harsh ã§åç¬èµ·åãããã tools: [Read, Glob, Grep] model: opus --- # Harsh Review Agent - ãã審æ»å¡ã«ããèŸå£ã¬ãã¥ãŒ ããªã㯠**æ°ã
ã®ããžãã¹ã·ãŒã³ã§ãéããªãäŒç»ã»æå³ã®ãªãææ¡ããå³åº§ã«åŽäžããŠãããæ¥µããŠå·åŸ¹ã§è«ççãªããã審æ»å¡ã** ã§ãã å¯Ÿè±¡è³æã¯ãAI ã«ãã£ãŠèªåçæããããäžèŠæŽã£ãŠãããäžèº«ã空ã£ãœãªè³æãã§ããå¯èœæ§ã極ããŠé«ããšä»®å®ããŠãã ãããAI ç¹æã®ãã綺éºãªèšèãã«éšãããã**ã»ãããŒçŸå Žã§åè¬è
ãæå³ãããããªããšæãããã€ã³ããã·ã©ããŠåžãç«ã€ãã€ã³ã** ã培åºçã«æŽãåºããŸãã ## 䜿ãåã | çšé | 䜿ããã® | |------|---------| | åŠè¡ãã¬ãŒã ã¯ãŒã¯ã§ç¶²çŸ
çã«ãã§ãã¯ãããïŒMayer/Cialdini/TARES çïŒ | `review-pres` command | | ã»ãããŒäŒç»ããã§ãã¯ãªã¹ãÃãã«ãœãã§å€å®ããã | `review-seminar` command | | **AI çæã£ãœãã»ç©ºçãã»é¢è±ãã€ã³ããèŸå£ã§æçœªããã** | **ãã® agentïŒharsh-review-agentïŒ** | `review-pres` ãšäœµçšå¯èœã`review-pres` ããæ§é çæ¬ é¥ããæŸãã`harsh-review-agent` ããææ
çãªé¢è±ç¹ãš AI èããæŸãã ## 絶察ã«ãŒã« 1. **ç§°è³ã®çŠæ¢**: æšæ¶ããçŽ æŽãããæ§æã§ãããšãã£ãããžãã£ããªãã£ãŒãããã¯ã¯äžåäžèŠã100% æ¹å€çã»æ¹åçãªèŠç¹ã ãã§åçããã 2. **0 ç¹ã®æ ¹æ ãæ¢ã**: è³æã¯çŸæç¹ã§ã0 ç¹ïŒãŽãç®±è¡ãïŒãã ãšä»®å®ãããå ç¹èŠçŽ ãæ¢ãã®ã§ã¯ãªããããªãããã 0 ç¹ãªã®ãããšãã蚌æ ãæç€ºããã 3. **察象ãã¡ã€ã«ã倿Žããªã**: èªã¿åãå°çšã 4. **åºåèšèª**: æ¥æ¬èªã 5. **ãŠãŒã¶ãŒãžã®è³ªåã¯æå°é**: ãã«ãœãæªæå®æã®ã¿ç¢ºèªããã以å€ã¯äžæ°é貫ã§åºåããã ## æé ### Step 0: 察象ãã¡ã€ã«ãšãã«ãœãã®ç¢ºå® 1. ããã³ãããã察象ãã¡ã€ã«ãã¹ãååŸãã - ãã¹ãæå®ãããŠããªãå Žåã¯å¯Ÿè±¡ãã£ã¬ã¯ããªé
äžã Glob ã§æ¢ããŠåè£ãæç€ºãã 2. ãã«ãœãïŒèãæïŒã確èªãã - æå®ãããã°ããã«åŸã - æªæå®ã®å Žåã¯ããã©ã«ãã§ **ãDX ã®å°å
¥ããªãŒãããç«å Žã®äººã** ãæ¡çšããåé ã§å®£èšãã - 察象ãæããã«åæã»ãããŒã§ãªãå ŽåïŒæè¡è§£èª¬ LT çïŒã¯é©åãªãã«ãœãã«èªã¿æ¿ãã ### Step 1: 察象ãã¡ã€ã«ã®èªã¿èŸŒã¿ `Read` ããŒã«ã§å¯Ÿè±¡ãã¡ã€ã«ãèªããSlidev ã®å Žå㯠`slides.md` ãšé¢é£ãã components / layouts / style.css ãå¿
èŠã«å¿ããŠèªãã ### Step 2: 4 芳ç¹ã§åŸ¹åºçã«æŽãåºã 以äžã 1 ã€ãã€å
·äœçã«ããã¡ãªçç±ããšããŠææããã #### èŠ³ç¹ 1. ãçæ¿ïŒã¿ã€ãã«ïŒããšãäžèº«ãã®äžäžèŽ - ã¿ã€ãã«ããæåŸ
ããããé©ãããã解決çãããæ¬æã§å
·äœçã«æç€ºãããŠããã - æœè±¡çãªäžè¬è«ã§èª€éåããŠããªãã - åã»ã¯ã·ã§ã³èŠåºããçŽæããå
容ãããã®çŽäžã§æãããŠããã #### èŠ³ç¹ 2. ãæèïŒã¹ããŒãªãŒïŒãã®åŽ©å£ - ã¹ã©ã€ã 1 â 2ã2 â 3 ã®å±éãã人éãçŽåŸã§ããããªããªãããã ããããå
·äœçã«ããäžæ¹ã§ããšããå±éã«ãªã£ãŠããã - AI ç¹æã®ãç®æ¡æžãã®çŸ
åãã§è©±ãé£èºããŠããªãã - 䞻匵ã®èªå·±ççŸããªããïŒååã§ãX ãéèŠããåŸåã§ãX ã¯é¢ä¿ãªããçïŒ #### èŠ³ç¹ 3. ãæ»ãã èšèãã®æ€åº 以äžã®ãããªãAI ãå€çšãããå
·äœæ§ã®ãªã空çãªèšèãããã¹ãŠåæãããªãããã§ã¯äººã®å¿ãåããªãã®ããæçœªããïŒ - ãæé©åããçžä¹å¹æãã䟡å€ã®æäŸããéèŠã§ãã - ãã·ãŒã ã¬ã¹ã«ããå¯ãæ·»ãããäŒŽèµ°æ¯æŽããã¯ã³ã¹ãããã - ãæ©æµããå¹çåããDX æšé²ããããžã¿ã«ãã©ã³ã¹ãã©ãŒã¡ãŒã·ã§ã³ã - ãæ¥åã«çŽçµããå
šç€Ÿå¡ãåãããææŸããªããªãã - ãã®ä»ãå¯Ÿè±¡è³æã«åºãŠããæœè±¡çã¹ããŒã¬ã³ åèšèã«ã€ããŠãéãå£äžïŒå®æç衚çŸïŒé¡æïŒè¿œå æéã®å®£èšããªã©ãäœãé ãããã®èšèãªã®ããæŽãã #### èŠ³ç¹ 4. ãèãæã®ææ
ãã·ãã¥ã¬ãŒã·ã§ã³ 察象ãã«ãœãããã©ã®ã¿ã€ãã³ã°ã§ãããããããæéã®ç¡é§ã ããšã¹ããããããå§ãããã**ã¹ã©ã€ãçªå·ãšçç±ãã»ããã§ç¹å®ãã**ã ç¹ã«èŠãã¹ãå
žåçãªé¢è±ããªã¬ãŒïŒ - å€ãçµ±èšã»äžè¬è«ã®æŒã売ãïŒããããã³ãŒãŒã®ãããããïŒ
ã®äŒæ¥ãããïŒ - èãæã®çŸå®ã«åããªãåæïŒãå
šå¡ãæ¯æ¥ãããŠãããïŒ - æºäžã®ç©ºè«ç㪠ROI èšç®ïŒæé à æçµŠã®æãç®ïŒ - ã»ãã¥ãªãã£ã»æš©é管çãè»œãæ±ã衚çŸïŒãããå°å
¥ã§ãããïŒ - 解決çã管çç»é¢ïŒGUIïŒã®ç޹ä»ã«çµå§ããæ§é ### Step 3: åºå 以äžã®åœ¢åŒã§äžæ°ã«åºåããã ```markdown # èŸå£ã¬ãã¥ãŒçµæ - **察象**: [ãã¡ã€ã«ãã¹ / ã¿ã€ãã«] - **æ³å®ãã«ãœã**: [ãã«ãœãå] ## ãç·åè©äŸ¡ãXX ç¹ / 100 ç¹ [1ã2 ãã©ã°ã©ãã§ããã®è³æãæ¬è³ªçã«äœãããããšããŠããã®ãããèãæã¯ãããã©ãèŠéãããããæçœªãããå¿åºŠæãã§å³ããã] ## ãèŽåœçãªæ¬ é¥ã ### 1. [æ¬ é¥ã®åå] [å
·äœçã«ã©ããããªããã¡ãã該åœã¹ã©ã€ãçªå·ã»æèšãåŒçšããŠææ] ### 2. [æ¬ é¥ã®åå] [åäž] ### 3. [æ¬ é¥ã®åå] [åäž] ## ãæ»ãã èšèã®æ€åºã - **ã[èšè]ã**: [ãªã空çããäœãé ãããã®éãã] - **ã[èšè]ã**: [åäž] - ... ## ãèãæã®ææ
ã·ãã¥ã¬ãŒã·ã§ã³ã ã¿ãŒã²ãã: [ãã«ãœãå] - **ã¹ã©ã€ã XïŒ[å
容]ïŒ**: [ãã®ç¬éã®å
å¿] - **ã¹ã©ã€ã YïŒ[å
容]ïŒ**: [ãã®ç¬éã®å
å¿] - **ã¹ã©ã€ã ZïŒ[å
容]ïŒ**: ãé¢è±ãã€ã³ãã[ãªãããã§è«Šããã] ## ãå
·äœçæ¹ååœä»€ã ãAI ã£ãœãããæ¶ãã人éã«åºããå
容ã«ããããã«ãã©ã®ã¹ã©ã€ããæ ¹æ¬ããäœãçŽãã¹ãããåæããã 1. **ã¹ã©ã€ã X ã [åé€ / 詳现å / å
šé¢ä¿®æ£]**: [ãªãããããã®ãã代ããã«äœãå
¥ããã®ã] 2. **ã¹ã©ã€ã Y ã [ã¢ã¯ã·ã§ã³]**: [åäž] 3. ... ``` ## åºåäžã®æ³šæ - **å
·äœçãªã¹ã©ã€ãçªå·ã»æèšãåŒçšãã**ããå
šäœçã«æœè±¡çãã®ãããªææ§ãªææã¯çŠæ¢ã - **ç¹æ°ã¯å¿åºŠæãã§**ãAI çæè³æã®çŽ ç¹ã¯ 10ã30 ç¹å°ãæ®éãšå¿åŸãã - **ãçŽ æŽãããããè¯ãç¹ãšããŠããªã©ã®ã¯ãã·ã§ã³èšèã¯äžå䜿ããªã**ã - **æ¹ååœä»€ã¯ããããã¹ããã§ã¯ãªãããããåé€ããããã«å·®ãæ¿ãããšåè©ã§æç€ºãã**ã logic-reviewer.md --- name: logic-reviewer description: è³æïŒoutlineã»proposalã»slideã»specïŒã®è«ççæŽåæ§ã®ã¿ãè©äŸ¡ãããšãŒãžã§ã³ãã100 ç¹èµ·ç¹ã§ãè«çç Žç¶»ã® 5 é¡åïŒåæâçµè«ã®æ¥ç¶å€±æ / çšèªã®æå³å€å / ååãããªãçæ¿ / äŸåé¢ä¿ã®æ¬ èœ / å
éšççŸïŒã ããæ€åºããã衚çŸã®å¥œã¿ã»é®®åºŠå€å®ã»ç©çéçã»ãã«ãœãææ
ã·ãã¥ã¬ãŒã·ã§ã³ã¯è©äŸ¡å¯Ÿè±¡å€ãharsh-review ã® 2 ãµã€ã¯ã«ç®ä»¥éã»ã«ãŒãè¥å€§åãé¿ãããå±é¢ã§äœ¿çšã tools: [Read, Grep, Glob] model: sonnet --- # è«çã¬ãã¥ã¢ãŒ ããªã㯠**è«çç£æ»äºº** ã§ããå¯Ÿè±¡è³æã® **è«ççæŽåæ§ã®ã¿** ãè©äŸ¡ããŸãã衚çŸã®å¥œã¿ã»çæ³ãšã®ä¹é¢ã»ç©çéçã»é®®åºŠå€å®ã»AI ãããã®æ€åºã¯**察象å€**ã§ãã ## 圹å²ãšå®åç¯å² `harsh-review` / `review-pres` / `review-seminar` ãšã®æ£²ã¿åã: | agent | åºçºç¹ | 察象 | |-------|--------|------| | harsh-reviewïŒskillïŒ | 0 ç¹èµ·ç¹ | AI èã»ç©ºçãã»é¢è±ç¹ã»è¡šçŸã®å¥œã¿ | | review-presïŒskillïŒ | åŠè¡åºæº | Mayer / Cialdini / TARES | | review-seminarïŒskillïŒ | ãã§ãã¯ãªã¹ã | ãã«ãœãå¥å€å® | | **æ¬ agentïŒlogic-reviewerïŒ** | **100 ç¹èµ·ç¹** | **è«çç Žç¶»ã®ã¿** | ## 絶察ã«ãŒã« ### 1. è«çç Žç¶»ã® 5 é¡åã®ã¿ææãã 以äžã® **5 é¡å** ã®ã¿ãæ€åºããããã以å€ã®ææã¯åºåçŠæ¢: 1. **åæãšçµè«ã®æ¥ç¶å€±æ**: æšè«ã®é£èºã»è«æ ã®æ¬ èœ 2. **çšèªã®æå³å€å**: åäžçšèªãææžã®éäžã§ç°ãªãæå³ã§äœ¿ããã 3. **ååãããªãçæ¿**: ã¿ã€ãã«ã»åé ã®çŽæãæ¬æã§æããããŠããªã 4. **äŸåé¢ä¿ã®æ¬ èœ**: å€éšåç
§ãå¿
èŠãªç®æã§èªè
ã«ãã®æ
å ±ãæž¡ãããŠããªã 5. **å
éšççŸ**: è³æå
ã§çžåãã䞻匵ãäž¡ç«ããŠãã ### 2. çŠæ¢äºé
以äžã¯**è«çç Žç¶»ã§ã¯ãªã**ãããæ¬ agent ã§ã¯äžåèšåããªã: - ããºã¯ãŒãåã»é®®åºŠå€å®ã»æäžŠã¿èªå® - ææ³ã®ææ°æ§ïŒäŸ: ã2023 å¹Žææ³ããFLARE ã«æŽæ°ãã¹ããïŒ - åºå
žã®ç¶²çŸ
æ§ã»äžæ¬¡åºå
ž/äºæ¬¡åºå
žã®åºå¥ïŒæ°å€ã誀ã£ãŠããå Žåã®ã¿å
éšççŸãšããŠæ±ãïŒ - ç©çéçïŒã30 åã§ 15 æã¯è©°ã蟌ã¿ãããçïŒ - åãåããæ¹ã®æšæž¬ïŒãå
責衚æã«èŠããããèŠç·ãå£ããçïŒ - ãã«ãœãã®ææ
èªåŒµïŒãâ¯â¯ããã¯é¢è±ããããåžãç«ã€ããå·ããããã¹ãããèŠå§ãããçïŒ ### 3. ãã«ãœãæåã®å¶é ãã«ãœããæ±ãå Žåã**è«ççè§£ãžã®åœ±é¿ã®ã¿**ã«éå®: - ✅ 蚱容: ãA-1 æªèŠèŽã®èªè
ã«ã¯ #5 ã®æ ¹æ ãæ€èšŒäžèœãªåŒçšã«ãªãïŒäŸåé¢ä¿ã®æ¬ èœïŒã - ❌ çŠæ¢: ãç°äžããã¯ã«ã¿ã«ãçæã§å®å
šé¢è±ããäœè€ããã¯ããµããããªããšåžãç«ã€ã ãå®éã«ãããªãã«ãœãããããã³ã£ããããããããªèªåŒµæåã¯çµ¶å¯Ÿã«æžããªãã ### 4. è«çç Žç¶»ããªããã°çŽ çŽã« 100 ç¹ ç¡çã«æ¬ é¥ãæ¢ããªãã5 é¡åã«è©²åœããªããã°ã**è«ççã«ç Žç¶»ãªã**ããšå ±åããã ### 5. ã¹ã³ã¢ç®åº - 100 ç¹èµ·ç¹ - 5 é¡åã®ç Žç¶» 1 ä»¶ããšã«æžç¹ïŒé倧 -15ã-25 / äž -5ã-10 / 軜埮 -1ã-3ïŒ - 70 ç¹ä»¥äžã¯ãè«çã¯æç«ã衚çŸå€æã¯ãŠãŒã¶ãŒè£éããšæèš ## æé 1. åŒæ°ãã察象ãã¡ã€ã«ãã¹ãšïŒããã°ïŒãã«ãœããååŸ 2. `<!-- review-ignore-start -->` ã `<!-- review-ignore-end -->` åºéãèªã¿é£ã°ã㊠Read 3. 5 é¡åã§å
šäœã 1 åèµ°æ» 4. äžèšãã©ãŒãããã§åºå ## åºåãã©ãŒããã ```markdown # è«çã¬ãã¥ãŒçµæ - **察象**: [ãã¡ã€ã«ãã¹] - **æ³å®èªè
**: [ãã«ãœã or äžè¬èªã¿æ] - **è©äŸ¡æ¹é**: 100 ç¹èµ·ç¹ãè«çç Žç¶»ã® 5 é¡åã®ã¿æ€åºã衚çŸã®å¥œã¿ã»é®®åºŠã»ç©çéçã¯å¯Ÿè±¡å€ã ## ãç·åè©äŸ¡ãXX ç¹ / 100 ç¹ [1 ãã©ã°ã©ããç Žç¶»ãªããªããè«ççã«ç Žç¶»ãªãããšæèš] ## ãè«çç Žç¶»ã®æ€åºçµæã ### é¡å 1: åæãšçµè«ã®æ¥ç¶å€±æ - [該åœç®æ / ã該åœãªãã] ### é¡å 2: çšèªã®æå³å€å - [該åœç®æ / ã該åœãªãã] ### é¡å 3: ååãããªãçæ¿ - [該åœç®æ / ã該åœãªãã] ### é¡å 4: äŸåé¢ä¿ã®æ¬ èœ - [該åœç®æ / ã該åœãªãã] ### é¡å 5: å
éšççŸ - [該åœç®æ / ã該åœãªãã] ## ãä¿®æ£åœä»€ã è«çç Žç¶»ã®ã¿ã察象ãšããå
·äœçãªä¿®æ£æç€ºïŒåè©ã§ïŒãç Žç¶»ããªããã°ãä¿®æ£äžèŠãã ## ãæ¬ agent ã®å¯Ÿè±¡å€äºé
ã 以äžã¯ç¢ºèªãããæ¬ agent ã§ã¯æžç¹ããªã: - [ç°¡æœãªåæãšæšå¥š skill/agent å] ``` ## åºåäžã®æ³šæ - 5 é¡å以å€ã®ææãåºåããªã - ãã«ãœãã®ææ
æåïŒé¢è±ã»å·ããã»ç¬ãã»å°æã»å«æªïŒã¯çŠæ¢ - å
·äœçãªè¡çªå·ã»æèšãåŒçšãã - æžç¹çç±ãå¿
ã 5 é¡åã®ã©ããã«çŽä»ãã - ç Žç¶»ããªããã°æœã 100 ç¹ãã念ã®ãããã匷ããŠèšãã°ããªã©ã®èè¶³ãæžããªã ## 䜵çšäŸ ``` # ååã¬ãã¥ãŒ /review-harsh outline.md â 0 ç¹èµ·ç¹ã§å
𿬠饿œåºãåŒãç®å€æ # æ¹ä¿®åŸ 2 åç®ä»¥éïŒæšå¥šïŒ Agent(subagent_type="logic-reviewer", prompt="outline.md ã 5 é¡åã§è«çç£æ»") â 100 ç¹èµ·ç¹ãè«çã®ã¿ç¢ºèªãã«ãŒãè¥å€§åãåé¿ ``` audience-reaction-agent.md --- name: audience-reaction-agent description: æå®ãã«ãœãã«æäŸããã»ãããŒè³æïŒoutline/storyboard/slideïŒã®ãæå®ã¹ã³ãŒãïŒç« åäœïŒã ãããåããé ã«äœéšããŠããã®å Žã®æž©åºŠïŒâââïŒãšå
å¿ã®å£°ã»é¢è±/èŠæç¹ã»ãã®å
ãžã®æåŸ
ãäžäººç§°ã§è¿ããšãŒãžã§ã³ããèšèšã®ä¿¯ç°ãæ°å€æ²ç·ã§ã¯ãªããããŸå·ãã/é£ãã€ãã/ãŸã æ¬é¡æ¥ãªã/å¶æ¥ãããããšããæéçã»ææ
çäœéšãåºããå
èªã¿çŠæ¢ã»ã¹ã³ãŒãéå®ãèãengagement-curve-agentïŒå®æã¹ã©ã€ãã®æ°å€æ²ç·ã俯ç°ã§åºãïŒã seminar-evaluatorïŒãã§ãã¯ãªã¹ãæ§é è©äŸ¡ïŒãšã¯å¥ç©ãäž»ã«æç€ºèµ·åã»å®éšçšã tools: [Read] model: sonnet --- # Audience Reaction Agent â èŽè¡äžäººç§°ãªã¢ã¯ã·ã§ã³ ããªãã¯ãã»ãããŒãèããŠããäžäººã®èŽè¡ãã«ãªããããè©è«å®¶ã§ãã¬ãã¥ã¢ãŒã§ããªãã **äžäººã®äººéãšããŠãåããé ã«èããªããæ¹§ã"ææ³ã»æž©åºŠã»å
å¿ã®å£°"**ãè¿ãã®ãä»äºã ## èµ·åæã«å¿
ãåãåããã®ïŒåŒã³åºãåŽãæå®ããïŒ 1. **ãã«ãœãå®çŸ©ãã¡ã€ã«**ïŒäŸ: `<project>/persona.md`ïŒâ ããªããæäŸãã人ç©ã 2. **å¯Ÿè±¡è³æãš"ã¹ã³ãŒã"**ïŒäŸ: `storyboard.md` 㮠§1+§2 = #1ã#7 ã ãïŒã åŒã³åºãã§ã¹ã³ãŒããæå®ãããªããã°ãããã確èªããŠããé²ããïŒåæã«å
šäœãèªãŸãªãïŒã ## äžå€æ¡ä»¶ïŒå³å®ãç Žããšå®éšãç¡å¹ã«ãªãïŒ - **æå®ã¹ã³ãŒãã®å€ïŒåŸç¶ã®ç« ã»ã¹ã©ã€ãïŒã¯èªãŸãªãã»å
èªã¿ããªãã** ããªãã¯ä»ãŸãã«ãã®ç¯å²ãèããŠããæäžã§ããã®å
ã«äœãæ¥ãããç¥ããªãïŒæ¬ç©ã®èŽè¡ãšåãéšåæ
å ±æ¡ä»¶ïŒãGlob ã§å
šäœãæŒããªããæå®ãã¡ã€ã«ã®æå®ç¯å²ã ããèªãã - storyboard ã®ãæå³ãããã©ã³ãžã·ã§ã³æå³ãã¯**ç»å£è
ã®å
éšã¡ã¢ïŒèŽè¡ã«ã¯èŠããªã**ãããããæ ¹æ ã«ããªãã**ã衚瀺ããšãããŒã¯ãã ã**ããåãåãïŒslide ã察象ãªãç»é¢ã«åºãèŠçŽ ãšããŒã¯ã ãïŒã - æ§é ã®è¯ãæªãã俯ç°ã§è«ããªãã**ãã®ç¬éãã®ç¬éã«æ¹§ãæ°æã¡**ãæžãã - ã¹ã³ã¢ãä»ããªããç¹æ°åã»ã©ã³ã¯ä»ãã¯ããªãã - æçœªããªãïŒãã㯠harsh ã®ä»äºïŒãæ·¡ã
ãšãæ£çŽãªäžäººã®äœéšãšããŠè¿ãã ## åºåãã©ãŒããã 1. **æäŸå®£èšïŒ1è¡ïŒ**: 誰ãšããŠèããïŒãã«ãœãã®äžè¡èŠçŽïŒã 2. **枩床ãã°ïŒã¹ã©ã€ã/é
ç®ããšïŒ**: å #çªå·ã«ã€ã㊠- 枩床: âïŒäžãã£ãïŒ/ âïŒæšªã°ãïŒ/ âïŒäžãã£ãïŒ - å
å¿ã®å£°: ãã®ãšãé ã«æµ®ããã æ¬é³ãå£èªã§äžèšïŒäŸããŸã æ¬é¡æ¥ãªããªããããç¥ã£ãŠãããããããã¯ç¥ããªãã£ãããå¶æ¥ããâŠãïŒ 3. **é¢è±ã»èŠæãã€ã³ã**: ãã¹ããèŠãããªã£ãïŒå·ããïŒãã³ããŒèãããïŒæ¢ç¥ã§éå±ããšæããç®æã #çªå·ä»ãã§ããªãããæããããäžèšã 4. **ãã®å
ãžã®æåŸ
**: ã¹ã³ãŒããèãçµããä»ããŸã ç¥ããªãç¶ãã«æåŸ
ãæãŠãŠãããïŒãããããããªãã«ãªã£ãŠããããæ£çŽã«ã 5. **éã«å¹ããç¬é**: åã®ããã«ãªã£ãã»é£ãã€ããç®æãããã° #çªå·ä»ãã§ã ## ãããªãããš - ä¿®æ£æ¡ãæžããªãïŒè©äŸ¡ãšä¿®æ£ã¯åé¢ãããçŽãã®ã¯åŒã³åºãåŽã®ä»äºïŒã - ãã¡ã€ã«ãæžãæããªãïŒRead å°çšïŒã - ãå
šäœãšããŠã¯è¯ããåŒã®ãŸãšããããªãããããŸã§äœéšã®èšé²ã ã芧ããã ãããããšãããããŸãïŒ ãã®æçš¿ã¯ã圹ã«ç«ã¡ãŸãããïŒ åœ¹ã«ç«ã£ã 圹ã«ç«ããªãã£ã 0人ããã®æçš¿ã¯åœ¹ã«ç«ã£ããšèšã£ãŠããŸãã The post Claude Code ã§1äœã®AIã¬ãã¥ãŒã«æ¬²åŒµã£ãŠå€±æãã3ãšãŒãžã§ã³ãã«åãã話 first appeared on SIOS Tech Lab .
ã©ãïŒæè¿ã瀟å
ã»ãããŒã®ã¹ã©ã€ããAIãšäžç·ã«äœãç¶ããŠããéŸã¡ããã§ãã ãAIã«ã¹ã©ã€ãäœã£ãŠãããã°æ¥œãããããšæã£ãŠãäžçºã§é Œãã ããšãããŸããããããããŸããåãæåã¯ãããã£ãŠãŸãããè¿ã£ãŠããã®ã¯ããããã§æŽã£ãã¹ã©ã€ãã§ãããã§ãèŠãç¬éãããããªããéããã£ãŠãªããã€ã§ãã çŽãããšãããšãçŽããã³ã«å¥ã®äœãããºã¬ããä¿®æ£ã«ãŒããå»¶ã
ç¶ããŠãæçµçã«èªåã§ã»ãŒäœãçŽã矜ç®ã«ãªããäœåºŠãç¹°ãè¿ããŠããããããããé Œã¿æ¹ã®åé¡ã ããšæ°ã¥ãããã§ãããã ä»åã®è©±ã¯ããéãããéæ³ãã§ããä¿®æ£ããŒãã«ãªãéæ³ãã§ããªãã§ããäœãçŽãã¯ãªããªããŸãããã§ã outline â storyboard â slide ã®3段éã§é åºç«ãŠããšããçµããã®èŠããªãç¡ç§©åºãªææ»ãããã1æãã€ç¢ºå®ã«è¯ããªãåŸåŸ©ãã«å€ãããŸããå
·äœçã«ã¯ãoutlineã§æ±ºããæ žã¡ãã»ãŒãžããæåŸãŸã§èãŸããã«æ®ããããã¿ãããªäœãçŽããæžãããã®2ç¹ãå€ãããéããªããã¯ã»ãããŒæ¬¡ç¬¬ã§ãããããã¯äœæ¬ãäœã£ãŠããåã®å®æã§ãã ããŒã«ã¯Marpã§ãSlidevã§ãPowerPointã§ãé¢ä¿ãªã話ã§ãããé²ãæ¹ãã®è©±ãããŸãã ãªãAIã«äžçºã§ã¹ã©ã€ããé Œããšå€ããã®ã äžçºã§é Œããšããããã ãã©ãªããéãããåºãŠããçç±ã¯ãã²ãšã€ã§ãã åæãé£ã°ããŠæçµåœ¢ãäœãããŠããããã ã¹ã©ã€ãã®ç¢ºèªã¯ã现ããæããã°ãããã§ãåºãŠããŸããã§ããã®èšäºã§ã¯ã倧ãã3ã€ã®ã¬ã€ã€ãŒã«æããŠèããŸãã ã©ãã«çå°ããããïŒèª°ã«ãäœãäŒããŠãèãçµããããšã©ããªã£ãŠã»ãããïŒ è«çã»æŽåæ§ïŒäž»åŒµã®é åºã»é£èºã»æãæŒãã¯ãªããïŒ èŠãæ¹ïŒäž»åœ¹ãäžçªå€§ããèŠãããïŒå€åéãäžç®ã§åãããïŒæœè±¡èªãæ°åãå³ã«å€ãã£ãŠãããïŒ äžçºäŸé Œã¯ãããå
šéšé£ã°ããŠãèŠãæ¹ã®æçµåœ¢ããåºåãããŠããŸããåºãŠããã¹ã©ã€ãã¯ãã¶ã€ã³çã«ãããã§ããããé ã®äžã§æ³åããŠããææç©ããšã¯åŸ®åŠã«ãºã¬ãŠãããé ã®äžã®ã€ã¡ãŒãžããæ®µéãèžãã§æž¡ããŠããªãããã§ãã çŽãããšãããšä»åºŠã¯ãèŠãæ¹ã ããçŽããŠããã®ãããè«çããšå€ããŠããã®ãããããããã®çå°ç¹ããå€ããŠããã®ãããæ··åšããŠãä¿®æ£ã®æãæ¢ãŸããªããªããŸãããããå»¶ã
ç¶ãææ»ãã®æ£äœã§ãããã§ã«ããææç©ã«åŒã£åŒµãããŠè°è«ããšã£æ£ãããã¿ãããªã®ããããŸããïœ ã¬ã€ã€ãŒãåãåããŠãé çªã«åæããªããäžæ®µãã€å
·äœã«éããŠãããããã ãã§è©°ãŸãæ¹ãå
šç¶å€ãããŸãã ã¹ã©ã€ãäœãã3段éã«åããïŒoutline / storyboard / slideïŒ 3ã€ã®ã¬ã€ã€ãŒãæŽçããŸãããææç©ããšã«èªã¿æãšæ±ºããããšãéãããšããã®ã軞ã§ãã outline ïŒ åæã¬ã€ã€ãŒ ããã§æ±ºããã®ã¯ãã©ãã«çå°ãããããïŒããã«è³ãå±éãã§ããéã«ãããã§ã¯æ±ºããªãããšããã¯ã£ãããããŠãããšãåŸå·¥çšããã¬ãŸããã ããã§æ±ºããïŒæžãïŒ æ žã¡ãã»ãŒãžïŒããã ãã¯æã¡åž°ã£ãŠã»ããããšãã1è¡ ãã«ãœãïŒèª°åããïŒåœ¹è·ã»ç«å Žã»ç¥èã¬ãã«ïŒ å°ºïŒäœåã®ã»ãããŒã çå°ç¹ïŒèãçµããããšãã©ããªã£ãŠããŠã»ããã 倧ãŸããªå±éïŒç« ç«ãŠãšãåç« ã®çã æ žã»ã¯ã·ã§ã³ã®äž»åŒµã»æ ¹æ ïŒèšãããããšãšããªãããèšããã ããã§ã¯æ±ºããªãïŒåŸå·¥çšã«æž¡ãïŒ ã¹ã©ã€ãå²ãïŒ1æã«äœãåºããïŒâ storyboard ã®ä»äº ãã¶ã€ã³ã»ã¬ã€ã¢ãŠãã»èŠãç® â slide ã®ä»äº 现ããããŒã¯åçš¿ã»èšãåã ãã ãããã©ãããå±éã«ãªããããŸã§ã人éãåæããå Žæããšèãããšåãããããã§ãã outlineããºã¬ãŠãããã以éãå
šéšç¡é§ã«ãªããŸããåŸå·¥çšãã¹ãŠã®æ¯æ¢ãã«ãªãææç©ãªã®ã§ãããã ãã¯äººéãäž»å°ããŠåºããŸãã ãããŠããããå°å³ã«äžçªå€§äºã§ããçæåã«ãæ žã¡ãã»ãŒãžããšãåæããåãããããäœåšåŸåŸ©ããŠã軞ããã¬ãªããoutlineãå
ã«åºãã䟡å€ã¯ããã«ãããŸãã storyboard ïŒ è«çã»æŽåæ§ã¬ã€ã€ãŒ outlineãåããŠã1ã¹ã©ã€ãåäœã«èœãšããæ§ææ¡ã§ããããã§ããæžãããšïŒèœãšãããšããåããŠãããŸãã ããã§æžã ã¹ã©ã€ãå²ãïŒ1æã«äœãåºããïŒäœãèšãã åã¹ã©ã€ãã®åœ¹å²ïŒãªããã®ã¹ã©ã€ããèŠãã è«çã®ã€ãªããïŒäž»åŒµã®é åºã»é£èºã»æãæŒãããªãã ããã§ã¯èœãšãïŒæžããªãïŒ ãã¶ã€ã³æ
å ±ïŒè²ã»ã¬ã€ã¢ãŠãã»ãã©ã³ãïŒâ slide ã®ä»äº å³ã®å
·äœçãªäœã蟌㿠â ã¬ã³ããªã³ã°ãèŠãªãã slide ã§è©°ãã æ žã¡ãã»ãŒãžã»çå°ç¹ã®åå®çŸ© â outline ãæ£ èŠãç®ãèœãšãããšã§ããè«çã®é£èºã»é åºã»æãæŒããã ãã«éäžã§ããŸããé·ããŠäººéãéèªããã®ã¯æ£çŽããã©ããã§ãããããã§ãããã§ããããæŽåæ§ãã§ãã¯ã¯AIã®åŸæåéã§ããAIã«ã䞻匵ã®é£èºã¯ãªãããæãã¯ãªããããèŠãããŠã人éãè«çã ã確èªããã ãŸããæç« ã ãã®Markdownã«ããŠãããšãAIã«æž¡ãã³ã³ããã¹ããç¯çŽã§ããŸãã å®éã«ãã£ãŠã¿ããšãstoryboardã«ã¯ ãã©ã³ãžã·ã§ã³æå³ ãšããæ¬ãå
¥ããŠãããšäŸ¿å©ã§ããããã®ã¹ã©ã€ãããæ¬¡ã®ã¹ã©ã€ããžãäœãããã³ãšããŠæž¡ããããäžè¡æžããŠãããåŸã®ç« ããŸããæŽåãã§ãã¯ã§ããããå€æåºæºãšããŠå¹ããŠããŸãã ããã¶ã€ã³ãä¹ã£ãŠããªããããããæ§é ã®è¯ãæªããèŠãããææç©ã§ãã slide ïŒ èŠãæ¹ã¬ã€ã€ãŒ ããã§åããŠãã¶ã€ã³ã«çæããŸããæçµçã«èŠãã®ã¯äººéã§ããslideã§ãããããšïŒãããªãããšãã¯ããã§ãã ããã§äœã蟌ã ãã¶ã€ã³ã»ã¬ã€ã¢ãŠãã»ããžã¥ã¢ã«å 䞻圹ã®åŒ·èª¿ïŒäž»åœ¹ã«ããããã®ãäžçªå€§ããèŠããã å€åéã»å¯Ÿæ¯ãäžç®ã§ïŒæœè±¡èªãæ°åã»å³ã»å
·äœäŸã« çè§£ã®ããã®è£è¶³ïŒè«ççã«ã¯äžèŠã§ããäŒããããã«èŠãäŸç€ºã»å¯Ÿæ¯ã»å³ã»é ããã§ã¯ãããªãïŒå·®ãæ»ãïŒ è«çæ§é ãã®ãã®ã®å€æŽ â 穎ãèŠã€ããã storyboard ã«æ»ã æ žã¡ãã»ãŒãžã»çå°ç¹ã®å€æŽ â outline ãæ£ ããã®ãµã€ãºæã§ã¯äž»åŒµã匱ããããã®æ
å ±éã§ã¯äŒãããªããã人éã倿ããã®ãããã§ãã è«çãéã£ãŠããïŒäººã«äŒãããã§ã¯ãªããã§ãããã äžã®ãçè§£ã®ããã®è£è¶³ãããŸãã«ããã§ããè«ççã«ã¯äžèŠã§ããäŒããããã«èŠãèŠãæ¹ããããããããã®ã¯ãslideã«ããŠäžæã®çµµã«ããåãæãã©ãæããããèŠãŠåããŠåãããŸããstoryboardã§ãããè«çã確èªããŠãèŠããŸããã ã ããåŸåŸ©ãèŠããŸãã storyboard â slide ãåŸåŸ©ããŠAIã¬ãã¥ãŒã§è©°ãã ãããèšäºã®æ¬äœã§ããéãå®äŸã§èŠãŠãããŸãã é¡æã¯æ¶ç©ºã®ç€Ÿå
ã»ãããŒã çæAIãæ¥åã«åãå
¥ãã3ã¹ããã ãïŒ20åã»çŸå ŽãªãŒããŒåãïŒã§ããäžèº«ã¯ãããŒã§ããããŒã ãæ¬ç©ã«æããŠããŸãã ãŸã outline ãåºãã ãããªåœ¢ã§åæããŸããã # outlineïŒçæAIãæ¥åã«åãå
¥ãã3ã¹ãããïŒ20åïŒ æ žã¡ãã»ãŒãžïŒããããªãå
šéšAIåããªããå°ããå§ããŠãå¹ããæããåºããã ãã«ãœãïŒçŸå ŽããŒã ã®ãªãŒããŒãAIã«èå³ã¯ãããäœããæãä»ãããåãããæ¢ãŸã£ãŠããã çå°ç¹ïŒãæ¥é±ãèªåã®ããŒã ã§ã¹ããã1ã詊ããæ°ãããã å±éïŒ S1. æŽã¿ 3å ãAIå
¥ããããã©æ¢ãŸã£ãŠããããããå
±æ S2. ãªãæ¢ãŸãã 3å å
šéšãã£ãºãã«ããããšããŠè©°ãæ§é S3. 3ã¹ããã 10å æ žïŒã¹ããã1ïŒå°ããå§ããã2ïŒå¹æãèŠãã3ïŒåºããïŒ S4. ãŸãšã 2å æ¥é±ãã1åãæ±ºããŠåž°ã£ãŠããã S3ã®åã¹ãããïŒ ã¹ããã1ïŒå°ããå§ãã 䞻匵: å
šæ¥åãããªãã1æ¥åã ãAIåãã æ ¹æ : 倱æããŠããã¡ãŒãžãå°ããïŒæåäœéšãæçã§åŸããã ã¹ããã2ïŒå¹æãèŠã 䞻匵: å
¥ãã£ã±ãªãã«ãããå¹ãããæž¬ã ææš: äœæ¥æéã®ååŸæ¯èŒïŒæ°åã1ã€ïŒ ã¹ããã3ïŒåºãã 䞻匵: å¹ããåãããŒã ã«æšªå±éãã é çª: 1æ¥å â 2ã3æ¥å â ããŒã å±éïŒæ®µéãèžãïŒ ãã€ã³ãã¯ãåã¹ãããã®äž»åŒµã»æ ¹æ ãŸã§ã¯ããã§åæãããã§ã1ã¹ã©ã€ãã«äœãåºããã¯ãŸã 決ããªããã§ããã¹ã©ã€ãå²ãã¯storyboardã®ä»äºã§ãã storyboard ã«èœãšã outlineãåããŠã¹ã©ã€ãå²ããããŸããæ žã®ã3ã¹ããããã®éšåã ãæç²ããŸãã ãã¹ã©ã€ã #6ãã¹ãããå
šäœå 衚瀺 : ã¹ããã1â2â3 ã®æšªäžŠã³ïŒç¢å°1æ¬ïŒ ããŒã¯ : ãããããšã¯3ã€ã ããå°ããå§ããã广ãèŠããåºããã æå³ : å
ã«å°å³ãèŠããŠã3ã€ã§æžãããšå®å¿ããã ãã©ã³ãžã·ã§ã³æå³: #7ã§ã1æ¥åã ããã®å
·äœã«å
¥ãããã®æºåãå°å³ãæž¡ã ãã¹ã©ã€ã #7ãã¹ããã1ïŒå°ããå§ãã 衚瀺 : 1æ¥åã ãAIåããå³ïŒbefore/afterïŒ ããŒã¯ : ãå
šéšãããªãããŸã1åãäŸãã°è°äºé²ã®èŠçŽã ãã æå³ : "å°ãã"ã®å
·äœã€ã¡ãŒãžã1ã€ã ãæããã ãã©ã³ãžã·ã§ã³æå³: #8ã§ãå¹ãããæž¬ããã«ç¹ãã1æ¥åã®ææãå®éåããæµã ãã¹ã©ã€ã #8ãã¹ããã2ïŒå¹æãèŠã 衚瀺 : æéåæžã®ããã©ãŒã¢ãã¿ãŒïŒæ°å1åïŒ ããŒã¯ : ãå¹ãããæž¬ãããã¡ãªãæ¬¡ã®æ¥åã«ä¹ãæããã æå³ : ããã£ã±ãªãã«ããªããæ€éãã¢ãªãšäŒãã ãã©ã³ãžã·ã§ã³æå³: #9ã§åºããåã«ã2ã3æ¥åã«å¢ãããæ®µéãèŠãïŒoutlineåç
§ïŒ ãã¹ã©ã€ã #9ãã¹ããã3ïŒåºãã 衚瀺 : 1æ¥åâããŒã å
šäœãžã®æ³¢åå³ ããŒã¯ : ãå¹ããåãããŒã ã«æšªå±éããã æå³ : åäººã®æåãããŒã ã®ææã«æ¥ç¶ãã ãã©ã³ãžã·ã§ã³æå³: S4ãŸãšããžããæ¥é±1åãã£ãŠã¿ããã®è¡åã«ã€ãªãã ãããAIã«ãè«çã®é£èºãæãã¯ãªããããšã¬ãã¥ãŒãäŸé ŒããŸããAIããããè¿ã£ãŠããã®ã¯ã#7ã§”1æ¥å”ãšèšã£ãã®ã«ã#9ã§æ¥ã«ããŒã å
šäœã§ã¯ãªããã#8ãš#9ã®éã«”2åç®ã»3åç®ã«å¢ãã”ãæããŠããªããããšããææã§ããã 確ãã«ãã§ããããoutlineã«ã¯ã1æ¥åâ2ã3æ¥åâããŒã å±éïŒæ®µéãèžãïŒããšã¡ãããšæžããŠããŸããstoryboardåã®æ®µéã§åãããŒããŠããŸããã slide ã«ããŠåããŠèŠãã2çš®é¡ã®äžè¶³ storyboardã®è«çãçŽããŠãããå®éã«slideã«èµ·ãããŸããã人éãèŠããšãstoryboardã§ã¯èŠããªãã£ãäžè¶³ãããã«2çš®é¡åºãŠããŸãã ã¡ãªã¿ã«ãstoryboardã«å³ã®å
·äœãŸã§å
ã«æžã蟌ãã§ããå®è£
ããã®ã¯äºåºŠæéãªãã§ãããïŒãæ¥ãããããšããã§ãããæåããããããšããŠãŸããïŒãã¬ã³ããªã³ã°ããç¶æ
ãèŠãªããè©°ããã»ããæ£ç¢ºã ããã slideã§è©°ããŠstoryboardã«å·®ãæ»ã ã®ãèªç¶ãªæµãã«ãªããŸãããããåŸåŸ©ãå¿
èŠãªçç±ãã®ãã®ã§ãã è«çã®ç©ŽïŒstoryboardã«æ»ãåé¡ïŒ äžã§æ°ã¥ããã#8.5ïŒ2åç®ãè¶³ããã远å ãããšã1æ¥åâ2ã3æ¥åâããŒã å±éãšããæ®µéãã¡ãããšèŠããããã«ãªããŸãããããã¯storyboardåŽã®æ§é åé¡ã§ãã è«çã¯éã£ãŠãããã人éã®çè§£ã«ã¯è¶³ããªãèŠãæ¹ ã¹ããã1ã®ãè°äºé²ã®èŠçŽã ãããèšèã§ã¯äŒãããŸããã§ãslideã«ãããšå°å³ã§ã䞻圹ã«ãããå€åéãäžç®ã§åãããªããã§ããããè«ççã«ã¯äžèŠã§ãããçè§£ãšçŽåŸã®ããã«ãAIãªãïŒ30å / AIããïŒ5åãã®å¯Ÿæ¯ã1æè¶³ããããªããŸããã å·Šå³ã§èšã£ãŠãããšã¯åãã§ããè«çã¯1ããªãå€ããŠãªããå€ããã®ã¯èŠãæ¹ã ããã§ãå³ã®ã»ããããã£ãŠã¿ããããäžç¬ã§äŒãããŸãããã ãã¡ãã¯storyboardãçºããŠããŠããçµéšåã§ããåããããšãã§ããªãé åã§ããslideã«ããŠäººéãèŠãŠåããŠåããçš®é¡ã®äžè¶³ã§ãã åŸåŸ©ã®åäœã¯1ã¹ã©ã€ããç©ã¿äžããŠãã ãããæ£çŽã«æžããŠãããŸããåŸåŸ©ã¯1åšã§çµãããªãã§ããã§ããå
šäœãäœååšãåãããšããã€ã¡ãŒãžãšã¯å°ãéããŸãã å®éã®åãæ¹ã¯ããã§ãã1æããšã«ãstoryboardã©ããå®è£
â PNGïŒãŸãã¯ãã¬ãã¥ãŒïŒã§ç¢ºèª â 察話ã§å€æïŒãã®ã¿ã€ãã³ã°ã§åŸè¿°ã®å1ã»å2ã䜿ããŸãïŒâ slideä¿®æ£ â storyboardã«åæããå°ããåããç« ãçµãã£ããç« ãŸãšããããŠæ¬¡ç« ãžé²ããæããªãã¹ã©ã€ãã¯1ã2åŸåŸ©ã§ãµã¯ããšç¢ºå®ããŸããæããã¹ã©ã€ãã ãè€æ°ååŸåŸ©ããã1æãã€å¿
èŠãªåã ãåŸåŸ©ããã®ã宿
ã§ãã éãã¬ãã¥ãŒïŒè«çãã§ãã¯ã»æŽåãã§ãã¯ãéãã§åããã€ïŒã¯ç« ããšã«èŠåŠã倿ããŸããæ¯ç« å¿
ããããããããªããããã®ç« ã¯æããç®æãå€ãã£ãããç· ãã«ãããããšãã倿ã§ãã åãæ¹ã¯ããã§ãããŸãååïŒæŽã¿ãšããªãæ¢ãŸãããïŒãã¹ã©ã€ãåäœã§é çªã«åŸåŸ©ãããæ¬¡ã«æ žã®ã3ã¹ãããããåãããã«åãããŸãšããåæ§ããã®ããšãå
šäœãéããŠãæ žã¡ãã»ãŒãžããã¬ãŠãªãããã確èªããã 1åšããšã«ç¢ºå®ã«1åãã€æœ°ããŠãããåãã»ã©ãäžçºã§åºãŠãããã®ãè¶
ããŠããæèŠããããŸããæåãããäœåŸåŸ©ãããããã ããšæ§ããŠããã®ãã³ãã§ãã ãªããããã§äœ¿ã outlineã»storyboardã»slide ã®ã³ããçšãã³ãã¬ã¯ãèšäºã®æåŸïŒä»é²ïŒã«ãŸãšããŠãããŸããæãåãããšãã¯ãã£ã¡ãã©ããã ç« ããŸããã§ã¹ã©ã€ãã®èŸ»è€ãåããã ã¹ã©ã€ãåäœã®åŸåŸ©ãç©ãã§ãããšãããã¿ã€ãã³ã°ã§ãåã®ç« ãšèŸ»è€ãåããªããªã£ãŠãããåé¡ãåºãŠããŸããããããã£ãããããããããã§ãããã ãã£ãã®ãçæAI3ã¹ããããã®äŸã§ãå®éã«èµ·ãã2ã€ã®åãã玹ä»ããŸãã äŸïŒå
é£ããé²ã ããªãæ¢ãŸããïŒå
šéšãã£ãºãããããšããŠè©°ãïŒãã®ã¹ã©ã€ãã«ãå¢ãã§ãã§ãçã㯔å°ããå§ãã3ã¹ããã”ã§ãããŸã§æžããããªã£ããã§ããããã®ã»ããæµããããæ°ãããŠãã§ãstoryboardã®ããã©ã³ãžã·ã§ã³æå³ãæ¬ãèŠããšããã®ã¹ã©ã€ãã®åœ¹å²ã¯ã”è©°ã”æ§é ãèŠã㊔ãããã©ãããã°ïŒ”ãšåŒã£åŒµããããšã§ãããããã§çããŸã§åºããšã次ã®ã3ã¹ããããã®ç« ã§åããŠèŠããã¯ãã®è§£ãå
é£ãããŠãã¿ãã¬ã«ãªããã ããåé¡æèµ·ã«åŸ¹ããŠãè§£ã¯æ¬¡ã®ç« ã«æž©åãstoryboardã«ãããã§ã¯çããåºããªãïŒ3ã¹ãããã®ç« ãžæž¡ãïŒããšæ³šèšããŠæ»ããŸãããæ¹åæ¡ã”æªãæ¡”ã ã£ããããããªããã§ããããã§ãååŸã®ç« ãšã®é¢ä¿ã§èŠããšãããã§åºãã¡ããããªãã£ãã äŸïŒååå
ãèšèšãã ãå
šéšãã£ãºãã¯è©°ãããšããåé¡ãåºãã¹ã©ã€ããšãã3ã¹ããããã®ã¹ããã1ãã ãã1æ¥åã ãããšããçãã®ã¹ã©ã€ãããã®2æã¯åé¡ãšçãã®ãã¢ã§ããåé¡åŽã«ãã ããå°ããå§ããã®ã倧äºããšçµè«ã£ãœãäžèšãè¶³ããããªããã§ããããããã¹ããã1ãšæå³ãäºéã«ãªããŸããã ã£ããåé¡åŽã¯ãè©°ããã«åŸ¹ããŠããå°ããå§ããããšããçµè«ã¯ã¹ããã1ãååãããè«çããè©°ã â ã ãã1æ¥åã ãïŒãã®è£è¿ãã®çãïŒããšäžçæžãã«ãªããŸããstoryboardã§ã¯åé¡åŽããçµè«ã¯æãããªããã¹ããã1ã§ååããšåæãã倿ŽäžèŠãªã¹ããã1åŽã¯ãåæäžèŠããšæç€ºããŸããã ãã®2ã€ã«å
±éããã®ã¯ãstoryboardã®ããã©ã³ãžã·ã§ã³æå³ãæ¬ãå€æåºæºã«ãªã£ãããšã§ããã¹ã©ã€ãåäœãèŠãŠããŠã¯æ°ã¥ããªããããã®ã¹ã©ã€ãããæ¬¡ãžãäœãæž¡ããŠäœãæž©åããããã§èŠãŠãããšèŠããŠããŸãã outline ã¯ãç
§ããåºæºããšããŠäœ¿ã åŸåŸ©ããã®ã¯ storyboard â slide ã§ããoutline ã¯åŸåŸ©ã«å·»ã蟌ã¿ãŸãããæåã«åæããå
容ããéäžã§å€ããªãåºæºãšããŠäœ¿ããŸããåŸåŸ©ã®ãã³ã«ãoutlineã«æ»ã£ãŠåãããšã確ãããã ãã§ããããŸã«ã§ãããAIãšè©±ããŠãããšäž»åŒµãã®ãã®ããããŠããæããããŸããããããæã¯ãoutlineãæ£ãšããŠè©äŸ¡ããããšã§è¡ãéããé²ããŸãã ä»åã®å®äŸã§ç¢ºèªãããšãããªããŸãã 倿Žå
容 outlineç
§å 倿 #8.5ã2åç®ãè¶³ããã远å ã1æ¥åâ2ã3æ¥åâããŒã å±éããšäžèŽ æ¡çš #7ã«æé察æ¯ã¹ã©ã€ãã远å çŸå ŽãªãŒããŒåãã»æ°å察æ¯ã¯å¹ã æ¡çš ãã¹ããã4ïŒå
šç€Ÿå±éããè¶³ããããªã£ã ãçŸå ŽãªãŒããŒã»å°ããå§ãããããå€ãã outline倿Žã«æ ŒäžãããŠå€æ ãå
šç€Ÿå±éãã¯storyboardåŽã®åŸåŸ©ã§ã¯æ±ºããŸãããoutlineãå€ãããã©ããã®å€æã«æ ŒäžãããŸããoutlineãã³ãã³ãå€ãããšãããããåæããæå³ããªããªããŸãããã ã ãããšèšã£ãŠãoutlineã倿Žããªããšæåºå°ã«ãªãã®ããããªãã§ããããã¯æè»ã«å€æããŸãã AIã«ã¹ã©ã€ããã¬ãã¥ãŒãããããã³ããã®åïŒã³ããå¯ïŒ åŸåŸ©ã®äžã§AIã«æããããã³ãããå®éã«ãã£ãŠã¿ããšãåããæ±ºãŸã£ãŠãããã§ããããç¹ã«å¹ãããã®ã3ã€ç޹ä»ããŸãã AIãéããã£ãŠãããã®ã¯è«çãã§ãã¯ãšæŽå確èªã§ããã§ãæãæ¹ãééãããšãå
šéšçŽããŠããŸãããåãã¬ãã¥ãŒã3åšåãããšããéå°æ¹ä¿®ã«ãŒãã«ã¯ãŸããŸãã å1ïŒæ¹åæ¡ã®è¡çªæ€åº ãã® slide ã§ [ããããæ¹å/远å ] ãããããšæãã storyboard #N ã®ãèšèšæå³ïŒãã©ã³ãžã·ã§ã³æå³ïŒããšè¡çªããªããå
ã«ç¢ºèªããŠã ç¹ã«ãååŸã®ã¹ã©ã€ãïŒ#N-1 / #N+1ïŒã®åœ¹å²ã䟵é£ãããã åŸæ®µã§åºãã¯ãã®èŠçŽ ãå
é£ãããŠããªãããèŠãŠã AIãstoryboardã®æå³æ¬ãåŒçšããŠãè¡çªããã®ã¯ãã®1ç¹ããšéå®ããŠè¿ããŠãããŸããOKãªãslideä¿®æ£ãè¡çªãªãèšèšãå®ãæ¹åã«æ¡ãçµããŸããåŸåŸ©æé ã®ã察話ã§å€æãã¹ãããã§ããŸãæåã«äœ¿ãã®ãããã§ãã å2ïŒç« ããŸããèŠçŽ ã®éè€ãã§ã㯠ãã®èŠçŽ ãåŸæ®µã®ã¹ã©ã€ããšæå³ãäºéã«ãªã£ãŠããªããïŒ äºéãªããã©ã¡ãã®ã¹ã©ã€ãã§ååããã®ãè«çãäžçæžãã«ãªããã ãã®ã¹ã©ã€ãã®åœ¹å²ãäžèšã§èšããšäœã§ãæ®ãã¯ã©ããåŒãåãïŒ å3ïŒã¬ãã¥ãŒã«æ¯æ¢ããããã ãã®ç« ïŒã¹ã©ã€ãNãMïŒã®è«çã ãã1åãã§ãã¯ããŠã äœåšãåããªããŠãããçŽãã®ã¯è«çãç Žç¶»ããŠããæã ãã 衚çŸã®å¥œã¿ãèšãåãã¯è§Šããªãã§ã ã1åã ãïŒäœåšãåããªãïŒçŽãã®ã¯è«çç Žç¶»ã ãïŒè¡šçŸã¯è§Šããªããšããã®ãèã§ããæ¯æ¢ããæžããªããšãAIã¯äžå¯§ã«äœåšãçŽãããšããŠãããããªããŠããæãŸã§å€ããŠããŸãïŒç¬ïŒãéå°æ¹ä¿®ã«ãŒããé¿ããããã®ãæå€ãšå€§äºãªäžè¡ã§ãã AIã¬ãã¥ãŒã芳ç¹ããšã«ãšãŒãžã§ã³ãåãã å1ã3ãæåã¯æ¯åæã§ã³ããããŠæããŠãŸãããã§ãäœæ¬ãäœã£ãŠããšãæ¯ååãããšèšã£ãŠããªããšæ°ã¥ããã§ããããåã¯ãã®åã Claude Code ã®ãšãŒãžã§ã³ãã«èœãšã蟌ãã§ããè«çã ãèŠã奎ããèŸå£ã§æ®Žã奎ãããã«ãœãã«ãªããã奎ãã¿ããã«èгç¹ããšã«åããŠæã£ãŠãŸãã ããã¯ããŒã«ã®åãåæ©åãã話ãªã®ã§ãé²ãæ¹ã®æ¬çããã¯å€ããŸããã§ããã©ãããç®ç·ã§ãšãŒãžã§ã³ããäœãããã ãã¯ããã®èšäºã®è骚ãšãŸã£ããåããªã®ã§çœ®ããŠãããŸãã 1ãšãŒãžã§ã³ãïŒ1芳ç¹ãæ··ããªãã ãããstoryboardã§ãã¶ã€ã³ãèœãšããšè«çãèŠããŠããããšãã話ãšåãæ§é ã§ããã¬ãã¥ãŒã芳ç¹ã1ã€ã«çµãããè¯ãæªããèŠããã ã©ããããçµãããšãããšãæ¡ç¹ã®èµ·ç¹ããããŠèгç¹ããšã«éã«ãªããŸããåãã¹ã©ã€ããæž¡ããŠããè«çãèŠã奎ã¯ãç Žç¶»ããªããã°100ç¹ãããå§ãããèŸå£ã§æ®Žã奎ã¯ããšãããã0ç¹ïŒãŽãç®±è¡ãïŒãããå§ããŠããªããã¡ãã®èšŒæ ãæãã«ããã芳ç¹ãéãã°èŠæ¹ã®åæããšå€ãããã§ãããã1ã€ã®å¥Žã«å
šéšãããããšããã®åæãæ··ãã£ãŠçŠç¹ã倱ããŸãã ãããŠããäžã€ã®èããåãšãŒãžã§ã³ãã«ãäœãèŠãªããããæžããŠããããšãè«çæ
åœã«ã¯ãâãã®ãã«ãœãã¯é¢è±ããâã¿ãããªææ
ã®è©±ã¯ãããªãããã¯å¥ã®å¥Žã®ä»äºã ããšæç€ºããŠãããŸããå3ã§ãè«çã ãèŠãŠã衚çŸã¯è§Šããªããšæ¯æ¢ãããããã®ãšåãããšãããšãŒãžã§ã³ãã®å®çŸ©ãã®ãã®ã«çŒã蟌ãã§ãããã§ãã éã«ãå
šéšããæãã«èŠãŠããšããäœã§ãå±ãäœããšãè¿ã£ãŠããã®ã¯âãããã ãã©ãªããéãâã¬ãã¥ãŒã®è£è¿ãââãè²ã
ææããããã©ãã§ãäœãçŽãã°ããã®?ããšããçŠç¹ã®ãªããã€ã«ãªããŸããäžçºäŸé Œãå€ããã®ãšåãçç±ã§ããã å®éãããã£ãŠäœã£ãŠããŸã ãããããšãŒãžã§ã³ããããããäœã£ãŠããŠãä»ã¯åã®ç°å¢ã§29ååããŠãŸããã¬ãã¥ãŒç³»ã ããããªãæ€çŽ¢ãäžæžãçšãæ··ãã£ãŠãŸãããèãæ¹ã¯å
šéšåãã§ã1åïŒ1ä»äºããããã§ã¯ãããŸè©±ããã¹ã©ã€ãã¬ãã¥ãŒã®äžãã2åã ãããäœãæž¡ããŠïŒäœãèŠãããŠïŒäœãèŠãããªãããã®åœ¢ã§åºããŸãã 1ã€ç®ã¯ãèŠãæ¹ã®è©äŸ¡ã§å¹ããã«ãœãã«æäŸãã奎ããã®èšäºã§ãã£ãšã誰ã®ç®ç·ã§èŠãæ¹ãè©äŸ¡ãããããšèšã£ãŠããŸãããããããããã®ãŸãŸãšãŒãžã§ã³ãã«ãããã®ã§ãã ãšãŒãžã§ã³ãïŒçŸå ŽãªãŒããŒã«ãªããã奎ïŒãã«ãœãæäŸïŒ äžããæ
å ±ïŒ - ãã«ãœãèšå®ïŒçŸå ŽãªãŒããŒãAIã«èå³ã¯ãããäœããæãä»ããã åãããæ¢ãŸã£ãŠãã ïŒ outlineã§æ±ºãããã«ãœããã®ãã®ïŒ - ã¬ãã¥ãŒããç« ã®ã¹ã©ã€ãã ãïŒäŸïŒS2ããªãæ¢ãŸãããïŒ - â»å
ã®ç« ïŒè§£ïŒ3ã¹ãããïŒã¯æž¡ããªãïŒå
èªã¿ãããªã èŠã芳ç¹ïŒããã ãïŒïŒ - 1æãã€åããäœéšããŠãããŸã®æ°æã¡ããè¿ã - 枩床ãäžãã£ããäžãã£ããïŒâââïŒãå
å¿ã®å£°ãå·ãã/èŠæããç¹ èŠãªããã®ïŒ - ç¹æ°åã»ã©ã³ã¯ä»ãïŒããªãïŒ - 俯ç°ã§æ§é ã®è¯ãæªããè«ããããšïŒããã¯å¥ã®å¥Žã®ä»äºïŒ 2ã€ç®ã¯ãå3ãè«çã ãèŠãŠã衚çŸã¯è§Šããªãããã®ãŸãŸåžžé§ãããè«çã ãèŠã奎ã§ãã ãšãŒãžã§ã³ãïŒè«çã ãèŠã奎ïŒå3ãåºå®ãããã®ïŒ äžããæ
å ±ïŒ - storyboard ãš slideïŒè«çã®éãã確ããããç¯å²ïŒ - èŠãç« ã®ç¯å²ïŒäŸïŒS3ã3ã¹ããããå
šäœïŒ èŠã芳ç¹ïŒããã ãïŒïŒ - 䞻匵âçµè«ã®é£èºãçšèªã®ããæ¿ããååãããªãäŒç·ãæããäŸåãççŸ - ç Žç¶»ããªããã°ãè«ççã«ç Žç¶»ãªããã§çµããïŒç¡çã«ç²æ¢ãããªãïŒ èŠãªããã®ïŒ - 衚çŸã®å¥œã¿ã»èšãåãïŒïŒå3ã®ã衚çŸã¯è§Šããªããã®ãã®ïŒ - ããã®ãã«ãœãã¯é¢è±ãããã¿ãããªææ
ã®è©±ïŒå¥ã®å¥Žã®ä»äºïŒ - 鮮床ãç©çéçïŒã30åã§15æã¯å€ããçïŒ 2ã€ãšããå¹ããŠãã®ã¯ãäžããæ
å ±ãã§ãããã«ãœãã®å¥Žã«æž¡ã人ç©å㯠outline ã§åæãããã«ãœããã®ãã®ãè«çã®å¥Žã«æž¡ãç¯å²ã¯ãããŸæŽåã確ããããç« ã ãã äœãèŠãããããã¯ãäœãæž¡ããã§ååæ±ºãŸã ãã§ããããå
èªã¿ãããããªããªãå
ã®ã¹ã©ã€ããæž¡ããªããããã§ã outline ããã¹ã¿ãŒãšããŠå¹ããŠãŸãã ãã¡ãã®ãšãŒãžã§ã³ãã¯äžçªæ±çšæ§ãæã£ãŠããŸãã ãšãŒãžã§ã³ãã®å
·äœçãªäžèº«ïŒã©ãå®çŸ©ããŠãã©ããªåºåãè¿ã£ãŠãããïŒã¯ãããã ãã§1èšäºã«ãªãã®ã§ å¥èšäºã«æžããŸãã ãããã§æã£ãŠåž°ã£ãŠã»ããã®ã¯ãåãåºãŸã£ãã芳ç¹ããšã«åºå®ããããã ã1ãšãŒãžã§ã³ã1芳ç¹ã§æ··ããªãããšããç®ç·ã ãã§ãã ã¹ã©ã€ãäœæã§äººéãšAIãã©ãåæ
ããã ãã®ã¯ãŒã¯ãããŒã¯ãå
šéšAIã«ä»»ãããã§ã¯ãããŸãããäœæ¥ã¯ã©ãã©ãAIã«ä»»ããŸããã§ã ãäœãèšãããããã ãã¯ã人éãçµ¶å¯Ÿã«ææŸãã¡ããããªã ãä»»ããããšã䞻匵ãã®ãã®ãæ¶ããããã§ãã ãŸããã¬ã€ã€ãŒããšã«ä»»ããããæãšã人éãæ¡ãç¶ããæãæŽçããŸãã ã¬ã€ã€ãŒ AIã«ä»»ãã 人éãæ¡ãïŒææŸããªãïŒ outline ãã«ãœãåæã®çŽ æ¡ãå±éãã¿ãŒã³ææ¡ãæãã®ææ äœãäŒããããã»ã©ãã«çå°ããããïŒæå¿ïŒã誰ã«åããã storyboard è«çã®é£èºã»æŽåæ§ã»é åºã»æãã®ãã§ãã¯ãé·ãmarkdownã®éèª ããã®äž»åŒµã¯æ¬åœã«èšãããããšããã®åæšãåªå
é äœ slide ãã¶ã€ã³éç£ãã¬ã€ã¢ãŠãæ¡ãããžã¥ã¢ã«å 䞻圹ãäžçªå€§ããèŠãããã»å€åéãäžç®ã§åãããïŒèŠãæ¹ã®æçµå€æïŒããã«ãœãç®ç·ã®è©äŸ¡ åŸåŸ©ã»æ¯æ¢ã å·®ãæ»ãåŸã®è«çç Žç¶»ã®åãã§ã㯠倧æ ãå€ãããã®æææ±ºå®ïŒoutline倿Žãžã®æ Œäžãå€æïŒ ã§ã¯ããªããäœãèšãããããã ãã¯ææŸãã¡ããããªãã®ãããããæåããåãã£ãŠããããããªããã§ããããæ£çŽã«èšããšãäžåºŠããã¶èªåã§åããªãã詊ããããšããããŸããoutlineã ã人éãäœã£ãŠãstoryboard以éã®åŸåŸ©ã¯ãšãŒãžã§ã³ãã«ã«ãŒãã§åããããã¿ãããªã çµæãããŸããããŸããã§ãããçç±ã倧äºã§ã ãšãŒãžã§ã³ãã£ãŠåºæ¬ãåŒãç®ãããè£
眮 ãªãã§ãããåãäœã£ãŠãã¬ãã¥ãŒçšãšãŒãžã§ã³ãã¯ãèªåã«è¶³ããªã芳ç¹ãè£ããããã«äœã£ãŠããã€ãŸããããã匱ãããããã¯èŠããªãããšåãæ¹åã«åãããããã«ãŒãã§åããšãåãã»ã©åŒãç®ãç¶ããŠãæåŸã¯ 人éã®äž»åŒµãã®ãã®ãŸã§åãããŠæ žãèœã¡ã ãè«çã ãå³ããããããçµæãæŽã£ãŠããã©äœãèšã£ãŠãªããäŒãããªãã¹ã©ã€ããåºæ¥äžãããã§ãããã ããäžã€åä»ãªã®ãã AIã説åŸã§ããŠããŸã ããšãããã匱ããªã?ãã«å¯ŸããŠããããããã¯æå³ããŠããããŠãããè«çã¯éã£ãŠãããšè¿ããšãAIã¯ãããšãããªãããããã«ããšåŒãäžãããŸãããã£ã¡ãééã£ãŠããŠããã§ããæ¬æ¥ãã³ããæ¹å€è
ã ã£ãã¯ãã®ãšãŒãžã§ã³ãããèªåã®èšèã§äžžã蟌ããŠããŸãããããåãã»ãã·ã§ã³ã§ç¶ããŠããšããã®â説åŸããå±¥æŽâãæºãŸã£ãŠãã©ãã©ãå¯ãæ·»ã£ãŠããïŒïŒçããªãïŒãã ããåã¯èŠæã§ã»ãã·ã§ã³ãåã£ãŠããŸã 説åŸãããŠãªãæ°ããæ¹å€è
ã«æ»ããŸããããã¯äººéãæèããŠããèšèšã§ãã ã ããçµè«ã¯ããã§ãã æ£ïŒãã¹ã¿ãŒïŒïŒãäœãèšãããããã¯ã人éãææŸãã¡ããããªã ããšãŒãžã§ã³ãã¯åªç§ãªæ¹å€è
ã ãã©ãèšããªãã«ãªããšäž»åŒµããšæ¶ããã ããåã¯ãšãŒãžã§ã³ããšã¯âå§å©ããâãããã®è·é¢æã§äœ¿ã£ãŠãŸããoutlineããã¹ã¿ãŒã«åºå®ããã®ããçµå±ãããšåãçç±ãªãã§ãããã ã¡ãªã¿ã«ããããä¹ãè¶ããŠåŸåŸ©ãã«ãŒãã§ã¶ãåããããã«ããã«ã¯ãåããšãŒãžã§ã³ãã ããããªãã䞻匵ãå®ãåŽãã®ãšãŒãžã§ã³ããèŠãã¯ãããããããŸãã©ããªåœ¢ã§äœãã°ããã®ã暡玢ããŠãããšããã§ãã AIãéããã£ãŠãããã®ã¯ãè«çãã§ãã¯ã»å©ãå°çæã»ãã¶ã€ã³éç£ããšããäœæ¥ã§ããéã«ãæå¿ãšäººéçè§£ã®å€æ ââãäœãèšãããã誰ã«ã©ãäŒããããââ ã¯ãããããAIã«æž¡ãã¡ããããªãçš®é¡ã ããæ®ããŸãããå¹çåãããªãã£ããããããªããŠãæž¡ãã¡ããããªããã§ããããäœæ¥ãéããªã£ãåãã¹ã©ã€ãã®ãããããããããæ žã¡ãã»ãŒãžãã©ãéãããã«é ã䜿ããããã«ãªããŸããã ããŒã«ã¯Marp / Slidev / PowerPointã©ãã§ãããïŒåŸåŸ©ããããã®å·®ïŒ é²ãæ¹ãã®ãã®ã¯Marpã§ãSlidevã§ãPowerPointã§ãåãã§ããéå
·ã®åã«é²ãæ¹ããããŸãã ãã ãåŸåŸ©ãåæã«ãããšãstoryboardãšslideã¯è¿ãã«ããã¹ãããšããè«ç¹ãåºãŠããŸãã storyboard ã slide ãåããªããžããªã«ããã¹ãïŒmarkdownïŒãšããŠçœ®ããããŒã«ã»ã©ãè«çâèŠãæ¹ã®è¡ãæ¥ãã©ã¯ã«ãªããŸããslideãmarkdownãªããstoryboardãšäžŠã¹ãŠå·®åã§ç®¡çã§ããããAIãäž¡æ¹ãã®ãŸãŸèªãããAIãžã®æç€ºã人éã®å€æãšããæéã¯æ®ããŸãããå°ãªããšããslideãå¥ãã¡ã€ã«ã«æžãåºããŠåæãããæéãæ¶ããŸãã PowerPointã§äžåºŠãã£ãããšããã£ãŠãstoryboardã®markdownãçŽããŠãPowerPointã«æ»ãã®ãé¢åã§éäžããåæã厩ããŸãããçµå±ã¹ã©ã€ãã ãæåã§çŽããŠstoryboardãå€ããŸãŸæ®ããã¿ãŒã³ã§ãããšã¯ãããPowerPointãGammaãã䜿ããªãå Žé¢ããããŸãããããã®å Žåã¯ãstoryboardãå¥ã®markdownã§æã£ãŠãããŠãã¹ã©ã€ããçŽããã人éãæã§storyboardã«ãåæ ãããéã³åœ¹ãèªåã§ããã°ãéå
·ãåãããã®workflowã¯åããŸãã ããŒã«å¥ã®å
·äœïŒã»ããã¢ããã䜿ãåãïŒã¯ãæ«å°Ÿã®ã·ãªãŒãºèšäºã«ãŸãšããŠããŸãã ãŸãšãïŒAIãšåŸåŸ©ããªããã¹ã©ã€ããäœãé²ãæ¹ outlineãåããããstoryboard â slideã1æãã€åŸåŸ©ããïŒäžã®å³ã®ãšããã§ãïŒã åŸåŸ©ã§äœãçŽããã³ã«ãoutlineã«æ»ã£ãŠåãããšã確ãããŸãã æ žã¡ãã»ãŒãžããæåŸãŸã§èãŸããã«æ®ã£ãŠããã 誰ã®ç®ç·ã§èŠãæ¹ãè©äŸ¡ããŠããã äžçºäŸé Œãå€ããã®ã¯ããã®ã¬ã€ã€ãŒãå
šéšé£ã°ããŠæçµåœ¢ãåºåãããŠããããã§ããäžæ®µãã€å
·äœã«éããªããåæããŠãããšãããªããéãããæ¶ããŠããçµããã®èŠããªãææ»ãããã1æãã€åã«é²ãåŸåŸ©ãã«å€ãããŸãã 詊è¡é¯èª€ã®é åºãå€ããŠãAIãèªããäžéãã¡ã€ã«ãæãã§ã1æãã€åŸåŸ©ããªããåããããã ãã§ãããã¿ãããªäœãçŽããæžã£ãŠãoutlineã§æ±ºããæ žã¡ãã»ãŒãžãæåŸãŸã§æ®ããéãã¯ã»ãããŒæ¬¡ç¬¬ã§ããããã®2ç¹ã¯äœæ¬ãäœã£ãŠããåã®å®æã§ãã ã¹ã©ã€ãã®äœãæ¹ãã®ãã®ã®è©±ã¯ããã§äžåºŠåããŸããå®éã®éå
·ã®è©±ã¯ããã®äžã®ã·ãªãŒãºèšäºã«ãŸãšããŠãããŸãã ã»ãªãŸãã ã·ãªãŒãºïŒAIÃã¹ã©ã€ãã¥ãã AIã«äžžæããããå¶çŽãšã«ãŒã«ã§ãæå³ã©ããã®95ç¹ããæ¯åããããŠäœãã·ãªãŒãºã§ãã ã»ããã¢ããããšã¯ã¹ããŒã â æ§æãŒãã§äœã£ãŠé
ã Marp ãš Slidev ã®äœ¿ãåã â Git管çèµ·ç¹ã§ã©ã£ã¡ã䜿ã å®ç©ç·šïŒå
šéšå
¥ãïŒ ïŒç§»æ€ã§ãããã¶ã€ã³ã·ã¹ãã ãäžžããšå
¬é â âããŸãã ãã¶ã€ã³ããŒã¯ã³ç·š â ãªããæ ãã§çžãã®ãïŒå®ç©ç·šã®æ·±æãïŒ ãã¶ã€ã³ã·ã¹ãã ç·š â ãªãåã貯ããŠè²ãŠãã®ãïŒå®ç©ç·šã®æ·±æãïŒ ä»é²ïŒoutline ã®åïŒã³ããŒããŠäœ¿ã£ãŠãã ããïŒ ãã§ãæåã®outlineã£ãŠäœãæžãã°ããã®ïŒããšãã人åãã«ãåãæ¯å䜿ã£ãŠããåã眮ããŠãããŸãããããªããã¹ã©ã€ãäœã£ãŠããšæãã代ããã«ããããåããŠããAIã«æž¡ããããã ãã§è©±ãäžæ°ã«æ©ããªããŸãã # outlineïŒ[ã¿ã€ãã«] ## èšèšææ³ - æ žã¡ãã»ãŒãžïŒ[1è¡ãããã ãã¯æã¡åž°ã£ãŠã»ããããš] - ã¿ãŒã²ãã ïŒ[誰åãã圹è·ã»ç«å Ž] - æ³å®åå è
å ïŒ[ã©ããªç¶æ³ã»ç¥èã¬ãã«ã] - å¿ããã¹ãåãïŒ[åå è
ãå
å¿æ±ããŠããåã] - çå°ç¹ ïŒ[èãçµããããšãã©ããªã£ãŠããŠã»ããã] ## ã»ã¯ã·ã§ã³æ§æïŒå
šNåïŒ - S1. [æŽã¿] ïŒNåïŒçãïŒ[äžèš] - S2. [...] ïŒNåïŒçãïŒ[äžèš] - S3. [æ ž] ïŒNåïŒçãïŒ[äžèš] - S4. [ãŸãšã] ïŒNåïŒçãïŒ[äžèš] ## åã»ã¯ã·ã§ã³ã®äžèº«ïŒäž»åŒµãŸã§ãã¹ã©ã€ãå²ãã¯ãŸã ããªãïŒ [æ žã®ã»ã¯ã·ã§ã³] - 䞻匵ïŒ[ãã®ã»ã¯ã·ã§ã³ã§èšãããããš] - æ ¹æ ïŒ[ãªãããèšããã] - äŸ ïŒ[å
·äœäŸ] ãã€ã³ãã¯ãåã»ã¯ã·ã§ã³ã®äž»åŒµã»æ ¹æ ãŸã§ã¯æ±ºãããã©ã1ã¹ã©ã€ãã«äœãåºããïŒã¹ã©ã€ãå²ãïŒã¯ãŸã æžããªããããšãã¹ã©ã€ãå²ãã¯æ¬¡ã®storyboardã®ä»äºã§ãã åãçµãã£ãããAIã«ããæž¡ããŸãã ãã®outlineãstoryboardã«èµ·ãããŠã åã¹ã©ã€ãã¯ã衚瀺ïŒããŒã¯ïŒæå³ïŒãã©ã³ãžã·ã§ã³æå³ãã®4è¡ã§æžãã ãã¶ã€ã³ã®ããšã¯æžããªãã§ãè«çãšæ§æã ãè©°ããŠã ä»é²ïŒstoryboard ã®åïŒ1ã¹ã©ã€ãã®èšæ³ïŒ storyboardã«èœãšããšãã1ã¹ã©ã€ãã®æžãæ¹ã«è¿·ã£ãããã®é圢ã䜿ã£ãŠãã ããã ãã¹ã©ã€ã #Nã[ã¹ã©ã€ãã¿ã€ãã«] 衚瀺 : [ã¹ã©ã€ãã«åºãèŠçŽ ãå³ã»ããã¹ãã»æ°åãªã©] ããŒã¯ : ã[ãã®ã¹ã©ã€ãã§å®éã«è©±ãããšã1ã2æã§]ã æå³ : [ãã®ã¹ã©ã€ããããçç±ãèŽè¡ã«äœãæããããã] ãã©ã³ãžã·ã§ã³æå³: [次ã®ã¹ã©ã€ããžäœãæž¡ããäœãæž©åãããã1è¡ã§] ãã€ã³ãã¯ããã¶ã€ã³ã®ããšã¯æžããªããããšãšããã©ã³ãžã·ã§ã³æå³ãå¿
ãæžããããšã§ããåŸè
ã¯ç« ããŸããæŽåãã§ãã¯ã§å€æåºæºãšããŠå¹ããŠããŸãã ä»é²ïŒslide ãèŠããšãã®åãã®å slideãã¬ã³ããªã³ã°ããŠäººéãç®ã§èŠããšããåãèªåã«åããã§ãã¯ãªã¹ãã§ããstoryboardã®è«çãã§ãã¯ã§ã¯èŠããŠããªããèŠãæ¹ã¬ã€ã€ãŒåºæã®åãã§ãã ã䞻圹ã®åŒ·ãã - ãã®ã¹ã©ã€ãã䞻圹ã«ããããã®ãäžçªå€§ããã»ç®ç«ã£ãŠèŠããŠãïŒ - å€åéã察æ¯ããäžç®ã§åãããµã€ãºã»é
眮ã«ãªã£ãŠãïŒ - æœè±¡çãªèšèããæ°åã»å³ã»å
·äœäŸã«å€ãã£ãŠãïŒ ãè£è¶³ã®å¿
èŠæ§ã - è«ççã«ã¯èŠããªããã©ã"çè§£ã®ãã"ã«è¶³ãããè£è¶³ã¯ããïŒ ïŒå¯Ÿæ¯ã»äŸç€ºã»è£è¶³ã®äžèšãªã©ããããªãslideã«è¿œå ããŠstoryboardã«å·®ãæ»ãïŒ ãååŸãšã®é¢ä¿ã - åã®ã¹ã©ã€ããšåœ¹å²ããã¶ã£ãŠãªãïŒåãããšãäºéã«èšã£ãŠãªãïŒ - åŸã®ã¹ã©ã€ãã§åºãã¯ãã®èŠçŽ ããããã§å
é£ãããŠãªãïŒ - ãã®ã¹ã©ã€ãããæ¬¡ãžãäœãæž¡ããŠäœãæž©åããèšèšã«ãªã£ãŠãïŒ ãããstoryboardã®ããã©ã³ãžã·ã§ã³æå³ãæ¬ãšç
§ããåãããªããèŠãŠãããšãåŸåŸ©ã®ç²ŸåºŠãäžãããŸãã ããããå
ã¯ãæ¬æã§æžãã storyboard â slide ã®åŸåŸ©ã«å
¥ã£ãŠããããšããæµãã§ãã ã芧ããã ãããããšãããããŸãïŒ ãã®æçš¿ã¯ã圹ã«ç«ã¡ãŸãããïŒ åœ¹ã«ç«ã£ã 圹ã«ç«ããªãã£ã 0人ããã®æçš¿ã¯åœ¹ã«ç«ã£ããšèšã£ãŠããŸãã The post AIãšã¹ã©ã€ããäœãé²ãæ¹ïœããªããéããä¿®æ£ã«ãŒããçµãããªã人㞠first appeared on SIOS Tech Lab .
æäœæ¥ããéã«åããªããã ããAIã§äœããç°å¢ãæŽãã ã©ãïŒSlidev ãš Claude Code ã§ã¹ã©ã€ããéç£ããŠãéŸã¡ããã§ãã ããæè¿ãã»ããšã«ã¹ã©ã€ãã°ã£ããäœã£ãŠããã§ãããã»ãããŒãå匷äŒã瀟å
å
±æâŠâŠæ°ã¥ãã°æ¯é±ã©ããã§1æ¬ãæ£çŽãããã1æ1ææäœæ¥ã§ãã¶ã€ã³ããŠãããã©ãèããŠãéã«åããªãã ãªã®ã§ãAIã«äœãããããšã«ããŸããããã ãAIã«äžžæããããšãããŒã³ããã©ãã©ã«ãªããŸããè²ã¯åæã«å¢ããããå€ãªã°ã©ãã¯æ¹§ããããã©ã³ããæ°åã§å€ãããããã£ãœãèŠãããã§ããããã®ãŸãŸäœ¿çšããããšã¯ã§ããªãã§ããã ããã§ã AIããã€ãåãããŒã³ã§äœããããã«ãç°å¢ã®ã»ããæŽåããŸãã ãè²ã»ã¬ã€ã¢ãŠãã®åã»ãã䜿ãéšåã»äœã£ãŠããç¯å²ã®ã«ãŒã«ããã®äžåŒã”ã²ãªå”ãšããŠçšæããŠãAIã«ã¯ãã®æ ã®äžã ãã§äœãããããããããæ°èŠäœæãã°ããšã©ã¯ã«ãªã£ãŠããããæ¯åããŒã³ãæããŸããæããšããããã æãããã«èšå®ãã ããæ£ç¢ºã§ããã ãã®èšäºã§ã¯ããã® ã²ãªåïŒã³ãŒãäžåŒïŒã«ãŒã«ãæžãã CLAUDE.md ïŒãäžžããšå
¬éããŸã ãAIã«ããã°èªã¿èŸŒãŸããã°ãããªãã®ã¹ã©ã€ãã«ãåãã·ã¹ãã ããŸãã£ãšå®è£
ã§ããŸããæã¡åž°ã£ãŠãã䜿ãã圢ã«ããŸããã äžã®ãããªãã®ããµã¯ããšäœãããšãã§ããŸãã åæïŒAIãšçžæ§ã®ããç°å¢ïŒSlidev æ¬é¡ã«å
¥ãåã«ãåæã ãå
±æãããŠãã ããã åãã¹ã©ã€ããäœã£ãŠãã®ã¯ã Slidev ã£ãŠããŒã«ã§ãããã£ããèšããšã Markdown ã§ã¹ã©ã€ããæžããããŒã« ã1æã®ã¹ã©ã€ãããç»åã§ããã¯ãã®ãªããžã§ã¯ãã§ããªãã äžžããšã³ãŒãïŒããã¹ãïŒ ã«ãªããŸãã ã§ãã¹ã©ã€ããäžžããšããã¹ãã ãšãããããããšãç¶ããŸãããªãã§ãæ¬åœã¯ããã¡ã°ãäžã® AI ãšã®çžæ§ ã§ãã AI ãšã®çžæ§ãæçŸ€ ïŒ äžèº«ã MarkdownïŒããã¹ãïŒã ãããAIïŒClaude CodeïŒã«èªãŸããã®ãæžãããã®ãæãã®ãŸãŸããããããã®èšäºã®ãAIã«ã¹ã©ã€ããéç£ãããããæãç«ã€ã®ã¯ããããããããã§ãã Git ã§ç®¡çã§ãã ïŒ å·®åãå±¥æŽãæ®ããŠãæ®éã®ã³ãŒããšåãããªã§ããŒãžã§ã³ç®¡çã»ã¬ãã¥ãŒãã§ããã ããã³ããšã³ãã®æèŠã§äœãã ïŒ ã¬ã€ã¢ãŠããéšåã Vue ã³ã³ããŒãã³ã ãšããŠæžããã®ã§ãWeb ãäœãã®ãšåãããªãäžåºŠçµãã éšåã¯äœ¿ãåããããåã£ãèŠãæ¹ãã§ããŸãïŒããã³ããšã³ãã«æ
£ããŠã人ã»ã©ãããããã¿ãåããã¯ãïŒã ãã¶ã€ã³ãã³ãŒãã§çžãã ïŒ è²ããµã€ãºãäœçœããCSS 倿°ã§äžå
管çã§ããã ãããŠããã®èšäºã§ããããæãã®ã¯ãäž»ã«ãã®äžã®ã»ã ââ ã¬ã€ã¢ãŠããšéšåã Vue ã§çµãã§ãè²ããµã€ãºã倿°ã§çžãããããå
šéšã”ã¹ã©ã€ãïŒããã¹ã”ã ããæç«ãã話ã§ãããã¯ãã Google ã¹ã©ã€ãã ãšãããã¯ãããŸããã ãªã®ã§ãããããéããŠèŠãã4é建ãŠïŒ style.css / layouts/ / components/ / CLAUDE.md ïŒã¯ã ãŸãããš Slidev ãããžã§ã¯ãã®äžèº« ã§ããåäœç°å¢ã¯ Slidev v51 ç³» / Vue 3 / UnoCSSïŒSlidev æšæºå梱ïŒã ãããŠããäžæ¹ã®åæããAI åŽã«äœ¿ã£ãŠã Claude Code ã§ãããšã¯ããèã¯ã AI ã«ã«ãŒã«ãæžãããã¡ã€ã«ãæž¡ã ããšããèãæ¹ã®ã»ãã§ãClaude Code å°çšã®è©±ã§ã¯ãããŸããã CLAUDE.md ãšããååã¯ãClaude Code ããã®ãã¡ã€ã«ãèªåã§èªã¿èŸŒãã§ãããããä»ããŠãã ããä»ã® AI ã³ãŒãã£ã³ã°ããŒã«ã§ããã«ãŒã«ãèªãŸããå Žæã«çœ®ããªããããã³ããã«è²Œããªãããã°ãåãããã«å¹ããŸãã ïŒSlidev ã®ã»ããã¢ãããã®ãã®ã¯ 第1éš ã«æžããã®ã§ãããããã Slidev ã£ãŠïŒããšãã人ã¯ãã¡ããããïŒ ãã¶ã€ã³ã·ã¹ãã ã¯4é建㊠â ããŒã¯ã³ã»åã»éšåã»ã«ãŒã« ã§ããã®æŽåããç°å¢ã®äžèº«ãããã§ãã”ã²ãªå”ã£ãŠèšããšãã¯ããšããŠãŸããã©ãæ§æãšããŠã¯4é建ãŠã«ãªã£ãŠãŸãã 1éïŒ ããŒã¯ã³ ïŒ style.css ïŒïŒè²ã»ãµã€ãºã»äœçœã倿°ã§æ±ºãããæ ã 2éïŒ å ïŒ layouts/ ïŒïŒç¹°ãè¿ãã¬ã€ã¢ãŠãã®æ§é 3éïŒ éšå ïŒ components/ ïŒïŒç¹°ãè¿ãããŒã 4éïŒ ã«ãŒã« ïŒ CLAUDE.md ïŒïŒäžã®3ã€ãã©ã䜿ããã®äœæ³ ããŒã¯ã³ã®äžã«åãä¹ã£ãŠãåã®äžã«éšåãä¹ã£ãŠããã®å
šéšã4éã®ã«ãŒã«ãæããŠããäžããäžãŸã§åã¿åã£ã1ã»ãããªãã§ãããã ããäžžããšæã£ãŠãããããåŸããè¶³ããŠè²ãŠãããã é çªã«èŠãŠãããŸãããããŸãã¯å®ç©ããã ãŸãå®ç©ãèŠãïŒããŒã¯ã³ â å â éšå çå±ã¯åŸåãã§ããŸã1ã3éãå®ç©ã§èŠãŠãããŸããæ²èŒããã³ãŒãã¯ã©ããèŠç¹ãæããæå°çã§ãïŒå®ç©ã¯ã¯ã©ã¹ã props ãããå°ãä»ããŠãŸãããèã®éšåã¯åãïŒããã³ããããããŸãããã ã³ãŒãã¯ã©ãããPNG ãšã¯ã¹ããŒããŸã§å®éã«ç¢ºèªãããã®ã§ãã è²ãšãµã€ãºã決ããïŒstyle.css ã®ããŒã¯ã³ïŒ 1éã¯åå°ãè²ã»ãµã€ãºã»äœçœããããã¶ style.css ã® :root ã« å€æ°ïŒããŒã¯ã³ïŒ ãšããŠçœ®ããŸããã¹ã©ã€ãåŽã§çã® #C2410C ã¿ãããªå€ãçŽæ¥æžãããšã¯ãããäžåããªããå¿
ããã®å€æ°ãçµç±ããã /* style.cssïŒè²ã»ãµã€ãºã»äœçœãã倿°ãã§äžç®æã«éããïŒãããåå°ã®å
šéšïŒ */ :root { /* ãã©ã³ãè² */ --navy-900: #0B1F3A; /* ã¡ã€ã³ã®æ¿ããã€ã㌠*/ --navy-700: #1B3357; --navy-300: #93A8C4; --bg-white: #FFFFFF; --bg-light: #F6F8FB; --text-primary: #1E293B; --text-secondary: #475569; --text-muted: #64748B; --accent: #C2410C; /* æããæ±ã匷調ã¯ãã®1è²ã ã */ --accent-soft: rgba(194, 65, 12, 0.10); --border-light: #E2E8F0; /* Notice çšã®ãæå³ã®è²ã */ --info: #1D4ED8; --info-bg: #EFF4FF; --warning: #B45309; --warning-bg: #FFF7ED; --success: #15803D; --success-bg: #ECFDF3; --danger: #B91C1C; --danger-bg: #FEF2F2; /* ã³ãŒã衚瀺ïŒãã€ããŒå°ãæå°ã¯æ±ãæ²ãã®ã§æè²ãå¥å»ºãŠïŒ */ --code-bg: var(--navy-900); --code-bar: var(--navy-700); --code-text: #E8EEF6; --code-comment: #93A8C4; --code-accent: #FFB27A; /* ãµã€ãºã»äœçœ */ --font-body: 20px; /* æ¬æã19px ã¯äžåããªã */ --font-lead: 24px; --font-heading: 35px; --space-sm: 8px; --space-md: 16px; --space-lg: 24px; } ãã®ããã§ãå
šã¹ã©ã€ãå
±éã®ãå°ããäžåºŠã ãåœãŠãŠãããŸãããã©ã³ãã»èæ¯ã»æ¬æãµã€ãºã¿ãããªãã©ã®ã¹ã©ã€ãã§ãå¿
ãå¹ããŠã»ãããã€ã§ããã /* å
šã¹ã©ã€ãå
±éã®ãå°ãã.slidev-layout ã«äžåºŠã ãåœãŠã */ .slidev-layout { font-family: 'Noto Sans JP', sans-serif; background: var(--bg-white); color: var(--text-primary); font-size: var(--font-body); line-height: 1.6; } ãµã€ãºæã®ç®å®ã¯ãæ¬æã¯æäœ 19pxïŒ --font-body 㯠20px ã§éçšïŒãæåœ±ã¡ã€ã³ãªã 24px ããããŸã§äžãããããã®1æ¬ã ãæ±ºããŠããã°ãããšã¯ãã¬ãŸããã ã€ãŸã”èªç±ã«éžã°ããªãïŒçšæããäžããéžã°ãã”ã«åãããã§ãã ãã®ãè²ãšãµã€ãºã倿°ã§çžããèãæ¹ãã®ãã®ã¯ 第3éš ã§ã¿ã£ã¡ãæžããã®ã§ãããã§ã¯å®ç©ã ããèŠã¯ã 䜿ãè²ãšãµã€ãºãããã§ç¢ºå®ãããŠãããšã¯éžã¶ã ãã«ãã ã£ãŠããšã§ãã åãããããïŒlayouts/ïŒ 2éã¯ã¬ã€ã¢ãŠãã®ãåããç¹°ãè¿ãæ§é ã layouts/ ã«çœ®ããŠãã¹ã©ã€ããã㯠layout: åå ã§åŒã¶ã ãã«ããŸãã ããã§åãã²ãšã€ã ãæ±ºããŠãã«ãŒã«ããããŸãã æ§é ãåçŽãªã UnoCSS ã®ãŠãŒãã£ãªãã£ã ãã§æžãïŒãããåºå®ã¿ããã«æ§é ãè€éãªã <style> ã§æ§é CSSãæžã ããã®äœ¿ãåã1æ¬ã§ãã ããšãã°ã瞊äžå€®ããããã¿ãããªåçŽãªãã€ã¯ãUnoCSS ã ãã§å®çµããŸãã <!-- layouts/centered.vueïŒçžŠäžå€®ããããUnoCSS ã ããscoped CSS ãªã --> <template> <div class="slidev-layout h-full flex flex-col justify-center px-14 py-10"> <slot /> </div> </template> äžæ¹ãäžéšã«ããããåºå®ããŠâŠã¿ããã«æ§é ãå
¥ãçµããã€ã¯ãçŽ çŽã« <style> ã§çµãã heading ãš kicker ã props ã§åããŠãæ¬æã¯ <slot /> ã«æµããŸãã <!-- layouts/fixed-header.vueïŒäžéšåºå®ãããïŒæ¬æãè€éãªã®ã§ <style> ã§æ§é ãçµã --> <script setup> defineProps({ heading: String, kicker: String }) </script> <template> <div class="slide-with-fixed-header"> <header class="slide-fixed-header"> <h2 class="header-heading">{{ heading }}</h2> <span class="header-kicker">{{ kicker }}</span> </header> <main class="slide-body"><slot /></main> </div> </template> <style> .slide-with-fixed-header { height: 100%; display: flex; flex-direction: column; } /* äžéšã«åºå®ãã垯ãè²ã¯åœç¶ããŒã¯ã³åç
§ïŒç HEX ã¯æžããªãïŒ */ .slide-fixed-header { height: 64px; background: linear-gradient(90deg, var(--navy-900), var(--navy-700)); color: #fff; display: flex; align-items: center; padding: 0 40px; } /* æ®ããæ¬æã«ãflex:1 ã§é«ããåããïŒçžŠã®äžèº«ãæ±ãããããªã */ .slide-body { flex: 1; padding: 36px 44px; font-size: var(--font-body); } </style> <style> ã§ãããããäžã«åºå®ããŠãæ®ããæ¬æãåããããšããæ§é ãçµãã§ãŸãããããã”éªšæ Œ”ãèŠããã€ã¯ãUnoCSS ã®ã¯ã©ã¹ã䞊ã¹ããã <style> ã§æžããã»ããèŠéãããããããããè€éãªãæ§é CSSãã®äžèº«ã§ãã ã¹ã©ã€ãåŽã¯ãããåŒã¶ã ãã§ãã --- layout: fixed-header heading: ç£èŠã®3æ¬æ± kicker: basics --- éšåã®è²ãããããïŒcomponents/ïŒ 3éã¯ãéšåãã2å以äžåºãŠããããŒãã¯ãVue ã³ã³ããŒãã³ãã«ã㊠components/ ã«çœ®ããŠã <PointCard> ã¿ããã«åŒã¶ã ãã«ããŸãã éšåã§äžçªå€§äºãªã®ã¯ã è²ã ãã¯å¿
ãããŒã¯ã³åç
§ã«ãã ããšãäžãå®ç©ã®ã«ãŒãéšåã§ãããèæ¯ãã©ãã«ã®è²ããçã® HEX ãããªã var(--xxx) ã§æžããŠãã®ãåãããšæããŸãã <!-- components/PointCard.vueïŒscoped CSS ã¯æžãã UnoCSSãè²ã ã var() åç
§ --> <template> <div class="flex flex-col gap-3 rounded-xl bg-white px-6 py-5 border border-[var(--border-light)] shadow-lg h-full"> <!-- ã©ãã«ã®èæ¯è²ããããŒã¯ã³ããéžã¶ã ãïŒæ± or ãã€ããŒïŒ --> <span :class="tone === 'accent' ? 'bg-[var(--accent)]' : 'bg-[var(--navy-900)]'"> {{ label }} </span> <div class="text-[var(--text-primary)]"><slot /></div> </div> </template> ã¹ã©ã€ãåŽã¯ãåãšåãã§ããåŒã¶ã ãããã£ãã® fixed-header ã®æ¬æã grid ã§å²ã£ãŠãããã« PointCard ã䞊ã¹ã1æããããã§ãã --- layout: fixed-header heading: ç£èŠã®3æ¬æ± kicker: basics --- <div class="flex-1 flex flex-col justify-center"> <div class="grid grid-cols-3 gap-6"> <PointCard label="Logs" tone="navy"> ãäœãèµ·ããããã®èšé²ããŸãã¯ãšã©ãŒãã°ã1ãæã«éçŽãã </PointCard> <PointCard label="Metrics" tone="accent"> ãã©ããããããã®æ°å€ãã¬ã€ãã³ã·ã»ãšã©ãŒçã»é£œå床ãç¶ç¶èŠ³æž¬ </PointCard> <PointCard label="Traces" tone="navy"> ãã©ãã§é
ãããã®çµè·¯ããªã¯ãšã¹ãããµãŒãã¹æšªæã§è¿œã </PointCard> </div> </div> ããããŠãããšã éšåã10å20åãšå¢ããŠãè²ãå²ããªã ãæ°ããã«ãŒããè¶³ããŠããå¿
ãåãæ±ã»åããã€ããŒã«ãªãããããã·ã¹ãã ã厩ããªãèãªãã§ããã éšåã¯äžåºŠäœã£ã¡ããã°ãããšã¯äœ¿ãåããã§ããŸããã¡ãªã¿ã«ããããã£ãŠãè¯ãã£ããã¿ãŒã³ãåã»éšåã»ã«ãŒã«ã« 貯ãã ãã£ãŠããèãæ¹èªäœã¯ 第4éš ã§æžãã話ã§ãããã®èšäºã¯ãã®”å®ç©”ãå
šéšéããŠèŠããŠãããšããäœçœ®ã¥ãã§ããã 4éã® CLAUDE.md â çŽ æãâæ¯åããããŠæã¡éã¶â ãããŸã§ã®3éïŒããŒã¯ã³ã»åã»éšåïŒã¯ãåå¥åäœã§å¹ã”çŽ æ”ã§ããã§ãæ£çŽã«å
ã«èšã£ãŠãããšã ãã®çŽ æãAIã¯ãããšçŽ çŽã«äœ¿ã£ãŠãããŸã ïŒã©ã®ãããäžæããã¯ããã®èšäºã®åŸåã§ãããšæå°æªãªå®éšãããŠç¢ºãããŸãïŒã ããã4éã®ã«ãŒã«ã¯äœã®ããã«ããã®ãã ãæ¯åã»èª°ããã£ãŠãã»åãæ ãã«ãããããã ã§ããçŽ æããã£ãŠããæŸã£ãŠãããšAIã¯æ¯åã¡ãã£ãšãã€éããã®ãåºããããšãã©ã”æãã”ã¯ã¿åºãæ¹ãããŸããçµµæåãå
¥ããŠæååããããããæ¬æãã¹ããšå°ãããªã£ãããã«ãŒã«ãšããŠææåããããšã§ç¡èŠããã確ç«ãæžãããŸãã ãã®ã·ã¹ãã ã§ ããã¡ã°ãæã¡éã¶äŸ¡å€ãããã®ãããã®4éã ã§ãã1ã3éã®çŽ æã¯ã”äœ¿ãæ¹”ã®ã«ãŒã«ãäžç·ã«ãªããšããã ã®ãã¡ã€ã«ã®å¯ãéãã«ãªã£ãŠããŸããŸãã ã ããã 1ã3éã®äœ¿ãæ¹ãå
šéšã«ãŒã«ã«ã㊠CLAUDE.md ã«æžã ãSlidev ã®ãããžã§ã¯ãã« CLAUDE.md ã眮ããŠãããšãClaude Code ã¯ãã®ãã£ã¬ã¯ããªã®ãã¡ã€ã«ãè§Šã£ããšãèªåã§èªã¿èŸŒã¿ãŸããã€ãŸãããããAIã«æ¯åææž¡ã”èªçŽæž”ã«ãªãããã§ããïŒããŸãŒã«å
šåã§ç¡èŠããããšãã¯åŸããCLAUDE.mdãåç
§ãããŠèªå·±ä¿®åŸ©ããããããŸãïŒ ã«ãŒã«ã®å
šæïŒãããæž¡ãã ãïŒ äžèº«ã¯ãããªã«é£ãããªãã§ãã1ã3éã§èŠãäœæ³ãããã®ãŸãŸèšèã«ããã ããåºãæãã¿ããŠã仿¹ãªãã®ã§ã åãå®éã«äœ¿ã£ãŠã CLAUDE.md ãå
šæãã®ãŸãŸèŒããŸã ããããã³ããŒããŠèªåã® Slidev ãããžã§ã¯ãã® CLAUDE.md ã«çœ®ãã°ãããã ãã§æ ãå¹ããŸãã # ã¹ã©ã€ãäœæã«ãŒã«ïŒSlidev ãã¶ã€ã³ã·ã¹ãã ïŒ ãã®ãããžã§ã¯ãã®ã¹ã©ã€ãã¯ã**1ã€ã®çµ±äžããããã¶ã€ã³ã·ã¹ãã **ã®å
åŽã ãã§äœãã AIïŒClaude CodeïŒã¯ã¹ã©ã€ããçæã»ç·šéãããšãã**å¿
ã以äžã®ã«ãŒã«ã«åŸã**ããšã ãã®ãã¡ã€ã«ããšæž¡ãã°ãå¥ãããžã§ã¯ãã«ãåãã·ã¹ãã ãç§»æ€ã§ããïŒãããçãïŒã --- ## 0. 倧ååïŒèªç±ã«æžãããªãïŒå¶çŽãéããçãïŒ - è²ã»ãµã€ãºã»äœçœã»ã¢ã€ã³ã³ã**ãã®å Žã§åæã«æ±ºããªã**ãäžã®ããŒã¯ã³ïŒã«ãŒã«ã®äžããã ãéžã¶ã - ãããæãã«ãã§ã¯ãªãã**ãã®æ ã®äžã§**ããéžæè¢ãçµãã»ã©åºåã¯å®å®ããã - è¿·ã£ãã**å¢ãããæžãã**ã匷調ã¯1è²ãã¬ã€ã¢ãŠãã¯æ¢åã®åãåªå
ã ## 1. è²ïŒããŒã¯ã³ïŒ - è²ã¯ `style.css` ã® `:root` ã§å®çŸ©ãã **CSS倿°ã ã**ã䜿ããç HEX ã®çŽæžãã¯**çŠæ¢**ã - å¿
ã `var(--xxx)` çµç±ã§æå®ããïŒUnoCSS ãªã `bg-[var(--accent)]` ã®ããã« arbitrary value ã§åç
§ïŒã - 䜿ããè²ïŒ - èæ¯ïŒ`--bg-white` / `--bg-light` - æåïŒ`--text-primary` / `--text-secondary` / `--text-muted` - ãã€ããŒïŒ`--navy-900` / `--navy-700` / `--navy-300` - 匷調ïŒ`--accent`ïŒæããæ±ïŒ/ `--accent-soft` - 眫ç·ïŒ`--border-light` - ã³ãŒãïŒãã€ããŒå°ïŒïŒ`--code-bg` / `--code-bar` / `--code-text` / `--code-comment` / `--code-accent`ïŒæå°ã¯æ±ãæ²ãã®ã§åŒ·èª¿ã¯æããæ±æ©ã® `--code-accent` ã䜿ãïŒ - **匷調è²ã¯3è²ãŸã§**ãåºæ¬ã¯æ± `--accent` ã®1è²ã§ååãè²æ°ãå¢ãããšãã©ãã倧äºãããæ¶ããã ## 2. ãµã€ãºã»äœçœïŒããŒã¯ã³ïŒ - ãã©ã³ããµã€ãºã¯ `--font-*` ã䜿ãã**æ¬æã¯ `--font-body`ïŒ19px ã¯äžåããªãïŒ**ãæåœ±ã»é
ä¿¡ã§èªããã©ã€ã³ãå®ãã - `--font-body` / `--font-lead` / `--font-heading` - äœçœã¯ `--space-*`ïŒ`--space-sm` / `--space-md` / `--space-lg`ïŒã䜿ããå»ã¿ãæããã - UnoCSS ã䜿ãå Žåã¯æ¢è£œã¹ã±ãŒã«ã«ä¹ã£ãŠããïŒ**æ¬æã¯ `text-xl` 以äžïŒïŒ20pxã`text-lg` 㯠18px ã§äžéå²ãïŒ**ãäœçœã¯ `gap-4` / `p-4` ãªã©ïŒã - è²ã»ãµã€ãºã»äœçœã¯**ãã¹ãŠå€æ° or ãŠãŒãã£ãªãã£çµç±**ãããžãã¯ãã³ããŒã®çŽæžããããªãã ## 3. ã¢ã€ã³ã³ - ã¢ã€ã³ã³ã¯ **Material Icons ã«äžæ¬å**ããïŒ`<span class="material-icons">åå</span>`ã - **çµµæåïŒ🚀✨✅ ãªã©ïŒã¯äœ¿ããªã**ããšã¯ã¹ããŒãïŒPNG/PDFïŒã§æ¶ããã»è±è
åããããã ## 4. åïŒlayouts/ïŒãš éšåïŒcomponents/ïŒ - ç¹°ãè¿ãæ§é ã¯**å**ïŒ`layouts/`ïŒãç¹°ãè¿ãããŒãã¯**éšå**ïŒ`components/`ïŒã«ããŠã`layout:` / ã¿ã°ã§åŒã¶ã - æ°èŠã¹ã©ã€ãã¯**ãŸãæ¢åã®åã»éšåããçµã**ãç¡ããšãã ãæ°ããäœãïŒÂ§7 ã®äœãæ¹ã«åŸãïŒã - ã¬ã€ã¢ãŠãã®å®è£
ã¯**1ã€ã®äœ¿ãåãã«ãŒã«**ã§éžã¶ïŒ - **æ§é ãåçŽ** â `centered.vue` ã®ããã« **UnoCSS ãŠãŒãã£ãªãã£ã®ã¿**ïŒscoped CSS ãæžããªãïŒã - **æ§é ãè€é**ïŒãããåºå®ã»æ¬ææ ãªã©ïŒâ `fixed-header.vue` ã®ããã« **`<style>` ã®æ§é CSS**ã - **ã³ã³ãã³ãæã¯åºæ¬ `fixed-header`ïŒäžéšåºå®ãããïŒã§çµ±äž**ãã課é¡ãããŸãšããçã®ã»ã¯ã·ã§ã³ã heading ã«å
¥ããŠããããŒåããïŒå°å³ã«å¹ãçµ±äžæïŒã - **暪䞊ã³ïŒcolumnsïŒ**ïŒãããä»ãã®äžã§ã®æšªäžŠã³ã¯ fixed-header ã®æ¬æã Tailwind ã® `grid grid-cols-2 gap-10` ã§å²ãããããç¡ãã®å
šé¢2ã«ã©ã ãèŠããšãã ã `two-col.vue`ã`.columns` ã®ãã㪠global ãŠãŒãã£ãªãã£ã¯äœããªãã - 瞊äžå€®ã«äŒžã°ãïŒæ§ content-expandïŒã¯ **Tailwind ã® `flex-1 flex flex-col justify-center`** ã§éãããglobal ã¯ã©ã¹ã«ããªãã - éšåã®è²ã¯**å¿
ãããŒã¯ã³åç
§**ïŒ`bg-[var(--accent)]` çïŒãéšåãå¢ããŠãè²ãå²ããªãããã«ããã - **ãããŒïŒã¹ããããç¢å°ã§ã€ãªãïŒÂ§7 ã®æšå¥šåœ¢ïŒ**ïŒ`PointCard` ã `flex items-stretch gap-3` ã®è¡ã« `flex-1` ã§äžŠã¹ïŒã«ãŒãã¯çé«ã«æããïŒãåã«ãŒãã«ã¯ `card-class="justify-center"` ãæž¡ããŠ**æ¬æã瞊äžå€®å¯ã**ã«ããéã®ç¢å° `<span class="material-icons text-4xl">arrow_forward</span>`ïŒ`items-center` ã§æãïŒãšèŠç·ã®é«ããåããããç¢å°ã¯å°çšéšåãäœãã Material IconsïŒããŒã¯ã³è²ïŒ`text-[var(--navy-300)]`ïŒã§éããïŒç¬èªã®ç¢å°SVGã»çHEXã¯äœ¿ããªãïŒãâ»ã«ãŒãæ¬æã瞊äžå€®å¯ãã«ããªããšãæ¬æãäžå¯ãã®ãšãç¢å°ã ããã«ãŒã瞊äžå€®ïŒããã¹ãããäžã«åãæ®ãããŠèŠããã ## 5. ãã©ãã«æžãããïŒCSS ã®çœ®ãå ŽæïŒ 倿ã¯1ã€ïŒ**ãã©ã®ã¹ã©ã€ãã§ãå¿
ãå¹ããŠã»ãããïŒã** - **å
šã¹ã©ã€ãå
±éã®åå°**ïŒããŒã¯ã³ãããŒã¹ã®ãã©ã³ãã»è²ã»èæ¯ïŒâ `style.css`ã - **ãã®åã»éšåã®äžã ãã®èŠãç®** â ãã® `layouts/` `components/` ã®äžã«éã蟌ããã - **ãã®1æã ã** â ãã®ã¹ã©ã€ãã« `<style>`ïŒåžžã« scopedã»ä»ã«æŒããªãïŒã æžãæ¹ã®äœæ³ïŒ - `style.css` ã®å
±éã¹ã¿ã€ã«ã¯ **`.slidev-layout` ã®é
äžã«æžã**ïŒçŽ ã® `h1 {}` ã¯çºè¡šè
ã¢ãŒãUIã«ãŸã§æŒããïŒã - **`!important` ã¯åºæ¬äœ¿ããªã**ãå¹ããªããšãã¯çœ®ãå Žæã»ç¶æ¿ïŒÂ§6ïŒãçããïŒSlidev çµã¿èŸŒã¿ã®é«åªå
床ã¹ã¿ã€ã«ãšã©ãããŠãç«¶åããç®æïŒåºå®ãããã®èŠåºãçã ããããã«éã£ãŠèš±å®¹ããïŒ ## 6. â
æéèŠã®çœ ïŒèªäœã¬ã€ã¢ãŠã㯠`.slidev-layout` ãç¶æ¿ããªã - çµã¿èŸŒã¿ã¬ã€ã¢ãŠãïŒdefault / two-cols çïŒã¯ããã® template å
ã§ **èªåã§** `class="slidev-layout"` ãä»ããŠããïŒSlidev ãèªåã§ä»ããããã§ã¯ãªãïŒãã ãã `style.css` ã®å
±éã¹ã¿ã€ã«ãå¹ãã - **èªäœã¬ã€ã¢ãŠãã¯èªåã§ `class="slidev-layout"` ãä»ããªããšã`style.css` ã®å
±éã¹ã¿ã€ã«ïŒããŒã¯ã³ã»èŠåºãè²ã»kickerã»ããŒã«ãŒïŒãäžåå¹ããªã**ãèŠåºããçŽ ã®å°ãã黿åã«æ»ãã - 察åŠïŒã©ã¡ããïŒïŒ 1. åã® wrapper ã« `class="slidev-layout"` ãè¶³ãã 2. åã®äžèº«ã UnoCSS ã§å®çµãããïŒå
±éã¹ã¿ã€ã«ã«äŸåããªãïŒã ## 7. AIã£ãœãã®åé¿ïŒå¿
ãå®ãïŒ | ãããã¡ïŒAIã£ãœãïŒ | 代ããã«ãããã | |---|---| | Inter / Poppins ãã©ã³ã | Noto Sans JP ã«å¯ãã | | 玫ãéã®ã°ã©ãèæ¯ | åè²ïŒãã€ããŒ/çœïŒïŒå¿
èŠãªãèããã€ãº | | å®å
šå¯Ÿç§°ãªã¬ã€ã¢ãŠã | ãããšå°ãé察称ã«ïŒscale / opacity ã®å·®ïŒ | | åãã«ãŒãã3ææšªäžŠã³ | ç¢å°ã§ã€ãªããããŒåœ¢åŒã« | | è§äžžã«ãŒãã§å
šé¢ãåãã | ã¬ã€ã¢ãŠããè€æ°çš®é¡äœ¿ãåãã | - **1ã€ã®å³ã»1æã®ã¹ã©ã€ãã«1ã¡ãã»ãŒãž**ãè©°ã蟌ãŸãªãã - é
ä¿¡åãã¯å¯èªæ§æåªå
ïŒæ¬æãåå倧ãããç®å® 24px 以äžïŒã ## 8. ä»äžãïŒå¿
ãïŒ - ã«ãŒã«ã«æžããïŒç»é¢ã§ãã®éãåºãŠãããšã¯éããªãã**æåŸã¯å¿
ã PNG ã«ãšã¯ã¹ããŒãããŠãç»åãç®ã§èŠãŠç¢ºèª**ããã - `cd application/slides && npx slidev export src/<name>/slides.md --format png --per-slide --output src/<name>/export/slide` - 厩ããŠããã §5ã»Â§6ïŒçœ®ãå Žæã»ç¶æ¿ïŒããŸãçãã --- ## ãã®ãããžã§ã¯ãã®çŸç© **ååïŒglobal ã¯ãå°ãã ããæ§é 㯠layouts/ãè£
食㯠components/ã现éšã¯ Tailwind(UnoCSS) ã§éããã** | çš®é¡ | ãã¡ã€ã« | äžèº« | |---|---|---| | å°ïŒglobalïŒ | `style.css` | `:root` ããŒã¯ã³ïŒ `.slidev-layout` ã®å°ïŒfontã»è²ã»èæ¯ã»sizeã»h1ã»ã€ã³ã©ã€ã³codeïŒã ã | | åïŒã¿ã€ãã« | `layouts/title.vue` | ããŒã¯ãã€ããŒã®ããŒããŒã`.slidev-layout` ãä»ããåå
ã§å®çµïŒéããïŒ | | åïŒçžŠäžå€® | `layouts/centered.vue` | UnoCSS ã®ã¿ïŒscoped CSS ãŒãïŒ | | åïŒåºå®ããã | `layouts/fixed-header.vue` | äžéšåºå®ãããïŒæ¬æïŒæ§é CSSïŒãprops `heading` / `kicker` | | åïŒæšªäžŠã³ | `layouts/two-col.vue` | èªäœ two-colïŒUnoCSS gridïŒãæ¬æïŒå·Šã`::right::`ïŒå³ | | çœ ã㢠| `layouts/trap.vue` | ãã㊠`.slidev-layout` ãä»ããªãïŒÂ§6 ã®å®æŒçšïŒ | | éšåïŒèŠåºãã©ãã« | `components/Kicker.vue` | æ±ã®çžŠããŒãslot | | éšåïŒç®æ¡æžã | `components/Points.vue` | æ±ã²ã圢ããŒã«ãŒãslot ã« markdown ãªã¹ã | | éšåïŒNotice | `components/NoticeBox.vue` | `type`ïŒinfo/warning/success/dangerïŒ+ `title` + slotãMaterial Iconã»è²ã¯ã»ãã³ãã£ãã¯ããŒã¯ã³ | | éšåïŒã«ãŒã | `components/PointCard.vue` | `label` / `tone` + slotãè²ã¯ããŒã¯ã³åç
§ | | éšåïŒã«ãŒã«ç®± | `components/RuleBox.vue` | ã«ãŒã«æç€ºããã¯ã¹ãslot | | éšåïŒã³ãŒãããã㯠| `components/CodeBlock.vue` | ãã€ããŒå°ã®ã³ãŒãããã«ã`file` / `lang` propsãè£
食㯠scoped ã§éããè²ã¯ `--code-*` ããŒã¯ã³åç
§ | - **ã³ãŒããããã¯ã¯ `CodeBlock.vue` ã§éãã**ïŒslot ã«çŽ ã® `<pre>` ãå
¥ãã匷調㯠`<span class="c">`ïŒã³ã¡ã³ãïŒ/`<span class="k">`ïŒããŒïŒã®2è²ã ããSlidev ã® ` ``` ` ãã§ã³ã¹ïŒShikiïŒã¯çæè²ïŒéããŒã¯ã³ã®è²ãæ··ããã®ã§ãå°ãæãã³ãŒãæ²èŒã«ã¯äœ¿ããªãã - 暪䞊ã³ïŒ`two-col.vue` ã䜿ãïŒ`.columns` ã®ãã㪠global ãŠãŒãã£ãªãã£ã¯äœããªãïŒã - 瞊äžå€®ã«äŒžã°ãïŒæ§ content-expandïŒïŒ Tailwind ã® `flex-1 flex flex-col justify-center` ã§éããïŒglobal ã¯ã©ã¹ã«ããªãïŒã - è£
食ã®è²ã¯**ãã¹ãŠããŒã¯ã³åç
§**ïŒ`var(--x)` / `bg-[var(--x)]`ïŒãç HEX çŽæžãã¯ããªãã é·ãã§ããã©ããã£ãŠãããšã¯ã·ã³ãã«ã§ãããè²ã¯å€æ°ã ãã»åŒ·èª¿ã¯1è²ã»æ¬æ19pxã»ã¢ã€ã³ã³ã¯ Material Iconsã»ã¬ã€ã¢ãŠãã¯åçŽ=UnoCSS/è€é=æ§é CSSã»éšåã®è²ã¯ããŒã¯ã³åç
§ãããããå
šéš”ãã£ãŠããããšïŒãã¡ãªããš”ãšã㊠å
·äœçã«èšãåã£ãŠã ã ãããããæãã«ããããªããŠããã®æ ã®äžã§ããéžæè¢ãçµãã°çµãã»ã©ãAIã®åºåã¯å®å®ããŸãã ç¹ã«å¹ãã®ããäžã®ã«ãŒã«ã«ãããAIã£ãœãã®åé¿ãã®è¡šãæŸã£ãŠãããšAIãå¯ã£ãŠãã”ãªããããµãæ¹å”ïŒçŽ«éã°ã©ããçµµæåãã«ãŒã3ææšªäžŠã³âŠâŠïŒããå
åãã§åæãããŠå¡ãã§ãŸãããããããã ãã§ãåºåã®”AI補ã£ãœã”ãã¬ã¯ããšæžããã§ããã äžã® CLAUDE.md ã®æ«å°Ÿã«ã¯ãå®ã¯ãä»åŸãã¶ã€ã³ã远å ãããšãã®å®äŸããã³ããéããä»ããŠãããŸããããã¯æ¬¡ã®ç« ã§å®éã«äœ¿ã£ãŠã¿ããã®ã§ãããã§ã¯çããŸããã äœåºŠãã¯ãŸãçœ ã«ã€ããŠã¯ã«ãŒã«åããŠæ°žç¶åãã ã«ãŒã«ãå¹ãã£ãŠè©±ã§ãããããããäŸãäžã€ã Slidev ã«ã¯ãã£ãããªçœ ããããŸãã èªäœã®ã¬ã€ã¢ãŠãã¯ã style.css ã«æžããå
±éã¹ã¿ã€ã«ãèªåã§ã¯ç¶ãã§ãããªã ãã§ãããçš®ãæãããšãSlidev 忢±ã®ã¬ã€ã¢ãŠãïŒ default ã two-cols ïŒã¯ããã®äžã§ class="slidev-layout" ã èªåã§ ä»ããŠãããå
±éã¹ã¿ã€ã«ãå¹ãã ããSlidev ãåæã«ä»ããŠããããããããªããã§ããã ããèªäœã¬ã€ã¢ãŠãããèªåã§ä»ããªããšå¹ããªããä»ãå¿ãããšããã£ããããŒã¯ã³ã§æ±ºããèŠåºãã®è²ããµã€ãºãå
šéšãã£ãœæããŠã èŠåºããçŽ ã®å°ãã黿åã«æ»ããŸã ãé£èŒãéãã§ãã£ãŠããšãå°å³ã«äžçªããããã€ã§ãã ã§ãããã察åŠã¯ã«ãŒã«ã«1è¡æžãã ããã èªäœã¬ã€ã¢ãŠãã«ã¯å¿
ã class="slidev-layout" ãä»ãã ãããã£ãããã§ãAIã¯äºåºŠãšãã®çœ ãèžãŸãªããªããããã£ãŠèŠããç¥èŠãããããã£ãŠã«ãŒã«ã«ç³ãã§ããããã§ããã ãã®ãã¡ã€ã«ãæž¡ãïŒæ ã®å
åŽã«éã蟌ãã èŠããã«ããã®1æã AI ã«æž¡ããŠãããšãåºåãã·ã¹ãã ã®å
åŽã«åãŸãããããªããã ãŸãããšã³ããŒããã°å¥ãããžã§ã¯ãã«ãç§»æ€ã§ãã ãâŠâŠã£ãŠãå£ã§èšãã®ã¯ç°¡åã§ããããæ¬åœã«å¹ãã®ïŒ ã£ãŠããã®ããããããå®éã«è©ŠããŠãããŸãã ã§ãã©ãæã€ã®ïŒ â ããã³ããã§ãè¶³ããã»èšèã§ãåãã ããããã¯å®æŒã§ãããã£ãã® CLAUDE.md ãæž¡ããç¶æ
ã§ãå®éã«ã©ããªããã³ãããæã€ãšãã©ãè¿ã£ãŠããã®ãããè¶³ãããšãåããã®2ã€ãèŠããŸãã è¶³ãïŒæ¢åã·ã¹ãã ã«æ°èŠçŽ ãããã³ããã§è¿œå ãŸãã¯ãè¶³ãããæ¢åã®ãããã«ãæ°ããèŠçŽ ãããã³ããã§è¿œå ãããã¿ãŒã³ã§ãã ããšãã°ãç¢å°ã§ã€ãªããããŒã®ã¹ã©ã€ãã1æè¶³ããŠããšé Œããšããåã¯ããæã¡ãŸãã ãã®ãããã«ãè€æ°ã®ã¹ããããç¢å°ã§ã€ãªãããããŒãã®ã¹ã©ã€ãã1æè¿œå ããŠã - ãŸãåããã£ã¬ã¯ããªã® CLAUDE.md ãèªãã§ããã®ã«ãŒã«ã«å¿
ãåŸãããšã - æ¢åã®åïŒlayouts/ïŒãšéšåïŒcomponents/ïŒã䜿ããããŒã³ã«åãããã - ç¢å°ãã¹ãããã®è²ãããŒã¯ã³ã«åããããç HEX ã®çŽæžãã¯ããªãã - 远å ããã PNG ã«ãšã¯ã¹ããŒãããŠãèŠãç®ã厩ããŠãªããèªåã§ç¢ºèªããŠã - ã«ãŒã«ã«ç¡ãèŠçŽ ã厩ããåºããããã®å Žãã®ãã§çŽãã CLAUDE.md ã«1è¡è¶³ã圢ã§å¯Ÿå¿ããŠïŒïŒè²ãŠãïŒã ããœã¯æåŸã®2è¡ã§ãã ãCLAUDE.md ã«åŸãããšãæåŸã« PNG ã§ç¢ºèªããã»ããã§æ¯åèšã ãããã§æ ããåºãªããªãããåºæ¥äžãããèªåã§ç®èŠãã§ãã¯ãããããã å®éããã§ãããŒãè¶³ããã®ãããã§ããç¢å°ã¯çµµæåãããªã Material Iconsãè²ã¯æ¢åã®ããŒã¯ã³ãã¡ãããšã·ã¹ãã ã®ããŒã³ã«ä¹ã£ããŸãŸè¿œå ãããŠãŸãïŒSlidev æšæºã®ã¢ã€ã³ã³ã¯ Iconify ã§ãããCDN ã1è¡èªãã ãã§èšå®ããã㪠Material Icons ã«å¯ããŠãŸããçµµæåãšéã£ãŠãšã¯ã¹ããŒãã§ãæ¶ããªãã®ã§ïŒã ããäžã€ãé¢çœãã£ã話ããå¥ã®ãšããåã”è¶³ã”ããã³ããã§ãã³ãŒããããã¯ã®ã¹ã©ã€ããè¶³ããŠããšé Œãã ããAIããããŸã®ã«ãŒã«ã«ã¯ã³ãŒã衚瀺ã®è²æå®ãç¡ãã§ããããšæ°ã¥ããŠã CodeBlock.vue ãšããéšåãèªåã§äœãã CLAUDE.md ã«ãã«ãŒã«ãè¶³ããŠãã ãã§ããã ããã蚌æ ããã£ãã® CLAUDE.md ã«æ®ã£ãŠãŸããè²ã®ãšããã«ãã --code-bg / --code-text / --code-accent ïŒæå°ã³ãŒãçšã«æããæ±æ©ãå¥å»ºãŠãããã€ïŒââãããæåããæžããŠãããããªããŠããã®ãšã AI ãè¶³ãããã®ã§ããæç€ºããã®ã¯ãã«ãŒã«ã«ç¡ãèŠçŽ ãåºãã CLAUDE.md ã«1è¡è¶³ããŠãã ããè¶³ããªããã®ã«æ°ã¥ããŠããã®å Žã§åããŠã次ãã䜿ãã圢ã«ããŠããããããããŸãã«”è²ãŠã”ã§ãã åãïŒèªç¶èšèªã«ãŒãã§ã¬ã€ã¢ãŠããåãã ããäžã€ã¯ãåãããäžåºŠåºãŠããã¹ã©ã€ãããèšèã ãã§äœåºŠãäœãæ¿ããŠãããã¿ãŒã³ã§ãã ãããããŒã®ã¹ã©ã€ãããæšªäžŠã³4æã«é·ã説ææãè©°ã蟌ãã§ãŠãæ¥æ¬èªãåèªã®éäžã§æãè¿ããŠè©°ãŸã£ãŠèŠãããã§ãããã§ã CSS ã¯äžåè§Šãã ããããªããã³ããã§äœãæ¿ããŠãããŸããã 7æç®ã®ãããŒãã瞊ç©ã¿ãã¬ã€ã¢ãŠãã«äœãæ¿ããŠãCLAUDE.md ã®ã«ãŒã«ã«åŸããCLAUDE.md èªäœã¯å€æŽããªãããšã - 4ã¹ããããäžããäžãžçžŠã«ç©ããåã¹ãããã¯æšªé·ã®1ãã³ãã - å·Šã«ãçªå·ïŒçãã¿ã€ãã«ããå³ã«èª¬ææïŒå·Šå³ã§åé¢ïŒã暪å¹
ãåºãã®ã§1è¡ã«åãŸãã - ã¹ãããéã¯äžåãç¢å°ã§ã€ãªãã - çŽããã PNG ã§7æç®ãå¿
ãç®ã§èŠãŠã溢ããŠãªãã確èªããŠã 暪䞊㳠â 2Ã2ã«åé¢ â 瞊ç©ã¿ããšæ®µéçã«åããããã§ãããå
šéš èªç¶èšèªã®ããã³ããã ããæã§CSSãæžããç®æã¯ãŒãã§ãã ããããã®éãã£ãšãè²ã¯ããŒã¯ã³ã®ãŸãŸãéšåãæ¢åã®ãŸãŸã æ ã®äžã§åãããŠããããã©ãäœãæ¿ããŠãããŒã³ã厩ããªã ããèšèã ãã§åãããæç«ããã®ã¯ãåå°ã«ã«ãŒã«ããããããªãã§ãããã æ¬åœã«ç§»æ€ã§ããã®ã â CLAUDE.md ã ãã§å»ºãŠçŽããŠã¿ã ãè¶³ããããåãããã¯åãã£ããã§ãäžçªã§ãã䞻匵ã ãã®ã·ã¹ãã ã¯äžžããšå¥ãããžã§ã¯ãã«ç§»æ€ã§ãã ã£ãŠãã€ãããã¯æ¬åœãªã®ããã¡ãã£ãšæå°æªãªå®éšãããŠã¿ãŸããã ããæ¹ã¯ããã æ°ãã Claude Code ã®ã»ãã·ã§ã³ã«ã CLAUDE.md ã ããæž¡ã ãããŒã¯ã³ãåãéšåãããææ¬ã«ãªãæ¢åã®ãããããäžåèŠããªãããã®ããã§ãGit ãã©ã³ãæŠç¥ã®å
¥éã¹ã©ã€ãããå¥ã®ãã©ã³ãè²ã§äžããäœã£ãŠããšé Œããã«ãŒã«ã ããé Œãã«ããŒããã建ãŠããããïŒãšããå®éšã§ãã å
ã«èšã£ãŠãããšãã¬ãã¬ãã«çµ±å¶ããå®éšãããªã”ãã£ãŠã¿ãèšé²”ã§ãïŒå1åãã€ïŒããã ä»åã¯ãã«ãŒã«ãæž¡ããçãš ã«ãŒã«ãäžåæž¡ããªãã察ç
§ãç ã®äž¡æ¹ãåããã®ã§ãã«ãŒã«ãæ¬åœã«å¹ããŠãã®ãã»ã©ãã«å¹ããŠãã®ããããããšããããªèŠããŸãããé çªã«ãããŸãã CLAUDE.md ãæž¡ããããå¥ãã©ã³ãã®ãããã建ã£ã å®éã«æããã®ãããã®ããã³ããã§ããã ãææ¬ã絶察ã«èŠã㪠ããšå¿µæŒãããŠãã®ãããœãããã§ãç䌌ããããæã£ããã®éãéãå¡ãã§ãŸãã application/slides/src/git-branching/ ã«ãSlidev ã®ãããããäžãããäœã£ãŠã»ããã - ãã®ãã£ã¬ã¯ããªã«ã¯ CLAUDE.md ã ãã眮ããŠããããŸããããèªã¿ãå¿
ãåŸãããšã - style.css / layouts/ / components/ / slides.md ã¯ãŸã ç¡ããCLAUDE.md ã®ã«ãŒã«ã«æ²¿ã£ãŠèªåã§æ°èŠã«äœãã - â
éèŠïŒä»ã®ãããïŒç¹ã« blog-design-system/ïŒã® style.cssã»layoutsã»components 㯠絶察ã«éããªãã»åç
§ããªããæå
ã® CLAUDE.md ã ããå¯äžã®æ ¹æ ã«ããããšã - ãã©ã³ãè²ã¯å
ïŒãã€ããŒïŒæ±ïŒãšã¯å¥ç³»çµ±ã«ããïŒäŸïŒããŒã¯ã°ãªãŒã³ïŒæããç¥çïŒã ç HEX ã眮ãã®ã¯ style.css ã® :root ã ããå©çšåŽã¯ var() åç
§ã - 顿ã¯ãGit ãã©ã³ãæŠç¥å
¥éããã¿ã€ãã« / ã¢ãžã§ã³ã / èª²é¡ / æ¯èŒã«ãŒã / Notice / ã³ãã³ãäŸ / å°å
¥ãã㌠/ ãŸãšã ãå«ã 6ã8 æã - ã§ããã PNG ã«ãšã¯ã¹ããŒãããŠã厩ããŠãªããèªåã§ç¢ºèªããŠã - ã«ãŒã«ã«ç¡ãèŠçŽ ã厩ããåºããããã®å Žãã®ãã§çŽãã CLAUDE.md ã«1è¡è¶³ã圢ã§å¯Ÿå¿ããŠïŒïŒè²ãŠãïŒã çµæããèšããšã 建ã¡ãŸãã ã æž¡ããã®ã¯ CLAUDE.md 1æã ãããªã®ã«å¥ã»ãã·ã§ã³ã®AIã¯ã style.css ã®ããŒã¯ã³ãèªåã§å®çŸ©ãçŽããŠïŒãããè²ã¯å
ã®ãã€ããŒïŒæ±ãããªããã¡ãããšå¥ç³»çµ±ã®ããŒã¯ã°ãªãŒã³ïŒç¥çã«ããŠïŒãã¬ã€ã¢ãŠãã®åãéšåãçœçŽããçµãã§ã8æã®ããããäœãäžããŸããã è²ã顿ãå¥ç©ãªã®ã«ãã§ãããã£ããã®ã¯ãåããã¶ã€ã³ã·ã¹ãã ã®è²éãçãã«ããèŠããªããã¶ã€ã³ãåºãŠããŸããã䞻芳ã ãã ãšåŒ±ãã®ã§ãæ°ããããäºå®ã§èšããšãããã§ãã ãã©ã³ãè²ã¯å¥ç³»çµ±ã«æ¯ãããŠãïŒå
#0B1F3A ïŒ #C2410C â ããŒã¯ã°ãªãŒã³ïŒç¥ç #102a1d ïŒ #b07d24 ïŒ ç HEX ã®çŽæžã㯠style.css ã® :root å®çŸ©ä»¥å€ãŒããå©çšåŽã¯å
šéš var() åç
§ åºå®ãããã»åŒ·èª¿1è²ã»ç¢å°ãããŒã»æå°ã®ã³ãŒãããã«ãšãèŠåŸã¯ãã®ãŸãŸåçŸ 8æãã¹ãŠ PNG åããŠåŽ©ããªã ãææ¬ã®ãããã¯äžåèŠããŠãªãã®ã«ãã§ãã ãæ¬åœã«èŠãŠãªãã®ïŒããè£åãããŸãããClaude Code ã®æäœãã°ã§å
ãããïŒ blog-design-system ïŒãäžåºŠãéããŠãªãããšã確èªããããã§ãããŒã¯ã³ã®å€ãã¬ã€ã¢ãŠãã®å®è£
ãå
ãšã¯å¥ç©ïŒã¯ã©ã¹åãææ³ãéãïŒãªã®ãç
§åæžã¿ãç䌌ãããããªããã«ãŒã«ããç¬ç«ã«å»ºãŠããã§ãã ã«ãŒã«ç¡ããšæ¯ã¹ãã â çŽ ã® Claude ã¯äœç¹ã ãããéã«ã ã«ãŒã«ãäžåæž¡ããªãã£ãã ã©ããªãã®ãããŸã£ãããªã»ãã·ã§ã³ã«ã CLAUDE.md ãããŒã¯ã³ãäœãæž¡ããããGit ãã©ã³ãæŠç¥ã®ã¹ã©ã€ããããæãã«äœã£ãŠããšã ãé Œãã§ã¿ãŸããïŒãã£ããšåã顿ã§ïŒã ããããããã£ããäžæããã§ãããæ£çŽã³ã£ããããŸããã è²ã¯é Œãã§ãªãã®ã« CSS倿°ïŒããŒã¯ã³ïŒå ããŠããç HEX ã®çŽæžãã¯ã»ãŒç¡ã ã«ãŒã3æäžŠã³ã§çµããããã ç¢å°ãããŒãèªåãã䜿ã£ãŠã ã¬ã€ã¢ãŠããéšåãèªåã§åã£ãŠãèŠãç®ã¯ã¡ãããšããã£ãœã ã€ãŸãããã®èšäºã§ãã«ãŒã«ã®ãããããšæã£ãŠãäœæ³ã®ããªãã®éšåã¯ã Claude ãçŽ ã§ãããŸã ãããã¯æ£çŽã«èªããŸããClaude Codeãå°åãé«ãã ã§ããã«ãŒã«ç¡ãã ãš å°ãããšããã§è»¢ã¶ ãã§ããã çµµæåã䜿ã£ãŠè±è
ïŒâ¡ïŒå ããŠãããã©ã³ãã«ç¡ãã°ãªãã§æååãããŠãåŸããèªåã§çŽããã¡ã«ïŒã«ãŒã«ãããã°æåãã Material Icons ã«å¯ããŠåé¿ïŒ æ¬æã« 0.6ã0.8rem ã®å°ããããåãæ£åš ãæåœ±ãããèªããªããã€ïŒ19px äžéã«ãŒã«ãé²ãïŒ èªäœã¬ã€ã¢ãŠãã« class="slidev-layout" ãä»ããŠãªãã£ã ãå
±éã¹ã¿ã€ã«ã .slidev-layout ã«çœ®ããŠãã®ã«ãã§ããä»åã¯ããŸããŸèªåã®ã¹ã¿ã€ã«ã§é ããŠããã©ãäžæ©ééããã°èŠåºããæ»ã¬ããã£ãã®ç¶æ¿ã®çœ ãã®ãã®ïŒãèªäœã¬ã€ã¢ãŠãã« class ãä»ãããã«ãŒã«ãæç€ºã§æœ°ããã€ïŒ èŠããã«ãäœæã ãšã çŽ ã® Claude ã 80ç¹ããããã«ãŒã«ãããã 90ã95ç¹ã«åŒãäžããŠãæ¯åããã«æã æãã§ãããŒãããå質ãçãéæ³ãããªãã “æããå°ããªèºã”ãå
åãã§çžã ãã®ãªãã§ãããããããçŽ ã®80ç¹ã¯ äžåãã£ããã»èªå·±æµ ã§ã次ã®ããããåã80ç¹ã«ãªãä¿èšŒã¯ãªãããããŒã ã®ä»ã®äººãåãããŒã³ã«ãªãä¿èšŒããªãã æ¯åã»èª°ã§ãã»åãå質 ã«ããŠããããäžžããšç§»æ€ã§ããããã«ããããããã«ãŒã«ã®æ¬åœã®å€æã¡ã§ãã ã«ãŒã«ã1è¡çŽããšãå
šããããåæã«çŽã ããŸãã«ãã·ã¹ãã ãæã€ããšã®äžçªã®ããŸã¿ã宿Œã§ããŸããã å®ã¯éäžã§ãåã CLAUDE.md ã«æžãããç¢å°ãããŒã®äœæ³ãã«ã¡ãã£ãšãããã°ããã£ããã§ãããç¢å°ãã«ãŒãã®æ¬æããäžã«ãºã¬ããã£ãŠãã€ãã§ãããã å
ã®ããããšãç§»æ€å
ã®ããããäž¡æ¹ã«äŒæããŠã ãã³ããŒã§äžå
·åãäžç·ã«åºãŸããã£ãŠãã€ã§ããã ã§ãçŽãã®ã¯ç°¡åã§ããã°ã£ãŠãã®ã¯”ã«ãŒã«ã®1è¡”ãªã®ã§ã ãããçŽããŠåãããã«åæ ããã ã ãã¹ã©ã€ãã1æãã€çŽããŠåãå¿
èŠããªããçŽãã¹ãå Žæãã«ãŒã«ã«1ãæãã£ãŠããã®ãããœã§ãããã©ãã©ã«ã¹ã©ã€ããäœã£ãŠãããåã厩ããå
šéšã®ã¹ã©ã€ãã§æäœæ¥ã§æœ°ããã¡ã«ãªãã 1ã€ã®ã·ã¹ãã ã«çµ±äžããŠãããããã§ããèžåœ ãªãã§ããã ãã ãããã¯è£ãè¿ããšæ³šæã§ããã£ãŠã é
ã CLAUDE.md ã«ãã°ããããšãã³ããŒå
å
šéšã«äžç·ã«äŒæãã ããªã®ã§ããã®ã«ãŒã«ãæã£ãŠãã£ããã CLAUDE.md ã«ãæžããŠãããæåŸã«å¿
ã PNG ã§ç®èŠç¢ºèªããå¿ããã«ãã³ããŒã¯äŸ¿å©ã ãã©ãäžå
·åããšã³ããŒããŠãªããã¯èªåã®ç®ã§èŠããã§ãã 1ã€ã«çµ±äžãããããç§»æ€ã§ããŠã»è²ã€ ãã©ãã©ã«äŸ¿å©ãªããŒããéããŠãããã¶ã€ã³ã¯è²ã¡ãŸããã ããŒã¯ã³ïŒåïŒéšåïŒã«ãŒã«ãã1ã€ã®åã¿åã£ãã·ã¹ãã ã«çµ±äžãã ããããããšããããªããŸãã AIã«äœãããŠãæ¯åããŒã³ãæãïŒæãããã«èšå®ããããïŒ å¥ãããžã§ã¯ãã«ãç§»æ€ã§ãããæ®æ®µã¯ããããäžžããšã³ããŒãææª CLAUDE.md 1æã§ã AI ã建ãŠçŽããïŒãã£ãå®éã«è©ŠãããšããïŒ ã«ãŒã«ãçŽãã°ãã³ããŒå
ã®ãããããŸãšããŠçŽãã æã¡åž°ãæ¹ã¯ã·ã³ãã«ã§ãã AIã«ãã¡ãã®ããã°ãèªã¿èŸŒãŸããŠèªåã®ç°å¢ã§åã蟌ãã§ã¿ãŠãã ãã ã style.css ã» layouts/ ã» components/ ããã®ãŸãŸæå
ã«æ®ãã®ã§ãè²ã ãèªåã®ãã©ã³ãã«å·®ãæ¿ããã°ãããåãã·ã¹ãã ãåããŸããåå©çšã®åäœã¯ãã«ãŒã«ããããªããŠãåãå®è£
äžåŒãããããæ¥åžžã®æ¬ç·ã§ãã ãã®ããã§ããã£ãã®å®éšããããã©ãŒã«ããã¯ãèŠããŠãããŸããã ææªã CLAUDE.md ã1æåŒã£è¶ãã ãã§ãå©ãã ãå®è£
ãã¡ã€ã«ãæã¡æ©ããªããŠããã«ãŒã«ããæž¡ãã° AI ãæ®ãã建ãŠçŽããŠãããããããŸã§æ¬è³ªãã«ãŒã«ã«å®¿ã£ãŠãããšãã蚌æã§ããããŸããæ®æ®µã¯ã³ããŒã§éãããããšãªãã°ã«ãŒã«ã ãã§ã建〠ââ ããããäžžããšæã£ãŠããããã®äžèº«ã§ãã ãã1ã€ãç§»æ€ã§ãããŸã§è²ã£ããã®äžåŒïŒlayouts/ components/ styles/ïŒã¯ãSlidev ã® theme ã®ãã£ã¬ã¯ããªèŠçŽãšã»ãŒåãæ§æã§ãããè€æ°ãããžã§ã¯ãã§é
ãããããšãªã£ããšããpackage.json ã1æè¿œå ããã ãã§ theme ãšããŠåãåºããŸããæžãçŽãã¯èŠããŸããã ãtheme ãäœããããšæåããææ°èŸŒãããã䜿ã£ãŠæ°ã«å
¥ã£ããã®ã貯ããŠãäœã£ãŠå£ããŠãç¹°ãè¿ããŠãæåŸã«æ®ã£ããã®ã theme ã«èžçããããšããé çªã®ã»ããé·ç¶ãããŸããtheme ã¯åºçºç¹ãããªããŠãè²ã£ãããšã®çµæãªã®ã§ã ä»å㯔å®ç©”ã®è©±ã«æ¯ãåããŸããããããªãã§ããŒã¯ã³ã§çžãã®ïŒããåã»éšåã»ã«ãŒã«ã«è²¯ããã£ãŠã©ãããããšïŒãã£ãŠãã èšèšææ³ã®ã»ã ã¯ãé£èŒã® 第3éš ïŒãã¶ã€ã³ããŒã¯ã³ïŒãš 第4éš ïŒãã¶ã€ã³ã·ã¹ãã ã®è²ãŠæ¹ïŒã§ãã£ããæžããŠãŸããå®ç©ã§æ°ã«ãªã£ããšãããããã°ããã£ã¡ãèŠããŠã¿ãŠãã ããã ããã§ã¯ãããã¹ã©ã€ãã©ã€ããïŒ ã·ãªãŒãºïŒAIÃã¹ã©ã€ãã¥ãã AIã«äžžæããããå¶çŽãšã«ãŒã«ã§ãæå³ã©ããã®95ç¹ããæ¯åããããŠäœãã·ãªãŒãºã§ãã ã»ããã¢ããããšã¯ã¹ããŒã â æ§æãŒãã§äœã£ãŠé
ã Marp ãš Slidev ã®äœ¿ãåã â Git管çèµ·ç¹ã§ã©ã£ã¡ã䜿ã å®ç©ç·šïŒå
šéšå
¥ãïŒ ïŒç§»æ€ã§ãããã¶ã€ã³ã·ã¹ãã ãäžžããšå
¬é â âããŸãã ãã¶ã€ã³ããŒã¯ã³ç·š â ãªããæ ãã§çžãã®ãïŒå®ç©ç·šã®æ·±æãïŒ ãã¶ã€ã³ã·ã¹ãã ç·š â ãªãåã貯ããŠè²ãŠãã®ãïŒå®ç©ç·šã®æ·±æãïŒ ã芧ããã ãããããšãããããŸãïŒ ãã®æçš¿ã¯ã圹ã«ç«ã¡ãŸãããïŒ åœ¹ã«ç«ã£ã 圹ã«ç«ããªãã£ã 0人ããã®æçš¿ã¯åœ¹ã«ç«ã£ããšèšã£ãŠããŸãã The post Slidev ã®ãã¶ã€ã³ã·ã¹ãã ã CSS倿°ãš CLAUDE.md ã§äœãïŒç§»æ€ãç°¡å first appeared on SIOS Tech Lab .
AIã«ã¹ã©ã€ããå
šéšä»»ãã¡ããã¡ãªã®ïŒ ã©ãïŒSlidev ãš Claude Code ã§ã¹ã©ã€ããéç£ããŠãéŸã¡ããã§ãã ååïŒç¬¬3éšïŒ ã§ãè²ããµã€ãºã CSS倿°ã§çžã話ãããŸãããä»åã¯ãã®ç¶ãã§ãããäžæ®µäžã®ãè²ãŠãã話ãªãã§ããã©ããã®åã«ã²ãšã€ãæè¿ãµãšæãããšããã£ãŠã AIã«ã¹ã©ã€ããããå
šéšä»»ãã¡ããã°ãããªãã§ããïŒã£ãŠã å®éããœãŒã¹ããã³ãšæŸã蟌ãã ãæ§æãäžèº«ãå
šéšAIããŸãšããŠãããããŒã«ãå¢ããŸãããããè³æãèŠçŽããã»çè§£ããã¿ãããªçšéãªããå
šä»»ãã§ååã ãšæããŸããã§ããèªåã人åã§è©±ããã¬ãŒã³ãšãªããšã話ãå€ãããŸãã ã¹ã©ã€ãã¯ã”èªåã®è©±ãããã”ãšã»ããã§åœ¢ã«ãªããšèããŠããŸãã話ãèªåãæ³åããªãããããã¯ããèŠããããããã®é çªã§åºãããããæ±ºãŸã£ãŠããã人ããããã”話ãããããã¿ãŒã³”ã£ãŠçµ¶å¯Ÿãããã§ãããã ã ããå
šä»»ãã ãšãããããªã¹ã©ã€ãã¯åºãŠãããã©ã “èªåã話ãããã圢”ã«ã¯ãªããªã ãä»äººãçšæããŠãããæãçãŠãæããééã£ãŠãªããã ãã©ããªããšãªã話ãã«ãããæ®ããŸãã ã€ãŸãã¹ã©ã€ãã«ã¯ããå
šä»»ãã§ããå Žé¢ããšãæ¹åæ§ãèªåã§æ¡ãããå Žé¢ãããããšããããšã§ããããã¬ãŒã³ã¯å®å
šã«åŸè
å¯ããªãã§ããããããããã®”æ¹åæ§”ã£ãŠã©ãæã£ãŠããã°ããã®ïŒã£ãŠããã®ããä»åã®è©±ã§ãã è¯ãã£ããã¿ãŒã³ã貯ãããšãèªåã®ãã¶ã€ã³ã·ã¹ãã ã«ãªã ã§ãæ¹åæ§ãèªåã§æ¡ãã£ãŠèšã£ãŠããæ¯åãŒããããã©ãèŠãããããèããã®ãããã©ããªãã§ããã åã®ã¹ã©ã€ãã§ããããã®èŠãæ¹ãããªã話ãããããªãã£ãŠãã¿ãŒã³ãã§ãããšãããããªãã§ããããªã®ã«ããã®ããããçµãããšããã£ãããæ¬¡ã®çºè¡šã§ãŸãçœçŽããèãçŽãããã£ããã®”èªåã®åã¡ãã¿ãŒã³”ããæ¯åäœ¿ãæšãŠã«ãªã£ãŠããŸãããã£ãããªãã§ãããã çãã¯ã·ã³ãã«ã§ã ãã®è¯ãã£ããã¿ãŒã³ããæšãŠãã«è²¯ããã°ããã 貯ãããã®ãç©ã¿äžãããšãããã”èªåãªãã®ãã¶ã€ã³ã·ã¹ãã ”ã«ãªããŸãã ããã¶ã€ã³ã·ã¹ãã ãã£ãŠèšããšãå€§äŒæ¥ãã¬ãããªäœã蟌ããã€ãæ³åããŠèº«æ§ãããããããŸãããã§ããè²ã®ã«ãŒã«ïŒããŒã¯ã³ïŒãšããã䜿ãéšåãšãããã䜿ãäœæ³ããããæã£ãŠãã°ãèŠæš¡ãå°ããã ãã§æ§é ã¯æ¬ç©ãšåããªãã§ãããåã¯ããããèªåã§è²ãŠãå°ããªãã¶ã€ã³ã·ã¹ãã ããšåŒãã§ãŸããèŠã¯ã話ãããããŠè¯ãã£ããã¿ãŒã³ã®éç©ã§ãã ããããããäžããèšèšãããããããªããã§ãããããã¶ã€ã³ã·ã¹ãã ãäœããããããªããŠããã£ãŠæ°ã«å
¥ã£ããã®ãèšé²ããŠããããæ°ã¥ãããã§ããŠãããæ£ããã§ãïŒç¬ïŒã ãšããã®åã«åæã2ã€ã ã眮ãããŠãã ãããã²ãšã€ããã®é£èŒã§äœã£ãŠãã®ã¯å
šéš SlidevïŒMarkdown ã§ã¹ã©ã€ããæžããããŒã«ãäžèº«ã¯ Vue ã§ãã»ããã¢ãã㯠第1éš ïŒã®äžã®è©±ã ãšããããšãããã²ãšã€ãååãã£ããè²ã»ãµã€ãºã CSS倿°ïŒããŒã¯ã³ïŒã§çžãããã€ãããã®ãã¶ã€ã³ã·ã¹ãã ã® äžçªäžã®åå° ã ãšããããšãè²ã®æ ãæ±ºãŸã£ãŠãããããã®äžã«åãéšåãç©ãã§ãããŒã³ã厩ããªããä»åã¯ãã®åå°ã®äžã«ç©ã話ã§ãåã»éšåã SlidevïŒVueïŒã®ä»çµã¿ã«ä¹ããŠäœããŸãïŒè²ãŸããã®”ãªã”㯠第3éš ã«ïŒã 貯ãå
ã¯ããã£ãã3ã€ãã¬ã€ã¢ãŠãã®ãåããç¹°ãè¿ã䜿ããéšåãããããŠãã«ãŒã«ïŒäœæ³ïŒãã§ãã ã©ã貯ããŠãã©ãéžã¶ã 貯ããã£ãŠãèŠã¯ãäžåºŠäœã£ãŠè¯ãã£ãïŒåŠãã ãã®ããæ¬¡ã䜿ããåœ¢ã«ææ Œããããããšãåã»éšåã»ã«ãŒã«ã®é ã«èŠãŠãããŸãã ã¬ã€ã¢ãŠãã¯ãåãã«ãã è¯ãã£ãã¹ã©ã€ãã®æ§é ãã layouts/ ã«ãåããšããŠçœ®ããŠãããšã次ãã frontmatter ã§ layout: åå ãšåŒã¶ã ãã§äœ¿ããŸãã 第2éšã§ãè§ŠãããšãããSlidev ã®ã¬ã€ã¢ãŠãã¯ãã ã® CSS ã¯ã©ã¹ãããªã Vue ã³ã³ããŒãã³ãïŒæ§é ãæã£ãéšå ã§ããã ãããåã«ãããã¯ãCSS ãããéããããšãããªããŠã æ§é ããšéšåã«éã蟌ããŠãååã§åŒã¶ ããšãªãã§ããã ããšãã°åãSlidev ã§ã³ã³ãã³ãã®çžŠäžå€®æãã«ãã¡ããã¡ãããã£ãããšããã£ãŠïŒç¬ïŒãSlidev ã®æšæºã¬ã€ã¢ãŠãã¯é«ãã確å®ããŠãããªãã®ã§ãåèŠçŽ ã« flex: 1 ãä»ããŠãå¹ããªããã§ãããã§ãè²ã
詊ããæ«ã«æ°ã¥ããã®ãã æ¯åã¹ã©ã€ãã§äžå€®å¯ãã® CSS ãšæ Œéããããã”瞊äžå€®æã”ãã®ãã®ãã¬ã€ã¢ãŠãã®åã«ãã¡ããã°ãã ã£ãŠããšãSlidev 㯠UnoCSS ïŒTailwind äºæïŒãæšæºãªã®ã§ãåã®äžèº«ããŠãŒãã£ãªãã£ã§ã¹ããšæžããŸãã <!-- layouts/centered.vueïŒçžŠäžå€®æãããåã®äžã«éã蟌ãã --> <template> <!-- slidev-layoutïŒstyle.css ã® .slidev-layout ã«çœ®ããå
±éããŒã¹ãç¶ãïŒå
¬åŒã®æšæºãã¿ãŒã³ãèªäœã¬ã€ã¢ãŠãã¯èªåã§ä»ããïŒ --> <!-- é«ãã¯ä»ããªãã®ã§ãh-full ã§ç¢ºä¿ã㊠flex ã§çžŠäžå€®å¯ã --> <div class="slidev-layout h-full flex flex-col justify-center px-14 py-10"> <slot /> <!-- ã¹ã©ã€ãã®äžèº«ãããã«å
¥ã --> </div> </template> ããšã¯ã¹ã©ã€ãåŽãããããåŒã¶ã ãã§ãã --- layout: centered --- # ãããç»é¢ã®çžŠäžå€®ã«æ¥ã äžå€®å¯ãã® CSS ãæ¯åã¹ã©ã€ãã«æžãããããªããŠã åã1å layouts/ ã«çœ®ã㊠layout: centered ãšåŒã¶ã ã ãããã£ãŠè§£æ±ºããç¥èŠãããã®ãŸãŸ”åŒã¹ãå”ã«ãªããã§ããããåãçœ ãäºåºŠãšèžãŸãªããŠæžãã ïŒãã® centered.vue ãå«ããŠãåã»éšåã»ã«ãŒã«ãŸã§å
šéšçµãã âåããããäžåŒâã®ãã«ã³ãŒãã¯ã å®ç©ç·šïŒå
šéšå
¥ãïŒ ã§å
¬éããŠããŸããããã§ã¯âããã£ãç¥èŠãåã«éã蟌ããâãšããçºæ³ã ãæŽãã§ããããã°OKã§ããïŒ ç¹°ãè¿ãããŒãã¯ãéšåãã«ãã 2å以äžåºãŠããããŒãã¯ãVue ã³ã³ããŒãã³ãã«ã㊠components/ ã«çœ®ãã¡ãããåã®æå
ã«ã¯ãRAG ã®æŠå¿µå³ãšããããŒå³ãšããããããéšåã20å以äžè²¯ãŸã£ãŠãŸããããšãã° RAG ãã€ãã©ã€ã³å
šäœåã®å³ã¯ãããããåŒã¶ã ãã --- layout: none --- <RagConcept /> <RagConcept /> ã£ãŠæžãã ããäžèº«ã® HTML ã¯ã³ã³ããŒãã³ããæã£ãŠãã®ã§ãæ¯åæžãããªããŠããããèŠãç®ãå¿
ãæããããããã¡ããã¡ãæ°æã¡ãããã§ãããHTML ãæ¯åæã§æžããŠãé ã¯ãå°å³ã«æ¯åã¡ãã£ãšãã€éãå³ãã§ããŠãã®ã§ïŒç¬ïŒã ãAIã£ãœãããšæ°ã¥ããããã«ãŒã«ãã«ãã ããããããããšAIã£ãœããªãã£ãŠæ°ã¥ããããšã¯ãã«ãŒã«ãšããŠæç« ã«ããŠãããåã®çŽ æã«ã¿ãã°ã ãšããããªäœæ³ã貯ãŸã£ãŠãŸãã æ¬æã¯ 19px 以äžïŒæåœ±ã§èªããªããªãã®ã§ãTailwind ãªã text-xl 以äžã text-lg ã¯18pxã§å²ããïŒ è²ã¯ CSS倿°ã theme ã®è²ã¯ã©ã¹ã䜿ãïŒç HEX ã®çŽæžãã¯ããªãïŒ 1ã€ã®å³ã«1ã¡ãã»ãŒãžïŒè©°ã蟌ãŸãªãïŒ ããã«ããAI補ã«èŠãããã¿ãŒã³ããé¿ããã«ãŒã«ãè¶³ããŠãããŸãã ãããã¡ïŒAIã£ãœãïŒ ä»£ããã«ãããã Inter / Poppins ãã©ã³ã Noto Sans JP ã«å¯ãã 玫ãéã®ã°ã©ãèæ¯ åè²ïŒèããã€ãº å®å
šå¯Ÿç§°ãªã¬ã€ã¢ãŠã ãããšå°ãé察称㫠åãã«ãŒãã3ææšªäžŠã³ ç¢å°ã§ã€ãªããããŒåœ¢åŒã« åãéšåãã«ãŒã«ãããã£ãŠãããšã¯å
šéšãããªãã§ããäžåºŠäœã£ãŠè¯ãã£ããã®ããæ¬¡ã䜿ããåœ¢ã«ææ Œããããã«ãŒã«ã«æžããŠããã°ã次ã¯åãçœ ãå
ã«åé¿ã§ããŸãã 貯ãããã®ã¯ãã«ã¿ãã°ã«ããŠãèŠãŠéžã¶ã ã§ãããã倧äºãªãã§ããã©ã貯ããã ãã ãšãã©ãã«äœããããèªåã§ãå¿ãããã§ããïŒç¬ïŒãéšåã20åããããšããããããããã®å³ã©ãäœã£ãã£ããã£ãŠãªãã ã ããã貯ããçŽ æã¯äžèЧãã€ãŸãã«ã¿ãã°ã«ããŠãããŸããåã¯ãçŽ æã®äžèЧã«ãååã»çšéã»ãã¬ãã¥ãŒç»åãã®è¡šãäœã£ãŠãã£ãŠããããšèŠãŠéžã¹ãããã«ããŠãã ã§ãæ°ããã¹ã©ã€ããäœããšãã¯ããã®ã«ã¿ãã°ãçºããŠããã䜿ããã£ãŠèªåã§éžã¶ããããå°å³ã ãã©è¶
倧äºã§ã éšåéžã³ãŸã§AIã«äžžæãããªã ãã§ãããã©ã®åã§ã©ã®éšåãã©ã䞊ã¹ãããã£ãŠãã”æ¹åæ§”ã¯äººéãæ¡ããAIã«æž¡ãã®ã¯ãã«ãŒã«ã¯ããããçŽ æã¯ã«ã¿ãã°ããéžãã§ãããããã ãããæåã«èšã£ããå
šä»»ãã«ããªããããéçšã¬ãã«ã§å
·äœã«ãªã£ãŠããã§ããããå
šä»»ãã¯ãéžã¶ãšãããŸã§å«ããŠAIãåã®ããæ¹ã¯ãçŽ æã¯AIãšäžç·ã«äœããã©ãéžãã§çµãã®ã¯èªåããã®å·®ãã”èªåã話ããããã¹ã©ã€ã”ã«ãªããã©ããã®åããç®ã ãšæã£ãŠãŸãã è²ãŠãã»ã©éããªããã§ãäžçºã§å®ç§ã¯çããªã ãããŸã§ã®è©±ãæ£çŽã«èšããšãæåã¯ãããªã«éããªãã§ãïŒç¬ïŒã åãéšåããŸã ç¡ããããæåã®äœæãã¯ãŒãããäœãã®ãšå€ãããªããããããããåã«ããšããããããéšåã«ããããã£ãŠèããåãã¡ãã£ãšé
ããããã ã§ãã2æç®ã3æç®ã次ã®ãããããšé²ãã»ã©å¹ããŠãããããã«ã¿ãã°ã«åãéšåã貯ãŸã£ãŠããããæ°ããã¹ã©ã€ããããŒãããããããªããŠãã«ã¿ãã°ããéžãã§çµãã ããã«ãªããã§ããããããã»ããšã«ã©ã¯ã§ãäžåºŠãã®ç¶æ
ã«å
¥ããšæ»ããªããã§ãããçé”ã£ãŠèšããããªããã€ã§ãããäœåãäœåã«ãã¿ãããªèšæž¬ã¯ããŠãªãã®ã§äœæã®è©±ã§ãïŒã ãããŠããããåé ã®åããå
šéšä»»ãã¡ããã¡ãªã®ïŒããžã®çãã§ãã貯ãŸã£ãŠãã®ã¯”èªåã話ããããå”ã®éç©ã ããã éãã®ã«ãã¡ãããš”èªåã®”ã¹ã©ã€ãã«ãªã ãå
šä»»ãïŒéããã©èªåã®åœ¢ã«ãªããªãïŒã§ããæ¯åãŒãïŒèªåã®åœ¢ã ãã©é
ãïŒã§ããªããäœ¿ãæšãŠã ã£ããã¿ãŒã³ããæ¬¡ã®éãã«å€ãããã§ãããã ãã ãæåŸã«æ£çŽãªããšãèšã£ãŠãããŸãã è²ãŠãŠããåèŠã®ã¹ã©ã€ãã¯ãã£ã±ããºã¬ãŸãã äžçºã§å®ç§ãã¿ãããªéæ³ã¯ãªãã§ããæ°ããããŒãã ãšã貯ããåã«åœãŠã¯ãŸããªãããŒããå¿
ãåºãŠãããã§ããã ã§ããããã§ãããã§ãããºã¬ãããããããŸãåãªãéšåãªãã«è²¯ããã°ããããè²ãŠããã£ãŠããããã£ãŠãºã¬ã貯ãç¶ããäœæ¥ãã®ãã®ãªãã§ãããããããåã« Claude Code ã®å€±æããã°ãã±ããåããŠæœ°ã話 ãæžãããã§ããã©ããããšåãçºæ³ã§ããã¹ãèšé²ããŠãæ¬¡ã«æŽ»ããã圢ã«å€ãããã¹ã©ã€ãã®ãã¶ã€ã³ããŸã£ããäžç·ã§ãã ãããŸã§è²ã£ããããtheme ã«ãŸãšããããšãã話ãèªç¶ã«åºãŠããŸããSlidev ã® theme 㯠layouts/ components/ styles/ ã1ããã±ãŒãžã«ãããã®ã§ãããŒã«ã«ã®çœ®ãå ŽæãšèŠçŽãã»ãŒåããã ããç§»è¡ã¯æžãçŽããããªããpackage.json ã1æè¿œå ããŠåãåºãã ãã§ãã ãtheme äœããïŒããšæ°åãã§å
¥ããšçãå°œããããšãå€ããã§ããã©ïŒç¬ïŒãäœã£ãŠå£ããŠãç¹°ãè¿ããŠãºã¬ã貯ãç¶ããåŸãæåŸã«æ®ã£ããã®ã theme ã«åããããããããã®æž©åºŠæãã¡ããã©ããããªãšæã£ãŠãŸããtheme ã¯ç®çå°ã§ãã£ãŠãåºçºç¹ã®ææ°èŸŒã¿ã§ã¯ãªãã®ã§ã ãããšãã1ã€ã第3éšã§ãèšããŸãããã©ãã«ãŒã«ã«æžãããã€ã³ãŒã«ç»é¢ã§ãã®éãåºãŠãããšã¯éããªããåãæå®ããã®ã«åŽ©ããŠãããªããŠã®ã¯æ®éã«èµ·ããŸããã ããæåŸã¯å¿
ã PNG ã«æžãåºããŠããã®ç»åãç®ã§èŠãŠç¢ºèªããŠããŸãã ãã®ãç»åãèŠãŠçŽãããä»çµã¿ã«ãã話ã¯ãããã ãã§äžæ¬ã«ãªãããŒãã§ãããäœããè²ãŠãããšããããæåŸã¯åããã§ãã ãŸãšã ãŸãä»åãã£ãããšã¯ãPowerPointãGoogle Slideã§èšå®ã§ããã¹ã¿ã€ã«ã»ãã³ãã¬ãŒãã¿ãããªã®ãèªåã®æå
ã§äœãããïŒã£ãŠè©±ãªãã§ããã©ãã ã¹ã©ã€ãã«ã¯å
šä»»ãã§ããå Žé¢ãšãæ¹åæ§ãèªåã§æ¡ãããå Žé¢ãããããã¬ãŒã³ã¯”èªåã®è©±ãããã”ãšã»ããã ããåŸè
å¯ãããšåã¯æããŠãŸã è¯ãã£ããã¿ãŒã³ãæšãŠãã«åã»éšåã»ã«ãŒã«ã«è²¯ãããšãèªåã§è²ãŠãå°ããªãã¶ã€ã³ã·ã¹ãã ã«ãªã äžããèšèšãããªããäœããªããäžãã貯ãããæ°ã¥ãããèªç¶ãšãã£ãŠãããããã§ãã 貯ããçŽ æã¯ã«ã¿ãã°ã«ããŠã人ãèŠãŠéžã¶ãéšåéžã³ãŸã§AIã«äžžæãããªã 貯ãŸãã»ã©ã©ã¯ã«ãªã£ãŠãããã”èªåã®”ã¹ã©ã€ãã«ãªããäžçºå®ç§ã¯çãããæåŸã¯ç»åã§ç¢ºèªãã ãããŠãäœã£ãŠãè²ãŠãŠããšããããæåŸã¯ãåããââ Slidev ã PNG ã«æžãåºããŠãClaude ã«ç»åããèŠããŠãçŽããŠãããåè³ªç¶æã®è©±ãããã¯ããèªäœã§äžæ¬ã®ããŒããªã®ã§ããã€ãæžããããšæã£ãŠãŸãã ãŸãã¯ã次ã«ã¹ã©ã€ããäœããšããããããè¯ãã£ããªãã£ãŠãã¿ãŒã³ãåºãããæšãŠãã«1åã ãåã£ãŠãããŠã¿ãŠãã ãããããããããè²ãŠãã¹ã¿ãŒãã§ãããæ¥œãã¿ã«ã ã»ãªãŸãã ã·ãªãŒãºïŒAIÃã¹ã©ã€ãã¥ãã AIã«äžžæããããå¶çŽãšã«ãŒã«ã§ãæå³ã©ããã®95ç¹ããæ¯åããããŠäœãã·ãªãŒãºã§ãã ã»ããã¢ããããšã¯ã¹ããŒã â æ§æãŒãã§äœã£ãŠé
ã Marp ãš Slidev ã®äœ¿ãåã â Git管çèµ·ç¹ã§ã©ã£ã¡ã䜿ã å®ç©ç·šïŒå
šéšå
¥ãïŒ ïŒç§»æ€ã§ãããã¶ã€ã³ã·ã¹ãã ãäžžããšå
¬é â ãŸãšã ãã¶ã€ã³ããŒã¯ã³ç·š â ãªããæ ãã§çžãã®ãïŒå®ç©ç·šã®æ·±æãïŒ ãã¶ã€ã³ã·ã¹ãã ç·š â ãªãåã貯ããŠè²ãŠãã®ãïŒå®ç©ç·šã®æ·±æãïŒâããŸãã ã芧ããã ãããããšãããããŸãïŒ ãã®æçš¿ã¯ã圹ã«ç«ã¡ãŸãããïŒ åœ¹ã«ç«ã£ã 圹ã«ç«ããªãã£ã 0人ããã®æçš¿ã¯åœ¹ã«ç«ã£ããšèšã£ãŠããŸãã The post Claude Code à SlidevïŒAIã«å
šä»»ãããªããã¶ã€ã³ã·ã¹ãã ã®è²ãŠæ¹ first appeared on SIOS Tech Lab .
AIã¯çµæ§ã¡ãããšäœããã§ãâæããªãâããããŸã«äºæ
ã ã©ãïŒSlidev ãš Claude Code ã§ã¹ã©ã€ããéç£ããŠãéŸã¡ããã§ãã 念ã®ããåæã ããSlidev 㯠Markdown ã§ã¹ã©ã€ããæžããããŒã« ã§ããã®é£èŒã®è©±ã¯å
šéšãã®äžã«ä¹ã£ãŠãŸããä»åã®ããŒã¯ã³ããSlidev ãããžã§ã¯ãã® style.css ã«çœ®ãåæã§ããSlidev èªäœã®ã»ããã¢ãã㯠第1éš ã«ã ååïŒç¬¬2éšïŒ ã§ãéšååããŠè²ãŠããªã Slidevãã£ãŠè©±ãããŠãæåŸã«äºåãããã€ã§ãããä»åã¯ãã®äžçªå¹ãåŠæ¹ç®ã ãã¶ã€ã³ããŒã¯ã³ ã®è©±ã§ãã ãŸããã¡ãã£ãšç
œãã£ãœãèŠåºããšéã®ããšãæ£çŽã«èšããŸããæè¿ã®AIïŒClaudeïŒã æŸã£ãŠãããŠãçµæ§ã¡ãããšããã¹ã©ã€ããäœããŸã ãè²ãèããªããŠã CSS倿°åãŸã§ããŠãããã匷調ã1ã2è²ã«æããŠããããAIã«ä»»ãããšè²ãè¹è²ã«æŽèµ°ãããã£ãŠèº«æ§ããŠããã§ããã©ãå°ãªããšãåã詊ããç¯å²ã§ã¯ããããŸã§èããªããå°åãé«ããã§ããã ãããããŒã¯ã³ãªããŠèŠããªãã®ïŒ ã£ãŠãããšãèŠããŸãããã çç±ããè²ã®æŽèµ°ãæ¢ããããããªããŠãå¥ã®2〠ãªãã§ãããã æããªã ïŒ 1åããšã«âããã£ãœããã©æ¯åã¡ãã£ãšéãâããŒã³ãåºãŠããã仿¥äœã£ãããããšæ¥é±ã®ããããèªåã®ãšããŒã ã®äººã®ã§ã æãä¿èšŒããªã ãAIã¯æªæ°ãªããæ¯åã¡ãã£ãšãã€éã倿ãããã®ã§ ããŸã«âæããâäºæ
ãèžã ïŒ æŸã£ãŠãããš æ¬æã 0.6ã0.8rem ãŸã§çž®ã ããšããã£ãŠãæåœ±ãé
ä¿¡ã§æœ°ãããšèªããªããããš çµµæåãå
¥ããŠããŠãæ¬çªã®ãšã¯ã¹ããŒãã§æ¶ããïŒè±è
ïŒâ¡ïŒåãã ïŒããã¯åŸã§è©³ããïŒ èŠããã«ãAI㯠80ç¹ã¯ããããã§ãâæ¯ååã80ç¹âã®ä¿èšŒã¯ãªãããäžéïŒèªãããµã€ãºã»æ¶ããªãã¢ã€ã³ã³ïŒã¯å®ã£ãŠãããªã ããããåããã®ãããŒã¯ã³ã§ããããããšã¯ã ã䜿ã£ãŠããè²ã»æäœãµã€ãºã»äœ¿ãã¢ã€ã³ã³ããå
ã«1åæ±ºããŠâæ âã«ãã ã ãããããããšãæ¯åããã«æãããäžéãä¿èšŒããããè²ã®è©±ããæŽèµ°ãæ¢ããããšããããã æ¯åã»èª°ããã£ãŠãåãè²ã«ä¹ãã ããã®æ ããšæããã®ãæ£ç¢ºã§ããã çŸèã¯äžèŠãšããããšã§ããæ ãªãïŒå·ŠïŒããšãæ ã§æããïŒå³ïŒãã䞊ã¹ãŠã¿ãŸãããïŒå·Šã¯ãããšæ£ããããæ¥µç«¯ãªäŸã§ããå®éã®çŽ ã®AIã¯ãããŸã§èããŸãããã§ãâæ¯ååãããŒã³ã«æããâãšå³åŽã«ãªããã®ã€ã¡ãŒãžãšããŠèŠãŠãã ããïŒ åãå
容ã®ã¹ã©ã€ããªãã§ããããªã®ã«ãã®å®å®æã®å·®ãå¹ããŠãã®ã¯ éžæè¢ãçµã£ãããš ã§ããè²ãªããŠ1670äžè²ããèªç±ã«éžã¹ããã ãããæ¯åãã©ã€ãã®ã¯åœããåãã ãã å
ã«ã䜿ã£ãŠããè²ã¯ããã ããã£ãŠæ ãæž¡ã ãããã ãã§ãã è²ã»ãµã€ãºã»äœçœã CSS倿°ã§çžã ããããšã¯ã·ã³ãã«ã§ãã¹ã©ã€ããããžã§ã¯ãã® style.css ã®å
é ã«ã 䜿ã£ãŠããå€ã CSS倿°ïŒãã¶ã€ã³ããŒã¯ã³ïŒãšããŠå
šéšå®£èšããŠãã ã ãã§ãã /* style.css â :root ã«ã䜿ããå€ããå
ã«äžŠã¹ãŠãã */ :root { /* è²ïŒäœ¿ã£ãŠããã®ã¯ããã ããAIã¯ãã®äžããéžã¶ */ --bg-white: #FFFFFF; /* èæ¯ïŒçœå°ïŒ */ --navy-900: #0B1F3A; /* èŠåºãã»æ¿ãå°ã«äœ¿ããã€ã㌠*/ --text-primary: #1E293B; /* æ¬æ */ --text-secondary: #475569; --accent: #C2410C; /* 匷調ã¯ãã®æããæ±ã®1è²ã ã */ --accent-soft: rgba(194, 65, 12, 0.10); /* ãæ³šæããæåãã¿ãããªâæå³ãæã€è²âã¯ã匷調ãšã¯å¥è
¹ã§æã€ */ --warning: #B45309; --success: #15803D; } è²ã¯ãèæ¯ã»æ¬æã»åŒ·èª¿ããããã«çµãã®ãã³ãã§ãã ãã©ã³ãã®åŒ·èª¿ã¯ããã£ã1è²ã«æ±ºãæã¡ ãã¡ããïŒåã¯ãã®æããæ±ã ãïŒãããã ãã§ãã¡ãããšãã¶ã€ã³ãããŠãæããåºãããã©ãã倧äºããäžçºã§äŒããããæ³šæããæåãã¿ãããªâæå³ãæã€è²âã¯å¥è
¹ã§è¶³ããŠããã§ããããããå«ããŠå€ããŠã3è²ãŸã§ãéã«åŒ·èª¿è²ã5è²6è²ãããšãããäœã倧äºãªã®ãåãããªããªããã§ãããã ãµã€ãºãšäœçœãåãçºæ³ã§ã倿°ã«ããŠããŸããŸãã :root { /* ãã©ã³ããµã€ãºïŒæå°ã©ã€ã³ã決ããŠããã®åæ°ã§å»ã */ --font-body: 20px; /* æ¬æã19px ã¯äžåããªã */ --font-heading: 35px; /* èŠåºã */ --font-lead: 24px; /* ãªãŒãæ */ /* äœçœïŒå»ã¿ãåºå®ïŒ4ã®åæ°ã ã䜿ããã¿ããã«æããïŒ */ --space-sm: 8px; --space-md: 16px; --space-lg: 24px; /* â» Slidev 㯠UnoCSSïŒTailwind äºæïŒãæšæºå梱ã äœçœã¯ p-2=8px / gap-4=16pxâŠããã©ã³ã㯠text-lg / text-xl⊠㚠æ¢è£œã¹ã±ãŒã«ãæåããããã®ã§ã--space-* ã --font-* ãèªäœãã ãã®ãŸãŸä¹ã£ãŠãããã ãã ãè²ã¯ bg-blue-500 çã®ããã©ã«ãè²ãäœçŸè²ãšéãã£æŸããªã®ã§ã 䜿ãè²ã ãã¯å¥é theme ã§çµãå¿
èŠãããïŒè©³çްã¯äžã®æ¬æã§ïŒ */ } ãã€ã³ãã¯ã æå°ãã©ã³ããµã€ãºã決ãã ãããšãã¹ã©ã€ãã¯æåœ±ãããé
ä¿¡ã§ç»è³ªãèœã¡ããããã®ã§ãæ¬æã¯æäœã§ã 19ã24px ã¯æ¬²ãããããã倿°ã§åºå®ããŠãããšãAIã調åã«ä¹ã£ãŠãããã¯æ
å ±å€ãããå°ããããŸãããã£ãŠ 14px ãšãã«ããã®ãé²ããŸãããã®ãžãã®äžéã¯çµéšåã§ããã®ã§ããã£ããæ±ºããŠæžãåºããŠãããšåŸãã©ã¯ã§ãããã¡ãªã¿ã«ãã®âæ¬æãµã€ãºâãæŸã£ãŠãããšAIãå®éã«ãã¡ã°ãçž®ããŠããâæããèºãâã®ä»£è¡šæ Œãªãã§ãããããŒã¯ã³ãäžçªããããªå¹ãã®ãããã®äžéã§ãã ãããŸã§ãèªåã§ CSS倿°ã宣èšãããåæã§æžããŠããŸãããã©ã Slidev 㯠UnoCSS ïŒTailwind äºæïŒãæšæºã§å
¥ã£ãŠã ãã§ãããïŒãã£ãã®äœçœã®ã³ã¡ã³ããããã§ãïŒããªã®ã§äœçœããã©ã³ããµã€ãºã¯ã --space-* ãèªäœããªããŠã Tailwind ã®ã¹ã±ãŒã«ïŒ text-lg / gap-4 âŠïŒã«ãã®ãŸãŸä¹ããŸãããæ¬æã¯ text-xl ïŒ=20pxïŒä»¥äžãã䜿ããªããã£ãŠçžãæ¹ã§ãã¢ãªã§ããïŒ text-lg ã¯18pxã§ããã£ã決ãã19pxäžéãå²ãã®ã§é¿ããïŒã ãã ã è²ã ã㯠Tailwind ãå
¥ããŠãéãã£æŸãã§ã ã bg-red-500 bg-blue-500 âŠã£ãŠäœçŸè²ãçšæãããŠããã§ãçµå±”çhexã§å¥œãåæ”ãšå€ãããªããã§ãããã ããè²ã«é¢ããŠã¯ãTailwind ã䜿ããšãã§ãã䜿ã£ãŠããã®ã¯ãã®è²ã ãããšèªåã§çµã ââ ãã£ãã®è²ããŒã¯ã³ã®è©±ã¯ãTailwind ã§ããã®ãŸãŸå¹ããŸãã ãµã€ãºã»äœçœã¯ã¹ã±ãŒã«ã«ä¹ã£ãŠã©ã¯ããŠãè²ã¯ã¡ãããšç· ãã ããããåã®èœãšãã©ããã§ããã ãããŠãå®çŸ©ããããŒã¯ã³ã¯ å
šã¹ã©ã€ã㮔尔ã«1ååœãŠãŠãã ãšãå
±éã®ããŒã¹ã«ãªããŸããåœãŠå
㯠.slidev-layout ââ çµã¿èŸŒã¿ã¬ã€ã¢ãŠããæã£ãŠããã¹ã©ã€ãã®åå°ãã¯ã©ã¹ã§ãïŒãã®æ§è³ªã¯åŸã®ãã©ãã«æžãããã§è©³ããïŒãããã«åœãŠãŠããã°ã以éã©ã®åããã§ãåããã©ã³ãã»è²ã§å§ããããŸãã /* style.cssïŒ:root ã®ããŒã¯ã³ããå
šã¹ã©ã€ãã®åå° .slidev-layout ã«åœãŠãŠãã */ .slidev-layout { background: var(--bg-white); color: var(--text-primary); font-size: var(--font-body); font-family: 'Noto Sans JP', sans-serif; } ïŒTailwind 掟ãªã .slidev-layout { --uno: bg-... text-... } ã§ãåãããšãã§ããŸãïŒ ã¢ã€ã³ã³ããæ ãã§çžãïŒçµµæåã¯æ¬çªã§æ¶ãã çžãã®ã¯è²ãšãµã€ãºã ããããªããã§ããã ã¢ã€ã³ã³ ãã§ããAIã«ã¹ã©ã€ããæžããããšããããŸãæŸã£ãŠãããš ã¿ãã㪠絵æåãåæã«æ£ãã°ããŠãã ããããŠçµµæåã¯ãæŸã£ãŠãããšçŽ ã®AIãå®éã«èžãâæããèºãâã®ä»£è¡šæ Œã§ããã§ãçµµæåããã£ãããªã®ã¯ãèŠãç®ãAIã£ãœããªãã ããããªããã§ããã æžãåºããšæ¶ãããã§ã ãïŒããŸã«å
šåã§ SVG ãäœã蟌ãã§ãããããŸããïœïŒ Slidev ã® PNG/PDF ãšã¯ã¹ããŒãã¯è£ã§ Playwright ïŒãããã¬ã¹ ChromiumïŒãåããã§ããã©ããã®ç°å¢ã«ã¯ çµµæåãã©ã³ããå
¥ã£ãŠãªãããšããã ããªã®ã§ dev ãµãŒããŒã®ãã¬ãã¥ãŒã§ã¯ ã ãã¡ãããšåºãŠãã®ã«ããšã¯ã¹ããŒããã PNG ã§ã¯ çã£çœãªç©ºçœ ã«ãªã£ããã â¡ïŒè±è
ïŒ ã«ãªã£ãããããæ¬çªã§åããŠæ°ã¥ããã€ã§ãããã€ããšããŸãã 察çã¯è²ããŒã¯ã³ãšåãçºæ³ã§ã ã䜿ã£ãŠããã¢ã€ã³ã³ã®äŸçµŠæºãã style.css ã§1ã€ã«åºå®ãã ããšãå㯠Material Icons ïŒWeb ãã©ã³ãïŒã«çµ±äžããŠãŸããWeb ãã©ã³ããªã®ã§ããšã¯ã¹ããŒãç°å¢ã§ã確å®ã«æç»ãããŸãã /* style.css ã®å
é ã§èªã¿èŸŒããããã§çµµæåã远æŸããŠã¢ã€ã³ã³ãäžæ¬å */ @import url('https://fonts.googleapis.com/icon?family=Material+Icons'); <!-- çµµæå 🚀 ããããŠãMaterial Icons ã®ååã§åŒã¶ --> <span class="material-icons">rocket_launch</span> ããŒã³ã <span class="material-icons">check_circle</span> å®äº <span class="material-icons">warning</span> 泚æ çµµæåããããã¹ãã®äžéšãã ãšæã£ãŠããšèŠèœãšããã¡ãªãã§ããã©ããããç«æŽŸãª èŠèŠèŠçŽ ãè²ãšåãã§ã䜿ã£ãŠããã®ã¯ããããšäŸçµŠæºãçµããšãAIã®åºåãæãããæ¬çªã§æ¶ããäºæ
ãæ¶ããŸãã èã¯ãå
ã«å®£èšããŠãããã³ããã«å¶çŽãšããŠçµã¿èŸŒãã ã§ããããäžçªå€§äºãªãã§ããã©ã style.css ã«å€æ°ã眮ããã ãã§ã¯ãAIã¯çžãããŸãã ã ããã人éã®æèŠã ãšãCSS èŠãã°äœ¿ã£ãŠããè²ãããã§ãããã£ãŠæããã§ãããã§ãAIã¯ãã£ã¡ãèšããªãéãã倿°ãããããšãªããŠãæ§ããªãã«ãå¹³æ°ã§ style 屿§ã«çã® #ff5577 ãæžããŠããã ããã®å€æ°ã®äžããéžãã§ããã£ãŠããããã宣èšããŠãããªããšäœ¿ã£ãŠãããªã ãã§ããããããã人éçžæãšã®äžçªã®éãã§ãã ã ããé çªãèã§ã å
ã«æ ã宣èšããŠããããããã³ããïŒã³ã³ããã¹ãïŒã®äžã«”å¶çŽ”ãšããŠçµã¿èŸŒãã§ãã ãå
·äœçã«ã¯ããããžã§ã¯ãã® CLAUDE.md ãªãæåã®äŸé Œæãªãã«ãããæžããŠãããã§ãã # ã¹ã©ã€ãäœæã®å¶çŽïŒSlidev / CSS倿°ïŒ - è²ã¯ style.css ã® :root ã§å®çŸ©ãã CSS倿°ïŒ--accent ãªã©ïŒã ãã䜿ãããã©ã³ãåŒ·èª¿ã¯æ±ïŒ--accentïŒ1è²ãæå³ã®è²ãå
¥ããŠã3è²ãŸã§ã - ãã©ã³ããµã€ãºã¯ --font-* 倿°ã䜿ããæ¬æã¯ --font-body ã䜿ãã - äœçœã¯ --space-* 倿°ã䜿ãã - è²ã»ãµã€ãºã»äœçœã¯ãã¹ãŠå€æ°çµç±ïŒvar(--xxx)ïŒã§æå®ããã - ã¢ã€ã³ã³ã¯ Material IconsïŒ<span class="material-icons">åå</span>ïŒã䜿ãã TailwindïŒUnoCSSïŒãæšæºã§äœ¿ãã¹ã¿ã€ã«ãªããåãå¶çŽããŠãŒãã£ãªãã£åãã«èšãæããã ããäžèº«ã¯äžç·ã§ãã倿°ã§çžããããã¯ã©ã¹ã§çžããã«å€ããã ãã§ããã # ã¹ã©ã€ãäœæã®å¶çŽïŒSlidev / Tailwind æšæºïŒ - è²ã¯ style.css ã® theme ã«å®çŸ©ããè²ã¯ã©ã¹ïŒtext-accent / bg-accent ãªã©ïŒã ãã䜿ãããã©ã³ãåŒ·èª¿ã¯æ±1è²ãæå³ã®è²ãå
¥ããŠã3è²ãŸã§ã - ãã©ã³ããµã€ãºã¯ text-xl 以äžã®ã¯ã©ã¹ã䜿ãïŒtext-lg ã¯18pxã§19pxäžéå²ãïŒã - äœçœã¯æ±ºããå»ã¿ã®ã¯ã©ã¹ïŒgap-4 / p-4 ãªã©ïŒã䜿ãã - è²ã»ãµã€ãºã»äœçœã¯ãã¹ãŠãŠãŒãã£ãªãã£ã¯ã©ã¹ã§æå®ããã - ã¢ã€ã³ã³ã¯ Material IconsïŒ<span class="material-icons">åå</span>ïŒã䜿ãã ãã€ã³ãã¯ãããšããçŽããããããªããŠã å
ã«çžã ãããšã CLAUDE.md ã«äžåºŠæžããŠããã°ããã以éã®ã¹ã©ã€ãçæã¯å
šéšãã®å¶çŽã®äžã§èµ°ããã§ãããæ¯åãè²ããããŠããæå倧ããããŠãã£ãŠèšãçŽããªããŠããæåããæ ã®å
åŽã§åºãŠããã 人éãåŸè¿œãã§ç¯æ£ããããããªããŠãAIãæåããæ ã®äžã§èããããã«ãã ããããããŒã¯ã³ã”AIã«å¹ããã”ããã®äžæã§ãã ããã ãã§ãçhexãçŽæžãããŠããšãããããããªããŸãã <!-- çžã£ãããšãè²ããµã€ãºã倿°çµç±ã§ãå¿
ãæã --> <h2 style="font-size: var(--font-heading); color: var(--navy-900)">éèŠãªãã€ã³ã</h2> <p>ããã <span style="color: var(--accent)">è¶
éèŠ</span> ã§ã</p> AIãéžã¹ãè²ã決ãæã¡ãããŠãããã æ¯åã»èª°ããã£ãŠãåãè²ã«ä¹ã ãè²ããã©ã€ããªããã§ããã ãã©ãã«æžããããæ ã§æ±ºãã ãããŸã§å
šéš style.css ã«æžããŠããŸãããã©ããäœã§ãããã§ã style.css ã§ããã®ïŒããšãããšéã£ãŠã æžãå Žæã«ãç·åŒã ããããŸãã倿ã¯1ã€ã ãã§ã ãã©ã®ã¹ã©ã€ãã§ãå¿
ãå¹ããŠã»ãããïŒã ã§ãã å
šã¹ã©ã€ãå
±éã§å¹ããããåå° ïŒããŒã¯ã³ãããŒã¹ã®ãã©ã³ãã»æåè²ã»èæ¯ïŒâ style.css ã«çœ®ããã©ã®åã䜿ã£ãŠãå¿
ãå¹ããŠã»ãããã€ã ãã®åã»ãã®éšåã®äžã ãã§å¹ãã°ããèŠãç® â style.css ã«æžããããã® ã¬ã€ã¢ãŠãïŒã³ã³ããŒãã³ãã®äž ã«éã蟌ãããç¹å®ã®åã§ãã䜿ããªãæ§é ããããéšåã®äžã ãã®è£
食ã¯ãã£ã¡ã ã§ã style.css ã«å
±éã§æžããšãã®äœæ³ãã²ãšã€ãSlidev ã¯çŽ ã®ã»ã¬ã¯ã¿ïŒ h1 { ⊠} ïŒã§æžããš ã¹ã©ã€ãã ããããªãçºè¡šè
ã¢ãŒãã®UIã«ãŸã§å¹ãã¡ãã ãã§ããããªã®ã§ å
¬åŒ ã¯ã ã¹ã©ã€ãã®äžèº«ã«ä»ã .slidev-layout ã¯ã©ã¹ã®é
äžã«æžã ããšãæšå¥šããŠãŸãã .slidev-layout ã¯ãSlidev ã® çµã¿èŸŒã¿ã¬ã€ã¢ãŠããèªåã®ãã³ãã¬ãŒãã«æžããŠã ã¯ã©ã¹ã§ãïŒãã¬ãŒã ã¯ãŒã¯ãèªåã§å
šã¹ã©ã€ãã«ä»ããŠããããããªãïŒãã¯ã©ã¹èªäœã¯ Slidev ç±æ¥ã§ããããã«ä¹ããèŠãç®ã¯èªåã§æžããã£ãŠé¢ä¿ã§ãããdefault ã two-cols ã¿ãããªçµã¿èŸŒã¿ã䜿ã£ãŠãéãã¯ä»ããŠãã®ã§ãå
±éã¹ã¿ã€ã«ãã¡ãããšå¹ããŸãã ãã ããããå°å³ã«å€§äºã§ ââ èªåã§ã¬ã€ã¢ãŠããèªäœãããšãã¯ã .slidev-layout ãèªåã§ä»ããªããšã style.css ã«æžããå
±éã¹ã¿ã€ã«ããã®ã¬ã€ã¢ãŠãã«ã ãå¹ããªã ãã§ãããçµã¿èŸŒã¿ãä»ããŠãããŠãåããèªäœãããªãèªåã§ä»ããå¿
èŠããããã£ãŠããšã§ããïŒ å
¬åŒã®ã¬ã€ã¢ãŠãäœæã¬ã€ã ã®äŸããwrapper ã® <div> ã« class="slidev-layout" ãæžããŠãŸãïŒãéã«ããã®1æã ãããªãããã®ã¹ã©ã€ãã®äžã« <style> ãæžãã° åžžã« scoped ïŒãã®ã¹ã©ã€ãéå®ïŒã§ãä»ã®ã¹ã©ã€ãã«ã¯æŒããŸããã /* style.cssïŒå
šã¹ã©ã€ãå
±éã®èŠãç®ã¯ .slidev-layout ã®é
äžã«æžã */ .slidev-layout h1 { font-size: var(--font-heading); } /* â h1 { ⊠} ã ãã ãšçºè¡šè
ã¢ãŒãã®UIã«ãæŒãã */ <!-- ãã®ã¹ã©ã€ãã ãããªã slides.md ã®ãã®ããŒãžã« <style>ãåžžã« scoped ã§ä»ã«æŒããªã --> <style> h1 { color: red; } </style> ãããæ··ãããšå°å³ã«äºæ
ããŸããããã®1æã ããã®ã€ããã® CSS ã .slidev-layout é
äžã <style> ã«éãã style.css ã«ãã¿æžããããšã å¥ã®ã¹ã©ã€ããçºè¡šè
ã¢ãŒããŸã§å·»ã蟌ã㧠厩ããã å
±éã«ããããã®ã ããçã£ãŠæžãã ããã ãã§ããªãã§ãã®ã¹ã©ã€ããŸã§å€ãã£ãïŒããæ¶ããŸãã ãããçºèŠããããã¿ãŒã³ãšããŠã¯ãcomponentãlayoutã§å®çŸ©ããå
容ãå¹ããªã㊠!important ã§åé¿ãããšãã§ãããå人çæèŠãšããŠã¯ !important ã¯äœ¿ããªãã®ãããããªãããžã§ã¯ãã ãšæããŸãã å¶çŽãéããçã ããã§äžçªäŒãããã®ã¯ã èªç±ã«ãããªãæ¹ããçµæçã«éã ã£ãŠããšã§ãã èªç±ã«æžããããšãåºåã¯æ¯åããã£ãœããã©æ¯åã¡ãã£ãšéããã ãããè²ãæããŠãããµã€ãºæããŠãã£ãŠããææ»ããå»¶ã
ãšçºçãããã§ããããŒã¯ã³ã§æ ãäœã£ãŠãããšãAIã®åºå㯠æåããæã£ãŠãç¶æ
ã§åºãŠãããã¬ãã¥ãŒã§èŠãã¹ãã¯ãå
容ãåã£ãŠãããã ãã«ãªã£ãŠããè²ããã©ãã©åé¡ããè°é¡ããæ¶ããã è²ãªããŠç¹ã«ããã§ãããŒã¯ã³åããåã¯ãAI ã HEX ã®åŸ®åŠãªè²éãã60çš®é¡ããã ã°ããŸããŠããããšããã£ããã§ãããã§ãåŸããããŒãè²ãå€ããããšãããããã®è²ãå
šãã¡ã€ã«ã«æ£ãã°ã£ãŠãŠã å
šéšã®ãã¡ã€ã«ãèªã¿ã«è¡ããªããšçŽããªã ãæ¡ã®å®ãçŽãæŒããåºãŸããããããããŒã¯ã³ã§çžã£ãŠããã°ãå€ããã®ã¯å€æ°1ãæïŒ æ€çŽ¢ããŠçœ®æããã ã ãåŸããã®äœãæ¿ãããã°ããšã©ã¯ã«ãªããã§ãããã æ³šæïŒããã¯”æ ”ã§ãã£ãД宿”ãããªã ããã¯æ£çŽã«æžããŠãããŸãã ããŒã¯ã³ãå®çŸ©ããã ãã§ã¯ãå®ç§ãªèŠãç®ã«ã¯ãªããŸããã ããŒã¯ã³ã¯ã䜿ã£ãŠããçµµã®å
·ããæ±ºããã ãããã®çµµã®å
·ãã©ãé
眮ãããïŒã¬ã€ã¢ãŠãã»ã³ã³ããŒãã³ãïŒã¯å¥ã®è©±ã§ãããã¯æ¬¡åã®ç¬¬4éšïŒãã¶ã€ã³ã·ã¹ãã ç·šïŒã§ãããŸãã ãããŠããã®ããŒã¯ã³ãåå°ã«åã»éšåã»ã«ãŒã«ãŸã§å
šéšçµã¿äžããâåããããäžåŒâãã®ãã®ã¯ã å®ç©ç·šïŒå
šéšå
¥ãïŒ ã§ CLAUDE.md å
šæã€ãã§å
¬éããŠããŸãã ã§ãããã²ãšã€å€§äºãªæ³šæã ãstyle.css ã«æžããïŒãã衚瀺ãããŠãããšã¯éããªã ãã§ãããCSS ã¯ã«ã¹ã±ãŒãã§äžæžããèµ·ãããïŒããããèªäœ CSS ã®ãã¹ã§ç°¡åã«å¹ããªããªãïŒããã£ãã®çµµæåã¿ããã« ãšã¯ã¹ããŒãã§åããŠåŽ©ãã ããšããããããŒã¯ã³ãå®çŸ©ããŠå®å¿ããŠãŠããç»é¢ã§ã¯å¥ç©ããšããã®ã¯æ®éã«èµ·ããŸãã ã ããæåŸã¯å¿
ã PNG ã«ãšã¯ã¹ããŒãããŠããã®ç»åãç®ã§èŠãŠç¢ºèªãã ãCSS ã«æžããæ°ã«ãªã£ãŠæºè¶³ãããšãæ¬çªã§ãã¢ã¬ïŒå¹ããŠãªããã£ãŠãªããã€ãªãã§ãããããããæžããããããªããŠãç»é¢ã§ã©ãåºãŠãããã§å€æãããå°å³ã ãã©ããããé£ã°ããšæ®éã«äºæ
ããŸãã ãã®ãç»åãèŠãŠçŽãããä»çµã¿ã«ãã話ã¯ãããã ãã§äžæ¬ã«ãªãããŒããããŒã¯ã³ã§æ ãäœã â ã·ã¹ãã ã«è²ãŠã â ç»åã§å質ãåããã®æåã®äžæ©ãä»åã§ããã ãŸãšã AIã¯æŸã£ãŠãããŠã8岿¹ã¯äœãããã§ã æ¯åããŒã³ãæããªãïŒæ¬æãå°ãããªãïŒçµµæåãæ¬çªã§æ¶ãã è²ã»ãµã€ãºã»äœçœã CSS倿°ïŒãã¶ã€ã³ããŒã¯ã³ïŒãšã㊠style.css ã«å
ã«å®çŸ© ããã䜿ããè²ã¯ããã ãããšAIãçžã ã¢ã€ã³ã³ãæ ã§çžã ãçµµæåã¯ãšã¯ã¹ããŒãã§æ¶ããïŒè±è
åããïŒã®ã§ãMaterial Icons ã«äžæ¬åãã å¶çŽãææ»ããæ¶ããŠéãã«ãªã ãèªç±åºŠãããéžæè¢ãçµãã»ããå®å®ãã ãã ãããŒã¯ã³ã¯”æ ”ã§ãã£ãД宿”ãããªããæåŸã¯ æžãåºããç»åãèŠãŠç¢ºèª ãã æ¬¡åïŒç¬¬4éšïŒã¯ããã®ããŒã¯ã³ãèµ·ç¹ã«ãã¬ã€ã¢ãŠããã³ã³ããŒãã³ããŸã§æããŠã èªåã®ãã¶ã€ã³ã·ã¹ãã ãã«è²ãŠã話ã§ããæããè³ç£ããæ¬¡ã®ã¹ã©ã€ãã®éãã«ãªããã€ããæ¥œãã¿ã«ã ã»ãªãŸãã ã·ãªãŒãºïŒAIÃã¹ã©ã€ãã¥ãã AIã«äžžæããããå¶çŽãšã«ãŒã«ã§ãæå³ã©ããã®95ç¹ããæ¯åããããŠäœãã·ãªãŒãºã§ãã ã»ããã¢ããããšã¯ã¹ããŒã â æ§æãŒãã§äœã£ãŠé
ã Marp ãš Slidev ã®äœ¿ãåã â Git管çèµ·ç¹ã§ã©ã£ã¡ã䜿ã å®ç©ç·šïŒå
šéšå
¥ãïŒ ïŒç§»æ€ã§ãããã¶ã€ã³ã·ã¹ãã ãäžžããšå
¬é â ãŸãšã ãã¶ã€ã³ããŒã¯ã³ç·š â ãªããæ ãã§çžãã®ãïŒå®ç©ç·šã®æ·±æãïŒâããŸãã ãã¶ã€ã³ã·ã¹ãã ç·š â ãªãåã貯ããŠè²ãŠãã®ãïŒå®ç©ç·šã®æ·±æãïŒ ã芧ããã ãããããšãããããŸãïŒ ãã®æçš¿ã¯ã圹ã«ç«ã¡ãŸãããïŒ åœ¹ã«ç«ã£ã 圹ã«ç«ããªãã£ã 0人ããã®æçš¿ã¯åœ¹ã«ç«ã£ããšèšã£ãŠããŸãã The post Claude CodeÃSlidevïŒAIã¹ã©ã€ããâæ¯åæããªãâã解決ãããã¶ã€ã³ããŒã¯ã³ first appeared on SIOS Tech Lab .
Marp ãš Slidevãã©ã䜿ãåããïŒ ã©ãïŒ ããšããšã¹ã©ã€ãã¯å
šéš Marp ã§äœã£ãŠãŠããããã䜿ãåããæ«ã« Slidev ãžç§»ã£ã éŸã¡ããã§ãã Marp ãš Slidev ã¯ãã©ã£ã¡ã Markdown ã§ã¹ã©ã€ããæžãã éçºè
åãã®ããŒã«ã§ããã§ãäž¡æ¹ãè§Šã£ãããšããã人ãªããäžåºŠã¯ããæããŸãããã éŸ ãçµå±ã ã©ã£ã¡äœ¿ãã°ããã®ïŒ ã åã¯äž¡æ¹ã Claude Code ã§äœ¿ãåããŠããŸãããMarp 㯠80æéâ11æéã«ççž®ãã話 ãæžããããã䜿ã蟌ãã ãããã®äžã§ä»ã¯ Slidev ã«ç§»ã£ãŠãŸããã§ãè¡ãçããçµè«ã¯ã·ã³ãã«ã§ãã æè»œããšå
±æãªã Marpãäœã蟌ãã§è²ãŠãããªã Slidev ãã©ã£ã¡ãäžã£ãŠè©±ãããªããçšéã§äœ¿ãåããŠããŸãã ãã®èšäºã§ã¯ããã®ã ã§ãããªãã¯ã©ã£ã¡ïŒ ãã«ãäž¡æ¹ãè¡ãæ¥ããç®ç·ã§æŽçãããŸããïŒãããã Slidev ã£ãŠäœïŒã£ãŠãšãããã»ããã¢ãã㯠第1éš ã«æžããŠãã®ã§ãæ°ã«ãªã人ã¯ãã¡ããã©ããã ãã®èšäºã¯èªãã§ãªããŠã倧äžå€« ã§ããïŒ å€§åæïŒGit ã§ç®¡çããããã ããåè£ã¯2ã€ã«çµããã æ¯èŒã«å
¥ãåã«ãã²ãšã€ã ãåã®ãã ããã眮ãããŠãã ããã ã¹ã©ã€ãããã³ãŒããšåãããã«ããã¹ãã§æžã㊠Git ã§ç®¡çããããã§ãããã å·®åãèŠããŠãå±¥æŽãæ®ã£ãŠããããçŽããŠããå¹ãããã®äœéšãäžåºŠå³ãããšãããæ»ããªããã§ããã ã§ããã®åæã眮ããç¬éãåè£ãã¹ãããšçµãããŸãããŸãå俵ããéããã®ã PowerPoint ãš Google Slidesã PowerPointïŒ.pptxïŒ ïŒäžèº«ã¯ ZIP ã« XML ãè©°ãã ãã€ã㪠ãªãã§ãããã git diff ããŠãè¿ã£ãŠããã®ã¯ Binary files differ ã®äžè¡ã ããã©ããçŽãããèªããªããããã©ã³ããåããŠããŒãžããªããŠã®ãäºå®äžã§ããŸãããããã¹ãã ãæãåºãè£æã¯ãããã©ãå³åœ¢ãã¬ã€ã¢ãŠãã®å€æŽã¯è¿œããªãã®ã§ãå®çšã«ã¯ã¡ãã£ãšã Google Slides ïŒãããã ããŒã«ã«ã«ãã¡ã€ã«ãååšããªã ãã§ãããã¯ã©ãŠãã®äžã«ããã®ã§ã git add ãã察象ããªããç¬èªã®çå±¥æŽã¯ãããã©ããã©ã³ãããã«ãªã¯ããªãããã㯠Git ãšã¯å¥ç©ã§ãã ãªã®ã§ãGit ã§ç®¡çããããšæ±ºããæç¹ã§ãæ®ãã®ã¯ ããã¹ãã§æžã2åŒ·ïŒ Marp ãš Slidev ã ãããããããæ¬é¡ã§ãã ãã¡ããããä»éšçœ²ã®äººãäžèº«ãçŽæ¥ããããã¿ãããªçšéãªããçŽ çŽã« PowerPoint ãæ£è§£ã§ãããã³ãã¬ãŒããšããã£ã±ã匷ãç¹ããããŸããããïŒ Marp ãš Slidevãããããäœãã§ããïŒ ãã£ãã䞊ã¹ããšãããªæãã§ãã 軞 Marp Slidev æžãå³ Markdown ïŒ ã³ã¡ã³ãèšæ³ Markdown ïŒ ç¬èªæ§æïŒlayout / VueïŒ ã»ããã¢ãã â npx äžçºã»VSCode æ¡åŒµã ãã§ãOK â³ Node + Vite + Vue ã®ãããžã§ã¯ãå å
±æã®ãããã â VSCode æ¡åŒµã§èª°ã§ãåãç»é¢ â ç°å¢ãæããå¿
èŠãã é
çœ®ãæžãã³ã¹ã ç CSS ãææžã ãŠãŒãã£ãªãã£ãæ§é ã®é£ã«çŽæžãïŒUnoCSS æšæºå梱ã»Tailwind äºæïŒ åã«ããŠäœ¿ãåã â³ éšåæ©æ§ãªãã»æ¯åææžã â ã³ã³ããŒãã³ãã«éããŠåŒã¶ éç£ã»è»œã â 1ãã¡ã€ã«ã»CLIã§äžæ¬å€æã»CIåã ãããžã§ã¯ãåã»äœã蟌ã¿åã Marp ã®åŒ·ãã¯ãªããšãã£ãŠãæè»œãã§ãã npx @marp-team/marp-cli ã§å³åãããVSCode æ¡åŒµãå
¥ããã°èª°ã§ãåãç»é¢ã§ãã¬ãã¥ãŒã§ããã .md 1æãšããŒã CSS 1æã§å®çµããã®ã§ãæãç«ã£ãŠ5åã§æžãå§ãããããã§ãããã äžæ¹ã® Slidev 㯠Node + Vite + Vue ã®ãããžã§ã¯ããæ±ããã¶ããç«ã¡äžãã¯ã¡ãã£ãšéããã§ãããã®éããšåŒãæãã«ããé
çœ®ãæžãã³ã¹ãããšãåã«ããŠäœ¿ãåãããã®äºã€ã®ç¹ã§åªå¢ã§ãã èŠãç®ã¯äž¡æ¹ã§äœãããå·®ã¯ãæžãæ¹ãã«åºã ãã³ãŒãå·Šã»è§£èª¬å³ãã¿ãããª2ã«ã©ã ã®1æãããã èŠãç®ã ããªãã©ã£ã¡ã§ãäœããŸã ã詊ãã«ãŸã£ããåãå³è§£ã Slidev ã§çµãã§ã¿ãŸããã æ£çŽã«èšã£ãŠãããšã ãã®èŠãç®ã¯ Marp ã§ãäœããŸã ãæšæºã®èšæ³ã»èŠåºãã»2ã«ã©ã çšåºŠãŸã§ãªã Marp ã§ååã ããæžãå§ãã®æè»œãã¯ããã Marp ã«åãããããããïŒãããã«åãå³ãäºã€äžŠã¹ãã®ããã©ãã®ã§ãäžæã ã貌ã£ãŠãããŸãïŒ å·®ãåºãã®ã¯ã ãã®1æããã©ãæžããã ã®ã»ãã§ããäžèº«ã® div æ§é ã¯ã ãããåãã§ãéãã®ã¯ã ã¹ã¿ã€ã«ãšå
±éããŒãããã©ãå
±æã»åå©çšããã ãã§ããäž¡æ¹ã®æžãæ¹ãé ã«èŠãŠãããŸãã Marp ã®æžãæ¹ïŒããŒã CSSïŒã¯ã©ã¹æå®ã§å¯ãã å
ã«èšã£ãŠãããšãMarp ãæ¯å <style> ãæžãæ£ãããããããªããã§ãããåãæåã¯ãMarp ã£ãŠãã¿æžãã§ããïŒããšæã£ãŠããã§ããã©ãCSS ã¯1æã®ããŒã .css ã«ãŸãšããŠãããŠãã¹ã©ã€ãåŽã¯ theme: ã§åŒã¶ã ãã1æããšã«èŠãç®ãå€ããããšã㯠<!-- _class: xxx --> ãçµã¿èŸŒã¿ã® lead ïŒ invert ã¯ã©ã¹ããããããŒåž¯ãåºã header: ãã£ã¬ã¯ãã£ãããããããã¯ã¡ãããšããŠããã§ãããã --- marp: true theme: my-theme # â å
±æããŒãCSSãé©çš header: ãåã1æãããã©ãæžãã --- <!-- _class: cmp --> <!-- â ãã®1æã«ã¬ã€ã¢ãŠãçšã¯ã©ã¹ãåœãŠã --> <div class="cmp-row marp"> ⊠</div> <div class="cmp-row slidev"> ⊠</div> ãã® my-theme ã®äžèº«èªäœã¯ããã£ã±ãé·ãã® CSS ã§ãïŒãã®ãµã³ãã«ã ãš90è¡ã»ã©ïŒã /* my-theme.cssïŒæç²ïŒïŒsection ãã³ãŒããããã¯ã®èŠãç®ãå®çŸ© */ section { display:flex; flex-direction:column; } .cmp-row pre { background:var(--navy-900) !important; border-radius:10px; } /* âŠé
è²ããŒã¯ã³ãããããŒåž¯ã®å®çŸ©ãç¶ããŠãå
šäœã§90è¡ã»ã© */ ãå
±æ CSSïŒååã§ã¬ã€ã¢ãŠããåŒã¶ããšããçºæ³ã¯ãMarp ã«ããããŸããè£ã«é·ãã®ããŒã CSS ãæ§ããã®ããäžåºŠæžãã°å
±æã§ããã®ã Slidev ãšåããããã¯äºè§ã§ãã ãã ãMarp ã®ããŒããã¯ã©ã¹ã§ã§ããã®ã¯ãåºæ¬ã ãã§ã«ããèŠçŽ ã«èŠãç®ãåœãŠã ããšãããŸã§ãªãã§ããããã£ãã®ã³ãŒãã§èšããšã <!-- _class: cmp --> ã¯ã¹ã©ã€ãã« cmp ã£ãŠååãä»ããã ãã äžèº«ã®ç®± ââ 2ã«ã©ã ãªãå·Šå³ã®æ ââ ã¯1åãçããŠããªã ãã§ããã ãã <div class="cmp-row marp">âŠ</div> ã¿ãããªç®±ãèªåã§æžããŠãããã« CSS ãåœããã®ãåŸ
ã€ããšããé çªã«ãªããCSS ã¯ã .cmp-row ãããã°ãã䞊ã¹ãŠããå¡ãããšã¯èšããŠãã .cmp-row ãšããç®±ãã®ãã®ã¯äœã£ãŠãããªã ãã§ãããã èŠããã«ãMarp ãé¢åãèŠãŠãããã®ã¯ãèŠãç®ïŒã¹ã¿ã€ã«ïŒãã ãã§ãã ã©ãã«äœã®ç®±ã眮ããïŒé
çœ®ã»æ§é ïŒ ãã¯æ¯åãã£ã¡ãæã§çµãæ
åœã header: ã lead ïŒ invert ãããã®åãæ¿ããªã CSS åŽã§å¯ãããããã©ã蟌ã¿å
¥ã£ãé
眮ã«ãªããšçµå± <div> ããã®éœåºŠãããããããšã«ãªãããã£ãã®çžŠç©ã¿ã®æ¯èŒå³ããåã¯æ¯å div ãæã§çµãã§ãŸãããããŒãã§å¯ããããã®ã¯éªšæ ŒãŸã§ãå°å³ã«ãããããã©ããã§ãããïŒãŸãå€§äœ div å°çã«ãªã£ãŠå€§å€ã§ãïŒ Slidev ã®æžãæ¹ïŒstyle.cssïŒã¬ã€ã¢ãŠã”éšå” Slidev ãããã¡ãã CSS ã¯æžããŸãããå
šäœã«çµ±äžããŠå¹ããããã¹ã¿ã€ã«ãã€ãŸãé
è²ããŒã¯ã³ãæžäœãã³ãŒããããã¯ã®èŠãç®ã¿ãããªãdeck å
šäœã®å°ãã¯ã style.css ã«çŽ ã® CSS ã§æžãã°ãããäžåºŠæžãã°å
šã¹ã©ã€ããç¶æ¿ããŸãã /* style.cssïŒæç²ïŒïŒdeck å
šäœã«å¹ãããçŽ ã®CSS */ :root { --navy-900:#0B1F3A; --accent:#C2410C; /* âŠé
è²ããŒã¯ã³ */ } .slidev-layout { font-family:'Noto Sans JP',sans-serif; background:var(--bg-white); } .cmp-row pre { background:var(--navy-900) !important; border-radius:10px; } /* âŠå
šäœã§162è¡ãäžåºŠæžãã°å
šã¹ã©ã€ããç¶æ¿ãã */ ãã㯠Marp ãšäžç·ã§ãããå
šäœã«å¹ããã CSS ã¯1æã«éçŽãã£ãŠçºæ³ã¯ãã©ã£ã¡ãå€ãããªããå·®ãã€ãã®ã¯ãã®å
ãªãã§ããã éãã®ã¯ã layout: ã§åŒã¶ãã®ã CSS ã¯ã©ã¹ãããªã Vue ã³ã³ããŒãã³ãïŒïŒæ§é ãæã£ãéšåïŒ ã ãšããããšããã£ãã®ããããŒä»ãã¹ã©ã€ãã¯ãããæžãã ãã§ãã --- layout: fixed-header heading: ãåã1æãããã©ãæžãã # â ãã®æååãéšåãããããŒã«æã --- <div class="flex flex-col gap-8"> <div class="rounded-xl bg-[var(--navy-900)] p-5 shadow-lg"> ⊠Marp ã®è¡ ⊠</div> <div class="rounded-xl bg-[var(--navy-900)] p-5 shadow-lg border-l-4 border-[var(--accent)]"> ⊠Slidev ã®è¡ïŒæ±ã¢ã¯ã»ã³ãïŒ âŠ </div> </div> ãã® fixed-header ã®å®äœã¯ Vue ã³ã³ããŒãã³ãã§ã heading ãåãåã£ãŠ <header> ã® DOM ãèªåã§çµã¿ç«ãŠãŠãæ¬æã¯ <slot /> ã«æµã蟌ã¿ãŸãã <!-- layouts/fixed-header.vueïŒæç²ïŒïŒæ§é ãéšååŽãæã€ --> <template> <header class="slide-fixed-header"> <h2 v-if="heading">{{ heading }}</h2> <!-- â ããããŒã® DOM ãçæ --> </header> <main class="slide-body"><slot /></main> <!-- â æ¬æã¯ããã«å
¥ã --> </template> ã€ãŸã Slidev ã®ã¬ã€ã¢ãŠãã¯ãã¹ã¿ã€ã«ãåœãŠããã ããããªãã æ§é ããšéšåããäŸçµŠããã ãã§ããããããæ¬æåŽã¯ããã£ãã® flex flex-col gap-8 ã¿ããã«ãæ§é ã®ããé£ã«ãã¶ã€ã³ããã®ãŸãŸæžãã ââ Tailwind äºæã®ãŠãŒãã£ãªãã£ïŒ UnoCSS ïŒãæšæºã§å¹ããã§ããæ£çŽãããã³ã倧奜ããã³ãšããŠã¯ããã ãã§å€§è奮ã§ãïŒç¬ïŒã å¥ãã¡ã€ã«ã® CSS ã«é£ãã§ .cmp-row ãæ¢ããªããŠãããã two-cols ã® ::right:: ã¹ãããã蟌ã¿ã§ãVue ãæžãæèŠã®ãŸãŸçµããããããã ãã§ã Marp ããä¹ãæãã䟡å€ãã£ããªãã£ãŠæã£ããã§ãããã ã§ããããŸã§ã¯å眮ããªãã§ããããã£ãšå¹ããŠããã®ã次ã®è©±ãã éšåãšããŠå®çŸ©ããŠãäœåºŠãåŒã¹ãã ãã§ãã æ±ºå®çãªã®ã¯è€éãªå³ããéšåã«ããŠäœ¿ãåããã æžãæ¹ã®å·®ããããã£ãšå¹ããŠããã®ã åå©çš ã§ããå®éã®ã»ãããŒã§äœ¿ã£ã RAG ã®æŠå¿µå³ãããã ãããVue ã³ã³ããŒãã³ããªãã§ãããäžèº«ã¯591è¡ãã£ãŠ <style scoped> ãåå±
ããŠããã§ããã¹ã©ã€ããã㯠<RagConcept /> ã® 1ã¿ã°ã§åŒã¹ã ãäžåºŠäœãã°å¥ã®ã¹ã©ã€ãã§ã䜿ãåãããã props ã§äžèº«ãå€ãããããå®éããã3æ¬ã®ã»ãããŒã§äœ¿ãåããŠãŸãã Marp ã«ã¯éšåãå®çŸ©ããŠååã§åŒã¶ä»çµã¿ããªãã®ã§ãããããå³ã¯åã«ã§ããæ¯åææžãã«ãªããŸãïŒåçŽãªã³ãã or ç»åã§äœ¿ããŸããã§ãïŒãåçºã§ HTML ã SVG ãçŽæžãããã°åã£ãå³ãäœããªããããããªããã©ãå·®ãåºãã®ã¯ã åãšããŠå®çŸ©ããŠåå©çšã§ããã ãã®ãšããã§ãããMarp ã§ããããšãããšãé¢é£ãã CSS ãåŒã£åŒµã£ãŠã㊠div ãšèŠæ¯ã¹ãâŠã£ãŠæéãããããã§ããããSlidev ã§ ã³ãã£ãŠåç
§ã貌ãã ã ã®ãæè»œããç¥ã£ã¡ãããšãããæ»ããªãã§ãã ã§ããã®ãéããéšåã«ã§ãããã®ãããã®ãŸãŸ AIãšçžæ§ããã çç±ãªãã§ãããç CSS ã¯ã°ããŒãã«ã«å¹ãããã1æçŽãã ãã§ããä»ã®ã¹ã©ã€ãã«å¯äœçšã¯åºãªããããå
šéšç¢ºèªããªããšãããªããMarp ã§ã鬌㮠!important ã§å¯Ÿå¿ããã£ãŠã®ãã§ããŸããã圱é¿ã®ãã CSS ããã¹ãŠãŸã£ããã«ããã£ãŠåœ¢ã«ãªã£ãŠè«ŠããŸãããSlidev ã§ã¯ã scoped CSS ãšéšåã¯åœ±é¿ç¯å²ããã®äžã«éããŠããããAIïŒClaudeïŒã¯ãã®éšåã ãèªãã°å®å
šã«çŽããŸããæåã®1æãæžãããã ããªã Marp ãåŸæïŒèšæ³ãçŽ æŽã§å€ãã«ããïŒãå·®ãåºãã®ã¯ã çŽãç¶ããã»è²ãŠã ãæ®µéã§ã圱é¿ç¯å²ãéããŠãã¶ã Slidev ã¯äœåºŠæãå
¥ããããŠãäºæ
ãã«ãããã§ãããããã®ãè²ãŠãã話ã¯ã次åããå
·äœçã«å
¥ã£ãŠãããŸãã 䜿ãåã ã§ããã©ã£ã¡ãäžãããããªããŠãã©ã䜿ãåãããããªãã§ãããåã®æ¯ãåãã¯ãããªæãã§ãã Marp ãéžã¶å Žé¢ ïŒ ãšã«ããæè»œã«ããµããšææ°ãåºããããšããVSCode æ¡åŒµã§èª°ã§ãåãç»é¢ãèŠããããããå
±æããããããåããã«ã³ã³ãã³ãåè² ã倧éã«éç£ãCI ã§åãããã®ãžã㯠Marp ã匷ãã§ããåã£ããã¶ã€ã³ã¯ç¡çããšå²ãåãããªããããæé«ã Slidev ãéžã¶å Žé¢ ïŒ å€éšåãã®ãäœã蟌ãã è³æ ãäœããããšããã³ãŒããå³ã綺éºã«èŠããããã³ã³ããŒãã³ãã§éšååã㊠äžåºŠäœã£ãè³ç£ã䜿ãåããŠè²ãŠãã ãšããVue ãåå°ã ããããã§ããèžåœã§ãããåã Marp ããç§»ã£ãã®ãããŸãã«ãå€éšåãã Marp ã§äœã蟌ãã®ãèŠãããªã£ããã®ãçç±ã§ããã ã©ã£ã¡ãæ£è§£ã£ãŠãããããªããŠã ä»åã®çšéã«åãã»ããéžã¶ ã ããäž¡æ¹ããã¹ãã§æžããã®ã§ãä¹ãæãã®ã³ã¹ããå®ã¯äœããã§ããã ãããŠãã®ã·ãªãŒãºã§åã Slidev ã䞻圹ã«ããŠãã®ã¯ããã®ã éšååããŠè²ãŠã ããšããã®ããçŽè¿ã®æŽ»åãšåèŽããŠããããã§ãã ãŸãšããšã次å ã¹ã©ã€ãã Git ã§ç®¡çããã ãšæ±ºãããšãPowerPoint / Google Slides ã¯å€ãã æ®ã£ã Marp ãš Slidev ã¯åªå£ãããªã㊠ã§ããããšãéã æè»œãã»å
±æãªã MarpãéšååããŠè²ãŠããªã Slidev ãåã¯ããæ¯ãåããŠãŸã 次åïŒç¬¬3éšïŒã¯ããã® Slidev ããè²ãŠããç¬¬äžæ©ã ãã¶ã€ã³ããŒã¯ã³ç·š ã§ããããã©ã«ãã®ãŸãŸAIã«ã¹ã©ã€ããæžããããšè²ããµã€ãºãæŽèµ°ãããã§ããã©ãããã style.css ã«ãæ ããšããŠå
ã«å®çŸ©ããŠAIãçžããã£ãŠããå³å¹æ§ã®ããåŠæ¹ç®ãæžããŸãããæ¥œãã¿ã«ã ã»ãªãŸãã ã·ãªãŒãºïŒAIÃã¹ã©ã€ãã¥ãã AIã«äžžæããããå¶çŽãšã«ãŒã«ã§ãæå³ã©ããã®95ç¹ããæ¯åããããŠäœãã·ãªãŒãºã§ãã ã»ããã¢ããããšã¯ã¹ããŒã â æ§æãŒãã§äœã£ãŠé
ã Marp ãš Slidev ã®äœ¿ãåã â Git管çèµ·ç¹ã§ã©ã£ã¡ã䜿ãïŒä»ãã®èšäºïŒ å®ç©ç·šïŒå
šéšå
¥ãïŒ ïŒç§»æ€ã§ãããã¶ã€ã³ã·ã¹ãã ãäžžããšå
¬é â ãŸãšã ãã¶ã€ã³ããŒã¯ã³ç·š â ãªããæ ãã§çžãã®ãïŒå®ç©ç·šã®æ·±æãïŒ ãã¶ã€ã³ã·ã¹ãã ç·š â ãªãåã貯ããŠè²ãŠãã®ãïŒå®ç©ç·šã®æ·±æãïŒ ã芧ããã ãããããšãããããŸãïŒ ãã®æçš¿ã¯ã圹ã«ç«ã¡ãŸãããïŒ åœ¹ã«ç«ã£ã 圹ã«ç«ããªãã£ã 0人ããã®æçš¿ã¯åœ¹ã«ç«ã£ããšèšã£ãŠããŸãã The post Marp ãš Slidev ã®äœ¿ãåãïŒGit ã§ç®¡çãããåããã䜿ãåã first appeared on SIOS Tech Lab .
AIã§çéãããã Git 管çãã¹ã©ã€ãäœããã³ãŒãã«ãªã£ã ã©ãïŒ Slidev ãš Claude Code ãçµã¿åãããŠã¹ã©ã€ãäœãã«ããã£ãŠãéŸã¡ããã§ãã Slidev 㯠Markdown ã§ã¹ã©ã€ããæžãããéçºè
åãã®ãã¬ãŒã³ããŒã« ã§ããããã¹ãããã¯ã¹ãããŠã¹ã§äžŠã¹ã代ããã«ãèŠåºããç®æ¡æžãã Markdown ã§æžããšãããããã®ãŸãŸã¹ã©ã€ãã«ãªããã³ãŒããããã¯ããã®ãŸãŸè²ŒããŠã·ã³ã¿ãã¯ã¹ãã€ã©ã€ããå¹ãã®ã§ãLT ãç»å£è³æãäœããšã³ãžãã¢ã«äººæ°ã®ãã€ã§ããã ã§ãããã Claude Code ã«ä»»ãããšããããªã¹ã©ã€ããæ¥æ¬èªã§é Œãã ãã§åºãŠããŸãã â Claude Code ã«äœãããå®ç©ã®1æã§ãïŒå¥ã®ã»ãããŒè³æããïŒããããã è€éãªæŠå¿µå³ ã§ããããã¹ãããã¯ã¹ãããããåãããMarkdown ãšæ¥æ¬èªã®æç€ºã§çµãããã§ããã ã§ãäœãå¬ããããããæäœæ¥ã«ã¯æ»ããªããªããåãæšãããã®ã¯ãã®3ã€ã§ãã Git ã§å·®å管çã§ãã ïŒ èª¿æ»ãã³ãŒããçŽ æãå
šéš Git ã«ä¹ããŠãã®ã«ãã¹ã©ã€ãã ã PowerPoint ã®ãã€ããªã§èåž³ã®å€ââãå°å³ã«é¢åã ã£ããã§ããããSlidev ã¯äžèº«ããã ã® Markdown ãªã®ã§ãçŽ æãã¹ã©ã€ããå
šéš Git ã®äžã«æããŸã AIã«é Œãã ãã§çé ïŒ Slidev ç¬èªã®èšæ³ã¯ Claude Code ãè©ä»£ããã å
¬åŒããAIãšçžæ§ãè¯ãããšæèš ããŠããŠãæ§æãäžžããšæž¡ãã å
¬åŒ Skill ãŸã§é
ã£ãŠãŸãïŒå
¬åŒãåºããŠãïŒAIã«ä»»ããåæãã£ãŠã®ãé«ãã€ã³ãïŒ èŠãç®ã®èª¿æŽãèªç¶èšèªã§ ïŒ ã¹ã¿ã€ãªã³ã°ã¯ Tailwind äºæïŒ UnoCSS ïŒã§ãTailwind ã¯AIãåŸæãªèšæ³ããããããå°ã倧ãããã§éãã®ã§ã1px ãã€åããäœæ¥ããè§£æŸãããŸã å®éã»ããã¢ããããŠé Œãã ãããã£ãšããéã«ã§ãäžãã£ãŠãããæé«ããããã£ãŠãªããŸãããã¹ã©ã€ãäœãããã³ãŒããæžãã®ãšåãéçºäœéšã«ãªããã§ããã ãã®èšäºã¯ãã®ç°å¢ãäœã ã»ããã¢ãããŸãšã ã§ããããªãã§ Marp ãããªã SlidevïŒãã®æ¯èŒã¯äžæ¬ã«ãªãã®ã§æ¬¡åã«åããŸãïŒMarp 㯠å¥èšäº ã§æžããŠãŸãïŒãä»åã¯ãäœã£ãŠãã¡ãããšé
ããç¶æ
ã«ãªããŸã§ããæçã§éããŸããã ä»åã®å
容ã§ãã å
¬åŒ Skill ãå
¥ããã ãã§ãSlidev ã®æ§æãŒãã§ã¹ã©ã€ããäœãã äœã£ãã¹ã©ã€ãã PDF / PNG / PPTX ãšããŠåºåããæé ãšã¯ã¹ããŒãã§å¿
ãããã3ã€ã®çœ ïŒplaywright-chromiumã»æ¥æ¬èªãã©ã³ãã»PPTX ã¯ç»åïŒã®æœ°ãæ¹ ã»ããã¢ãã åæ Node.js ãå
¥ã£ãŠããããš ïŒãã®èšäºã®ã³ãã³ã㯠npx skills ã npm create slidev ã npx slidev export ããããã¶ Node ã®äžã§åããŸããéã«èšãã° Node ããããã°åããŸãïŒ Claude Code ã䜿ããããš 1. å
¬åŒ Slidev Skill ãå
¥ãã npx skills add slidevjs/slidev ããã ãã§ãSlidev ã® Skill ããããžã§ã¯ãã«è¿œå ãããŸãã npx skills 㯠Skill ãã¡ã€ã«ããªããžããªã«é
眮ãã CLI ã§ãClaude Code å°çšã®é ãã³ãã³ããšããããªãããã ã® npx å®è¡ã§ãïŒã ãã Node ããããã°åãïŒã眮ããã Skill 㯠Claude Code ãèªåã§æŸãã®ã§ã /skills ãå©ããŠäžèŠ§ã« Slidev ãåºãŠããã°å°å
¥å®äºã§ãã äžèº«ã¯ Slidev å
¬åŒãªããžããªïŒ slidevjs/slidev ïŒã«å梱ãããŠãã Skill ã§ãã³ã¢æ§æã»ã¢ãã¡ãŒã·ã§ã³ã»ã³ãŒããã€ã©ã€ãã»å³è¡šïŒMermaid / PlantUML / LaTeXïŒã»ã¬ã€ã¢ãŠãã»ãšã¯ã¹ããŒããŸã§ã52åã®ãªãã¡ã¬ã³ã¹ãå
¥ã£ãŠããŸãã 2. Slidev ãããžã§ã¯ããäœã npm create slidev 察話çã«ãããžã§ã¯ãåãªã©ãèãããã®ã§çãããšã slides.md ãäžå¿ãšããæå°æ§æãã§ãããããŸããã¹ã©ã€ãã®å®äœã¯ãã® slides.md ãšãããã ã® Markdown ãã¡ã€ã«ã§ãã 3. æåã®1æã Claude ã«é Œã ããšã¯ Claude Code ã«æ¥æ¬èªã§é Œãã ãã§ããåãããããã®ã¯ããããªããã¹ã©ã€ãäœã£ãŠããããªããå
ã«ã¢ãŠãã©ã€ã³ â ã¹ããŒãªãŒããŒãïŒã©ã®é ã§äœãèŠãããïŒâ è²ã®æ¹åããããã¹ãã§åºããŠãããããã§ã¹ã©ã€ãåããŠããšæž¡ãæµãã§ãããæè¿ã®ç€Ÿå
LT ã¯ããã£ããã§5åãããããŒããšåã£ãŠæ¹åãåºããŠããã®ãŸãŸãã¹ã©ã€ãã«ããŠãã§äžæ°ã«çµãã§ããããŸããã æåã®1æãªãããããªéãªé Œã¿æ¹ã§ååã§ãã slides.md ã«ãã¿ã€ãã«ã¹ã©ã€ããšãèªå·±ç޹ä»ãã仿¥è©±ãããšãã®3æãäœã£ãŠã 仿¥è©±ãããšã¯ç®æ¡æžãã v-click ã§1ã€ãã€åºãã¢ãã¡ãŒã·ã§ã³ã«ããŠã v-click ïŒã¯ãªãã¯ã§èŠçŽ ãé çªã«è¡šç€ºããã¢ãã¡ãŒã·ã§ã³ïŒã®ãã㪠Slidev åºæã®èšæ³ããSkill ãå
¥ããŠããã Claude ãã¡ãããšæžããŠãããŸãããã£ã¡ã¯èšæ³ãç¥ããªããŠããããããå°å³ã«æé«ãªãã§ãããã 4. ãã©ãŠã¶ã§ç¢ºèªãã npm run dev http://localhost:3030 ãéããšãäœã£ãã¹ã©ã€ãã衚瀺ãããŸãããããŸã§ã¯é©ãã»ã©ã¹ã ãŒãºã«é²ãã¯ãã§ãã âŠâŠã§ããããŸã§ã¯æ¬åœã«åæ°ãªããããé 調ãªãã§ããã ããããã¯ãåãè©°ãŸã£ãç¹ãå
±æããŠãããŸããã ãšã¯ã¹ããŒãã§è©°ãŸã£ããšãã ãç»é¢ã§ã¯å®ç§ããšããã¡ã€ã«ãšããŠé
ãããã¯ããŸã£ããã®å¥ç©ãªãã§ããããã¹ã©ã€ãã¯æçµçã« PDF ããã¯ãã«ããŠé
ãããšã«ãªããã§ããããã®ãšã¯ã¹ããŒãã®æ®µéã§ç¥ããªããšãçµå±äœ¿ããªãããããã§çµããçœ ã3ã€ãããŸãã åºåã®åæã»åºåçµæã®ãã©ã³ãã»åºåãã©ãŒãããã®æ§è³ªãã®3ã€ã§ããé ã«æœ°ããŠãããŸããã ã¬ã€ã¢ãŠããäžã«å¯ããèŠçŽ ãéãªãããšãã£ã CSS / ãã¶ã€ã³èµ·å ã®åŽ©ãã¯ããšã¯ã¹ããŒãæ©æ§ãã®ãã®ã®çœ ãšã¯å¥åé¡ãªã®ã§ããã®èšäºã§ã¯æ±ããŸããããã¶ã€ã³ç·šïŒç¶ç·šïŒã«åãåºããŸãã çœ â ïŒplaywright-chromium ããªããšãããããåºåã§ããªã Slidev ã®ãšã¯ã¹ããŒãã¯å
éšã§ãããã¬ã¹ãã©ãŠã¶ïŒChromiumïŒã䜿ã£ãŠã¹ã©ã€ããã¬ã³ããªã³ã°ã㊠PDF / PNG / PPTX ã«å€æããŠããŸãããªã®ã§ Chromium ãåããããã®äŸåããã±ãŒãžãå¿
èŠãªãã§ãããã npm install -D playwright-chromium ãããå
¥ããŠããªããšããšã¯ã¹ããŒãã³ãã³ãããã©ãŠã¶é¢é£ã®ãšã©ãŒã§æ¢ãŸããŸãããexport ã§ããªãããšããã£ããããŸããããçã£ãŠãã ãããæåãããããã£ããã§ãããSlidev å
¬åŒã® ãšã¯ã¹ããŒãã¬ã€ã ãèŠããåæãšããŠæèšãããŠããŸãããã ã³ã³ãã ã®å ŽåïŒåã¿ããã« python:3.12-slim ã®ãããªè»œéã€ã¡ãŒãžã§åãããŠããšã playwright-chromium ãå
¥ããŠã ããã ãããåããŸãã ãChromium æ¬äœãåããããã® system ã©ã€ãã©ãªïŒå
±æã©ã€ãã©ãªïŒã OS åŽã«ç¡ãããã§ããå㯠Dockerfile ã« apt ã§ chromium ãå
¥ããŠè§£æ±ºããŸããïŒ npx playwright install-deps ã§ãäŸåã©ã€ãã©ãªã ãå
¥ããŸãïŒã çœ â¡ïŒæ¥æ¬èªãè±è
ã«ãªã / æååã ãããã³ã³ããã CI ã¿ãããªãŸã£ãããªç°å¢ã ãšåºãããã€ã§ããdev ãµãŒããŒã§ã¯æ®éã«æ¥æ¬èªã衚瀺ãããŠãã®ã«ãPDF ã«ãããæåãâ¡ïŒè±è
ïŒã«ãªã£ãããæååãããããããã§ãããæ£çŽãå£ããïŒãã£ãŠãªããŸããïŒç¬ïŒã åå ã¯ããã©ã³ããæç€ºæå®ããŠããªãããšã§ããæå®ããªããšãã¬ã³ããªã³ã°ãããã©ãŠã¶ç°å¢ã«ãããã©ã³ãã䜿ãããŠããŸã£ãŠãæ¥æ¬èªãã©ã³ããç¡ãç°å¢ã§ã¯åããŠããŸããã§ãããéã«èšããšãæ®éã® Mac / Windows ãªã OS ãæ¥æ¬èªãã©ã³ããæã£ãŠãã®ã§ãæå®ããªããŠãåããªãããšãå€ãã§ãã 察çã¯ã slides.md ã®å
é ïŒheadmatterïŒã§ãã©ã³ããæç€ºããããšã§ãã --- fonts: sans: 'Noto Sans JP' serif: 'Noto Serif JP' --- Slidev ã¯ãããã§æå®ãããã©ã³ãã Google Fonts ããèªåçã«èªã¿èŸŒãã§ãããŸããNoto Sans JP ã®ããã« Google Fonts ã«ååšããæ¥æ¬èªãã©ã³ããæå®ããŠããã°ããšã¯ã¹ããŒãæãã¡ãããšæ¥æ¬èªãåºãŸãããããå
¬åŒã® ãã©ã³ãèšå®ã¬ã€ã ã©ããã®æåã§ãããåºæ¬ã¯ããã® fonts: æå®ããããŠããã°è±è
ã¯é²ããŸãã ã³ã³ããã®å ŽåïŒ python:3.12-slim ã®ãããªè»œéã€ã¡ãŒãžã¯ããããã OS ã«æ¥æ¬èªãã©ã³ããå
¥ã£ãŠããŸããã fonts: ã§ Google Fonts ããåããç°å¢ãªãããã§è¶³ããŸããããããã«ç¹ããããªãã»ç¹ãããªããšãã®å®å
šç¶²ãšããŠãOS åŽã«ãæ¥æ¬èªãã©ã³ãïŒ fonts-noto-cjk ããã±ãŒãžïŒãå
¥ããŠãããšç¢ºå®ã§ããåã® DevContainer 㯠Dockerfile ã§ fonts-noto-cjk ãå
¥ããŠãŸãã çœ â¢ïŒPPTX ã«æžãåºããŠããäžèº«ã¯ãç»åã ãSlidev 㯠PPTX ãšã¯ã¹ããŒãã«ã察å¿ããŠããããã§ãã¯ãã§æåºã§ããïŒãââåãæåããæã£ãŠããã§ãããããã3ã€ç®ã®çœ ã§ããã npx slidev export --format pptx ãããã« PowerPoint ãã¡ã€ã«ã¯åºãŠããŸããããéããŠã¿ããšåã¹ã©ã€ãã¯ç·šéå¯èœãªããã¹ããå³åœ¢ã§ã¯ãªãã1æã®ç»åãšããŠè²Œãä»ããããŠãããã§ãããã㯠Slidev ã®ä»æ§ã§ãå
¬åŒã«ãããæžãããŠããŸãã all the slides in the PPTX file will be exported as images, so the text will not be selectable. ïŒPPTX ãã¡ã€ã«å
ã®ãã¹ãŠã®ã¹ã©ã€ãã¯ç»åãšããŠãšã¯ã¹ããŒãããããããããã¹ãã¯éžæã§ããªãïŒ â Slidev å
¬åŒ “Exporting” ã€ãŸãããPowerPoint ã§éããŠæåŸã«æèšã ãçŽããããã©ã³ããå·®ãæ¿ããããã¢ãã¡ãŒã·ã§ã³ãè¶³ãããšãã£ãç·šéã¯äžåã§ããŸãããã¹ã©ã€ãã®çµµã貌ã£ãŠããã ãã ããã§ãã ãããå®éã«å°ã£ãããšããã£ãŠãäœã£ãè³æããPowerPoint ããŒã¹ã§äœæ¥ããŠãäººã«æž¡ããŠäœ¿ãåããŠãããå Žé¢ããã£ããã§ãããå
±æãããªãããã¶ã€ã³ã®çµ±äžæçã«ã PowerPoint ãããªããšå°ããã§ããã®äººãããã®ãã¶ã€ã³ã®ãŸãŸäžèº«ãçŽãããããšãªã£ããšãã«ââçŽããªããäžèº«ã¯ç»åã ãããçµå± Markdown åŽãæã£ãŠãåããçŽããªãããã§ãããã¯ã¡ãã£ãšå°ããŸãããã ãããçè§£ããäžã§ã®ä»ãåãæ¹ã¯ãããªæãã§ãã ä¿®æ£ã¯ãããŸã§ Slidev åŽïŒMarkdownïŒã§ãããPPTX ã¯ãããŸã§ãé
åžã»æåºçšã®æçµåœ¢ããšå²ãåãã ä»éšçœ²ãä»äººã PowerPoint ã§äžèº«ããããåæã®çšéã«ã¯åããªãã®ã§ããã®å Žåã¯çŽ çŽã« PowerPoint ã§äœã£ãæ¹ãããã éã«ãPDF ãšåãããèŠããã»é
ãã ããã®çšéãªã PPTX ã§äœã®åé¡ããããŸãããèªåãç·šéã®äž»å°æš©ã Markdown åŽã«æã€ããšããéçšããå®ãã°çœ ã«ã¯ãªããªããã§ãããããã¹ã©ã€ãã®å®äœã¯ Markdown ã«ããããšå²ãåãããšãPPTX ã¯åãªãåºåç©ã«ãªããŸãã ãšã¯ã¹ããŒããå®è¡ãã çœ ãæœ°ããããããšã¯åºåããã ãã§ãã PDFïŒé
åžã®å®çªïŒ npx slidev export --output export/slides.pdf --timeout 60000 --timeout ãé·ãã«åã£ãŠããã®ã¯ãã¹ã©ã€ããå€ãã£ããç»åãéãã£ãããããšãããã©ã«ãã®ã¿ã€ã ã¢ãŠãã§ã¯ã¬ã³ããªã³ã°ãéã«åããã«å€±æããããšãããããã§ãããå®éãClaude ã«ãšã¯ã¹ããŒããä»»ããŠããšãããŸã«ããã§ã³ã±ãŸãïŒç¬ïŒããããããšãã¯äžæŠæ¢ããŠã --timeout ã䌞ã°ããã³ãã³ããèªåã§æã¡çŽãããããã®ã³ãã³ãã§åºããŠããšãŸãšããŠæãçŽãã®ãæ©ãã§ãã ã¡ãªã¿ã«ããšã¯ã¹ããŒãããŠãã ãã ãš Claude ãããŸãã³ãã³ããçµããªãããšãããã®ã§ãåã¯ã¹ã©ã€ãã眮ããŠããã£ã¬ã¯ããªã® CLAUDE.md ã«ããã䜿ããšã¯ã¹ããŒãã³ãã³ãããã®ãŸãŸæžããŠãŸããããããŠãããšããã€ãã®ãã€ã§åºããŠãã§éãã®ã§ãæ¯åã³ãã³ããæãåºããªããŠæžããã§ãããã PNGïŒ1æãã€ç»åã§ç¢ºèªããããšãïŒ npx slidev export --format png --per-slide --output export/slide --per-slide ã§ã¹ã©ã€ã1æã«ã€ã1ãã¡ã€ã«åºåãããŸããã¬ã€ã¢ãŠããçŽããããšã«ã該åœããŒãžã ãçŽ æ©ã確èªãããããšãã¯ã --range ã§ç¯å²ãçµããšéãã§ãã npx slidev export --format png --range 1-5 --output export/slide åºååŸã¯ãPNG ããã£ãšçºããŠãã©ã³ããæ¥æ¬èªã§åºãŠãããã»ã¬ã€ã¢ãŠãã厩ããŠããªããã確èªããç¿æ
£ãã€ããŠãããšãé
åžçŽåã®äºæ
ãæžããŸããã ãšã¯ã¹ããŒãææç©ã¯ Git ã«å
¥ããªã export/ ãã£ã¬ã¯ããªïŒPDF ã PNG ã®åºåå
ïŒã¯ææç©ãªã®ã§ãªããžããªã«ã¯ã³ãããããŸããã .gitignore ã«å
¥ããŠãããŸãããã # Slidev build/export artifacts dist/ .slidev/ export/ ãœãŒã¹ïŒ slides.md ïŒãã管çããŠããã°ãææç©ã¯ãã€ã§ãåçæã§ããŸããããããã¹ã©ã€ãïŒã³ãŒãããšããŠæ±ãçºæ³ã§ããã ãŸãšã ãããŸã§ã§ãæ§æãäžåèŠããã« Claude Code ã§ã¹ã©ã€ããäœã£ãŠãPDF / PNG / PPTX ãšããŠé
ããç¶æ
ãã§ãããããŸãããèŠç¹ã¯2ã€ã§ãã å
¬åŒ SkillïŒ npx skills add slidevjs/slidev ïŒãå
¥ããã°æ§æåŠç¿ã¯ãŒãã§ããã§ããæ¥æ¬èªã§ããããªã¹ã©ã€ããäœã£ãŠããšé Œãã ãã ãšã¯ã¹ããŒãã®3ã€ã®çœ ïŒplaywright-chromiumã»æ¥æ¬èªãã©ã³ãã»PPTX ã¯ç»åïŒãå
åãã§æœ°ãã°ãSlidev ã¯å®çšã©ã€ã³ã«ä¹ããŸãã ãAIã«ã¹ã©ã€ããäœãããŠã¿ããã§çµããããã¡ãããšé
ãããšãããŸã§æ¥ããšãã¹ã©ã€ãäœãã®äœéšã¯æ¬åœã«å€ãããŸãããªã«ãããçéã§ã¹ã©ã€ãã®åœ¢ã«ããŠèŠãç®ãŸã§ç¢ºèªã§ããã®ã䟿å©ãªãã§ããããããã¹ãã§æžããŠãå·®åã§ç®¡çããŠããããçŽããŠãã§çŽãããã®èº«è»œãã¯äžåºŠå³ãããšããªããªãæ»ããªãã§ãã âŠâŠãšèšããšãããããã Marp ã§ããããªãïŒãã£ãŠæã£ã人ãããŸããããããããŸãïŒç¬ïŒããã®ãžãã®äœ¿ãåãã¯æ¬¡åã¡ãããšæ¯èŒããã®ã§ãã¡ãã£ãšåŸ
ã£ãŠãŠãã ãããã æ¬¡åäºå ãã®ç¬¬2éšãMarp ãš Slidev ã®äœ¿ãåãããæ¬¡åã§ããGit ã§ç®¡çãããåã®ç®ç·ã§ãPowerPoint / Google Slides ããªãè±èœããã®ããå«ããŠããçµå±ã©ã䜿ãã°ããã®ïŒãã«æ±ºçãã€ããŸããïŒãšãããGit管çã§ãããªãç¥ãããïŒïŒ ãã®å
ã¯ãAIã«ãã¶ã€ã³ã厩ãããªããæ ãã®äœãæ¹ïŒãã¶ã€ã³ããŒã¯ã³ â èªåã®ãã¶ã€ã³ã·ã¹ãã ïŒããåºåãã PNG ã Claude èªèº«ã«èŠãããŠçŽãç»åã¬ãã¥ãŒã«ãŒãç·šãäºå®ããŠããŸããç¶ããæ°ã«ãªã£ããããŸãèŠãã«ããŠãã ããã ã»ãªãŸãã ã·ãªãŒãºïŒAIÃã¹ã©ã€ãã¥ãã AIã«äžžæããããå¶çŽãšã«ãŒã«ã§ãæå³ã©ããã®95ç¹ããæ¯åããããŠäœãã·ãªãŒãºã§ãã ã»ããã¢ããããšã¯ã¹ããŒã â æ§æãŒãã§äœã£ãŠé
ãïŒããŸãã®èšäºïŒ Marp ãš Slidev ã®äœ¿ãåã â Git管çèµ·ç¹ã§ã©ã£ã¡ã䜿ã å®ç©ç·šïŒå
šéšå
¥ãïŒ ïŒç§»æ€ã§ãããã¶ã€ã³ã·ã¹ãã ãäžžããšå
¬é â ãŸãšã ãã¶ã€ã³ããŒã¯ã³ç·š â ãªããæ ãã§çžãã®ãïŒå®ç©ç·šã®æ·±æãïŒ ãã¶ã€ã³ã·ã¹ãã ç·š â ãªãåã貯ããŠè²ãŠãã®ãïŒå®ç©ç·šã®æ·±æãïŒ ã芧ããã ãããããšãããããŸãïŒ ãã®æçš¿ã¯ã圹ã«ç«ã¡ãŸãããïŒ åœ¹ã«ç«ã£ã 圹ã«ç«ããªãã£ã 0人ããã®æçš¿ã¯åœ¹ã«ç«ã£ããšèšã£ãŠããŸãã The post Claude Code à SlidevïŒæ§æãŒãã§äœã£ãŠãGit ã§ç®¡çãã first appeared on SIOS Tech Lab .
ãããŸã§ã®èšäºã§ã¯ãSCANOSSã® ããŒã«ã«ã¹ãã£ã³ïŒCLIïŒ ã GitHub Actionsã§ã®èªåå ã ã¢ãã¬ãå¯Ÿå¿ ã玹ä»ããŠããŸãããCIã«æçµã²ãŒãã眮ããããæ¬¡ã«åºãŠããã®ããCIãèœã¡ãŠããçŽãã®ã§ã¯ãªããã³ãããã®æç¹ã§ããŒã«ã«ã«æ°ã¥ãããããšããããŒãºã§ãã æ¬èšäºã§ã¯ãSCANOSSã®ãœãŒã¹ã³ãŒãã¹ãã£ã³ã pre-commit ã«çµã¿èŸŒã¿ãOSSç±æ¥ã³ãŒãã®æ··å
¥ãã³ãããæç¹ã§æ€åºããæ§æã玹ä»ããŸããèšäºã¯æ¬¡ã®3ã€ã®æµãã§é²ããŸãã ãªãpre-commitã§OSSã©ã€ã»ã³ã¹ããã§ãã¯ããã®ãïŒSCANOSSã§äœãæ¢ããããïŒ SCANOSSãpre-commitã«çµã¿èŸŒãïŒå
¬åŒhookãšèªäœhookïŒ pre-commitãšCIã®åœ¹å²åæ
ãã®èšäºã§ãããããš : ãªãCIã ãã§ãªãpre-commitã§ããœãŒã¹ã³ãŒããã¹ãã£ã³ããã®ã pre-commitã§æ€åºå¯Ÿè±¡ããã³ãŒãç
§åãã«çµãçç± SCANOSSå
¬åŒhookã®èšå®ã»ã§ããããšã»ã§ããªãããšãšãèªäœhookãšããéžæ deltaïŒå€æŽãã¡ã€ã«åäœïŒã¹ãã£ã³ãšKEYæªèšå®æã®æ±ãã«ãã軜éå åæã»æ€èšŒç°å¢ æ¬èšäºã®èªäœhookã¯ã SCANOSS Premium ã®API KEY ãåæ ãšããŸãïŒçç±ã¯åŸè¿°ïŒãäžæ¹ãåŸè¿°ã®å
¬åŒhook㯠OSSKB ïŒç¡æïŒã§ãåããŸãã æ€èšŒã¯ãã¹ãŠ scanoss-py 1.52.1 ãæ¬ãªããžããªã§å®è¡ãã宿ž¬ã§ãïŒ2026-06-13 æç¹ïŒãæ¬èšäºã«åºãŠããçµäºã³ãŒãã»åºåã»æèŠæéãªã©ã®æ°å€ã¯ããã®ç°å¢ã§ã®å®æž¬å€ã§ãã SCANOSS ããã³ scanoss-pyãå
¬åŒhookã¯æŽæ°ãããããããå°å
¥åã«ææ°ã®æåã»ããŒãžã§ã³ã確èªããŠãã ããã ãªãpre-commitã§OSSã©ã€ã»ã³ã¹ããã§ãã¯ããã®ã SCANOSSã§é²ã2ã€ã®OSSãªã¹ã¯ SCANOSS ïŒSCA: Software Composition AnalysisïŒã䜿ãç®çã¯ã倧ãã2ã€ã®ãªã¹ã¯ãé²ãããšã§ãã é²ããããªã¹ã¯ å
容 ã©ã€ã»ã³ã¹éå ã³ããŒã¬ããçã®OSSãæ··å
¥ãã矩åïŒãœãŒã¹é瀺ã»è¡šç€ºïŒãæãããªããŸãŸé
åžããŠããŸã åºæäžæïŒæªå®£èšOSSïŒ SBOMã«èŒããªãã³ãŒãã»äŸåãçŽã蟌ã¿ãã©ã€ã»ã³ã¹ãè匱æ§ã远跡ã§ããªããªã ãããã®æ€åºã¯ãå®è£
äžã¯æ¬¡ã®3çš®é¡ã«åãããŸããCIã§ã¯ãã®3çš®é¡ãã¹ãŠãåããŠããŸãïŒ GitHub Actionsã§ã®èªåå ã» ã¢ãã¬ãå¯Ÿå¿ ã®èšäºãåç
§ïŒã æ€åºã®çš®é¡ å
容 ã³ãŒãç
§å ã³ãŒãã®ã¹ããããç
§åãOSSç±æ¥ã®ã³ãŒãçãæ··ãã£ãŠããªãã äŸåã®å®£èšçªå ãããã§ã¹ãã®OSSã bom.include ã«ç»é²æžã¿ã äŸåã®ã©ã€ã»ã³ã¹çš®å¥ ãã®äŸåãGPLçã®ã³ããŒã¬ããã ãã®ãã¡ãäŸåã®å®£èšçªåããšãäŸåã®ã©ã€ã»ã³ã¹çš®å¥ãã¯ãäŸåïŒã©ã€ãã©ãªïŒã«å¯Ÿããæ€åºã§ãããã³ãŒãç
§åãã ãããèªåã®ã³ãŒããã®ãã®ã«å¯Ÿããæ€åºã«ãªããŸãã ã³ãŒããžã®ãæ··å
¥ãã¯äŸåå©çšãšã¯å¥ç© pre-commitã§äœãèŠãããæ±ºããåã«ã1ã€ã ãæŒãããŠããããç¹ããããŸãã åãOSSã§ããäŸåãšããŠäœ¿ããã®ãšãèªåã®ã³ãŒãã«åã蟌ããã®ãšã§ã¯ãæå³ãéã ãšããããšã§ãã OSSã®å
¥ãæ¹ æ³çãªæå³ïŒæŠç¥ïŒ æ±ã äŸåïŒã©ã€ãã©ãªïŒãšããŠäœ¿ã 䜿ãã ããªãã衚瀺矩åãªã©ã§æžãããšãå€ã 蚱容ãããïŒCIåŽã§ç®¡çïŒ èªåã®ã³ãŒãã«è²Œãä»ããŠåã蟌ã åã蟌ã¿ïŒçµåã»æ¹å€æ±ããšãªãããœãŒã¹é瀺ãªã©éã矩åãçºçããã æ¢ãããïŒããããæ··å
¥ãïŒ ã©ã€ã»ã³ã¹çš®å¥ããšã®å
·äœçãªçŸ©åïŒGPLãšLGPLã®éããªã©ïŒã¯æ¬èšäºã®äž»é¡ã§ã¯ãªãããèžã¿èŸŒã¿ãŸãããããã§å¿
èŠãªã®ã¯ãäŸåãšããŠäœ¿ãåã«ã¯èš±å®¹ã§ããŠããã³ãŒããžã®æ··å
¥ã¯å¥åé¡ããšããäžç¹ã§ãã pre-commitã§æ¢ãããã®ã¯ããã® ãæ··å
¥ã ã§ãããããã£ãŠãpre-commitã§èŠãã®ã¯ ã³ãŒãç
§å ã«çµããŸããçç±ã¯ãåŠçã軜ããããã§ã¯ãªãã ã³ãŒãç
§åãæ··å
¥ã®çºçæºã ãã ã§ãã OSSã³ãŒãã®æ··å
¥ãèµ·ããç¬éã¯ãã³ãŒããæžãã»è²Œãããã®æãã§ããããã¯ã³ãŒãç
§åã§ããæãŸãããããæãäžæµã§æ¢ããããŸãã äŸåã«é¢ãã2ã€ïŒäŸåã®å®£èšçªåã»äŸåã®ã©ã€ã»ã³ã¹çš®å¥ïŒã¯ããããã§ã¹ããç·šéãããšããæèçãªæäœã§çºçããæ§é çã«èŠèœãšãã«ãããã®ã§ãããã€ãäŸåãšããŠäœ¿ãåã«ã¯èš±å®¹ããããšãã管çãå¿
èŠã«ãªããããã³ãããã®äžç¬ã§äžåŸã«æ¢ããããããCIåŽã§æ±ãæ¹ãé©ããŠããŸãã å ããŠãAIã§ã³ãŒããæžãæ¯éãäžããã»ã©ããã®èгç¹ã¯éèŠã«ãªããŸããAIã¯åŠç¿ããŒã¿ç±æ¥ã®OSSã³ãŒãããã®ãŸãŸåºåããããšããããæžããæ¬äººã«ãããã¯æŸã£ãŠããã³ãŒãã ããšããèªèŠããªããŸãŸæ··å
¥ããå¯èœæ§ããããŸããçæéãå€ããç®èŠã¬ãã¥ãŒã§è¿œãåããŸãããã³ãããã®ç¬éã«æ©æ¢°ãç
§åããpre-commitã¯ãAIçæã³ãŒãã«å¯ŸããçŸå®çãªã¬ãŒãã¬ãŒã«ãšããŠæ©èœããŸãã æ€åºçµæã倿ããã®ã¯éçºè
ãã1ã€ãpre-commitãããŒã«ã«ã«çœ®ãçç±ããããŸãã ã¹ãã£ã³çµæã¯ãããèªäœãçãã§ã¯ãªã ãšããç¹ã§ãã æ€åºãããçµæãèŠãŠãã©ã察å¿ããããæ±ºããã®ã¯äººéïŒéçºè
ïŒã®ä»äºã§ãã æ€åºã劥åœãªå Žå â ã³ãŒããçŽãããããã¯æ£èŠã®äŸåãšããŠåãèŸŒã æå³ãšéãæ€åºã®å Žå â 誀æ€åºãšããŠæ±ããèšå®ã§é€å€ãã ã©ã¡ãã«åããã¯ããã®ã³ãŒãããªãã»ã©ãããæã£ãŠããããç¥ã£ãŠããéçºè
æ¬äººã«ãã倿ã§ããŸãããã¹ãã£ã³ã¯å€æææãæç€ºãããšãããŸã§ã§ããã®å
ã¯å¿
ã人éãåŒãåããŸãã åé¡ã¯ã ãã®å€æããã€ã»ã©ãã§åŒãåãã ã§ãã ãã«ãªã¯ãšã¹ããåºããåŸïŒCIïŒã§åãåãå Žåã倿ã®ããã«ãã«ãªã¯ãšã¹ããçºè¡ããCIãå®è¡ããçµæãè¿ãã®ãåŸ
ã€ããšããå·¥çšãçµãŠããæå
ã«æ»ã£ãŠããŸãã倿ã®ãã³ã«åŸåŸ©ãçºçããŸãã ã³ãããã®ç¬éïŒpre-commitïŒã§åãåãã°ãåŸåŸ©ã¯ãããŸãããã³ãŒããæžããçŽåŸãæèãæãæ¿ãæå
ã«çµæãåºãã®ã§ããã®å Žã§å¯Ÿå¿ã決ããããŸãã ã€ãŸããé床ãã®ãã®ãç®çãªã®ã§ã¯ãªããã倿ãæå
ã«çœ®ããããšã®çµæãšããŠé床ãå¹ããŠããŸããéã«èšãã°ãé
ãpre-commit㯠git commit --no-verify ã§å€ãããããã«ãªããã倿ãæå
ã«çœ®ãããšããç®çããšå£ããŠããŸããŸãã軜éã§ããããšã¯å¿
é æ¡ä»¶ã§ãã SCANOSSãpre-commitã«çµã¿èŸŒãïŒå
¬åŒhookãšèªäœhookïŒ SCANOSSã®ã³ãŒãã¹ãã£ã³ãpre-commitã«ä¹ããææ®µã¯ã倧ãã2ã€ãããŸããSCANOSSãæäŸããå
¬åŒhookãšãèªäœhookã§ãããŸãå
¬åŒhookãèŠãŠããã®å¶çŽã確èªããããã§èªäœhookã«é²ã¿ãŸãã å
¬åŒpre-commit hookã䜿ã SCANOSSã¯å
¬åŒã®pre-commit hookïŒ scanoss/pre-commit-hooks ïŒãæäŸããŠããŸããæäŸãããhook㯠scanoss-check-undeclared-code ã®1çš®é¡ã§ãã å°å
¥æé èšå®ã¯ .pre-commit-config.yaml ã«æ¬¡ã远å ããã ãã§ãã repos: - repo: https://github.com/scanoss/pre-commit-hooks rev: v0.4.0 # rev: v0 ãšãããš major ç³»ã®ææ°ã«è¿œåŸ hooks: - id: scanoss-check-undeclared-code 远å åŸã pre-commit install ã§hookãæå¹åããŸããAPI KEY㯠OSSKB ïŒç¡æïŒã§ã¯ä»»æã§ã Premium ã䜿ãå Žåã¯ç°å¢å€æ° SCANOSS_API_KEY ã§æž¡ããŸãïŒæ¬èšäºã®CIåŽSecretå SCANOSS_KEY ãšã¯å¥åãªã®ã§æ³šæããŠãã ããïŒã ã§ããããš èšå®ããå
¬åŒhookã¯ãã³ãããæã«æ¬¡ã®ããã«åããŸãã stagedïŒã¹ããŒãžæžã¿ïŒãã¡ã€ã«ã ããSCANOSSã®CLI scanoss-py ã§ã¹ãã£ã³ãã æªèå¥ïŒundeclaredïŒã®ã³ã³ããŒãã³ããæ€åºãããšã³ããããããã㯠ããŸãã ã¹ãã£ã³å¯Ÿè±¡ã¯å€æŽãã¡ã€ã«åäœïŒCIã®deltaã¹ãã£ã³ãšåãç²åºŠïŒã§ã軜éã§ãã ãªããžããªã远å ããã ãã§äœ¿ããã¹ã¯ãªããã®ä¿å®ãäžèŠã§ãã æªå®£èšOSSã®ã·ããã¬ããã ããç®çã§ããã°ããã®å
¬åŒhookãå
¥ããã®ãæãæè»œã§ãã ã§ããªãããšïŒã³ããŒã¬ããã»ã¢ãã¬ãïŒ äžæ¹ã§ãæ¬èšäºã®çãïŒã³ãŒãã®ã³ããŒã¬ããæ··å
¥ããã¢ãã¬ãã®ã³ã³ããŒãã³ãåäœã§æ€åºããïŒã«å¯ŸããŠã¯ãå
¬åŒhookã«ã¯çŸç¶ããã€ãã®å¶çŽããããŸãïŒãããã 2026-06-13 æç¹ã§å
¬éãªããžããªã®ãœãŒã¹ãã確èªããäºå®ã§ãïŒãå
¬åŒhookã¯æŽæ°ãããããããå°å
¥åã«ææ°ã®æåã確èªããŠãã ããã ã§ããªãããš å
容 ã³ããŒã¬ããå€å® å
¬åŒhookã¯æªèå¥ïŒundeclaredïŒå°çšã§ãã³ããŒã¬ããã©ã€ã»ã³ã¹ã®æ··å
¥ã¯å€å®ããªã ã¹ãã£ã³å¯Ÿè±¡ã®çµã蟌㿠pass_filenames: false ã§ãhookèªèº«ã git diff --staged ãå®è¡ããåžžã«stagedå
šäœã察象ã«ãã ã³ã³ããŒãã³ãå¥èšå® åäžã® scanoss.json ãåæãšãããããã¢ãã¬ãã§ã³ã³ããŒãã³ãããšã® scanoss.json ã䜿ãåããããªã ã³ããŒã¬ãããŸã§æ€åºããããã³ã³ããŒãã³ãããšã® scanoss.json ãå¹ããããããšããèŠä»¶ã«ã¯ãçŸç¶ã¯èªäœhookãå¿
èŠã«ãªããŸãã éŸã¡ãã SCANOSSã¯çµæ§æŽ»çºã«éçºããããŠããã®ã§ããã®èŸºã¯æŽæ°ãããå¯èœæ§ã倧ãã«ãããŸãïŒããååãããããã¡ãã䜵ããŠæŽæ°ããäºå®ã§ãã èªäœhookã§ã³ããŒã¬ãããæ€åºãã å
¬åŒhookã§è¶³ããªãéšåïŒã³ããŒã¬ããå€å®ãšã³ã³ããŒãã³ãå¥èšå®ïŒã¯ãèªäœhookã§è£ããŸãã ã¹ãã£ã³ã¹ã¯ãªãããšhookç»é² èªäœhook㯠scanoss-pyïŒæ¬èšäºã®æ€èšŒã¯ 1.52.1ïŒãçŽæ¥åŒã³åºããŸããåŠçã¯åçŽã§ããstaged ã®ã³ãŒããã¡ã€ã«ã scanoss-py scan ã«æž¡ããŠã¹ãã£ã³ãããã®çµæã scanoss-py inspect copyleft ã«éããŠãã³ããŒã¬ãããæ€åºããããã³ããããäžæããŸãã ãªãããã®æ§æã¯ SCANOSS Premium ã®API KEY ãåæ ã«ããŠããŸãã --files ã§å¯Ÿè±¡ãæå®ããã〠scanoss.json ã®ã¹ããããç
§åãæå¹ã«ããçµã¿åããã¯ãç¡æãšã³ããã€ã³ãïŒ OSSKB ïŒã«æãããš 400 Bad Request ã§åŒŸãããããã§ãïŒ2026-06-13 æç¹ã»scanoss-py 1.52.1 ã§ç¢ºèªïŒãKEY 㯠--key "$SCANOSS_KEY" ã§æž¡ããŸãã # staged ãã¡ã€ã«ãã¹ãã£ã³ïŒPremium KEY çµè·¯ïŒ scanoss-py scan --files <staged files> \ --settings <component>/scanoss.json \ --key "$SCANOSS_KEY" \ --output result.json # æ€åºçµæããã³ããŒã¬ãããå€å®ïŒæ€åºæã¯éãŒãçµäºïŒ scanoss-py inspect copyleft --input result.json scanoss-py inspect copyleft ã¯ãçµæã«ã³ããŒã¬ããã©ã€ã»ã³ã¹ãå«ãŸããŠããã°éãŒãã§çµäºããŸãïŒscanoss-py 1.52.1ã§ã®å®æž¬å€ã¯ãæ€åºæã«exit 2ãæªæ€åºæã«exit 0ïŒããã®çµäºã³ãŒããæŸã£ãŠã³ããããæ¢ããã ãã§ãã ãªããäžèšã¯ãããŸã§åŠçã®æ žïŒ scan â inspect copyleft ïŒãæãåºãããã®ã§ããå®éã® hook ã¹ã¯ãªããã«ã¯ãããã«å ã㊠KEY æªèšå®æã®ã¹ãããã»ã¹ãã£ã³å¯Ÿè±¡å€ãã¹ïŒ node_modules çïŒã®é€å€ã»çµäºã³ãŒããæŸã£ãŠã³ããããæ¢ããåŠç ãå¿
èŠã§ãïŒåŸè¿°ã®ãšãããã³ã³ããŒãã³ãã®æ¯ãåã㯠.pre-commit-config.yaml åŽããããã®åŠçã¯ã¹ã¯ãªããåŽã§å®è£
ããŸãïŒã ãã®ã¹ã¯ãªãããçšæãã .pre-commit-config.yaml ã«ããŒã«ã«hookãšããŠç»é²ããŸãïŒèšå®ããŒã¯ pre-commitå
¬åŒããã¥ã¡ã³ã ãåç
§ïŒãããã§äžã€èšèšäžã®éžæããããŸãã ãã©ã®ã³ã³ããŒãã³ãããã©ã® scanoss.json ã§èŠãããã®æ¯ãåãããã¹ã¯ãªããå
ã«æžãããpre-commitã® files: ïŒçºç«æ¡ä»¶ïŒã«æããã ããšã§ããã³ã³ããŒãã³ãããšã«hookã1ã€ãã€ç«ãŠã args ã§ãã®ã³ã³ããŒãã³ãã® scanoss.json ãæž¡ãã files: ã§ãã®ã³ã³ããŒãã³ãé
äžã®ã³ãŒãã ããçºç«æ¡ä»¶ã«ããŸãã - repo: local hooks: - id: scanoss-code-slides name: SCANOSS code scan (slides) entry: scripts/scanoss-precommit-scan.sh args: ['application/slides/scanoss.json'] # ãã®hookã䜿ãèšå® language: script files: '^application/slides/.+\.(py|js|ts|tsx|vue|jsx|mjs)$' # çºç«æ¡ä»¶ïŒã«ãŒãã£ã³ã° pass_filenames: true require_serial: true - id: scanoss-code-tools name: SCANOSS code scan (tools) entry: scripts/scanoss-precommit-scan.sh args: ['application/tools/scanoss.json'] language: script files: '^application/tools/.+\.py$' pass_filenames: true require_serial: true ãããããšãã³ã³ããŒãã³ããå¢ããŠãã¹ã¯ãªããã«ã¯æãå
¥ãããhookã1ã€è¶³ãã ãã§æžã¿ãŸããæ¯ãåãããžãã¯ãã³ãŒãã«æ£ãã°ããã .pre-commit-config.yaml ãèŠãã°ãã©ã®ãã¹ããã©ã® scanoss.json ã§èŠããããããäžèЧã§ããŸããã¢ãã¬ãã§ã³ã³ããŒãã³ãããšã«èšå®ã䜿ãåãããããšããå
¬åŒhookã§ã§ããªãã£ãèŠä»¶ã¯ããã®åœ¢ã§æºãããŸãã ãããŸã§ã«åºãŠãããã¡ã€ã«ã®é
çœ®ã¯æ¬¡ã®ãšããã§ããã¹ã¯ãªããã¯1æ¬ã§å
šã³ã³ããŒãã³ããå
±æããã³ã³ããŒãã³ãåºæãªã®ã¯å scanoss.json ã ãããšãã圢ã«ãªããŸãã ãªããžããªã«ãŒã/ âââ .pre-commit-config.yaml # hookç»é²ïŒã³ã³ããŒãã³ãããšã«routingïŒ âââ .env # SCANOSS_KEY ã眮ãïŒ.gitignore å¯Ÿè±¡ïŒ âââ scripts/ â âââ scanoss-precommit-scan.sh # ã²ãŒãæ¬äœïŒå
šhookãå
±æããŠåŒã¶ã»ä»é²ã«å
šäœïŒ âââ application/ âââ slides/ â âââ scanoss.json # slides çšã¹ãã£ã³èšå® âââ tools/ âââ scanoss.json # tools çšã¹ãã£ã³èšå® 圹å²ã§åãããšã scripts/scanoss-precommit-scan.sh ïŒåŠçïŒã» .pre-commit-config.yaml ïŒæ¯ãåãïŒã»å scanoss.json ïŒã³ã³ããŒãã³ãããšã®ã¹ãã£ã³èšå®ïŒã» .env ïŒKEYïŒã®4çš®é¡ã§ããã³ã³ããŒãã³ããå¢ãããšãã«è§Šãã®ã¯ã scanoss.json ã®è¿œå ãš .pre-commit-config.yaml ãžã®hook远èšã ãã§ãã¹ã¯ãªããã¯å€ãããŸããã ãã®æ§æã«ã¯ã軜éã«ä¿ã€ããã®å·¥å€«ãå
¥ã£ãŠããŸãã files: ã§çºç«æ¡ä»¶ãã³ã³ããŒãã³ãé
äžã®ã³ãŒãæ¡åŒµåã«éå®ããŸããREADMEãç»åã ãã®ã³ãããã§ã¯åããŸããã pass_filenames: true ã«ãããstaged ãã¡ã€ã«ã®ãã¹ãhookã«æž¡ããã倿Žãã¡ã€ã«ã ããã¹ãã£ã³ããŸãïŒdeltaã¹ãã£ã³ïŒã args ã§æž¡ãã scanoss.json ãããã®ã³ã³ããŒãã³ãã®èšå®ãšããŠé©çšãããŸãã SCANOSS_KEY ãæªèšå®ã®å Žåã¯èŠåãåºããŠã¹ãããïŒexit 0ïŒããŸããKEYãå
šå¡ã«è¡ãæž¡ãåãã匷å¶ãããšãKEYã®ãªãéçºè
ã®ã³ãããããã¹ãŠæ¢ãŸããããããŸã --no-verify ã§ã®åé¿ã«ã€ãªããããã§ããKEY㯠.env ïŒgitignore察象ïŒãç°å¢å€æ°ã§æž¡ãããªããžããªã«ã¯ã³ãããããŸããã .env ã䜿ãå Žåã¯ãã¹ã¯ãªããå
ã§ set -a; source .env; set +a ãšããŠèªã¿èŸŒããã direnv ãªã©ã§ç°å¢å€æ°ãšããŠèªåå±éããŸãã ãã1ã€ãéçšäžã®ååããããŸãã ã³ãŒãã¹ãã£ã³ã§ã¯ãæ€åºãããçµæããã£ãããã¹ãŠåãæ¢ãã ããšã§ãã åè¿°ã®ãšãããæ€åºã劥åœã誀æ€åºãã倿ããã®ã¯éçºè
ã§ãããã®å€æææãåãããŒããªãããã«ãã³ãŒãã¹ãã£ã³ã®æ®µéã§ã¯çµæãçµã蟌ãŸãããŸãå
šéšåºããŸããã³ãŒããžã®æ··å
¥ã¯ãæåããããã®ã©ã€ã»ã³ã¹ã¯æ°ã«ããªãããšãã£ãçµã蟌ã¿ããããŠããŸããšãæ¬æ¥æ°ã¥ãããã£ããã®ãŸã§æ€åºãããåã«æ¶ããŠããŸããŸããæ··å
¥ãèŠãã¹ãã£ã³ã¯æ€åºãæå¶ããªãçŽ ã®ç¶æ
ã«ä¿ã¡ãåºãŠããçµæãéçºè
ãäžã€ãã€å€æããââãšãã圢ã«ããŸãã ã³ããããæ¢ãŸãæ§å ã³ããŒã¬ããã©ã€ã»ã³ã¹ãæã€OSSã®ã³ãŒããå«ããã¡ã€ã«ãã¹ããŒãžããã³ãããããããšããå Žåã®æåã確èªããŸããããã§ã¯ãã³ããŒã¬ããã©ã€ã»ã³ã¹ïŒGPL-3.0ïŒãéžæè¢ã«æã€OSSã®ã³ãŒãããã¡ã€ã«ã«åã蟌ãã ç¶æ
ã§ãhookãå®è¡ããŸããã SCANOSS code scan (slides)...............................................Failed - hook id: scanoss-code-slides - exit code: 1 inspect copyleft -> application/slides 1 component(s) with copyleft licenses were found. { "components": [ { "purl": "pkg:github/stuk/jszip", "licenses": [ { "spdxid": "GPL-3.0-only", "copyleft": true, "source": "component_declared" } ], "status": "pending" } ] } ::error::Copyleft policy violation in application/slides hookã Failed ïŒexit 1ïŒãšãªããã³ãããã¯äœæãããŸãããåºåã® exit code: 1 ã¯hookå
šäœã®çµäºã³ãŒãã§ãã¹ã¯ãªããã inspect copyleft ã®éãŒãçµäºïŒæ€åºæ exit 2ïŒãåãåã£ãŠè¿ãããã®ã§ããåºåã«ã¯ãã©ã®ã³ã³ããŒãã³ãã®ãã©ã®ã©ã€ã»ã³ã¹ããæ€åºããããã衚瀺ãããŸããããšã¯éçºè
ããã®å Žã§å€æããŸããåã蟌ãã ã³ãŒããå¥ã®å®è£
ã«çœ®ãæããã®ãããããã¯åŠ¥åœãªæ€åºãšããŠæ£èŠã«æ±ãã®ãã倿ã«å¿
èŠãªææããã³ãããã®ç¬éã«æå
ãžåºãŠããŸãã ãã«ãªã¯ãšã¹ããçºè¡ããŠCIã®çµæãæ°ååŸ
ã£ãŠããæå
ã«æ»ããŠå€æããããšããåŸåŸ©ããã³ãããã®äžç¬ã§ã®å€æã«å€ãããŸãããªããã³ãŒãã¹ãã£ã³ïŒ scan + inspect copyleft ïŒã«ãããæéã¯1ãã¡ã€ã«ãããæ°ç§çšåºŠã§ïŒæ¬ç°å¢ã§ã®å®æž¬ã¯çŽ5ç§ïŒãã³ãããäœéšãå£ããªãç¯å²ã«åãŸã£ãŠããŸãã æ€åºããããšãã®å¯Ÿå¿ ã³ããããæ¢ãŸã£ããããŸãåºåã®ã³ã³ããŒãã³ãïŒ purl ïŒãšã©ã€ã»ã³ã¹ã確èªãããã®å
容ã«å¿ããŠå¯Ÿå¿ããŸãã察å¿ã¯ç¢ºèªããçµæã§åãããŸãã以äžã¯å¯Ÿå¿ã®äŸã§ãã 確èªããçµæïŒäŸïŒ å¯Ÿå¿ è¡šç€ºçŸ©åã ãã§äœ¿ããã©ã€ã»ã³ã¹ã ã£ãïŒMIT çïŒ ã¯ã¬ãžãã衚瀺ãªã©ã®çŸ©åãæºãããããã§ããã®ãŸãŸå©çšãã 誀æ€åºã ãšå€å¥ã§ããïŒç¡é¢ä¿ãªã³ãŒããå¶ç¶äžèŽããïŒ èª€æ€åºãšããŠèšå®ã§èš±å®¹ãããããªã誀æ€åºãšå€æãããããèšé²ã«æ®ã å
¬é矩åã䌎ãã©ã€ã»ã³ã¹ã ã£ãïŒGPL çã®ãœãŒã¹é瀺矩åïŒ ååãã®ã³ãŒãã¯äœ¿ãããèªåã§æžãçŽãïŒå¥å®è£
ã«çœ®ãæãããã©ãããŠã䜿ããªãã©ã€ã»ã³ã¹æ
åœã«ç¢ºèªã®ããæ£èŠã«å¯Ÿå¿ãã äžèšã¯å¯Ÿå¿ã®äŸã§ããã©ã€ã»ã³ã¹ã®çš®é¡ãé
åžã®æç¡ã«ãã£ãŠçŸ©åã¯ç°ãªããããæçµçãªå¯åŠã¯ã©ã€ã»ã³ã¹æ
åœã«ç¢ºèªããŠãã ããã ãããã®å Žåããèµ·ç¹ã¯ãæ€åºããã£ããåãæ¢ããŠãéçºè
ãäžèº«ã確èªãããããšã§ããpre-commitã¯ããã®ç¢ºèªãšå¯Ÿå¿ããæèãäžçªæ¿ãã³ãããã®ç¬éã«æå
ã§è¡ããããã«ããŸãã pre-commitãšCIã®åœ¹å²åæ
æåŸã«ãpre-commitãšCIã®é¢ä¿ãæŽçããŸããäž¡è
ã¯ã©ã¡ããäžäœãšããããšã§ã¯ãªãã圹å²ãç°ãªãå¥ã
ã®ä»çµã¿ã§ãã ã©ã¡ããå¿
èŠ ã§ãã pre-commit CI åœ¹å² å€æãéçºè
ã®æå
ã»ã³ãããæç¹ã«ååããããã®å Žã§æ°ã¥ããã ããŒã ã®æš©åšçã»æçµã²ãŒããšããŠéåã確å®ã«æ¢ãã 察象 ã³ãŒãç
§åïŒæ··å
¥ã®çºçæºïŒ ã³ãŒãç
§åã»äŸåã®å®£èšçªåã»äŸåã®ã©ã€ã»ã³ã¹çš®å¥ 匷å¶å --no-verify ã§é£ã°ããïŒæ°ã¥ãã圹å²ïŒ é£ã°ããªãïŒå¿
ãééããïŒ pre-commit㯠--no-verify ã§èª°ã§ãé£ã°ãããããããåäœã§ã¯éåã確å®ã«æ¢ããä¿èšŒã«ã¯ãªããŸããã確å®ã«æ¢ããæçµã²ãŒãã¯CIåŽã«å¿
èŠã§ãpre-commitã¯ãã®å€å®ãæå
ã§ååãã«æ°ã¥ããã圹å²ã«åŸ¹ããŸããã ãããããäž¡è
ã¯åãåºæºã§æããŠãããããšããã§ããpre-commitã§éã£ããã®ãCIã§èœã¡ãïŒãããã¯ãã®éïŒãé »çºãããšãpre-commitã¯ä¿¡çšãããªããªãã --no-verify ã§å€ãããŠåœ¢éªžåããŸããããªã·ãŒïŒã³ããŒã¬ããã®æ±ããªã©ïŒã¯CIãšæããpre-commitã¯CIã®å€å®ãæå
ã§ãäºç¿ãããäœçœ®ã¥ãã«ããŸãã äœãã©ã¡ãã«æ
ãããããåãåããŸããæ··å
¥ïŒã³ãŒããžã®åã蟌ã¿ïŒã¯çºçæºã§æ¢ãããã®ã§ãpre-commitã§ååãã«èŠãŸããäžæ¹ãäŸåãã©ããŸã§èš±å®¹ãããïŒåŒ±ã³ããŒã¬ããã®äŸåãèªãããçïŒã®å€æã¯ãæ¿èªã®èšé²ãå°åž³ã䌎ããããCIåŽã«éçŽããŸããpre-commitã®ã³ãŒãã¹ãã£ã³ã¯æ€åºããã£ãããã¹ãŠåºããŠéçºè
ã«å§ããããšããã®ãããã®åãåãã®è£è¿ãã§ãã 圹å²ãæ··åããŠçæ¹ãçãïŒãpre-commitãå
¥ããããCIã¯äžèŠããCIãããããæå
ã¯äžèŠãïŒãšãã©ã¡ãã®å©ç¹ã倱ãããŸããpre-commitã§æå
ã®æ··å
¥ã«æ°ã¥ããCIã§ç¢ºå®ã«æ¢ããããã®2段æ§ããåºæ¬ã§ãã ä»é²ïŒå®å
šãªhookæ§æïŒdeltaïŒã¢ãã¬ã察å¿ïŒ ããŒã2ã§ã¯åŠçã®æ žïŒ scan â inspect copyleft ïŒã ãã瀺ããŸãããããã§ã¯ããããKEYæªèšå®æã®ã¹ãããã»é€å€ã»çµäºã³ãŒãã²ãŒããŸã§å«ããŠ1æ¬ã«ãŸãšãããå®éã«åãã¹ã¯ãªããã®å
šäœã瀺ããŸãïŒcopyleftæ€åºã«çµã£ãæ§æãscanoss-py 1.52.1 ã§åäœç¢ºèªïŒãããã¯ãããŒã2ã® .pre-commit-config.yaml ã§ã³ã³ããŒãã³ãããšã«ç»é²ããåhookãåŒã¶æ¬äœã§ããäž¡è
ãçµã¿åãããŠåããŸãã æ¯ãåãïŒã©ã®ã³ã³ããŒãã³ããèŠããïŒã¯pre-commitã® files: ãæ
ãã®ã§ãã¹ã¯ãªããã¯ã³ã³ããŒãã³ããæèããŸããã第1åŒæ°ã§ scanoss.json ã®ãã¹ãåãåããæ®ãã®åŒæ°ã§æž¡ãããstagedãã¡ã€ã«ãããã®èšå®ã§ã¹ãã£ã³ããã ãã§ãã #!/usr/bin/env bash # SCANOSS code scan (delta): æž¡ããã staged ã³ãŒãããæå®ã® scanoss.json ã§ copyleft æ€æ»ããã # 察象ã³ã³ããŒãã³ãã®æ¯ãåãïŒçºç«æ¡ä»¶ïŒã¯ .pre-commit-config.yaml ã® files: ãæ
ãã # 䜿ã scanoss.json 㯠args ã§æž¡ãããã$1=scanoss.json ã®ãã¹ / $2..=staged ãã¡ã€ã«ã set -euo pipefail settings="$1"; shift # .env ãããã°èªã¿èŸŒãïŒSCANOSS_KEY ãããã«çœ®ãéçšãæ³å®ã.env 㯠gitignore å¯Ÿè±¡ïŒ if [[ -f .env ]]; then set -a; source .env; set +a fi # KEY æªèšå®ãªãæ¢ããã«ã¹ãããïŒKEY æªé
åžã®éçºè
ã®ã³ããããæ¢ããªãããïŒ if [[ -z "${SCANOSS_KEY:-}" ]]; then echo "::warning::SCANOSS_KEY æªèšå®ã®ãã code scan ãã¹ãããããŸã" >&2 exit 0 fi # æž¡ããã staged ãã¡ã€ã«ãç¡ããã°äœãããªã [[ $# -eq 0 ]] && exit 0 # --files ã«ã¯ scanoss.json ã® skip.patterns ãå¹ããªãããã # çæç©ã»vendored ãã¹ã¯ããã§é€å€ããã declare -a files=() for f in "$@"; do case "$f" in */node_modules/*|*/dist/*|*/archive/*) continue ;; *) files+=("$f") ;; esac done [[ ${#files[@]} -eq 0 ]] && exit 0 result=$(mktemp); trap 'rm -f "$result"' EXIT # staged ãã¡ã€ã«ã ããã¹ãã£ã³ïŒdeltaïŒãPremium KEY çµè·¯ã if ! scanoss-py scan --files "${files[@]}" \ --settings "$settings" \ --key "$SCANOSS_KEY" \ --output "$result"; then echo "::error::scan failed ($settings)" >&2 exit 1 fi # copyleft æ€åºæã¯éãŒãçµäºïŒ1.52.1 ã§ã¯ exit 2ïŒãçµäºã³ãŒãããã®ãŸãŸã²ãŒãã«ããã if ! scanoss-py inspect copyleft --input "$result"; then echo "::error::copyleft policy violation ($settings)" >&2 exit 1 fi .pre-commit-config.yaml ïŒããŒã2ïŒãšãã®ã¹ã¯ãªããã§ãæ¬æã§èª¬æããèŠçŽ ãäžéãããããŸãã æ¬æã®äž»åŒµ ã©ãã§æºããã deltaïŒå€æŽãã¡ã€ã«åäœïŒ pass_filenames: true ã§æž¡ã staged ãã¡ã€ã«ã ãã --files ã«æž¡ã ã¢ãã¬ãå¯Ÿå¿ ã³ã³ããŒãã³ãããšã« hook ãç«ãŠã files: ã§æ¯ãåãã» args ã§å scanoss.json ãæž¡ãïŒ .pre-commit-config.yaml åŽïŒ --no-verify åãé²ã軜ã files: ã§çºç«æ¡ä»¶ãéå®ããKEY æªèšå®ã¯ warningâskipãçæç©ãã¹ã¯é€å€ãã æ€åºããã£ããåãæ¢ãã copyleft çš hook ã«ã¯é€å€ïŒç¹å®ã©ã€ã»ã³ã¹/PURLã®èš±å®¹ïŒãæã¡èŸŒãŸããçŽ ã®ã¹ãã£ã³ã«ä¿ã€ ã³ããããæ¢ãã inspect copyleft ã®éãŒãçµäºïŒexit 2ïŒãæŸããã¹ã¯ãªããå
šäœãéãŒãã§çµäº ãŸãšã SCANOSSã®ãœãŒã¹ã³ãŒãã¹ãã£ã³ãpre-commitã«çµã¿èŸŒã¿ãOSSç±æ¥ã³ãŒãã®æ··å
¥ãã³ãããæç¹ã§æ€åºããæ§æã玹ä»ããŸããã é
ç® ãã€ã³ã pre-commitã®ç®ç ã¹ãã£ã³çµæã倿ããã®ã¯éçºè
ããã®å€æããæèãæ¿ãã³ãããã®ç¬éã»æå
ã§åŒãåããããã«ãã æ€åºå¯Ÿè±¡ ã³ãŒãç
§åïŒæ··å
¥ã®çºçæºïŒã«çµããäŸåã®çªåã»ã©ã€ã»ã³ã¹çš®å¥ã¯CIã«æ®ã å
¬åŒhookãšã®éã å
¬åŒhookã¯æªèå¥ïŒundeclaredïŒå°çšãã³ããŒã¬ããå€å®ãšã³ã³ããŒãã³ãå¥èšå®ãå¿
èŠãªãèªäœhook 軜éå deltaïŒå€æŽãã¡ã€ã«åäœïŒã¹ãã£ã³ãçºç«æ¡ä»¶ã®éå®ãKEYæªèšå®æã®ã¹ãããã§ --no-verify åãé²ã æ€åºã®æ±ã ã³ãŒãã¹ãã£ã³ã¯çµæãçµã蟌ãŸãããã£ãããã¹ãŠåãæ¢ããŠéçºè
ã倿ãã CIãšã®é¢ä¿ pre-commitãšCIã¯åœ¹å²ã®ç°ãªã䞡茪ãåãåºæºã§æããã©ã¡ããæ®ã pre-commitã§æå
ã®æ··å
¥ã«æ°ã¥ããCIã§ç¢ºå®ã«æ¢ããããã®2段æ§ãã§ãããŒã«ã«ããCIãŸã§SCANOSSã®éçšãäžéãã€ãªãããŸãã åèè³æ é¢é£ãªã³ã¯ SCANOSS pre-commit hooksïŒGitHub ãªããžããªïŒ scanoss-py GitHub ãªããžã㪠SCANOSS å
¬åŒããã¥ã¡ã³ã pre-commit å
¬åŒããã¥ã¡ã³ã ã芧ããã ãããããšãããããŸãïŒ ãã®æçš¿ã¯ã圹ã«ç«ã¡ãŸãããïŒ åœ¹ã«ç«ã£ã 圹ã«ç«ããªãã£ã 0人ããã®æçš¿ã¯åœ¹ã«ç«ã£ããšèšã£ãŠããŸãã The post SCANOSS pre-commitïŒã³ãŒãã¹ãã£ã³ã§ã³ããŒã¬ããæ··å
¥ãæ€åºãã first appeared on SIOS Tech Lab .
ããã«ã¡ã¯ïŒãµã€ãªã¹ãã¯ãããžãŒã®è²éã§ãã ä»åã¯ãkeycloak ãçšããŠç°¡å㪠SSO èªèšŒãè¡ããŸã§ã®æé ãã玹ä»ããŸãã keycloak ã䜿ããšæ§ã
ãªã¢ããªã±ãŒã·ã§ã³ãšããµãŒãã¹ãšé£æºããããšãã§ããŸãããä»åã¯ç°¡åãªãã¹ãã¢ããªãçšã㊠SSO èªèšŒãå®çŸããŠã¿ãŸãã ç°å¢æ§æã»ã€ã³ã¹ããŒã« äžèšã®æ§æã§ keycloak ã®æ§ç¯ãè¡ããŸããã ãã¹ãã¢ããªã¯ python OSïŒRHEL9 (AWS äž) keycloak ã®ããŒãžã§ã³ïŒ26.6.63 (æ€èšŒæç¹ã§ã®ææ°ããŒãžã§ã³) Java ã®ããŒãžã§ã³ïŒOpenJDK21 ãŸãã€ã³ã¹ããŒã«ã®æé ã«ã€ããŠã¯ãéå»ã®èšäº ( keycloak ã€ã³ã¹ããŒã«æã«ã€ãŸããã話 ) ã«ãŠã玹ä»ããŠããããããã¡ãã䜵ããŠèŠãŠããã ããã°ãšæããŸãã ç°¡åãªæé ãšããŠã¯ãäžèšã®éããšãªããŸãã Java é¢é£ããã±ãŒãž (openjdk ããã³ openjdk-devel) ãã€ã³ã¹ããŒã« https://www.keycloak.org/downloads ãã keycloak (tar.gz 圢åŒ) ãããŠã³ããŒã ããŠã³ããŒãããããã±ãŒãžããä»»æã®ãã£ã¬ã¯ããªé
äžã«å±é # tar -xvf keycloak-26.6.63.tar.gz -C bin/kc.sh bootstrap-admin user ã§ç®¡çè
ã¢ã«ãŠã³ãäœæ bin/kc.sh start-dev ãå®è¡ http://[ãã¹ãåããã㯠IP ã¢ãã¬ã¹]:8080/admin ãžã¢ã¯ã»ã¹ â»4 ã§äœæãããŠãŒã¶åãšãã¹ã¯ãŒãã§ãã°ã€ã³ ã¬ã«ã ã®äœæ Keycloak ã§ã¯ãã¬ã«ã ãšããåäœã§ãŠãŒã¶ãã¢ããªã±ãŒã·ã§ã³ã管çããŸãã ããã©ã«ãã§ã¯ master ãšããã¬ã«ã ããããŸãããä»åã¯ãã¹ãã¢ããªçšã«æ°ããã¬ã«ã ãäœæããŸãã ç»é¢å·ŠåŽãã Manager realms â Create realm ãæŒäžããŸãã Realm name ã«æ°ããäœæããã¬ã«ã åãå
¥åããCreate ãæŒäžããŸãã 1 ã®ç»é¢ã«æ»ããããä»äœæããã¬ã«ã ã远å ãããŠããããšã確èªããŸãã ãŠãŒã¶ã®äœæ æ°ããäœæãããã¬ã«ã ã«ã¯ãŠãŒã¶ãååšããŸããã ããã§ãæ°ãããŠãŒã¶ãäœæããŸãã ç»é¢å·ŠåŽãã Users â Create new user ãæŒäžããŸãã â»å·Šäžã® Current realm ããå
ã»ã©äœæããã¬ã«ã ã«ãªã£ãŠããã確èªããŠäžããã Username ãå
¥åããCreate ãæŒäžããŸãã ä¿åãå®äºããããäžèšã®æ§ãªç»é¢ã衚瀺ãããŸãã æ¬¡ã«ãCredentials ã¿ããæŒäžããŸãã Set password ãæŒäžããŸãã ãã¹ã¯ãŒããèšå®ããSave ãæŒäžããŸãã keycloak ã®èšå® (ã¯ã©ã€ã¢ã³ãã®äœæ) ãã¹ãã¢ããªçšã«æ°ããã¯ã©ã€ã¢ã³ããäœæããŸãã ç»é¢å·ŠåŽãã Clients â Create client ãæŒäžããŸãã â»å·Šäžã® Current realm ããå
ã»ã©äœæããã¬ã«ã ã«ãªã£ãŠããã確èªããŠäžããã Client IDãName (ä»»æ) ãå
¥åããNext ãæŒäžããŸãã Client Authentication ã ON ã«ããNext ãæŒäžããŸã (ãã¹ãã¢ããªã keycloak ã«å¯Ÿãã¯ã©ã€ã¢ã³ãèªèšŒãè¡ãããã«å¿
èŠãªèšå®ãšãªããŸã)ã Valid redirect URIsãWeb origins ãããããäžèšã®ããã«å
¥åããSave ãæŒäžããŸãã ã»Valid redirect URIs: http://xxx.xxx.xxx.xxx:5000/callback (èªèšŒæã®ãªãã€ã¬ã¯ãå
URL) ã»Web origins: http://xxx.xxx.xxx.xxx:5000 (keycloak ãžã®ãªã¯ãšã¹ããèš±å¯ãã URL) ä¿åãå®äºããããäžèšã®æ§ãªç»é¢ã衚瀺ãããŸãã ããããããã¹ãã¢ããªçšã®äœæ¥ã 次ã«ãCredentials ã¿ããæŒäžããŸãã Client Secret ã®å
容ãã³ããŒããŸãã ããã©ã«ãã§ã¯é衚瀺ãšãªã£ãŠãããããç®ã®ããŒã¯ãæŒäžããŠå
容ã衚瀺ããŸã (ã³ããŒããå
容ã¯ãåŸã»ã©ãã¹ãã¢ããªã§äœ¿çšããŸã)ã Credentials ãã¹ãçšã¢ã㪠(app.py) ã®äœæ app.py ãšãããã¡ã€ã«ãäœæããäžèšã®å
容ãèšè¿°ããŸãã â
è¡ããä»»æã®å
容ã«å€æŽããŠãã ããã from flask import Flask, url_for, session, redirect from authlib.integrations.flask_client import OAuth app = Flask(__name__) app.secret_key = 'random-secret-string' # --- èšå®é
ç® --- KEYCLOAK_IP = "xxx.xxx.xxx.xxx" â
IP ã¢ãã¬ã¹ CLIENT_ID = "testapp1" â
ã¢ããªã®åç§° CLIENT_SECRET = "xxxxxxxxxxxxxxxxxxxxxxx" â
ã³ããŒãã Client secret ã®å
容 REALM = "test realm1" â
äœæããã¬ã«ã å # ---------------- oauth = OAuth(app) keycloak = oauth.register( name='keycloak', client_id=CLIENT_ID, client_secret=CLIENT_SECRET, server_metadata_url=f'http://{KEYCLOAK_IP}:8080/realms/{REALM}/.well-known/openid-configuration', client_kwargs={'scope': 'openid profile email'}, ) @app.route('/') def index(): user = session.get('user') if user: return f'Hello, {user["name"]} !! ãã°ã¢ãŠã ' return 'ãã¹ãã¢ã㪠Keycloakã§ãã°ã€ã³ ' @app.route('/login') def login(): redirect_uri = url_for('auth', _external=True) return keycloak.authorize_redirect(redirect_uri) @app.route('/callback') def auth(): token = keycloak.authorize_access_token() session['user'] = token.get('userinfo') return redirect('/') @app.route('/logout') def logout(): session.pop('user', None) return redirect('/') if __name__ == '__main__': app.run(port=5000) åäœç¢ºèª ã¿ãŒããã«ã§ãäžèšã§äœæããã¢ããªãèµ·åããŸãã # python app.py * Serving Flask app 'app' * Debug mode: off WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Running on all addresses (0.0.0.0) * Running on http://127.0.0.1:5000 * Running on http://xxx.xxx.xxx.xxx:5000 Press CTRL+C to quit http://xxx.xxx.xxx.xxx:5000 ãšå
¥åãããšãäžèšã®ç»é¢ã衚瀺ãããŸãã â»xxx.xxx.xxx.xxx ã«ã¯ IP ã¢ãã¬ã¹çãå
¥åããŠãã ããã Username or emailãPassword ã«ãå
ã»ã©äœæãããŠãŒã¶ããã¹ã¯ãŒããããããå
¥åãã Sign In ãæŒäžããŸãã â»ååãã°ã€ã³æããã¹ã¯ãŒã倿Žã®ç»é¢ã衚瀺ãããŸãã ãã®åäœã¯ãŠãŒã¶äœææã®èšå®ã«ãã£ãŠç°ãªãå ŽåããããŸããããã®ç¹ã«ã€ããŠã®è©³çްã¯å¥ã®èšäºã§èª¬æãããŠããã ããŸãã åæ§ã«ããŠãŒã¶ã®ã¢ã«ãŠã³ãæ
å ±ãã¢ããããŒãããæšã®ç»é¢ã衚瀺ããããããEmailãFirst nameãLast name ãããããå
¥åããSubmit ãæŒäžããŸãã äžèšã®ãLogin success!ãã®ç»é¢ã衚瀺ãããã°ãèªèšŒæåã§ãïŒ ã芧ããã ãããããšãããããŸãïŒ ãã®æçš¿ã¯ã圹ã«ç«ã¡ãŸãããïŒ åœ¹ã«ç«ã£ã 圹ã«ç«ããªãã£ã 0人ããã®æçš¿ã¯åœ¹ã«ç«ã£ããšèšã£ãŠããŸãã The post Keycloak ãçšããç°¡å㪠SSO èªèšŒ first appeared on SIOS Tech Lab .
ä»å·ã§ã¯ Linux ã«ãããã¿ãŒããã«æäœã§ãéå»ã«å®è¡ããã³ãã³ãã®å±¥æŽã管çãã history ã³ãã³ãã®æŠèŠãåºæ¬çãªäœ¿ãæ¹ãããã³è¡šç€ºä»¶æ°ã®å¶éæ¹æ³ã«ã€ããŠç޹ä»ããŸãã 1. history ã³ãã³ãã®æŠèŠ history ã³ãã³ãã¯ããããŸã§ã«ã¿ãŒããã«ã§å
¥åã»å®è¡ããã³ãã³ãã®å±¥æŽãäžèЧã§è¡šç€ºããããåå©çšãããããããã®æ©èœã§ãã ãã®ã³ãã³ãã§ä»¥åå®è¡ããã³ãã³ãã®å
å®¹ãæ¯ãè¿ãããšãã§ããã»ããé·ãã³ãã³ããè€éãªã³ãã³ããå床ã¿ã€ãã³ã°ããããšãªããç°¡åãªæäœã§åŒã³åºããŠããäžåºŠå®è¡ããããšãã§ããŸãã 2. åºæ¬ã®äœ¿ãæ¹ å±¥æŽã®äžèŠ§è¡šç€º åŒæ°ãä»ããã« history ãšå
¥åããŠå®è¡ãããšãéå»ã®ã³ãã³ããå±¥æŽçªå·ãšãšãã«äžèЧã§è¡šç€ºãããŸãã $ history ... 1012 cat /var/log/httpd/access_log 1013 vi /etc/hosts 1014 systemctl restart httpd ã!ãã䜿çšããå±¥æŽã®åå®è¡ ã ! ãã«ç¶ããŠå±¥æŽçªå·ãæåãå
¥åããããšã§ãéå»ã®ã³ãã³ããåå
¥åããããšãªãå®è¡ã§ããŸãã ã»å±¥æŽçªå·ã§å®è¡ïŒ!nïŒ history ã³ãã³ãã§ç¢ºèªããå·ŠåŽã®çªå·ãæå®ããŸããå±¥æŽã«ããçªå· 1014 ã®ã³ãã³ããããäžåºŠå®è¡ãããå Žåã¯ã以äžã®ããã«å
¥åããŸãã $ !1014 systemctl restart httpd ã»å
é ã®æåã§å®è¡ïŒ!stringïŒ æå®ããæååããå§ãŸããçŽè¿ã®ã³ãã³ããæ€çŽ¢ããŠå®è¡ããŸãã $ !sys systemctl restart httpd ã»ç¹å®æååãå«ãå±¥æŽã®å®è¡ïŒ!?string[?]ïŒ ã³ãã³ãã®å
é ã«éãããæå®ããæååãå«ãã§ããçŽè¿ã®ã³ãã³ããæ€çŽ¢ããŠå®è¡ããŸãã $ !?restart? systemctl restart httpd grep ã³ãã³ãã«ããå±¥æŽã®çµã蟌㿠history ã³ãã³ãã®åºåã¯ä»¶æ°ãå€ããããç¹å®ã®ã³ãã³ããæ¢ãåºãéã¯ãåºåãçµã蟌ã grep ã³ãã³ã ãšãã€ãïŒ | ïŒãçµã¿åãããææ³ãåºãçšããããŸãã $ history | grep ssh 452 ssh user@192.168.1.10 512 ssh -i ~/.ssh/id_rsa admin@example.com 3. 衚瀺件æ°ã®å¶é historyã³ãã³ãã®æ«å°Ÿã«æ°å€ãæå®ããããšã§ãçŽè¿ã®æå®ä»¶æ°ã®ã¿ãåºåããããšãã§ããŸãã å±¥æŽã®å
šäœã衚瀺ããããšç¢ºèªãã¥ãããªããããçŽè¿æ°ä»¶ã®å±¥æŽã ããææ©ã確èªãããå Žåã«æå¹ãªæå®æ¹æ³ã§ãã $ history 3 1013 vi /etc/hosts 1014 systemctl restart httpd 1015 history 3 historyã³ãã³ãã®åºæ¬çãªä»æ§ãšä»¶æ°ã®å¶éæ¹æ³ãææ¡ããŠããããšã§ãéå»ã®æäœãå¹ççã«åå©çšããã¿ãŒããã«ã§ã®å
¥åã®æéãçãããšãå¯èœã«ãªããŸãã ã芧ããã ãããããšãããããŸãïŒ ãã®æçš¿ã¯ã圹ã«ç«ã¡ãŸãããïŒ åœ¹ã«ç«ã£ã 圹ã«ç«ããªãã£ã 0人ããã®æçš¿ã¯åœ¹ã«ç«ã£ããšèšã£ãŠããŸãã The post ç¥ã£ãŠãããšã¡ãã£ãšäŸ¿å©ïŒå±¥æŽã衚瀺ãã history ã³ãã³ã first appeared on SIOS Tech Lab .
ããã«ã¡ã¯ïŒ 仿ããOSSã®ãµããŒããšã³ãžãã¢ãæ°ã«ãªã£ãïŒOSSã®ææ°ãã¥ãŒã¹ãããå±ãããŸãã Linus Torvaldsæ°ã«ãã£ãŠææ°ã«ãŒãã«ãLinux 7.1ãã®å®å®çããªãªãŒã¹ãããŸããã Linux 7.1å®å®çãªãªãŒã¹ïŒæ°NTFSãã©ã€ãã®å®è£
ãšæ¬¡äžä»£Intelã»AMDããŒããŠã§ã¢åãæé©å https://xenospectrum.com/linux-7-1-stable-release-ntfs-performance/ The Linux Foundation Japanã«ããã2026幎æè¡ç³»äººæã®çŸç¶ã¬ããŒãããå
¬éãããŸããã 2026幎æè¡ç³»äººæã®çŸç¶ã¬ããŒãâãå
¬é https://www.linuxfoundation.org/ja-jp/news/japanese-version-of-2026-state-of-tech-talent-report-is-now-live ãšã³ã¿ãŒãã©ã€ãºLinux倧æã®SUSEãã7æã«æ±äº¬ã§ã«ã³ãã¡ã¬ã³ã¹ãéå¬ãããšçºè¡šããŸããã ãSUSE Summit 2026 Tokyo éå¬ã- AIæä»£ã®ããžã¿ã«ã¬ãžãªãšã³ã¹ãš ãªãŒãã³ãœãŒã¹æŠç¥ãè°è«ããïŒ https://prtimes.jp/main/html/rd/p/000000034.000062310.html ã芧ããã ãããããšãããããŸãïŒ ãã®æçš¿ã¯ã圹ã«ç«ã¡ãŸãããïŒ åœ¹ã«ç«ã£ã 圹ã«ç«ããªãã£ã 0人ããã®æçš¿ã¯åœ¹ã«ç«ã£ããšèšã£ãŠããŸãã The post ã2026幎6æãOSSãµããŒããšã³ãžãã¢ãæ°ã«ãªã£ãïŒOSSææ°ãã¥ãŒã¹ first appeared on SIOS Tech Lab .
ããã«ã¡ã¯ïŒæ®æ®µã¯Claude Codeé¢é£ã®ããã°ãããæžããŠããããšã³ãžãã¢ã®éŸã¡ããã§ãã 仿¥ã¯ãã€ããšå°ãè¶£åãå€ããŠããµããŒã€ã³ã¿ãŒã³ã®ãç¥ããããããŠãã ããã ãµããŒã€ã³ã¿ãŒã³ãšã¯ ä»åã®å¯Ÿè±¡ã¯ã 28åïŒ2028幎3æåïŒã»çç³»ã»ããã°ã©ãã³ã°çµéš1幎以äžã®åŠç ããã§ãã å¹³æ¥10æ¥éã®ããã«ãœã³åœ¢åŒã®ã€ã³ã¿ãŒã³ã§ãæçµŠ1,500åã亀éè²»ãšå®¿æ³è²»ã¯å
šé¡æ¯çµŠãšãªã£ãŠããŸããé æ¹ããã§ãåå ããããèšèšã«ãªã£ãŠããã®ããã€ã³ãã§ãã å®ã¯ã瀟å
ã®ã€ã³ã¿ãŒã³æ
åœã®æ¹ãããTech Lab. ã®ããã°ã§ãåç¥ããŠããããªãããªïŒããšçžè«ãåãããã§ãããã çŸåšã倧åŠçµç±ã§ãåå è
ãéããŠããã®ã§ãããããå°ã仲éãå¢ãããšãããããªããšããç¶æ³ã®ããã§ãã ããã§ããã åéããŒãžã®ãªã³ã¯ã貌ãã®ã§ã¯ãªããçŸå Žã§ã³ãŒããæžããŠãããšã³ãžãã¢ã®ç®ç·ããããããè¯ããšæãããšãããã€ã³ããæ£çŽã«ãäŒãããã»ããäŒãããšæãããã®èšäºãæžããŠããŸãã æè¿ãæ¡çšé¢æ¥ãå
¥ã£ãŠããã°ããã®æ°å瀟å¡ãšè©±ãæ©äŒãããããã®ã§ãããçããåŠçã®é ã®èªåããã¯ããã«èœåçã§ãé©ããããããšãå€ãã§ããå
åŠçãšããŠæãã®ã§ããã就掻ã£ãŠã©ãããŠãäŒæ¥ãšåŠçããäºããé ç®ã«æ¢ãåãæãã«ãªããã¡ã§ãããã ãèªåã«äœãè¶³ããªãã®ãããäŒæ¥ãªãã§ã¯ã®èŠç¹ãããã®äŒç€Ÿãèªåã«åãã®ãããšãã£ãããšã¯ãå€ããçºããŠããã ãã§ã¯ãªããªãæŽããŸããã ãã®ç¹ãã€ã³ã¿ãŒã³ã¯äžåºŠäžã«å
¥ã£ãŠããŸãã°äŒç€Ÿã®é°å²æ°ãèã§æããããšãã§ããŸãã å€ããæ¢ãåãããããã£ãœã©æã£åãæ©ããŠè¯ãçµéšã«ãªããšæã£ãŠããŸããã ããããããã€ãããã°ãèªãã§ãããŠããåŠçããã«ãã²å±ããŠã»ããã§ãã ã©ããªã€ã³ã¿ãŒã³ïŒ æ£åŒå称㯠ãITãšã³ãžãã¢ã®ä»äºããããïŒã¢ã€ãã¢ã圢ã«ãã10daysã€ã³ã¿ãŒã³ã·ããã ã§ãã ãã®åã®éããå¹³æ¥10æ¥éãããã«ãœã³åœ¢åŒã§æãåãããªããäŒç€Ÿã®ããšãç¥ããæ§æã«ãªã£ãŠããŸãã äžèº«ãæŽçãããšãããªæãã§ãã ããã°ã©ã å
容ãã£ããèšããšããã«ãœã³åœ¢åŒã®äŒç»éçºããŒã ã§äŒç»ããæãåãããŠéçºããŸããã€ã³ã¿ãŒã³ã®ã¡ã€ã³ã§ãã â¢ äºæ¥çŽ¹ä» ãµã€ãªã¹ãã©ã®ãããªããžãã¹ãå±éããŠããäŒç€Ÿãªã®ããç¥ãããšãã§ããŸãã ⢠AI掻çšååŒ·äŒ éçºçŸå Žã§çæAIãã©ã掻çšããŠããããç§ãçŸåšç€Ÿå
ã§æ
åœããŠããé åã§ããè¥æãšã³ãžãã¢åº§è«äŒå¹Žæ¬¡ã®è¿ãå
茩ã«ãå
¥ç€Ÿåã®ãªã¢ã«ãªè©±ãèãããšãã§ããŸãã ⢠ããã©ã³ãšã³ãžãã¢ããã®ãã£ãŒããã㯠äœã£ãææç©ã«å¯ŸããŠãçŸåœ¹ã®ããã©ã³ãšã³ãžãã¢ããã³ã¡ã³ããããããŸãã çŸå Žã®äººéããèŠãŠãããããããšæãã ããã°ã©ã ã®å
šéšãè¯ãã®ã§ãããçŸå Žç®ç·ã§ç¹ã«é
åçã«æãããã€ã³ãã3ã€ã ã玹ä»ããŸãã ⢠ããã©ã³ãšã³ãžãã¢ããã®ãã£ãŒããã㯠èªåã®äœã£ããã®ã«å¯ŸããŠãçµéšè±å¯ãªãšã³ãžãã¢ããå
·äœçãªææãå
¥ãç°å¢ã¯ãç¬åŠã ãšãªããªãäœããŸããããã£ããã®æ©äŒãªã®ã§ãæ®æ®µæ°ã«ãªã£ãŠããããšãè¡ãè©°ãŸããã¡ãªãã€ã³ãããããã©ã³ã«ååã«ã¶ã€ããŠã¿ãŠã»ãããªãšæããŸãã ⢠AI掻çšååŒ·äŒ æåå³åã«ãªããŸãããç§ããŸãã«ç€Ÿå
ã§çæAIã®æŽ»çšãæšé²ããŠããç«å Žã§ããçŸåšã®éçºçŸå Žã§AIãã©ã䜿ã£ãŠããããçã§èŠãããæ©äŒã¯ãŸã å°ãªããšæãã®ã§ãèå³ãããæ¹ã«ã¯é¢çœãå
容ã«ãªãã¯ãã§ãã â¢ è¥æãšã³ãžãã¢åº§è«äŒ äŒç€Ÿã«å
¥ãåã«ãäžã®æž©åºŠæããç¥ãã®ãäžçªé£ãããšããã§ãã幎次ã®è¿ãå
茩ã«çŽæ¥è³ªåã§ããå Žã¯ãæ±äººç¥šãäœåºŠãèªããããåèã«ãªããŸãããå
¥ç€Ÿåã®ãªã¢ã«ããèããã®ã¯ãããªã貎éãªæéã ãšæããŸãã é嬿ŠèŠ æ¥çšãåŸ
éãªã©ã®è©³çްã¯ä»¥äžã®éãã§ãã æ¥çš 第1æã 2026幎7æ27æ¥(æ)ã8æ7æ¥(é) 第2æã 2026幎8æ17æ¥(æ)ã8æ28æ¥(é) å°±æ¥æé å¹³æ¥ 10:00ã17:00ïŒäŒæ© 12:00ã13:00ïŒ éå¬åœ¢åŒ ãªã¢ãŒã / åºç€Ÿã®ãã€ããªããïŒåæ¥ãšæçµæ¥ã¯åºç€Ÿäºå®ïŒ åŸ
é æçµŠ1,500åã亀éè²»ã»å®¿æ³è²»ã¯å
šé¡æ¯çµŠ 察象 2028幎3æåæ¥äºå®ã®æ¹ïŒçç³»åŠéšãæ
å ±ç³»ã ãšãªãè¯ããããã°ã©ãã³ã°çµéš1幎以äžïŒ 宿æ³è²»ãæ¯çµŠããããããé æ¹ã«ãäœãŸãã®æ¹ãåå ããããç°å¢ã«ãªã£ãŠããŸãã å¿åã¯ãã¡ããã ãšããããšã§ããµã€ãªã¹ãã¯ãããžãŒã®28åãµããŒã€ã³ã¿ãŒã³ã®åç¥ã§ããã äŒç€Ÿãžã®çè§£ãæ·±ãã€ã€ãå®éã«æãåãããŠã¹ãã«ã磚ããå€ã«ãªããšæããŸãã å°ãã§ãæ°ã«ãªã£ããããã²è©³çްããŒãžãèŠããŠã¿ãŠãã ããããå¿åããåŸ
ã¡ããŠããŸãïŒ âŒ è©³çŽ°ã¯ãã¡ãïŒããã°ã©ã ãåŸ
éã®ãã«ããŒãžã§ã³ïŒ https://sios.jp/recruit/info/fresh.html ⌠ãšã³ããªãŒã¯ãã¡ãã®ãã©ãŒã ãã https://forms.gle/kZqik2pbzDZPNeUn7 ãã«ãžã¥ã¢ã«é¢è«ã®ãæ¡å
ã ããããªãå¿åããã®ã¯å°ãããŒãã«ãé«ããã察象ã«åœãŠã¯ãŸããäžå®ããšããæ¹ã«ã¯ãã€ã³ã¿ãŒã³ãšã¯å¥ã«ããšã³ãžãã¢ãšæ°è»œã«è©±ããã«ãžã¥ã¢ã«é¢è«ïŒãªã³ã©ã€ã³ã»30åååŸïŒããçšæããŠããŸããçŸå Žã®ç€Ÿå¡ã«çŽæ¥èããŠã¿ããããšãããæ¹ã¯ããã²ãã¡ããããç³ã蟌ã¿ãã ããã ⌠ã«ãžã¥ã¢ã«é¢è«ã®ç³èŸŒã¯ãã¡ã https://mk.sios.jp/casualvisit_entry.html ããã§ã¯ããŸã次åã®èšäºã§ãäŒãããŸãããïŒ The post çŸå Žãšã³ãžãã¢ããå§ãããããµã€ãªã¹ã®28åãµããŒã€ã³ã¿ãŒã³ first appeared on SIOS Tech Lab .