ããæ°å¹Žãç§ã¯ããã¥ã¡ã³ããŒã·ã§ã³ã«ãã£ãšé¢ããããã«ãªããŸããã ç¹å®ã®ã·ã¹ãã ãã©ã®ããã«åäœãããã«ã€ããŠã®èª¬ææãæžãã®ã¯ãäžè¬ã«éåžžã«ç°¡åã§ãã ãã¹ãŠã®äž»èŠãªãªããžã§ã¯ããšãããã®ãªããžã§ã¯ãéã®æ¥ç¶ã衚瀺ããå³ãæãããšãéåžžã«ç°¡åã§ãã
ããããæãåé¡ãšãªãã®ã¯ããã®ããã¥ã¡ã³ããææ°ã®ç¶æ ã«ä¿ã€ããšã§ãã ãããŠãããã¹ãã¯å€§äžå€«ã§ãããå³ã¯...ãªããªã... ãã¹ãŠã®ããã¥ã¡ã³ãã¯ãªã³ã©ã€ã³ã§ããã€ãŸãã HTML 圢åŒã®å Žåãããã¹ãã«ã¯å®éã«å³ã瀺ã gif/jpeg/png ç»åãä»ããŠããŸãã ãŸããå³ã¯ Visio ãdraw.io ãªã©ã®ãªã³ã©ã€ã³ ãµãŒãã¹ãªã©ã®ããŸããŸãªããã°ã©ã ã§æç»ãããŸãã 次ã«ãå³ãã°ã©ãã£ãã¯åœ¢åŒã«ãšã¯ã¹ããŒãããHTML ã«æ·»ä»ããŸãã ããã¯ç°¡åã§ãã
äœãåé¡ãªã®ïŒ
éåžžãã¹ããŒã ã¯åçŽã§ãã ããæ£ç¢ºã«èšãã°ãããã»ã©è€éã§ã¯ãããŸããã ã¯ãããªããžã§ã¯ãã®æ°ã¯ XNUMX ïœ XNUMX åã§ãããæ¥ç¶ã®æ°ã¯ã»ãŒåãã§ãã ããã«çœ²åãšããã€ãã®æå®ã åçŽãªèšç»ã¯èšèã§èª¬æã§ããŸãããè€éãããèšç»ã¯ããŸã... (c) ã圌ãã¯ç解ã§ããªãã§ããããå
çãã å€ãã®ã¹ããŒã ãããããããã«å®æçãäžæçã«å€æŽãå ããå¿
èŠããããŸãã åžžã«ããªããªã圌ãã¯ç§ãã¡ã®è£œåã®éçºããã©ããŒããŠããŸãã
ãµãŒãã¹ã®HTMLãåã蟌ãããšãã§ããŸãã è©ŠããŠã¿ãŸãããïŒ
ã¯ãã確ãã«ã ããšãã°ãç§ã¯ giffy.com ã®ã°ã©ãã£ãã¯ã奜ãã§ãã ãã ããå€æŽãå ããã«ã¯ããµãŒãããŒãã£ã®ãµãŒãã¹ã«ã¢ã¯ã»ã¹ããŠãããã§ç·šéããå¿ èŠããããŸãã ãããŠãä¿®æ£ãååã«å§ä»»ããã®ã¯ããã«å°é£ã§ãã
äœãããŸããïŒ
æè¿ãæšå¥šäºé
㧠Github ã®ãªããžããªãèŠã€ããŸããã
ã¡ãªã¿ã«ãç§ã¯ããã¥ã¡ã³ãããã¹ãŠ HTML ã§æžããŠããããã§ã¯ãããŸããã éåžžãããã¥ã¡ã³ãã¯ããŒã¯ããŠã³ ããã¹ããå«ãäžé£ã®ãã¡ã€ã«ã§ãããWintersmith ãªã©ã®ãšã³ãžã³ã«ãã£ãŠæ¬æ Œçãªããã¥ã¡ã³ã ãµã€ãã«å€æãããŸãã ãããã¯ãŠã£ãã·ã¹ãã ã
ããã¯éåžžã«äŸ¿å©ã§ããããšãããããŸãããããã¹ããèšè¿°ããåŸãscript ã¿ã°ãéãããã®äžã«ã¹ããŒã ã® JS ã³ãŒããèšè¿°ãããŸãã
ãŸãäœãæªãã®ã§ããïŒ
ç§ã¯ãã®ãªããžããªãæ°ã«å ¥ããŸããããã³ãŒããŸãã¯ããã¹ãè¡šçŸã䜿çšããŠå³ãæç»ãããäŸã¯ããã ãã§ã¯ãããŸããã (èšäºã®æåŸã«ã¯ããããã¯å³ãã³ãŒããšã㊠Google æ€çŽ¢ãããããžã§ã¯ããšèšäºãžã®ãªã³ã¯ããããŸãã)
ããã¥ã¡ã³ããç·šéããŠããã®ã¯ç§ã ãã§ã¯ãããŸããã ååãæã ãåèªãä¿®æ£ãããã説æãå€æŽããããæ°ããåçãæ¿å ¥ãããããŠè²¢ç®ããŸãã
ãããã£ãŠãé·ãåŠç¿æ²ç·ãå¿ èŠãšããã«ãèªã¿ãããç解ã§ããããã¹ã圢åŒã§å³ã衚瀺ããããšèããŠããŸãã ãŸããå Žæã«ãã£ãŠã¯ãã³ããŒïŒããŒã¹ãããã ãã§æ°ããåè·¯ã®è¿œå ãé«éåããããšãã§ããŸãã
ãŸããå¥ã®ååã¯ãã³ãŒãã¯ãã¡ããè¯ããã®ã§ãããæ§é ã䜿çšãããšããã¹ãŠãéåžžã«å³å¯ã§è¡šçŸåè±ãã«ãªãå¯èœæ§ããããšææããŸããã
ãããã£ãŠãç§ã¯å³ããããŒããæ¥ç¶ãããŒãã®ã°ã«ãŒããããã³ããŒââãã®äœçœ®ãèšè¿°ããããã€ãã®å°ããªé åã®ã»ãããšããŠæ³åããããšããŸããã ç§ã®è¬èãªæèŠã§ã¯ãããã¯éåžžã«äŸ¿å©ã§ããããšãããããŸãããããã¡ããå³ãšè²ã¯...
ããã¯ã©ã®ããã«ããŠé åå ã®ã°ã©ãã«ãªãã®ã§ãããã?
- åããŒãã¯ãããŒããäžæã«èå¥ããèå¥åã«ãã£ãŠèšè¿°ãããŸãã
- ããŒãã«ã¢ã€ã³ã³ãè¿œå ããããç¢æãè¿œå ãããããããšãã§ããŸãã
- XNUMX ã€ã®ããŒãéã®é¢ä¿ãæå®ã§ããŸãã
- å³äžã§ã®ã³ãã¥ãã±ãŒã·ã§ã³ã¯ãè²ãè¡šèšãèšå®ã§ããŸãã
- éä¿¡ã®æ¹åã¯ããœãŒã¹ããã¿ãŒã²ãããžãšããŠå®çŸ©ãããŸãã ãããŠããœãŒã¹ãšã¿ãŒã²ããã¯ããŒãèå¥åã«ãã£ãŠç€ºãããŸãã
- XNUMX ã€ä»¥äžã®ããŒããã°ã«ãŒãã«è¿œå ã§ããŸãã
- ã°ã«ãŒãããã®é¢ä¿ãšã°ã«ãŒããžã®é¢ä¿ã®äž¡æ¹ãæå®ããããšãã§ããŸãã
ãããã®åçŽãªã«ãŒã«ã䜿çšãããšã次ã®å³ãåŸãããŸãã ãã ïŒ ãšãŠãã
ãããŠä»¥äžã®jsã³ãŒãã§èšè¿°ããŸãã ããã§éèŠãªã®ã¯èŠçŽ ãªããžã§ã¯ãã§ãã ã©ã®ããŒãã瀺ãããŠããã - ããŒãããšããž - æ¥ç¶ã
const elements = {
nodes: [ // ПпОÑÑваеЌ ÑзлÑ
{ id: 'client', type: 'smartphone', label: 'Mobile App'},
{ id: 'server', type: 'server', label: 'Main Server'},
{ id: 'db1', type: 'database', label: 'DB 1'},
{ id: 'db2', type: 'database', label: 'DB 2'},
],
edges: [ // ÑказÑваеЌ ÑвÑзО
{ source: 'client', target: 'server', label: 'request' },
{ source: 'server', target: 'db1', label: 'request' },
{ source: 'server', target: 'db2', label: 'request' },
],
};
Diagram('scheme1', elements);
ãã¡ããåè·¯å³ã¯èªåã§èããããã§ã¯ãªããã©ã€ãã©ãªã䜿çšããŸããã
ããã¯ç°¡åãªäŸã§ãã ãã£ãšè€éã«ããããšã¯ã§ããŸãã?
ã¯ãããé¡ãããŸãã äœçœ®ã瀺ãã«ã¯ãposition ã䜿çšããã°ã«ãŒãã瀺ãã«ã¯ãã°ã«ãŒãå ã®ã°ã«ãŒãã®ãªã¹ãã瀺ããŸããèŠçŽ èªäœã¯ã°ã«ãŒãå±æ§ãæã¡ãŸãã
ãããŠãããã³ãŒãã§ã:
<div id="scheme5" style="height:500px;width:800px;"></div>
<script>
const elements5 = {
groups: [
{ id: 'g1', label: 'ÐÑÑппа ÑеÑвОÑПв 1'},
{ id: 'g2', label: 'ÐÑÑппа ÑеÑвОÑПв 2'},
],
nodes: [
{ id: 'man1', type: 'person', label: 'ЧелПвек'},
{ id: 'client', type: 'smartphone', label: 'СЌаÑÑÑПМ'},
{ id: 'agent-backend', type: 'server', group: 'g1', label: 'agent-backend'},
{ id: 'web', type: 'server', group: 'g1', label: 'ÐÑОлПжеМОе admin'},
{ id: 'www', type: 'server', group: 'g1', label: 'ÑÑÑаМОÑа загÑÑзкО'},
{ id: 'mongodb1', type: 'database', group: 'g1', label: 'Mongo DB 1'},
{ id: 'mongodb2', type: 'database', group: 'g1', label: 'Mongo DB 2'},
{ id: 'runner-integration1', type: 'worker', group: 'g1', label: 'ПÑпÑавка'},
{ id: 'runner-integration2', type: 'worker', group: 'g1', label: 'ПÑпÑавка'},
{ id: 'api', type: 'server', group: 'g1', label: 'API'},
{ id: 'server2', type: 'server', group:'g2', label: 'ÑеÑвеÑ'},
{ id: 'otherServer', type: 'server', group:'g2', label: 'ÑеÑвеÑ'},
{ id: 'firebase', type: 'cloud', label: 'Google Firebase'},
],
edges: [
{ source: 'client', target: 'agent-backend', label: 'json', color: 'red' },
{ source: 'agent-backend', target: 'mongodb1', color: 'red' },
{ source: 'agent-backend', target: 'mongodb2', color: 'red' },
{ source: 'mongodb1', target: 'runner-integration1', label: 'ЎаММÑе' },
{ source: 'mongodb2', target: 'runner-integration2', label: 'ЎаММÑе' },
{ source: 'mongodb1', target: 'web', label: 'ЎаММÑе ÐŽÐ»Ñ ÐŸÑПбÑажеМОÑ' },
{ source: 'runner-integration1', target: 'server2', label: 'ЎаММÑе' },
{ source: 'runner-integration2', target: 'otherServer', label: 'ЎаММÑе' },
{ source: 'api', target: 'firebase', label: 'запÑПÑÑ', color: 'blue', },
{ source: 'firebase', target: 'client', label: 'push', color: 'blue'},
{ source: 'server2', target: 'api', label: 'ÑвеЎПЌлеМОÑ', color: 'blue'},
{ source: 'man1', target: 'client', },
],
positions: [
{ id: 'client', row: 2, col: 1,},
{ id: 'agent-backend', row: 2, col: 3,},
{ id: 'web', row: 6, col: 3,},
{ id: 'www', row: 1, col: 3,},
{ id: 'mongodb1', row: 1, col: 4,},
{ id: 'mongodb2', row: 2, col: 5,},
{ id: 'runner-integration1', row: 3, col: 3,},
{ id: 'runner-integration2', row: 4, col: 3,},
{ id: 'api', row: 5, col: 3,},
{ id: 'server2', row: 6, col: 7,},
{ id: 'otherServer', row: 4, col: 7,},
{ id: 'firebase', row: 5, col: 1,},
{ id: 'logger', row: 2, col: 7,},
{ id: 'crm', row: 5, col: 8,},
],
};
Diagram('scheme5', elements5, {layout: 'grid'});
</script>
äžæ¹ã§ã¯ããã®ãããªã¹ããŒã ã¯ã©ãããããäžã§ã»ãŒæ°ç»é¢ã®ã³ãŒãã«çžåœããŸãããä»æ¹ã§ã¯ãjson ã®æ§é ã«ããããã¹ãŠã®ããŒã¿ãé¡æšããŠçŽ æ©ãå ¥åã§ããã³ããŒã¢ã³ãããŒã¹ãããããšãã§ããŸãã
ããžã·ã§ã³ãããŒããšã¯å¥ã«é 眮ãããã®ã¯ãªãã§ãã?
ããå¿«é©ã§ãã ãŸãããŒããæå®ããŸãã 次ã«ãããã€ãã®ã°ã«ãŒããæå®ããããããããŒãã§ç€ºãããšãã§ããŸãã 次ã«æ¥ç¶ãæå®ããŸãã ãããŠãäž»èŠãªãªããžã§ã¯ããšãããã®éã®æ¥ç¶ãååšããå Žåã«ã®ã¿ãå³äžã§ãããã®ãªããžã§ã¯ãã®äœçœ®ãååŸããŸãã ãããã¯ãã®éãåæ§ã§ãã
ããžã·ã§ã³ãªãã§ãå¯èœã§ããïŒ
ããžã·ã§ã³ããªããŠãå¯èœã§ãã ãã ããå°ãããããããã«ãªããŸãããã®ãªãã·ã§ã³ã¯äŸã§ç¢ºèªã§ããŸãã ããã¯ãcytoscape ã®ããŒãã®äœçœ®ã決å®ããã¢ã«ãŽãªãºã ãããããã§ãã
æŠèŠã¹ã¿ã€ã«ã§ãäœçœ®ãæå®ã§ããŸãã ãããã®ã 1 ã€ã®ããŒã㯠a5 ã«ããããã XNUMX ã€ã¯ dXNUMX ã«ãããŸãã cytoscape ããã£ã³ãã¹äžã®ãªããžã§ã¯ãã移åå¯èœã«ããã®ã¯ç¹ã«åœ¹ç«ã¡ãŸãã ãããã移åããããããŸããŸãªã¬ã€ã¢ãŠã ãªãã·ã§ã³ã確èªããããã³ãŒãå ã§æ°ã«å ¥ã£ãèŠçŽ ã®é 眮ãä¿®æ£ãããã§ããŸãã
äžè¬çã«ã¯ç解ã§ããŸãã ããªããè©ŠããŠã¿ãŸãããïŒ
ãã¡ãããããã«åè·¯ãäœæããããã«ãèªåèªèº«ãå°ããªãã®ã«ããŸãã
è©ŠããŠã¿ãŸãããïŒ ããã§ããŒãžã«è¿œå ã§ããããã«ãªããŸããã
ãããããŸãïŒ
1. ã¹ã¯ãªããã®æ¥ç¶
<script src="https://unpkg.com/@antirek/[email protected]/dist/code-full.min.js"></script>
2. HTMLã«ã³ãŒããè¿œå ãã
<div id="scheme1" style="height:300px;width:800px;"></div>
<script>
const elements = {
nodes: [
{ id: 'client', type: 'smartphone', label: 'Mobile App'},
{ id: 'server', type: 'server', label: 'Main Server'},
{ id: 'db1', type: 'database', label: 'DB 1'},
{ id: 'db2', type: 'database', label: 'DB 2'},
],
edges: [
{ source: 'client', target: 'server', label: 'request' },
{ source: 'server', target: 'db1', label: 'request' },
{ source: 'server', target: 'db2', label: 'request' },
],
};
Diagram('scheme1', elements);
</script>
3. å¿ èŠãªå³ã«åãããŠã³ãŒããç·šéããŸã (ãã¯ããŠãæããããç°¡åã ãšæããŸã:)
詳现ã«ã€ããŠã¯ã
ãã®çµæã¯ïŒ
ããã¥ã¡ã³ãã«ã€ã³ã©ã€ã³å³ãè¿œå ãããšããç®æšã¯éæã§ããŸããã圢åŒã¯éåžžã«ã·ã³ãã«ã§ç解ãããããã®ã§ãã ã¹ãŒããŒåè·¯ã«ã¯é©ããŠããŸããããæ¥ç¶ã®æ§é ã説æããå°ããªåè·¯ã«ã¯ãŸã£ããåé¡ãããŸããã ãã€ã§ãããã«èª¿æŽããããæéããããŠå€æŽãããã§ããŸãã ã¯ããååã¯ããã¯å ã®äœããå°ãªããšããªããžã§ã¯ãã®ãã£ãã·ã§ã³ãç¹å¥ãªèšç·Žãªãã§èªåã§ä¿®æ£ã§ããŸã))
äœãæ¹åã§ããŸããïŒ
ãã¡ãããããã«ã¯å€ãã®ãªãã·ã§ã³ããããŸãã è¿œå ã®ã¢ã€ã³ã³ãè¿œå ããŸã (æ¢åã®ã¢ã€ã³ã³ã¯ãã¹ãŠã¹ã¯ãªããã«ã€ã³ã©ã€ã³ã§è¿œå ãããŸã)ã ããè¡šçŸåè±ããªã¢ã€ã³ã³ã®ã»ãããéžæããŠãã ããã æ¥ç¶ç·ã®ã¹ã¿ã€ã«ãæå®ã§ããããã«ããŸããã èæ¯ç»åãè¿œå ããŸãã
ã©ãæããŸããïŒ
ãã§ã«èª²é¡ã«å®è£
ããããã®ã¢ã€ãã¢ãããã€ããããŸããã³ã¡ã³ãã«ã¢ã€ãã¢ãè¿œå ããããšãã§ããŸãã
ç§ã®è§£æ±ºçã¯ééããªãçãç¯å²ã®åé¡ã«é©çšã§ããŸããããããããã³ãŒããšããŠå³ãèŠããŠãã ããããšèšãããããã«ãåã«ã³ãŒãã£ã³ã°ããã ãã§å³ãæç»ããããã®ãã䟿å©ãªããŒã«ãèŠã€ããã§ãããã
è¯ãéžæ çŽ æŽããããµãŒãã¹ (9çš®é¡ã®ãã£ãŒããªã³ã©ã€ã³ãšãã£ã¿ãŒ)ãã¡ãããmermaid.js - éåžžã«è©³çŽ°ã§è€éãªå³ã奜ããªããééããªããã®ãããžã§ã¯ããè³è³ããã§ãããã
go.drawthe.net
åºæïŒ habr.com