Last active
July 10, 2022 14:05
-
-
Save junkor-1011/a08d3b4582b82c7b784ec0c58bd8c876 to your computer and use it in GitHub Desktop.
LT用資料(mermaid.js紹介)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<title>Title</title> | |
<meta charset="utf-8"> | |
<style> | |
@page { | |
size: 1210px 681px; | |
margin: 0; | |
} | |
@media print { | |
.remark-slide-scaler { | |
width: 100% !important; | |
height: 100% !important; | |
transform: scale(1) !important; | |
top: 0 !important; | |
left: 0 !important; | |
} | |
} | |
body { font-family: sans-serif; } | |
h1, h2, h3 { | |
font-weight: normal; | |
} | |
.remark-code, .remark-inline-code { font-family: 'Ubuntu Mono'; } | |
</style> | |
</head> | |
<body> | |
<textarea id="source"> | |
class: center, middle | |
# Title | |
--- | |
# Agenda | |
1. Introduction | |
2. Deep-dive | |
3. ... | |
--- | |
# Introduction | |
</textarea> | |
<script src="https://remarkjs.com/downloads/remark-latest.min.js"> | |
</script> | |
<script> | |
var slideshow = remark.create({ | |
sourceUrl: 'slides.md', | |
}); | |
</script> | |
</body> | |
</html> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<title>mermaid.md</title> | |
<meta http-equiv="Content-type" content="text/html;charset=UTF-8"> | |
<style> | |
/* https://github.com/microsoft/vscode/blob/master/extensions/markdown-language-features/media/markdown.css */ | |
/*--------------------------------------------------------------------------------------------- | |
* Copyright (c) Microsoft Corporation. All rights reserved. | |
* Licensed under the MIT License. See License.txt in the project root for license information. | |
*--------------------------------------------------------------------------------------------*/ | |
body { | |
font-family: var(--vscode-markdown-font-family, -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "Ubuntu", "Droid Sans", sans-serif); | |
font-size: var(--vscode-markdown-font-size, 14px); | |
padding: 0 26px; | |
line-height: var(--vscode-markdown-line-height, 22px); | |
word-wrap: break-word; | |
} | |
#code-csp-warning { | |
position: fixed; | |
top: 0; | |
right: 0; | |
color: white; | |
margin: 16px; | |
text-align: center; | |
font-size: 12px; | |
font-family: sans-serif; | |
background-color:#444444; | |
cursor: pointer; | |
padding: 6px; | |
box-shadow: 1px 1px 1px rgba(0,0,0,.25); | |
} | |
#code-csp-warning:hover { | |
text-decoration: none; | |
background-color:#007acc; | |
box-shadow: 2px 2px 2px rgba(0,0,0,.25); | |
} | |
body.scrollBeyondLastLine { | |
margin-bottom: calc(100vh - 22px); | |
} | |
body.showEditorSelection .code-line { | |
position: relative; | |
} | |
body.showEditorSelection .code-active-line:before, | |
body.showEditorSelection .code-line:hover:before { | |
content: ""; | |
display: block; | |
position: absolute; | |
top: 0; | |
left: -12px; | |
height: 100%; | |
} | |
body.showEditorSelection li.code-active-line:before, | |
body.showEditorSelection li.code-line:hover:before { | |
left: -30px; | |
} | |
.vscode-light.showEditorSelection .code-active-line:before { | |
border-left: 3px solid rgba(0, 0, 0, 0.15); | |
} | |
.vscode-light.showEditorSelection .code-line:hover:before { | |
border-left: 3px solid rgba(0, 0, 0, 0.40); | |
} | |
.vscode-light.showEditorSelection .code-line .code-line:hover:before { | |
border-left: none; | |
} | |
.vscode-dark.showEditorSelection .code-active-line:before { | |
border-left: 3px solid rgba(255, 255, 255, 0.4); | |
} | |
.vscode-dark.showEditorSelection .code-line:hover:before { | |
border-left: 3px solid rgba(255, 255, 255, 0.60); | |
} | |
.vscode-dark.showEditorSelection .code-line .code-line:hover:before { | |
border-left: none; | |
} | |
.vscode-high-contrast.showEditorSelection .code-active-line:before { | |
border-left: 3px solid rgba(255, 160, 0, 0.7); | |
} | |
.vscode-high-contrast.showEditorSelection .code-line:hover:before { | |
border-left: 3px solid rgba(255, 160, 0, 1); | |
} | |
.vscode-high-contrast.showEditorSelection .code-line .code-line:hover:before { | |
border-left: none; | |
} | |
img { | |
max-width: 100%; | |
max-height: 100%; | |
} | |
a { | |
text-decoration: none; | |
} | |
a:hover { | |
text-decoration: underline; | |
} | |
a:focus, | |
input:focus, | |
select:focus, | |
textarea:focus { | |
outline: 1px solid -webkit-focus-ring-color; | |
outline-offset: -1px; | |
} | |
hr { | |
border: 0; | |
height: 2px; | |
border-bottom: 2px solid; | |
} | |
h1 { | |
padding-bottom: 0.3em; | |
line-height: 1.2; | |
border-bottom-width: 1px; | |
border-bottom-style: solid; | |
} | |
h1, h2, h3 { | |
font-weight: normal; | |
} | |
table { | |
border-collapse: collapse; | |
} | |
table > thead > tr > th { | |
text-align: left; | |
border-bottom: 1px solid; | |
} | |
table > thead > tr > th, | |
table > thead > tr > td, | |
table > tbody > tr > th, | |
table > tbody > tr > td { | |
padding: 5px 10px; | |
} | |
table > tbody > tr + tr > td { | |
border-top: 1px solid; | |
} | |
blockquote { | |
margin: 0 7px 0 5px; | |
padding: 0 16px 0 10px; | |
border-left-width: 5px; | |
border-left-style: solid; | |
} | |
code { | |
font-family: Menlo, Monaco, Consolas, "Droid Sans Mono", "Courier New", monospace, "Droid Sans Fallback"; | |
font-size: 1em; | |
line-height: 1.357em; | |
} | |
body.wordWrap pre { | |
white-space: pre-wrap; | |
} | |
pre:not(.hljs), | |
pre.hljs code > div { | |
padding: 16px; | |
border-radius: 3px; | |
overflow: auto; | |
} | |
pre code { | |
color: var(--vscode-editor-foreground); | |
tab-size: 4; | |
} | |
/** Theming */ | |
.vscode-light pre { | |
background-color: rgba(220, 220, 220, 0.4); | |
} | |
.vscode-dark pre { | |
background-color: rgba(10, 10, 10, 0.4); | |
} | |
.vscode-high-contrast pre { | |
background-color: rgb(0, 0, 0); | |
} | |
.vscode-high-contrast h1 { | |
border-color: rgb(0, 0, 0); | |
} | |
.vscode-light table > thead > tr > th { | |
border-color: rgba(0, 0, 0, 0.69); | |
} | |
.vscode-dark table > thead > tr > th { | |
border-color: rgba(255, 255, 255, 0.69); | |
} | |
.vscode-light h1, | |
.vscode-light hr, | |
.vscode-light table > tbody > tr + tr > td { | |
border-color: rgba(0, 0, 0, 0.18); | |
} | |
.vscode-dark h1, | |
.vscode-dark hr, | |
.vscode-dark table > tbody > tr + tr > td { | |
border-color: rgba(255, 255, 255, 0.18); | |
} | |
</style> | |
<style> | |
/* Tomorrow Theme */ | |
/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ | |
/* Original theme - https://github.com/chriskempson/tomorrow-theme */ | |
/* Tomorrow Comment */ | |
.hljs-comment, | |
.hljs-quote { | |
color: #8e908c; | |
} | |
/* Tomorrow Red */ | |
.hljs-variable, | |
.hljs-template-variable, | |
.hljs-tag, | |
.hljs-name, | |
.hljs-selector-id, | |
.hljs-selector-class, | |
.hljs-regexp, | |
.hljs-deletion { | |
color: #c82829; | |
} | |
/* Tomorrow Orange */ | |
.hljs-number, | |
.hljs-built_in, | |
.hljs-builtin-name, | |
.hljs-literal, | |
.hljs-type, | |
.hljs-params, | |
.hljs-meta, | |
.hljs-link { | |
color: #f5871f; | |
} | |
/* Tomorrow Yellow */ | |
.hljs-attribute { | |
color: #eab700; | |
} | |
/* Tomorrow Green */ | |
.hljs-string, | |
.hljs-symbol, | |
.hljs-bullet, | |
.hljs-addition { | |
color: #718c00; | |
} | |
/* Tomorrow Blue */ | |
.hljs-title, | |
.hljs-section { | |
color: #4271ae; | |
} | |
/* Tomorrow Purple */ | |
.hljs-keyword, | |
.hljs-selector-tag { | |
color: #8959a8; | |
} | |
.hljs { | |
display: block; | |
overflow-x: auto; | |
color: #4d4d4c; | |
padding: 0.5em; | |
} | |
.hljs-emphasis { | |
font-style: italic; | |
} | |
.hljs-strong { | |
font-weight: bold; | |
} | |
</style> | |
<style> | |
/* | |
* Markdown PDF CSS | |
*/ | |
body { | |
font-family: -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "Ubuntu", "Droid Sans", sans-serif, "Meiryo"; | |
padding: 0 12px; | |
} | |
pre { | |
background-color: #f8f8f8; | |
border: 1px solid #cccccc; | |
border-radius: 3px; | |
overflow-x: auto; | |
white-space: pre-wrap; | |
overflow-wrap: break-word; | |
} | |
pre:not(.hljs) { | |
padding: 23px; | |
line-height: 19px; | |
} | |
blockquote { | |
background: rgba(127, 127, 127, 0.1); | |
border-color: rgba(0, 122, 204, 0.5); | |
} | |
.emoji { | |
height: 1.4em; | |
} | |
code { | |
font-size: 14px; | |
line-height: 19px; | |
} | |
/* for inline code */ | |
:not(pre):not(.hljs) > code { | |
color: #C9AE75; /* Change the old color so it seems less like an error */ | |
font-size: inherit; | |
} | |
/* Page Break : use <div class="page"/> to insert page break | |
-------------------------------------------------------- */ | |
.page { | |
page-break-after: always; | |
} | |
</style> | |
<script src="https://unpkg.com/mermaid/dist/mermaid.min.js"></script> | |
</head> | |
<body> | |
<script> | |
mermaid.initialize({ | |
startOnLoad: true, | |
theme: document.body.classList.contains('vscode-dark') || document.body.classList.contains('vscode-high-contrast') | |
? 'dark' | |
: 'default' | |
}); | |
</script> | |
<h1 id="mermaidjs-%E3%83%86%E3%82%B9%E3%83%88">mermaid.js テスト</h1> | |
<h2 id="%E3%83%95%E3%83%AD%E3%83%BC%E3%83%81%E3%83%A3%E3%83%BC%E3%83%88">フローチャート</h2> | |
<pre><code class="language-mermaid"><div class="mermaid">flowchart | |
A --> B --> D & C --> E | |
</div></code></pre> | |
<pre><code class="language-mermaid"><div class="mermaid">flowchart LR | |
subgraph T [SubGraph] | |
direction TB | |
X([Writer]) ==> Y[(DB)] | |
end | |
A[Start] --> B[タスク1] --> C{処理分岐1} | |
C ==> |Yes| D(タスク2) | |
C -- No --> E{異常復帰処理} | |
E -.-> |loop| E | |
E --> |復帰| D | |
D --> T | |
T --> F((end)) | |
</div></code></pre> | |
<h2 id="%E3%82%B7%E3%83%BC%E3%82%B1%E3%83%B3%E3%82%B9%E5%9B%B3">シーケンス図</h2> | |
<pre><code class="language-mermaid"><div class="mermaid">sequenceDiagram | |
actor user as ユーザー | |
participant gw as GateWay | |
participant app as Application Server | |
participant db as DataBase | |
participant sub as Subscriber | |
Note over user: 要ログイン | |
user ->>+ gw: post | |
alt not logged in | |
gw ->> user: response(403) | |
else authenticated | |
gw ->>+ app: data | |
app ->>+ db: insert record | |
db ->>- app: res | |
app ->> sub: publish notification | |
app ->>- gw: res | |
gw ->>- user: response(200) | |
end | |
</div></code></pre> | |
<h2 id="git-graph">Git graph</h2> | |
<p>例えばgitのブランチの運用方法の説明や教育用の資料などに使えそう</p> | |
<pre><code class="language-mermaid"><div class="mermaid">gitGraph | |
commit id: "first" tag: "first" | |
commit | |
commit | |
branch develop | |
commit | |
commit | |
checkout main | |
merge develop | |
commit id: "id" | |
commit type: REVERSE id: "reverse commit" | |
commit id: " " | |
commit type: HIGHLIGHT id: "highlight" | |
commit | |
commit tag:"TAG" | |
</div></code></pre> | |
<ul> | |
<li>起点はデフォルトは<code>main</code>になる様子(<code>master</code>に変えるとかはオプション指定が必要)</li> | |
<li><code>commit</code>としていて明示的に指定していない部分のidはランダムで変わる</li> | |
</ul> | |
<pre><code class="language-mermaid"><div class="mermaid">%%{init: { 'theme': 'base', 'gitGraph': { 'rotateCommitLabel': true } } }%% | |
gitGraph | |
commit | |
commit | |
branch feature/A | |
commit | |
commit | |
checkout main | |
branch feature/B | |
commit | |
checkout main | |
merge feature/B | |
checkout feature/A | |
commit | |
commit | |
merge main | |
checkout main | |
merge feature/A | |
</div></code></pre> | |
<pre><code class="language-mermaid"><div class="mermaid">%%{init: { 'theme': 'forest' }}%% | |
gitGraph | |
commit | |
commit | |
branch develop order: 0 | |
commit | |
branch feature/A order: 3 | |
commit | |
commit | |
checkout develop | |
merge feature/A | |
commit | |
branch release/1.0.0 order: 1 | |
commit | |
commit | |
checkout main | |
merge release/1.0.0 tag:"v1.0.0" | |
checkout develop | |
merge release/1.0.0 | |
checkout develop | |
branch feature/B order: 3 | |
commit | |
commit | |
checkout main | |
branch hotfix/A order: 6 | |
commit | |
commit | |
checkout develop | |
branch release/1.0.1 order: 1 | |
merge hotfix/A | |
checkout main | |
merge release/1.0.1 tag: "v1.0.1" | |
checkout develop | |
merge hotfix/A | |
checkout feature/B | |
merge hotfix/A | |
commit | |
</div></code></pre> | |
</body> | |
</html> |
flowchart
A --> B --> D & C --> E
flowchart LR
subgraph T [SubGraph]
direction TB
X([Writer]) ==> Y[(DB)]
end
A[Start] --> B[タスク1] --> C{処理分岐1}
C ==> |Yes| D(タスク2)
C -- No --> E{異常復帰処理}
E -.-> |loop| E
E --> |復帰| D
D --> T
T --> F((end))
sequenceDiagram
actor user as ユーザー
participant gw as GateWay
participant app as Application Server
participant db as DataBase
participant sub as Subscriber
Note over user: 要ログイン
user ->>+ gw: post
alt not logged in
gw ->> user: response(403)
else authenticated
gw ->>+ app: data
app ->>+ db: insert record
db ->>- app: res
app ->> sub: publish notification
app ->>- gw: res
gw ->>- user: response(200)
end
例えばgitのブランチの運用方法の説明や教育用の資料などに使えそう
gitGraph
commit id: "first" tag: "first"
commit
commit
branch develop
commit
commit
checkout main
merge develop
commit id: "id"
commit type: REVERSE id: "reverse commit"
commit id: " "
commit type: HIGHLIGHT id: "highlight"
commit
commit tag:"TAG"
- 起点はデフォルトは
main
になる様子(master
に変えるとかはオプション指定が必要) commit
としていて明示的に指定していない部分のidはランダムで変わる
%%{init: { 'theme': 'base', 'gitGraph': { 'rotateCommitLabel': true } } }%%
gitGraph
commit
commit
branch feature/A
commit
commit
checkout main
branch feature/B
commit
checkout main
merge feature/B
checkout feature/A
commit
commit
merge main
checkout main
merge feature/A
%%{init: { 'theme': 'forest' }}%%
gitGraph
commit
commit
branch develop order: 0
commit
branch feature/A order: 3
commit
commit
checkout develop
merge feature/A
commit
branch release/1.0.0 order: 1
commit
commit
checkout main
merge release/1.0.0 tag:"v1.0.0"
checkout develop
merge release/1.0.0
checkout develop
branch feature/B order: 3
commit
commit
checkout main
branch hotfix/A order: 6
commit
commit
checkout develop
branch release/1.0.1 order: 1
merge hotfix/A
checkout main
merge release/1.0.1 tag: "v1.0.1"
checkout develop
merge hotfix/A
checkout feature/B
merge hotfix/A
commit
class: center, middle
- (公式ドキュメント)
- プレーンテキスト形式での図表の作成
- 似たようなコンセプト・機能のツールにPlantUMLがあるが、
JavaやGraphVizを入れなくても良いので導入などがかなり楽そう
- ただし、後述のように完全な代替にはならなさそう
詳細は公式 diagram-typesを参照のこと
例えば:
- フローチャート
- シーケンス図
- クラス図
- ステート図
- ER図(experimental)
など(他にも色々)
UML周りを中心にPlantUMLの方が対応している図の種類は豊富だが、Git graphや円グラフなどPlantUMLに無い機能もある
- 記述するのはVsCodeが一番楽そう
- 例えばmarkdown-preview-enhanced などのプラグインを有効化しておくと、Markdownのプレビューでmermaid.jsのレンダリングがなされる
- https://zenn.dev/okazuki/articles/learning-mermaid
- https://anteku.jp/blog/develop/mermaid-js%E3%82%92markdown%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%86%85%E9%83%A8%E3%81%AB%E8%A8%98%E8%BC%89%E3%81%97%E3%82%88%E3%81%86/
- https://maku77.github.io/hugo/advanced/mermaid.html
class: center, middle
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment