From 04ff4cbcb71d7de1c82f0c8c43d32327f82be082 Mon Sep 17 00:00:00 2001 From: shinsuke-mat Date: Thu, 18 Jul 2024 09:13:19 +0000 Subject: [PATCH] deploy: 5176962ebbf10679148443ed3f586d56754577b5 --- lecture-impl.html | 4 +- lecture-impl.md | 1 + lecture-test.html | 292 +++++++++++++++++++++++++++++++++++----------- lecture-test.md | 272 +++++++++++++++++++++++++++++++++++------- style.css | 13 +++ 5 files changed, 469 insertions(+), 113 deletions(-) diff --git a/lecture-impl.html b/lecture-impl.html index 4f3e150..2e78ba5 100644 --- a/lecture-impl.html +++ b/lecture-impl.html @@ -10,7 +10,7 @@ * @size 4:3 960px 720px */div#p>svg>foreignObject>section{--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-storage-modifier-import:#24292f;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-variable:#953800;--color-prettylights-syntax-brackethighlighter-unmatched:#82071e;--color-prettylights-syntax-invalid-illegal-text:#f6f8fa;--color-prettylights-syntax-invalid-illegal-bg:#82071e;--color-prettylights-syntax-carriage-return-text:#f6f8fa;--color-prettylights-syntax-carriage-return-bg:#cf222e;--color-prettylights-syntax-string-regexp:#116329;--color-prettylights-syntax-markup-list:#3b2300;--color-prettylights-syntax-markup-heading:#0550ae;--color-prettylights-syntax-markup-italic:#24292f;--color-prettylights-syntax-markup-bold:#24292f;--color-prettylights-syntax-markup-deleted-text:#82071e;--color-prettylights-syntax-markup-deleted-bg:#ffebe9;--color-prettylights-syntax-markup-inserted-text:#116329;--color-prettylights-syntax-markup-inserted-bg:#dafbe1;--color-prettylights-syntax-markup-changed-text:#953800;--color-prettylights-syntax-markup-changed-bg:#ffd8b5;--color-prettylights-syntax-markup-ignored-text:#eaeef2;--color-prettylights-syntax-markup-ignored-bg:#0550ae;--color-prettylights-syntax-meta-diff-range:#8250df;--color-prettylights-syntax-brackethighlighter-angle:#57606a;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant-other-reference-link:#0a3069;--color-fg-default:#24292f;--color-fg-muted:#57606a;--color-fg-subtle:#6e7781;--color-canvas-default:#fff;--color-canvas-subtle:#f6f8fa;--color-border-default:#d0d7de;--color-border-muted:#d8dee4;--color-neutral-muted:rgba(175,184,193,.2);--color-accent-fg:#0969da;--color-accent-emphasis:#0969da;--color-attention-subtle:#fff8c5;--color-danger-fg:#cf222e;color-scheme:light}div#p>svg>foreignObject>section:where(.invert){--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-storage-modifier-import:#c9d1d9;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-variable:#ffa657;--color-prettylights-syntax-brackethighlighter-unmatched:#f85149;--color-prettylights-syntax-invalid-illegal-text:#f0f6fc;--color-prettylights-syntax-invalid-illegal-bg:#8e1519;--color-prettylights-syntax-carriage-return-text:#f0f6fc;--color-prettylights-syntax-carriage-return-bg:#b62324;--color-prettylights-syntax-string-regexp:#7ee787;--color-prettylights-syntax-markup-list:#f2cc60;--color-prettylights-syntax-markup-heading:#1f6feb;--color-prettylights-syntax-markup-italic:#c9d1d9;--color-prettylights-syntax-markup-bold:#c9d1d9;--color-prettylights-syntax-markup-deleted-text:#ffdcd7;--color-prettylights-syntax-markup-deleted-bg:#67060c;--color-prettylights-syntax-markup-inserted-text:#aff5b4;--color-prettylights-syntax-markup-inserted-bg:#033a16;--color-prettylights-syntax-markup-changed-text:#ffdfb6;--color-prettylights-syntax-markup-changed-bg:#5a1e02;--color-prettylights-syntax-markup-ignored-text:#c9d1d9;--color-prettylights-syntax-markup-ignored-bg:#1158c7;--color-prettylights-syntax-meta-diff-range:#d2a8ff;--color-prettylights-syntax-brackethighlighter-angle:#8b949e;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant-other-reference-link:#a5d6ff;--color-fg-default:#c9d1d9;--color-fg-muted:#8b949e;--color-fg-subtle:#6e7681;--color-canvas-default:#0d1117;--color-canvas-subtle:#161b22;--color-border-default:#30363d;--color-border-muted:#21262d;--color-neutral-muted:hsla(215,8%,47%,.4);--color-accent-fg:#58a6ff;--color-accent-emphasis:#1f6feb;--color-attention-subtle:rgba(187,128,9,.15);--color-danger-fg:#f85149;color-scheme:dark}div#p>svg>foreignObject>section{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;word-wrap:break-word;background-color:var(--color-canvas-default);color:var(--color-fg-default);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;font-size:16px;line-height:1.5;margin:0}div#p>svg>foreignObject>section{--marpit-root-font-size:16px}div#p>svg>foreignObject>section :is(h1,marp-h1):hover .anchor .octicon-link:before,div#p>svg>foreignObject>section :is(h2,marp-h2):hover .anchor .octicon-link:before,div#p>svg>foreignObject>section :is(h3,marp-h3):hover .anchor .octicon-link:before,div#p>svg>foreignObject>section :is(h4,marp-h4):hover .anchor .octicon-link:before,div#p>svg>foreignObject>section :is(h5,marp-h5):hover .anchor .octicon-link:before,div#p>svg>foreignObject>section :is(h6,marp-h6):hover .anchor .octicon-link:before{background-color:currentColor;content:" ";display:inline-block;height:16px;-webkit-mask-image:url('data:image/svg+xml;charset=utf-8,');mask-image:url('data:image/svg+xml;charset=utf-8,');width:16px}div#p>svg>foreignObject>section details,div#p>svg>foreignObject>section figcaption,div#p>svg>foreignObject>section figure{display:block}div#p>svg>foreignObject>section summary{display:list-item}div#p>svg>foreignObject>section [hidden]{display:none!important}div#p>svg>foreignObject>section a{background-color:transparent;color:var(--color-accent-fg);text-decoration:none}div#p>svg>foreignObject>section abbr[title]{border-bottom:none;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}div#p>svg>foreignObject>section b,div#p>svg>foreignObject>section strong{font-weight:var(--base-text-weight-semibold,600)}div#p>svg>foreignObject>section dfn{font-style:italic}div#p>svg>foreignObject>section :is(h1,marp-h1){border-bottom:1px solid var(--color-border-muted);font-size:2em;font-weight:var(--base-text-weight-semibold,600);margin:.67em 0;padding-bottom:.3em}div#p>svg>foreignObject>section mark{background-color:var(--color-attention-subtle);color:var(--color-fg-default)}div#p>svg>foreignObject>section small{font-size:90%}div#p>svg>foreignObject>section sub,div#p>svg>foreignObject>section sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}div#p>svg>foreignObject>section sub{bottom:-.25em}div#p>svg>foreignObject>section sup{top:-.5em}div#p>svg>foreignObject>section img{background-color:var(--color-canvas-default);border-style:none;box-sizing:content-box;max-width:100%}div#p>svg>foreignObject>section :is(pre,marp-pre),div#p>svg>foreignObject>section code,div#p>svg>foreignObject>section kbd,div#p>svg>foreignObject>section samp{font-family:monospace;font-size:1em}div#p>svg>foreignObject>section figure{margin:1em 40px}div#p>svg>foreignObject>section hr{background:transparent;background-color:var(--color-border-default);border:0;box-sizing:content-box;height:.25em;margin:24px 0;overflow:hidden;padding:0}div#p>svg>foreignObject>section input{font:inherit;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible}div#p>svg>foreignObject>section [type=button],div#p>svg>foreignObject>section [type=reset],div#p>svg>foreignObject>section [type=submit]{-webkit-appearance:button}div#p>svg>foreignObject>section [type=checkbox],div#p>svg>foreignObject>section [type=radio]{box-sizing:border-box;padding:0}div#p>svg>foreignObject>section [type=number]::-webkit-inner-spin-button,div#p>svg>foreignObject>section [type=number]::-webkit-outer-spin-button{height:auto}div#p>svg>foreignObject>section [type=search]::-webkit-search-cancel-button,div#p>svg>foreignObject>section [type=search]::-webkit-search-decoration{-webkit-appearance:none}div#p>svg>foreignObject>section ::-webkit-input-placeholder{color:inherit;opacity:.54}div#p>svg>foreignObject>section ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}div#p>svg>foreignObject>section a:hover{text-decoration:underline}div#p>svg>foreignObject>section ::-moz-placeholder{color:var(--color-fg-subtle);opacity:1}div#p>svg>foreignObject>section ::placeholder{color:var(--color-fg-subtle);opacity:1}div#p>svg>foreignObject>section hr:after,div#p>svg>foreignObject>section hr:before{content:"";display:table}div#p>svg>foreignObject>section hr:after{clear:both}div#p>svg>foreignObject>section table{border-collapse:collapse;border-spacing:0;display:block;max-width:100%;overflow:auto;width:-moz-max-content;width:max-content}div#p>svg>foreignObject>section td,div#p>svg>foreignObject>section th{padding:0}div#p>svg>foreignObject>section details summary{cursor:pointer}div#p>svg>foreignObject>section details:not([open])>:not(summary){display:none!important}div#p>svg>foreignObject>section [role=button]:focus,div#p>svg>foreignObject>section a:focus,div#p>svg>foreignObject>section input[type=checkbox]:focus,div#p>svg>foreignObject>section input[type=radio]:focus{box-shadow:none;outline:2px solid var(--color-accent-fg);outline-offset:-2px}div#p>svg>foreignObject>section [role=button]:focus:not(:focus-visible),div#p>svg>foreignObject>section a:focus:not(:focus-visible),div#p>svg>foreignObject>section input[type=checkbox]:focus:not(:focus-visible),div#p>svg>foreignObject>section input[type=radio]:focus:not(:focus-visible){outline:1px solid transparent}div#p>svg>foreignObject>section [role=button]:focus-visible,div#p>svg>foreignObject>section a:focus-visible,div#p>svg>foreignObject>section input[type=checkbox]:focus-visible,div#p>svg>foreignObject>section input[type=radio]:focus-visible{box-shadow:none;outline:2px solid var(--color-accent-fg);outline-offset:-2px}div#p>svg>foreignObject>section a:not([class]):focus,div#p>svg>foreignObject>section a:not([class]):focus-visible,div#p>svg>foreignObject>section input[type=checkbox]:focus,div#p>svg>foreignObject>section input[type=checkbox]:focus-visible,div#p>svg>foreignObject>section input[type=radio]:focus,div#p>svg>foreignObject>section input[type=radio]:focus-visible{outline-offset:0}div#p>svg>foreignObject>section kbd{background-color:var(--color-canvas-subtle);border-bottom-color:var(--color-neutral-muted);border:1px solid var(--color-neutral-muted);border-radius:6px;box-shadow:inset 0 -1px 0 var(--color-neutral-muted);color:var(--color-fg-default);display:inline-block;font:11px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;line-height:10px;padding:3px 5px;vertical-align:middle}div#p>svg>foreignObject>section :is(h1,marp-h1),div#p>svg>foreignObject>section :is(h2,marp-h2),div#p>svg>foreignObject>section :is(h3,marp-h3),div#p>svg>foreignObject>section :is(h4,marp-h4),div#p>svg>foreignObject>section :is(h5,marp-h5),div#p>svg>foreignObject>section :is(h6,marp-h6){font-weight:var(--base-text-weight-semibold,600);line-height:1.25;margin-bottom:16px;margin-top:24px}div#p>svg>foreignObject>section :is(h2,marp-h2){border-bottom:1px solid var(--color-border-muted);font-size:1.5em;padding-bottom:.3em}div#p>svg>foreignObject>section :is(h2,marp-h2),div#p>svg>foreignObject>section :is(h3,marp-h3){font-weight:var(--base-text-weight-semibold,600)}div#p>svg>foreignObject>section :is(h3,marp-h3){font-size:1.25em}div#p>svg>foreignObject>section :is(h4,marp-h4){font-size:1em}div#p>svg>foreignObject>section :is(h4,marp-h4),div#p>svg>foreignObject>section :is(h5,marp-h5){font-weight:var(--base-text-weight-semibold,600)}div#p>svg>foreignObject>section :is(h5,marp-h5){font-size:.875em}div#p>svg>foreignObject>section :is(h6,marp-h6){color:var(--color-fg-muted);font-size:.85em;font-weight:var(--base-text-weight-semibold,600)}div#p>svg>foreignObject>section p{margin-bottom:10px;margin-top:0}div#p>svg>foreignObject>section blockquote{border-left:.25em solid var(--color-border-default);color:var(--color-fg-muted);margin:0;padding:0 1em}div#p>svg>foreignObject>section ol,div#p>svg>foreignObject>section ul{margin-bottom:0;margin-top:0;padding-left:2em}div#p>svg>foreignObject>section ol ol,div#p>svg>foreignObject>section ul ol{list-style-type:lower-roman}div#p>svg>foreignObject>section ol ol ol,div#p>svg>foreignObject>section ol ul ol,div#p>svg>foreignObject>section ul ol ol,div#p>svg>foreignObject>section ul ul ol{list-style-type:lower-alpha}div#p>svg>foreignObject>section dd{margin-left:0}div#p>svg>foreignObject>section :is(pre,marp-pre),div#p>svg>foreignObject>section code,div#p>svg>foreignObject>section samp,div#p>svg>foreignObject>section tt{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px}div#p>svg>foreignObject>section :is(pre,marp-pre){word-wrap:normal;margin-bottom:0;margin-top:0}div#p>svg>foreignObject>section .octicon{fill:currentColor;display:inline-block;overflow:visible!important;vertical-align:text-bottom}div#p>svg>foreignObject>section input::-webkit-inner-spin-button,div#p>svg>foreignObject>section input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}div#p>svg>foreignObject>section:after,div#p>svg>foreignObject>section:before{ /* content:""; */display:table}div#p>svg>foreignObject>section:after{clear:both}div#p>svg>foreignObject>section>:first-child{margin-top:0!important}div#p>svg>foreignObject>section>:last-child{margin-bottom:0!important}div#p>svg>foreignObject>section a:not([href]){color:inherit;text-decoration:none}div#p>svg>foreignObject>section .absent{color:var(--color-danger-fg)}div#p>svg>foreignObject>section .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}div#p>svg>foreignObject>section .anchor:focus{outline:none}div#p>svg>foreignObject>section :is(pre,marp-pre),div#p>svg>foreignObject>section blockquote,div#p>svg>foreignObject>section details,div#p>svg>foreignObject>section dl,div#p>svg>foreignObject>section ol,div#p>svg>foreignObject>section p,div#p>svg>foreignObject>section table,div#p>svg>foreignObject>section ul{margin-bottom:16px;margin-top:0}div#p>svg>foreignObject>section blockquote>:first-child{margin-top:0}div#p>svg>foreignObject>section blockquote>:last-child{margin-bottom:0}div#p>svg>foreignObject>section :is(h1,marp-h1) .octicon-link,div#p>svg>foreignObject>section :is(h2,marp-h2) .octicon-link,div#p>svg>foreignObject>section :is(h3,marp-h3) .octicon-link,div#p>svg>foreignObject>section :is(h4,marp-h4) .octicon-link,div#p>svg>foreignObject>section :is(h5,marp-h5) .octicon-link,div#p>svg>foreignObject>section :is(h6,marp-h6) .octicon-link{color:var(--color-fg-default);vertical-align:middle;visibility:hidden}div#p>svg>foreignObject>section :is(h1,marp-h1):hover .anchor,div#p>svg>foreignObject>section :is(h2,marp-h2):hover .anchor,div#p>svg>foreignObject>section :is(h3,marp-h3):hover .anchor,div#p>svg>foreignObject>section :is(h4,marp-h4):hover .anchor,div#p>svg>foreignObject>section :is(h5,marp-h5):hover .anchor,div#p>svg>foreignObject>section :is(h6,marp-h6):hover .anchor{text-decoration:none}div#p>svg>foreignObject>section :is(h1,marp-h1):hover .anchor .octicon-link,div#p>svg>foreignObject>section :is(h2,marp-h2):hover .anchor .octicon-link,div#p>svg>foreignObject>section :is(h3,marp-h3):hover .anchor .octicon-link,div#p>svg>foreignObject>section :is(h4,marp-h4):hover .anchor .octicon-link,div#p>svg>foreignObject>section :is(h5,marp-h5):hover .anchor .octicon-link,div#p>svg>foreignObject>section :is(h6,marp-h6):hover .anchor .octicon-link{visibility:visible}div#p>svg>foreignObject>section :is(h1,marp-h1) code,div#p>svg>foreignObject>section :is(h1,marp-h1) tt,div#p>svg>foreignObject>section :is(h2,marp-h2) code,div#p>svg>foreignObject>section :is(h2,marp-h2) tt,div#p>svg>foreignObject>section :is(h3,marp-h3) code,div#p>svg>foreignObject>section :is(h3,marp-h3) tt,div#p>svg>foreignObject>section :is(h4,marp-h4) code,div#p>svg>foreignObject>section :is(h4,marp-h4) tt,div#p>svg>foreignObject>section :is(h5,marp-h5) code,div#p>svg>foreignObject>section :is(h5,marp-h5) tt,div#p>svg>foreignObject>section :is(h6,marp-h6) code,div#p>svg>foreignObject>section :is(h6,marp-h6) tt{font-size:inherit;padding:0 .2em}div#p>svg>foreignObject>section summary :is(h1,marp-h1),div#p>svg>foreignObject>section summary :is(h2,marp-h2),div#p>svg>foreignObject>section summary :is(h3,marp-h3),div#p>svg>foreignObject>section summary :is(h4,marp-h4),div#p>svg>foreignObject>section summary :is(h5,marp-h5),div#p>svg>foreignObject>section summary :is(h6,marp-h6){display:inline-block}div#p>svg>foreignObject>section summary :is(h1,marp-h1) .anchor,div#p>svg>foreignObject>section summary :is(h2,marp-h2) .anchor,div#p>svg>foreignObject>section summary :is(h3,marp-h3) .anchor,div#p>svg>foreignObject>section summary :is(h4,marp-h4) .anchor,div#p>svg>foreignObject>section summary :is(h5,marp-h5) .anchor,div#p>svg>foreignObject>section summary :is(h6,marp-h6) .anchor{margin-left:-40px}div#p>svg>foreignObject>section summary :is(h1,marp-h1),div#p>svg>foreignObject>section summary :is(h2,marp-h2){border-bottom:0;padding-bottom:0}div#p>svg>foreignObject>section ol.no-list,div#p>svg>foreignObject>section ul.no-list{list-style-type:none;padding:0}div#p>svg>foreignObject>section ol[type=a]{list-style-type:lower-alpha}div#p>svg>foreignObject>section ol[type=A]{list-style-type:upper-alpha}div#p>svg>foreignObject>section ol[type=i]{list-style-type:lower-roman}div#p>svg>foreignObject>section ol[type=I]{list-style-type:upper-roman}div#p>svg>foreignObject>section div>ol:not([type]),div#p>svg>foreignObject>section ol[type="1"]{list-style-type:decimal}div#p>svg>foreignObject>section ol ol,div#p>svg>foreignObject>section ol ul,div#p>svg>foreignObject>section ul ol,div#p>svg>foreignObject>section ul ul{margin-bottom:0;margin-top:0}div#p>svg>foreignObject>section li>p{margin-top:16px}div#p>svg>foreignObject>section li+li{margin-top:.25em}div#p>svg>foreignObject>section dl{padding:0}div#p>svg>foreignObject>section dl dt{font-size:1em;font-style:italic;font-weight:var(--base-text-weight-semibold,600);margin-top:16px;padding:0}div#p>svg>foreignObject>section dl dd{margin-bottom:16px;padding:0 16px}div#p>svg>foreignObject>section table th{font-weight:var(--base-text-weight-semibold,600)}div#p>svg>foreignObject>section table td,div#p>svg>foreignObject>section table th{border:1px solid var(--color-border-default);padding:6px 13px}div#p>svg>foreignObject>section table tr{background-color:var(--color-canvas-default);border-top:1px solid var(--color-border-muted)}div#p>svg>foreignObject>section table tr:nth-child(2n){background-color:var(--color-canvas-subtle)}div#p>svg>foreignObject>section table img{background-color:transparent}div#p>svg>foreignObject>section img[align=right]{padding-left:20px}div#p>svg>foreignObject>section img[align=left]{padding-right:20px}div#p>svg>foreignObject>section .emoji{background-color:transparent;max-width:none;vertical-align:text-top}div#p>svg>foreignObject>section :is(span,marp-span).frame,div#p>svg>foreignObject>section :is(span,marp-span).frame>:is(span,marp-span){display:block;overflow:hidden}div#p>svg>foreignObject>section :is(span,marp-span).frame>:is(span,marp-span){border:1px solid var(--color-border-default);float:left;margin:13px 0 0;padding:7px;width:auto}div#p>svg>foreignObject>section :is(span,marp-span).frame :is(span,marp-span) img{display:block;float:left}div#p>svg>foreignObject>section :is(span,marp-span).frame :is(span,marp-span) :is(span,marp-span){clear:both;color:var(--color-fg-default);display:block;padding:5px 0 0}div#p>svg>foreignObject>section :is(span,marp-span).align-center{clear:both;display:block;overflow:hidden}div#p>svg>foreignObject>section :is(span,marp-span).align-center>:is(span,marp-span){display:block;margin:13px auto 0;overflow:hidden;text-align:center}div#p>svg>foreignObject>section :is(span,marp-span).align-center :is(span,marp-span) img{margin:0 auto;text-align:center}div#p>svg>foreignObject>section :is(span,marp-span).align-right{clear:both;display:block;overflow:hidden}div#p>svg>foreignObject>section :is(span,marp-span).align-right>:is(span,marp-span){display:block;margin:13px 0 0;overflow:hidden;text-align:right}div#p>svg>foreignObject>section :is(span,marp-span).align-right :is(span,marp-span) img{margin:0;text-align:right}div#p>svg>foreignObject>section :is(span,marp-span).float-left{display:block;float:left;margin-right:13px;overflow:hidden}div#p>svg>foreignObject>section :is(span,marp-span).float-left :is(span,marp-span){margin:13px 0 0}div#p>svg>foreignObject>section :is(span,marp-span).float-right{display:block;float:right;margin-left:13px;overflow:hidden}div#p>svg>foreignObject>section :is(span,marp-span).float-right>:is(span,marp-span){display:block;margin:13px auto 0;overflow:hidden;text-align:right}div#p>svg>foreignObject>section code,div#p>svg>foreignObject>section tt{background-color:var(--color-neutral-muted);border-radius:6px;font-size:85%;margin:0;padding:.2em .4em;white-space:break-spaces}div#p>svg>foreignObject>section code br,div#p>svg>foreignObject>section tt br{display:none}div#p>svg>foreignObject>section del code{text-decoration:inherit}div#p>svg>foreignObject>section samp{font-size:85%}div#p>svg>foreignObject>section :is(pre,marp-pre) code{font-size:100%}div#p>svg>foreignObject>section :is(pre,marp-pre)>code{background:transparent;border:0;margin:0;padding:0;white-space:pre;word-break:normal}div#p>svg>foreignObject>section .highlight{margin-bottom:16px}div#p>svg>foreignObject>section .highlight :is(pre,marp-pre){margin-bottom:0;word-break:normal}div#p>svg>foreignObject>section :is(pre,marp-pre){background-color:var(--color-canvas-subtle);border-radius:6px;font-size:85%;line-height:1.45;overflow:auto;padding:16px}div#p>svg>foreignObject>section :is(pre,marp-pre) code,div#p>svg>foreignObject>section :is(pre,marp-pre) tt{word-wrap:normal;background-color:transparent;border:0;display:inline;line-height:inherit;margin:0;max-width:auto;overflow:visible;padding:0}div#p>svg>foreignObject>section .csv-data td,div#p>svg>foreignObject>section .csv-data th{font-size:12px;line-height:1;overflow:hidden;padding:5px;text-align:left;white-space:nowrap}div#p>svg>foreignObject>section .csv-data .blob-num{background:var(--color-canvas-default);border:0;padding:10px 8px 9px;text-align:right}div#p>svg>foreignObject>section .csv-data tr{border-top:0}div#p>svg>foreignObject>section .csv-data th{background:var(--color-canvas-subtle);border-top:0;font-weight:var(--base-text-weight-semibold,600)}div#p>svg>foreignObject>section [data-footnote-ref]:before{content:"["}div#p>svg>foreignObject>section [data-footnote-ref]:after{content:"]"}div#p>svg>foreignObject>section .footnotes{border-top:1px solid var(--color-border-default);color:var(--color-fg-muted);font-size:12px}div#p>svg>foreignObject>section div#p>svg>foreignObject>section section.footnotes{--marpit-root-font-size:12px}div#p>svg>foreignObject>section .footnotes ol{padding-left:16px}div#p>svg>foreignObject>section .footnotes ol ul{display:inline-block;margin-top:16px;padding-left:16px}div#p>svg>foreignObject>section .footnotes li{position:relative}div#p>svg>foreignObject>section .footnotes li:target:before{border:2px solid var(--color-accent-emphasis);border-radius:6px;bottom:-8px;content:"";left:-24px;pointer-events:none;position:absolute;right:-8px;top:-8px}div#p>svg>foreignObject>section .footnotes li:target{color:var(--color-fg-default)}div#p>svg>foreignObject>section .footnotes .data-footnote-backref g-emoji{font-family:monospace}div#p>svg>foreignObject>section .pl-c{color:var(--color-prettylights-syntax-comment)}div#p>svg>foreignObject>section .pl-c1,div#p>svg>foreignObject>section .pl-s .pl-v{color:var(--color-prettylights-syntax-constant)}div#p>svg>foreignObject>section .pl-e,div#p>svg>foreignObject>section .pl-en{color:var(--color-prettylights-syntax-entity)}div#p>svg>foreignObject>section .pl-s .pl-s1,div#p>svg>foreignObject>section .pl-smi{color:var(--color-prettylights-syntax-storage-modifier-import)}div#p>svg>foreignObject>section .pl-ent{color:var(--color-prettylights-syntax-entity-tag)}div#p>svg>foreignObject>section .pl-k{color:var(--color-prettylights-syntax-keyword)}div#p>svg>foreignObject>section .pl-pds,div#p>svg>foreignObject>section .pl-s,div#p>svg>foreignObject>section .pl-s .pl-pse .pl-s1,div#p>svg>foreignObject>section .pl-sr,div#p>svg>foreignObject>section .pl-sr .pl-cce,div#p>svg>foreignObject>section .pl-sr .pl-sra,div#p>svg>foreignObject>section .pl-sr .pl-sre{color:var(--color-prettylights-syntax-string)}div#p>svg>foreignObject>section .pl-smw,div#p>svg>foreignObject>section .pl-v{color:var(--color-prettylights-syntax-variable)}div#p>svg>foreignObject>section .pl-bu{color:var(--color-prettylights-syntax-brackethighlighter-unmatched)}div#p>svg>foreignObject>section .pl-ii{background-color:var(--color-prettylights-syntax-invalid-illegal-bg);color:var(--color-prettylights-syntax-invalid-illegal-text)}div#p>svg>foreignObject>section .pl-c2{background-color:var(--color-prettylights-syntax-carriage-return-bg);color:var(--color-prettylights-syntax-carriage-return-text)}div#p>svg>foreignObject>section .pl-sr .pl-cce{color:var(--color-prettylights-syntax-string-regexp);font-weight:700}div#p>svg>foreignObject>section .pl-ml{color:var(--color-prettylights-syntax-markup-list)}div#p>svg>foreignObject>section .pl-mh,div#p>svg>foreignObject>section .pl-mh .pl-en,div#p>svg>foreignObject>section .pl-ms{color:var(--color-prettylights-syntax-markup-heading);font-weight:700}div#p>svg>foreignObject>section .pl-mi{color:var(--color-prettylights-syntax-markup-italic);font-style:italic}div#p>svg>foreignObject>section .pl-mb{color:var(--color-prettylights-syntax-markup-bold);font-weight:700}div#p>svg>foreignObject>section .pl-md{background-color:var(--color-prettylights-syntax-markup-deleted-bg);color:var(--color-prettylights-syntax-markup-deleted-text)}div#p>svg>foreignObject>section .pl-mi1{background-color:var(--color-prettylights-syntax-markup-inserted-bg);color:var(--color-prettylights-syntax-markup-inserted-text)}div#p>svg>foreignObject>section .pl-mc{background-color:var(--color-prettylights-syntax-markup-changed-bg);color:var(--color-prettylights-syntax-markup-changed-text)}div#p>svg>foreignObject>section .pl-mi2{background-color:var(--color-prettylights-syntax-markup-ignored-bg);color:var(--color-prettylights-syntax-markup-ignored-text)}div#p>svg>foreignObject>section .pl-mdr{color:var(--color-prettylights-syntax-meta-diff-range);font-weight:700}div#p>svg>foreignObject>section .pl-ba{color:var(--color-prettylights-syntax-brackethighlighter-angle)}div#p>svg>foreignObject>section .pl-sg{color:var(--color-prettylights-syntax-sublimelinter-gutter-mark)}div#p>svg>foreignObject>section .pl-corl{color:var(--color-prettylights-syntax-constant-other-reference-link);text-decoration:underline}div#p>svg>foreignObject>section g-emoji{display:inline-block;font-family:Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:1em;font-style:normal!important;font-weight:var(--base-text-weight-normal,400);line-height:1;min-width:1ch;vertical-align:-.075em}div#p>svg>foreignObject>section g-emoji img{height:1em;width:1em}div#p>svg>foreignObject>section .task-list-item{list-style-type:none}div#p>svg>foreignObject>section .task-list-item label{font-weight:var(--base-text-weight-normal,400)}div#p>svg>foreignObject>section .task-list-item.enabled label{cursor:pointer}div#p>svg>foreignObject>section .task-list-item+.task-list-item{margin-top:4px}div#p>svg>foreignObject>section .task-list-item .handle{display:none}div#p>svg>foreignObject>section .task-list-item-checkbox{margin:0 .2em .25em -1.4em;vertical-align:middle}div#p>svg>foreignObject>section .contains-task-list:dir(rtl) .task-list-item-checkbox{margin:0 -1.6em .25em .2em}div#p>svg>foreignObject>section .contains-task-list{position:relative}div#p>svg>foreignObject>section .contains-task-list:focus-within .task-list-item-convert-container,div#p>svg>foreignObject>section .contains-task-list:hover .task-list-item-convert-container{clip:auto;display:block;height:24px;overflow:visible;width:auto}div#p>svg>foreignObject>section ::-webkit-calendar-picker-indicator{filter:invert(50%)}div#p>svg>foreignObject>section :is(h1,marp-h1){color:var(--h1-color);font-size:1.6em}div#p>svg>foreignObject>section :is(h1,marp-h1),div#p>svg>foreignObject>section :is(h2,marp-h2){border-bottom:none}div#p>svg>foreignObject>section :is(h2,marp-h2){font-size:1.3em}div#p>svg>foreignObject>section :is(h3,marp-h3){font-size:1.1em}div#p>svg>foreignObject>section :is(h4,marp-h4){font-size:1.05em}div#p>svg>foreignObject>section :is(h5,marp-h5){font-size:1em}div#p>svg>foreignObject>section :is(h6,marp-h6){font-size:.9em}div#p>svg>foreignObject>section :is(h1,marp-h1) strong,div#p>svg>foreignObject>section :is(h2,marp-h2) strong,div#p>svg>foreignObject>section :is(h3,marp-h3) strong,div#p>svg>foreignObject>section :is(h4,marp-h4) strong,div#p>svg>foreignObject>section :is(h5,marp-h5) strong,div#p>svg>foreignObject>section :is(h6,marp-h6) strong{color:var(--heading-strong-color);font-weight:inherit}div#p>svg>foreignObject>section :is(h1,marp-h1)::part(auto-scaling),div#p>svg>foreignObject>section :is(h2,marp-h2)::part(auto-scaling),div#p>svg>foreignObject>section :is(h3,marp-h3)::part(auto-scaling),div#p>svg>foreignObject>section :is(h4,marp-h4)::part(auto-scaling),div#p>svg>foreignObject>section :is(h5,marp-h5)::part(auto-scaling),div#p>svg>foreignObject>section :is(h6,marp-h6)::part(auto-scaling){max-height:563px}div#p>svg>foreignObject>section hr{height:0;padding-top:.25em}div#p>svg>foreignObject>section :is(pre,marp-pre){border:1px solid var(--color-border-default);line-height:1.15;overflow:visible}div#p>svg>foreignObject>section :is(pre,marp-pre)::part(auto-scaling){max-height:529px}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs){color:var(--color-prettylights-syntax-storage-modifier-import)}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-doctag),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-keyword),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-meta .hljs-keyword),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-template-tag),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-template-variable),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-type),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-variable.language_){color:var(--color-prettylights-syntax-keyword)}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-title),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-title.class_),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-title.class_.inherited__),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-title.function_){color:var(--color-prettylights-syntax-entity)}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-attr),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-attribute),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-literal),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-meta),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-number),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-operator),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-selector-attr),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-selector-class),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-selector-id),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-variable){color:var(--color-prettylights-syntax-constant)}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-meta .hljs-string),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-regexp),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-string){color:var(--color-prettylights-syntax-string)}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-built_in),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-symbol){color:var(--color-prettylights-syntax-variable)}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-code),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-comment),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-formula){color:var(--color-prettylights-syntax-comment)}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-name),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-quote),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-selector-pseudo),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-selector-tag){color:var(--color-prettylights-syntax-entity-tag)}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-subst){color:var(--color-prettylights-syntax-storage-modifier-import)}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-section){color:var(--color-prettylights-syntax-markup-heading);font-weight:700}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-bullet){color:var(--color-prettylights-syntax-markup-list)}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-emphasis){color:var(--color-prettylights-syntax-markup-italic);font-style:italic}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-strong){color:var(--color-prettylights-syntax-markup-bold);font-weight:700}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-addition){background-color:var(--color-prettylights-syntax-markup-inserted-bg);color:var(--color-prettylights-syntax-markup-inserted-text)}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-deletion){background-color:var(--color-prettylights-syntax-markup-deleted-bg);color:var(--color-prettylights-syntax-markup-deleted-text)}div#p>svg>foreignObject>section footer,div#p>svg>foreignObject>section header{color:var(--header-footer-color);font-size:18px;left:30px;margin:0;position:absolute}div#p>svg>foreignObject>section header{top:21px}div#p>svg>foreignObject>section footer{bottom:21px}div#p>svg>foreignObject>section{--h1-color:#246;--header-footer-color:hsla(0,0%,40%,.75);--heading-strong-color:#48c;--paginate-color:#777;align-items:stretch;display:flex;flex-flow:column nowrap;font-size:29px;height:720px;justify-content:center;padding:78.5px;width:1280px}div#p>svg>foreignObject>section{--marpit-root-font-size:29px}div#p>svg>foreignObject>section:where(.invert){--h1-color:#cee7ff;--header-footer-color:hsla(0,0%,60%,.75);--heading-strong-color:#7bf;--paginate-color:#999}div#p>svg>foreignObject>section>:last-child,div#p>svg>foreignObject>section[data-footer]>:nth-last-child(2){margin-bottom:0}div#p>svg>foreignObject>section>:first-child,div#p>svg>foreignObject>section>header:first-child+*{margin-top:0}div#p>svg>foreignObject>section:after{bottom:21px;color:var(--paginate-color);font-size:24px;padding:0;position:absolute;right:30px}div#p>svg>foreignObject>section:after{--marpit-root-font-size:24px}div#p>svg>foreignObject>section[data-color] :is(h1,marp-h1),div#p>svg>foreignObject>section[data-color] :is(h2,marp-h2),div#p>svg>foreignObject>section[data-color] :is(h3,marp-h3),div#p>svg>foreignObject>section[data-color] :is(h4,marp-h4),div#p>svg>foreignObject>section[data-color] :is(h5,marp-h5),div#p>svg>foreignObject>section[data-color] :is(h6,marp-h6){color:currentcolor}div#p>svg>foreignObject>section img[data-marp-twemoji]{background:transparent;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em;width:1em} -/* @theme shin */div#p>svg>foreignObject>:where(section):not([root]){--color-font-main:#012F4B;--color-font-sub:#0f3b57;--color-font-accent:rgb(201,57,64);--color-background:#EBEEF9}div#p>svg>foreignObject>section{font-family:"Noto Sans","Noto Sans JP";justify-content:start;background-color:var(--color-background);color:var(--color-font-main);padding:30px 70px}div#p>svg>foreignObject>section ::selection{background-color:rgba(255,255,0,0.5)}div#p>svg>foreignObject>section.title{padding-top:400px}div#p>svg>foreignObject>section sub{bottom:0}div#p>svg>foreignObject>section :is(pre,marp-pre),div#p>svg>foreignObject>section blockquote,div#p>svg>foreignObject>section code{font-family:consolas,"Noto Sans JP";color:var(--color-font-sub);background-color:white;font-weight:500;padding:3px 6px;border:1px solid var(--color-font-main)}div#p>svg>foreignObject>section p:has(+marp-pre){margin-bottom:0;padding-bottom:5px}div#p>svg>foreignObject>section code{font-size:70%;vertical-align:middle}div#p>svg>foreignObject>section :is(pre,marp-pre){margin-left:30px}div#p>svg>foreignObject>section :is(h1,marp-h1){padding:0;font-size:200%;font-weight:900;color:var(--color-font-main)}div#p>svg>foreignObject>section :is(h2,marp-h2){margin:0;padding:10px 0 0 0;color:var(--color-font-main);font-weight:900;padding-bottom:5px}div#p>svg>foreignObject>section ul{list-style-type:"- ";margin-top:0;padding-top:0}div#p>svg>foreignObject>section ol{padding-inline-start:45px}div#p>svg>foreignObject>section u,div#p>svg>foreignObject>section u::selection{text-decoration:underline 8pt;text-decoration-color:#ffc3d6;text-underline-offset:-3px}div#p>svg>foreignObject>section li,div#p>svg>foreignObject>section p{color:var(--color-font-sub);margin-left:30px;font-weight:500;font-size:120%;line-height:1.2;margin-top:0}div#p>svg>foreignObject>section li+li{margin-top:0}div#p>svg>foreignObject>section brr{display:block;content:"";margin-top:.5lh}div#p>svg>foreignObject>section.outline .disabled{color:hsl(203,43%,56%,60%)}div#p>svg>foreignObject>section:after{color:#9badbe}div#p>svg>foreignObject>section blockquote{background-color:#dadfec;position:relative;border:none;padding-left:40px}div#p>svg>foreignObject>section blockquote:after{content:"“";font-family:Arial;font-size:500%;color:#8697a7;display:block;position:absolute;left:5px;top:-55px;bottom:0;margin:auto}div#p>svg>foreignObject>section div.corner-triangle{display:block;width:0px;height:0px;border-style:solid;border-width:0 150px 150px 0;border-color:transparent #608A32 transparent transparent;position:fixed;top:0;right:0;color:white}div#p>svg>foreignObject>section div.corner-triangle .corner-triangle-text{position:relative;top:40px;right:-60px;width:100px;font-family:consolas,"Noto Sans JP";font-weight:600;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}div#p>svg>foreignObject>section div.corner-triangle .corner-triangle-text :is(span,marp-span).corner-triangle-firstline{margin-left:29px}div#p>svg>foreignObject>section div.corner-triangle .corner-triangle-text a{color:white}div#p>svg>foreignObject>section .bespoke-marp-osc{display:hidden}div#p>svg>foreignObject>section.outline{background-color:var(--color-font-sub)}div#p>svg>foreignObject>section.outline>.corner-triangle{border-color:transparent var(--color-font-accent) transparent transparent}div#p>svg>foreignObject>section.outline p{margin-left:0}div#p>svg>foreignObject>section.outline :is(h1,marp-h1){font-size:160%}div#p>svg>foreignObject>section.outline :is(h1,marp-h1),div#p>svg>foreignObject>section.outline :is(h2,marp-h2),div#p>svg>foreignObject>section.outline :is(h3,marp-h3),div#p>svg>foreignObject>section.outline li,div#p>svg>foreignObject>section.outline p,div#p>svg>foreignObject>section.outline ul{color:#eff3f5}div#p>svg>foreignObject>section p:has(subb){font-size:70%;font-weight:400}div#p>svg>foreignObject>section .logo{position:absolute;font-family:consolas;font-size:120%;font-weight:bold;line-height:200px;left:630px;top:340px;width:200px;height:200px;border-radius:50%;color:var(--color-background);text-align:center;background:var(--color-font-main)}div#p>svg>foreignObject>section section.logo{--marpit-root-font-size:120%}div#p>svg>foreignObject>section{width:960px;height:720px}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]{columns:initial!important;display:block!important;padding:0!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#p>svg>foreignObject>section[data-marpit-advanced-background=content],div#p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}
+/* @theme shin */div#p>svg>foreignObject>:where(section):not([root]){--color-font-main:#012F4B;--color-font-sub:#0f3b57;--color-font-accent:rgb(201,57,64);--color-background:#EBEEF9}div#p>svg>foreignObject>section{font-family:"Noto Sans","Noto Sans JP";justify-content:start;background-color:var(--color-background);color:var(--color-font-main);padding:30px 70px}div#p>svg>foreignObject>section ::selection{background-color:rgba(255,255,0,0.5)}div#p>svg>foreignObject>section.title{padding-top:400px}div#p>svg>foreignObject>section sub{bottom:0}div#p>svg>foreignObject>section :is(pre,marp-pre),div#p>svg>foreignObject>section blockquote,div#p>svg>foreignObject>section code{font-family:consolas,"Noto Sans JP";color:var(--color-font-sub);background-color:white;font-weight:500;padding:3px 6px;border:1px solid var(--color-font-main)}div#p>svg>foreignObject>section p:has(+marp-pre){margin-bottom:0;padding-bottom:5px}div#p>svg>foreignObject>section code{font-size:70%;vertical-align:middle}div#p>svg>foreignObject>section :is(pre,marp-pre){margin-left:30px}div#p>svg>foreignObject>section :is(h1,marp-h1){padding:0;font-size:200%;font-weight:900;color:var(--color-font-main)}div#p>svg>foreignObject>section :is(h2,marp-h2){margin:0;padding:10px 0 0 0;color:var(--color-font-main);font-weight:900;padding-bottom:5px}div#p>svg>foreignObject>section ul{list-style-type:"- ";margin-top:0;padding-top:0}div#p>svg>foreignObject>section ol{padding-inline-start:45px}div#p>svg>foreignObject>section u,div#p>svg>foreignObject>section u::selection{text-decoration:underline 8pt;text-decoration-color:#ffc3d6;text-underline-offset:-3px}div#p>svg>foreignObject>section li,div#p>svg>foreignObject>section p{color:var(--color-font-sub);margin-left:30px;font-weight:500;font-size:120%;line-height:1.2;margin-top:0}div#p>svg>foreignObject>section li+li{margin-top:0}div#p>svg>foreignObject>section brr{display:block;content:"";margin-top:.5lh}div#p>svg>foreignObject>section.outline .disabled{color:hsl(203,43%,56%,60%)}div#p>svg>foreignObject>section:after{color:#9badbe}div#p>svg>foreignObject>section blockquote{background-color:#dadfec;position:relative;border:none;padding-left:40px}div#p>svg>foreignObject>section blockquote:after{content:"“";font-family:Arial;font-size:500%;color:#8697a7;display:block;position:absolute;left:5px;top:-55px;bottom:0;margin:auto}div#p>svg>foreignObject>section div.corner-triangle{display:block;width:0px;height:0px;border-style:solid;border-width:0 150px 150px 0;border-color:transparent #608A32 transparent transparent;position:fixed;top:0;right:0;color:white}div#p>svg>foreignObject>section div.corner-triangle .corner-triangle-text{position:relative;top:40px;right:-60px;width:100px;font-family:consolas,"Noto Sans JP";font-weight:600;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}div#p>svg>foreignObject>section div.corner-triangle .corner-triangle-text :is(span,marp-span).corner-triangle-firstline{margin-left:29px}div#p>svg>foreignObject>section div.corner-triangle .corner-triangle-text a{color:white}div#p>svg>foreignObject>section .bespoke-marp-osc{display:hidden}div#p>svg>foreignObject>section.enshu{background-color:hsl(27,54%,95%)}div#p>svg>foreignObject>section.enshu :is(h1,marp-h1),div#p>svg>foreignObject>section.enshu :is(h2,marp-h2),div#p>svg>foreignObject>section.enshu :is(h3,marp-h3),div#p>svg>foreignObject>section.enshu li,div#p>svg>foreignObject>section.enshu p,div#p>svg>foreignObject>section.enshu ul{color:hsl(23,97%,15%)}div#p>svg>foreignObject>section.outline{background-color:var(--color-font-sub)}div#p>svg>foreignObject>section.outline>.corner-triangle{border-color:transparent var(--color-font-accent) transparent transparent}div#p>svg>foreignObject>section.outline p{margin-left:0}div#p>svg>foreignObject>section.outline :is(h1,marp-h1){font-size:160%}div#p>svg>foreignObject>section.outline :is(h1,marp-h1),div#p>svg>foreignObject>section.outline :is(h2,marp-h2),div#p>svg>foreignObject>section.outline :is(h3,marp-h3),div#p>svg>foreignObject>section.outline li,div#p>svg>foreignObject>section.outline p,div#p>svg>foreignObject>section.outline ul{color:#eff3f5}div#p>svg>foreignObject>section p:has(subb){font-size:70%;font-weight:400}div#p>svg>foreignObject>section .logo{position:absolute;font-family:consolas;font-size:120%;font-weight:bold;line-height:200px;left:630px;top:340px;width:200px;height:200px;border-radius:50%;color:var(--color-background);text-align:center;background:var(--color-font-main)}div#p>svg>foreignObject>section section.logo{--marpit-root-font-size:120%}div#p>svg>foreignObject>section{width:960px;height:720px}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]{columns:initial!important;display:block!important;padding:0!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#p>svg>foreignObject>section[data-marpit-advanced-background=content],div#p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}

ソフトウェア設計論

まつ本

@@ -646,7 +646,7 @@

良いプログラマはコミュニケーションもうまい

客観視能力も必要
相手がどう感じるかを類推する

-
+

演習 (10m)

自身のプログラムをコードレビューせよ

題材はなんでもOK
diff --git a/lecture-impl.md b/lecture-impl.md index c53200a..923a128 100644 --- a/lecture-impl.md +++ b/lecture-impl.md @@ -784,6 +784,7 @@ public class Y implements X { 相手がどう感じるかを類推する --- + # 演習 (10m) ## 自身のプログラムをコードレビューせよ 題材はなんでもOK diff --git a/lecture-test.html b/lecture-test.html index ea78aa5..068ecc0 100644 --- a/lecture-test.html +++ b/lecture-test.html @@ -10,11 +10,11 @@ * @size 4:3 960px 720px */div#p>svg>foreignObject>section{--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-storage-modifier-import:#24292f;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-variable:#953800;--color-prettylights-syntax-brackethighlighter-unmatched:#82071e;--color-prettylights-syntax-invalid-illegal-text:#f6f8fa;--color-prettylights-syntax-invalid-illegal-bg:#82071e;--color-prettylights-syntax-carriage-return-text:#f6f8fa;--color-prettylights-syntax-carriage-return-bg:#cf222e;--color-prettylights-syntax-string-regexp:#116329;--color-prettylights-syntax-markup-list:#3b2300;--color-prettylights-syntax-markup-heading:#0550ae;--color-prettylights-syntax-markup-italic:#24292f;--color-prettylights-syntax-markup-bold:#24292f;--color-prettylights-syntax-markup-deleted-text:#82071e;--color-prettylights-syntax-markup-deleted-bg:#ffebe9;--color-prettylights-syntax-markup-inserted-text:#116329;--color-prettylights-syntax-markup-inserted-bg:#dafbe1;--color-prettylights-syntax-markup-changed-text:#953800;--color-prettylights-syntax-markup-changed-bg:#ffd8b5;--color-prettylights-syntax-markup-ignored-text:#eaeef2;--color-prettylights-syntax-markup-ignored-bg:#0550ae;--color-prettylights-syntax-meta-diff-range:#8250df;--color-prettylights-syntax-brackethighlighter-angle:#57606a;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant-other-reference-link:#0a3069;--color-fg-default:#24292f;--color-fg-muted:#57606a;--color-fg-subtle:#6e7781;--color-canvas-default:#fff;--color-canvas-subtle:#f6f8fa;--color-border-default:#d0d7de;--color-border-muted:#d8dee4;--color-neutral-muted:rgba(175,184,193,.2);--color-accent-fg:#0969da;--color-accent-emphasis:#0969da;--color-attention-subtle:#fff8c5;--color-danger-fg:#cf222e;color-scheme:light}div#p>svg>foreignObject>section:where(.invert){--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-storage-modifier-import:#c9d1d9;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-variable:#ffa657;--color-prettylights-syntax-brackethighlighter-unmatched:#f85149;--color-prettylights-syntax-invalid-illegal-text:#f0f6fc;--color-prettylights-syntax-invalid-illegal-bg:#8e1519;--color-prettylights-syntax-carriage-return-text:#f0f6fc;--color-prettylights-syntax-carriage-return-bg:#b62324;--color-prettylights-syntax-string-regexp:#7ee787;--color-prettylights-syntax-markup-list:#f2cc60;--color-prettylights-syntax-markup-heading:#1f6feb;--color-prettylights-syntax-markup-italic:#c9d1d9;--color-prettylights-syntax-markup-bold:#c9d1d9;--color-prettylights-syntax-markup-deleted-text:#ffdcd7;--color-prettylights-syntax-markup-deleted-bg:#67060c;--color-prettylights-syntax-markup-inserted-text:#aff5b4;--color-prettylights-syntax-markup-inserted-bg:#033a16;--color-prettylights-syntax-markup-changed-text:#ffdfb6;--color-prettylights-syntax-markup-changed-bg:#5a1e02;--color-prettylights-syntax-markup-ignored-text:#c9d1d9;--color-prettylights-syntax-markup-ignored-bg:#1158c7;--color-prettylights-syntax-meta-diff-range:#d2a8ff;--color-prettylights-syntax-brackethighlighter-angle:#8b949e;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant-other-reference-link:#a5d6ff;--color-fg-default:#c9d1d9;--color-fg-muted:#8b949e;--color-fg-subtle:#6e7681;--color-canvas-default:#0d1117;--color-canvas-subtle:#161b22;--color-border-default:#30363d;--color-border-muted:#21262d;--color-neutral-muted:hsla(215,8%,47%,.4);--color-accent-fg:#58a6ff;--color-accent-emphasis:#1f6feb;--color-attention-subtle:rgba(187,128,9,.15);--color-danger-fg:#f85149;color-scheme:dark}div#p>svg>foreignObject>section{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;word-wrap:break-word;background-color:var(--color-canvas-default);color:var(--color-fg-default);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;font-size:16px;line-height:1.5;margin:0}div#p>svg>foreignObject>section{--marpit-root-font-size:16px}div#p>svg>foreignObject>section :is(h1,marp-h1):hover .anchor .octicon-link:before,div#p>svg>foreignObject>section :is(h2,marp-h2):hover .anchor .octicon-link:before,div#p>svg>foreignObject>section :is(h3,marp-h3):hover .anchor .octicon-link:before,div#p>svg>foreignObject>section :is(h4,marp-h4):hover .anchor .octicon-link:before,div#p>svg>foreignObject>section :is(h5,marp-h5):hover .anchor .octicon-link:before,div#p>svg>foreignObject>section :is(h6,marp-h6):hover .anchor .octicon-link:before{background-color:currentColor;content:" ";display:inline-block;height:16px;-webkit-mask-image:url('data:image/svg+xml;charset=utf-8,');mask-image:url('data:image/svg+xml;charset=utf-8,');width:16px}div#p>svg>foreignObject>section details,div#p>svg>foreignObject>section figcaption,div#p>svg>foreignObject>section figure{display:block}div#p>svg>foreignObject>section summary{display:list-item}div#p>svg>foreignObject>section [hidden]{display:none!important}div#p>svg>foreignObject>section a{background-color:transparent;color:var(--color-accent-fg);text-decoration:none}div#p>svg>foreignObject>section abbr[title]{border-bottom:none;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}div#p>svg>foreignObject>section b,div#p>svg>foreignObject>section strong{font-weight:var(--base-text-weight-semibold,600)}div#p>svg>foreignObject>section dfn{font-style:italic}div#p>svg>foreignObject>section :is(h1,marp-h1){border-bottom:1px solid var(--color-border-muted);font-size:2em;font-weight:var(--base-text-weight-semibold,600);margin:.67em 0;padding-bottom:.3em}div#p>svg>foreignObject>section mark{background-color:var(--color-attention-subtle);color:var(--color-fg-default)}div#p>svg>foreignObject>section small{font-size:90%}div#p>svg>foreignObject>section sub,div#p>svg>foreignObject>section sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}div#p>svg>foreignObject>section sub{bottom:-.25em}div#p>svg>foreignObject>section sup{top:-.5em}div#p>svg>foreignObject>section img{background-color:var(--color-canvas-default);border-style:none;box-sizing:content-box;max-width:100%}div#p>svg>foreignObject>section :is(pre,marp-pre),div#p>svg>foreignObject>section code,div#p>svg>foreignObject>section kbd,div#p>svg>foreignObject>section samp{font-family:monospace;font-size:1em}div#p>svg>foreignObject>section figure{margin:1em 40px}div#p>svg>foreignObject>section hr{background:transparent;background-color:var(--color-border-default);border:0;box-sizing:content-box;height:.25em;margin:24px 0;overflow:hidden;padding:0}div#p>svg>foreignObject>section input{font:inherit;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible}div#p>svg>foreignObject>section [type=button],div#p>svg>foreignObject>section [type=reset],div#p>svg>foreignObject>section [type=submit]{-webkit-appearance:button}div#p>svg>foreignObject>section [type=checkbox],div#p>svg>foreignObject>section [type=radio]{box-sizing:border-box;padding:0}div#p>svg>foreignObject>section [type=number]::-webkit-inner-spin-button,div#p>svg>foreignObject>section [type=number]::-webkit-outer-spin-button{height:auto}div#p>svg>foreignObject>section [type=search]::-webkit-search-cancel-button,div#p>svg>foreignObject>section [type=search]::-webkit-search-decoration{-webkit-appearance:none}div#p>svg>foreignObject>section ::-webkit-input-placeholder{color:inherit;opacity:.54}div#p>svg>foreignObject>section ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}div#p>svg>foreignObject>section a:hover{text-decoration:underline}div#p>svg>foreignObject>section ::-moz-placeholder{color:var(--color-fg-subtle);opacity:1}div#p>svg>foreignObject>section ::placeholder{color:var(--color-fg-subtle);opacity:1}div#p>svg>foreignObject>section hr:after,div#p>svg>foreignObject>section hr:before{content:"";display:table}div#p>svg>foreignObject>section hr:after{clear:both}div#p>svg>foreignObject>section table{border-collapse:collapse;border-spacing:0;display:block;max-width:100%;overflow:auto;width:-moz-max-content;width:max-content}div#p>svg>foreignObject>section td,div#p>svg>foreignObject>section th{padding:0}div#p>svg>foreignObject>section details summary{cursor:pointer}div#p>svg>foreignObject>section details:not([open])>:not(summary){display:none!important}div#p>svg>foreignObject>section [role=button]:focus,div#p>svg>foreignObject>section a:focus,div#p>svg>foreignObject>section input[type=checkbox]:focus,div#p>svg>foreignObject>section input[type=radio]:focus{box-shadow:none;outline:2px solid var(--color-accent-fg);outline-offset:-2px}div#p>svg>foreignObject>section [role=button]:focus:not(:focus-visible),div#p>svg>foreignObject>section a:focus:not(:focus-visible),div#p>svg>foreignObject>section input[type=checkbox]:focus:not(:focus-visible),div#p>svg>foreignObject>section input[type=radio]:focus:not(:focus-visible){outline:1px solid transparent}div#p>svg>foreignObject>section [role=button]:focus-visible,div#p>svg>foreignObject>section a:focus-visible,div#p>svg>foreignObject>section input[type=checkbox]:focus-visible,div#p>svg>foreignObject>section input[type=radio]:focus-visible{box-shadow:none;outline:2px solid var(--color-accent-fg);outline-offset:-2px}div#p>svg>foreignObject>section a:not([class]):focus,div#p>svg>foreignObject>section a:not([class]):focus-visible,div#p>svg>foreignObject>section input[type=checkbox]:focus,div#p>svg>foreignObject>section input[type=checkbox]:focus-visible,div#p>svg>foreignObject>section input[type=radio]:focus,div#p>svg>foreignObject>section input[type=radio]:focus-visible{outline-offset:0}div#p>svg>foreignObject>section kbd{background-color:var(--color-canvas-subtle);border-bottom-color:var(--color-neutral-muted);border:1px solid var(--color-neutral-muted);border-radius:6px;box-shadow:inset 0 -1px 0 var(--color-neutral-muted);color:var(--color-fg-default);display:inline-block;font:11px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;line-height:10px;padding:3px 5px;vertical-align:middle}div#p>svg>foreignObject>section :is(h1,marp-h1),div#p>svg>foreignObject>section :is(h2,marp-h2),div#p>svg>foreignObject>section :is(h3,marp-h3),div#p>svg>foreignObject>section :is(h4,marp-h4),div#p>svg>foreignObject>section :is(h5,marp-h5),div#p>svg>foreignObject>section :is(h6,marp-h6){font-weight:var(--base-text-weight-semibold,600);line-height:1.25;margin-bottom:16px;margin-top:24px}div#p>svg>foreignObject>section :is(h2,marp-h2){border-bottom:1px solid var(--color-border-muted);font-size:1.5em;padding-bottom:.3em}div#p>svg>foreignObject>section :is(h2,marp-h2),div#p>svg>foreignObject>section :is(h3,marp-h3){font-weight:var(--base-text-weight-semibold,600)}div#p>svg>foreignObject>section :is(h3,marp-h3){font-size:1.25em}div#p>svg>foreignObject>section :is(h4,marp-h4){font-size:1em}div#p>svg>foreignObject>section :is(h4,marp-h4),div#p>svg>foreignObject>section :is(h5,marp-h5){font-weight:var(--base-text-weight-semibold,600)}div#p>svg>foreignObject>section :is(h5,marp-h5){font-size:.875em}div#p>svg>foreignObject>section :is(h6,marp-h6){color:var(--color-fg-muted);font-size:.85em;font-weight:var(--base-text-weight-semibold,600)}div#p>svg>foreignObject>section p{margin-bottom:10px;margin-top:0}div#p>svg>foreignObject>section blockquote{border-left:.25em solid var(--color-border-default);color:var(--color-fg-muted);margin:0;padding:0 1em}div#p>svg>foreignObject>section ol,div#p>svg>foreignObject>section ul{margin-bottom:0;margin-top:0;padding-left:2em}div#p>svg>foreignObject>section ol ol,div#p>svg>foreignObject>section ul ol{list-style-type:lower-roman}div#p>svg>foreignObject>section ol ol ol,div#p>svg>foreignObject>section ol ul ol,div#p>svg>foreignObject>section ul ol ol,div#p>svg>foreignObject>section ul ul ol{list-style-type:lower-alpha}div#p>svg>foreignObject>section dd{margin-left:0}div#p>svg>foreignObject>section :is(pre,marp-pre),div#p>svg>foreignObject>section code,div#p>svg>foreignObject>section samp,div#p>svg>foreignObject>section tt{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px}div#p>svg>foreignObject>section :is(pre,marp-pre){word-wrap:normal;margin-bottom:0;margin-top:0}div#p>svg>foreignObject>section .octicon{fill:currentColor;display:inline-block;overflow:visible!important;vertical-align:text-bottom}div#p>svg>foreignObject>section input::-webkit-inner-spin-button,div#p>svg>foreignObject>section input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}div#p>svg>foreignObject>section:after,div#p>svg>foreignObject>section:before{ /* content:""; */display:table}div#p>svg>foreignObject>section:after{clear:both}div#p>svg>foreignObject>section>:first-child{margin-top:0!important}div#p>svg>foreignObject>section>:last-child{margin-bottom:0!important}div#p>svg>foreignObject>section a:not([href]){color:inherit;text-decoration:none}div#p>svg>foreignObject>section .absent{color:var(--color-danger-fg)}div#p>svg>foreignObject>section .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}div#p>svg>foreignObject>section .anchor:focus{outline:none}div#p>svg>foreignObject>section :is(pre,marp-pre),div#p>svg>foreignObject>section blockquote,div#p>svg>foreignObject>section details,div#p>svg>foreignObject>section dl,div#p>svg>foreignObject>section ol,div#p>svg>foreignObject>section p,div#p>svg>foreignObject>section table,div#p>svg>foreignObject>section ul{margin-bottom:16px;margin-top:0}div#p>svg>foreignObject>section blockquote>:first-child{margin-top:0}div#p>svg>foreignObject>section blockquote>:last-child{margin-bottom:0}div#p>svg>foreignObject>section :is(h1,marp-h1) .octicon-link,div#p>svg>foreignObject>section :is(h2,marp-h2) .octicon-link,div#p>svg>foreignObject>section :is(h3,marp-h3) .octicon-link,div#p>svg>foreignObject>section :is(h4,marp-h4) .octicon-link,div#p>svg>foreignObject>section :is(h5,marp-h5) .octicon-link,div#p>svg>foreignObject>section :is(h6,marp-h6) .octicon-link{color:var(--color-fg-default);vertical-align:middle;visibility:hidden}div#p>svg>foreignObject>section :is(h1,marp-h1):hover .anchor,div#p>svg>foreignObject>section :is(h2,marp-h2):hover .anchor,div#p>svg>foreignObject>section :is(h3,marp-h3):hover .anchor,div#p>svg>foreignObject>section :is(h4,marp-h4):hover .anchor,div#p>svg>foreignObject>section :is(h5,marp-h5):hover .anchor,div#p>svg>foreignObject>section :is(h6,marp-h6):hover .anchor{text-decoration:none}div#p>svg>foreignObject>section :is(h1,marp-h1):hover .anchor .octicon-link,div#p>svg>foreignObject>section :is(h2,marp-h2):hover .anchor .octicon-link,div#p>svg>foreignObject>section :is(h3,marp-h3):hover .anchor .octicon-link,div#p>svg>foreignObject>section :is(h4,marp-h4):hover .anchor .octicon-link,div#p>svg>foreignObject>section :is(h5,marp-h5):hover .anchor .octicon-link,div#p>svg>foreignObject>section :is(h6,marp-h6):hover .anchor .octicon-link{visibility:visible}div#p>svg>foreignObject>section :is(h1,marp-h1) code,div#p>svg>foreignObject>section :is(h1,marp-h1) tt,div#p>svg>foreignObject>section :is(h2,marp-h2) code,div#p>svg>foreignObject>section :is(h2,marp-h2) tt,div#p>svg>foreignObject>section :is(h3,marp-h3) code,div#p>svg>foreignObject>section :is(h3,marp-h3) tt,div#p>svg>foreignObject>section :is(h4,marp-h4) code,div#p>svg>foreignObject>section :is(h4,marp-h4) tt,div#p>svg>foreignObject>section :is(h5,marp-h5) code,div#p>svg>foreignObject>section :is(h5,marp-h5) tt,div#p>svg>foreignObject>section :is(h6,marp-h6) code,div#p>svg>foreignObject>section :is(h6,marp-h6) tt{font-size:inherit;padding:0 .2em}div#p>svg>foreignObject>section summary :is(h1,marp-h1),div#p>svg>foreignObject>section summary :is(h2,marp-h2),div#p>svg>foreignObject>section summary :is(h3,marp-h3),div#p>svg>foreignObject>section summary :is(h4,marp-h4),div#p>svg>foreignObject>section summary :is(h5,marp-h5),div#p>svg>foreignObject>section summary :is(h6,marp-h6){display:inline-block}div#p>svg>foreignObject>section summary :is(h1,marp-h1) .anchor,div#p>svg>foreignObject>section summary :is(h2,marp-h2) .anchor,div#p>svg>foreignObject>section summary :is(h3,marp-h3) .anchor,div#p>svg>foreignObject>section summary :is(h4,marp-h4) .anchor,div#p>svg>foreignObject>section summary :is(h5,marp-h5) .anchor,div#p>svg>foreignObject>section summary :is(h6,marp-h6) .anchor{margin-left:-40px}div#p>svg>foreignObject>section summary :is(h1,marp-h1),div#p>svg>foreignObject>section summary :is(h2,marp-h2){border-bottom:0;padding-bottom:0}div#p>svg>foreignObject>section ol.no-list,div#p>svg>foreignObject>section ul.no-list{list-style-type:none;padding:0}div#p>svg>foreignObject>section ol[type=a]{list-style-type:lower-alpha}div#p>svg>foreignObject>section ol[type=A]{list-style-type:upper-alpha}div#p>svg>foreignObject>section ol[type=i]{list-style-type:lower-roman}div#p>svg>foreignObject>section ol[type=I]{list-style-type:upper-roman}div#p>svg>foreignObject>section div>ol:not([type]),div#p>svg>foreignObject>section ol[type="1"]{list-style-type:decimal}div#p>svg>foreignObject>section ol ol,div#p>svg>foreignObject>section ol ul,div#p>svg>foreignObject>section ul ol,div#p>svg>foreignObject>section ul ul{margin-bottom:0;margin-top:0}div#p>svg>foreignObject>section li>p{margin-top:16px}div#p>svg>foreignObject>section li+li{margin-top:.25em}div#p>svg>foreignObject>section dl{padding:0}div#p>svg>foreignObject>section dl dt{font-size:1em;font-style:italic;font-weight:var(--base-text-weight-semibold,600);margin-top:16px;padding:0}div#p>svg>foreignObject>section dl dd{margin-bottom:16px;padding:0 16px}div#p>svg>foreignObject>section table th{font-weight:var(--base-text-weight-semibold,600)}div#p>svg>foreignObject>section table td,div#p>svg>foreignObject>section table th{border:1px solid var(--color-border-default);padding:6px 13px}div#p>svg>foreignObject>section table tr{background-color:var(--color-canvas-default);border-top:1px solid var(--color-border-muted)}div#p>svg>foreignObject>section table tr:nth-child(2n){background-color:var(--color-canvas-subtle)}div#p>svg>foreignObject>section table img{background-color:transparent}div#p>svg>foreignObject>section img[align=right]{padding-left:20px}div#p>svg>foreignObject>section img[align=left]{padding-right:20px}div#p>svg>foreignObject>section .emoji{background-color:transparent;max-width:none;vertical-align:text-top}div#p>svg>foreignObject>section :is(span,marp-span).frame,div#p>svg>foreignObject>section :is(span,marp-span).frame>:is(span,marp-span){display:block;overflow:hidden}div#p>svg>foreignObject>section :is(span,marp-span).frame>:is(span,marp-span){border:1px solid var(--color-border-default);float:left;margin:13px 0 0;padding:7px;width:auto}div#p>svg>foreignObject>section :is(span,marp-span).frame :is(span,marp-span) img{display:block;float:left}div#p>svg>foreignObject>section :is(span,marp-span).frame :is(span,marp-span) :is(span,marp-span){clear:both;color:var(--color-fg-default);display:block;padding:5px 0 0}div#p>svg>foreignObject>section :is(span,marp-span).align-center{clear:both;display:block;overflow:hidden}div#p>svg>foreignObject>section :is(span,marp-span).align-center>:is(span,marp-span){display:block;margin:13px auto 0;overflow:hidden;text-align:center}div#p>svg>foreignObject>section :is(span,marp-span).align-center :is(span,marp-span) img{margin:0 auto;text-align:center}div#p>svg>foreignObject>section :is(span,marp-span).align-right{clear:both;display:block;overflow:hidden}div#p>svg>foreignObject>section :is(span,marp-span).align-right>:is(span,marp-span){display:block;margin:13px 0 0;overflow:hidden;text-align:right}div#p>svg>foreignObject>section :is(span,marp-span).align-right :is(span,marp-span) img{margin:0;text-align:right}div#p>svg>foreignObject>section :is(span,marp-span).float-left{display:block;float:left;margin-right:13px;overflow:hidden}div#p>svg>foreignObject>section :is(span,marp-span).float-left :is(span,marp-span){margin:13px 0 0}div#p>svg>foreignObject>section :is(span,marp-span).float-right{display:block;float:right;margin-left:13px;overflow:hidden}div#p>svg>foreignObject>section :is(span,marp-span).float-right>:is(span,marp-span){display:block;margin:13px auto 0;overflow:hidden;text-align:right}div#p>svg>foreignObject>section code,div#p>svg>foreignObject>section tt{background-color:var(--color-neutral-muted);border-radius:6px;font-size:85%;margin:0;padding:.2em .4em;white-space:break-spaces}div#p>svg>foreignObject>section code br,div#p>svg>foreignObject>section tt br{display:none}div#p>svg>foreignObject>section del code{text-decoration:inherit}div#p>svg>foreignObject>section samp{font-size:85%}div#p>svg>foreignObject>section :is(pre,marp-pre) code{font-size:100%}div#p>svg>foreignObject>section :is(pre,marp-pre)>code{background:transparent;border:0;margin:0;padding:0;white-space:pre;word-break:normal}div#p>svg>foreignObject>section .highlight{margin-bottom:16px}div#p>svg>foreignObject>section .highlight :is(pre,marp-pre){margin-bottom:0;word-break:normal}div#p>svg>foreignObject>section :is(pre,marp-pre){background-color:var(--color-canvas-subtle);border-radius:6px;font-size:85%;line-height:1.45;overflow:auto;padding:16px}div#p>svg>foreignObject>section :is(pre,marp-pre) code,div#p>svg>foreignObject>section :is(pre,marp-pre) tt{word-wrap:normal;background-color:transparent;border:0;display:inline;line-height:inherit;margin:0;max-width:auto;overflow:visible;padding:0}div#p>svg>foreignObject>section .csv-data td,div#p>svg>foreignObject>section .csv-data th{font-size:12px;line-height:1;overflow:hidden;padding:5px;text-align:left;white-space:nowrap}div#p>svg>foreignObject>section .csv-data .blob-num{background:var(--color-canvas-default);border:0;padding:10px 8px 9px;text-align:right}div#p>svg>foreignObject>section .csv-data tr{border-top:0}div#p>svg>foreignObject>section .csv-data th{background:var(--color-canvas-subtle);border-top:0;font-weight:var(--base-text-weight-semibold,600)}div#p>svg>foreignObject>section [data-footnote-ref]:before{content:"["}div#p>svg>foreignObject>section [data-footnote-ref]:after{content:"]"}div#p>svg>foreignObject>section .footnotes{border-top:1px solid var(--color-border-default);color:var(--color-fg-muted);font-size:12px}div#p>svg>foreignObject>section div#p>svg>foreignObject>section section.footnotes{--marpit-root-font-size:12px}div#p>svg>foreignObject>section .footnotes ol{padding-left:16px}div#p>svg>foreignObject>section .footnotes ol ul{display:inline-block;margin-top:16px;padding-left:16px}div#p>svg>foreignObject>section .footnotes li{position:relative}div#p>svg>foreignObject>section .footnotes li:target:before{border:2px solid var(--color-accent-emphasis);border-radius:6px;bottom:-8px;content:"";left:-24px;pointer-events:none;position:absolute;right:-8px;top:-8px}div#p>svg>foreignObject>section .footnotes li:target{color:var(--color-fg-default)}div#p>svg>foreignObject>section .footnotes .data-footnote-backref g-emoji{font-family:monospace}div#p>svg>foreignObject>section .pl-c{color:var(--color-prettylights-syntax-comment)}div#p>svg>foreignObject>section .pl-c1,div#p>svg>foreignObject>section .pl-s .pl-v{color:var(--color-prettylights-syntax-constant)}div#p>svg>foreignObject>section .pl-e,div#p>svg>foreignObject>section .pl-en{color:var(--color-prettylights-syntax-entity)}div#p>svg>foreignObject>section .pl-s .pl-s1,div#p>svg>foreignObject>section .pl-smi{color:var(--color-prettylights-syntax-storage-modifier-import)}div#p>svg>foreignObject>section .pl-ent{color:var(--color-prettylights-syntax-entity-tag)}div#p>svg>foreignObject>section .pl-k{color:var(--color-prettylights-syntax-keyword)}div#p>svg>foreignObject>section .pl-pds,div#p>svg>foreignObject>section .pl-s,div#p>svg>foreignObject>section .pl-s .pl-pse .pl-s1,div#p>svg>foreignObject>section .pl-sr,div#p>svg>foreignObject>section .pl-sr .pl-cce,div#p>svg>foreignObject>section .pl-sr .pl-sra,div#p>svg>foreignObject>section .pl-sr .pl-sre{color:var(--color-prettylights-syntax-string)}div#p>svg>foreignObject>section .pl-smw,div#p>svg>foreignObject>section .pl-v{color:var(--color-prettylights-syntax-variable)}div#p>svg>foreignObject>section .pl-bu{color:var(--color-prettylights-syntax-brackethighlighter-unmatched)}div#p>svg>foreignObject>section .pl-ii{background-color:var(--color-prettylights-syntax-invalid-illegal-bg);color:var(--color-prettylights-syntax-invalid-illegal-text)}div#p>svg>foreignObject>section .pl-c2{background-color:var(--color-prettylights-syntax-carriage-return-bg);color:var(--color-prettylights-syntax-carriage-return-text)}div#p>svg>foreignObject>section .pl-sr .pl-cce{color:var(--color-prettylights-syntax-string-regexp);font-weight:700}div#p>svg>foreignObject>section .pl-ml{color:var(--color-prettylights-syntax-markup-list)}div#p>svg>foreignObject>section .pl-mh,div#p>svg>foreignObject>section .pl-mh .pl-en,div#p>svg>foreignObject>section .pl-ms{color:var(--color-prettylights-syntax-markup-heading);font-weight:700}div#p>svg>foreignObject>section .pl-mi{color:var(--color-prettylights-syntax-markup-italic);font-style:italic}div#p>svg>foreignObject>section .pl-mb{color:var(--color-prettylights-syntax-markup-bold);font-weight:700}div#p>svg>foreignObject>section .pl-md{background-color:var(--color-prettylights-syntax-markup-deleted-bg);color:var(--color-prettylights-syntax-markup-deleted-text)}div#p>svg>foreignObject>section .pl-mi1{background-color:var(--color-prettylights-syntax-markup-inserted-bg);color:var(--color-prettylights-syntax-markup-inserted-text)}div#p>svg>foreignObject>section .pl-mc{background-color:var(--color-prettylights-syntax-markup-changed-bg);color:var(--color-prettylights-syntax-markup-changed-text)}div#p>svg>foreignObject>section .pl-mi2{background-color:var(--color-prettylights-syntax-markup-ignored-bg);color:var(--color-prettylights-syntax-markup-ignored-text)}div#p>svg>foreignObject>section .pl-mdr{color:var(--color-prettylights-syntax-meta-diff-range);font-weight:700}div#p>svg>foreignObject>section .pl-ba{color:var(--color-prettylights-syntax-brackethighlighter-angle)}div#p>svg>foreignObject>section .pl-sg{color:var(--color-prettylights-syntax-sublimelinter-gutter-mark)}div#p>svg>foreignObject>section .pl-corl{color:var(--color-prettylights-syntax-constant-other-reference-link);text-decoration:underline}div#p>svg>foreignObject>section g-emoji{display:inline-block;font-family:Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:1em;font-style:normal!important;font-weight:var(--base-text-weight-normal,400);line-height:1;min-width:1ch;vertical-align:-.075em}div#p>svg>foreignObject>section g-emoji img{height:1em;width:1em}div#p>svg>foreignObject>section .task-list-item{list-style-type:none}div#p>svg>foreignObject>section .task-list-item label{font-weight:var(--base-text-weight-normal,400)}div#p>svg>foreignObject>section .task-list-item.enabled label{cursor:pointer}div#p>svg>foreignObject>section .task-list-item+.task-list-item{margin-top:4px}div#p>svg>foreignObject>section .task-list-item .handle{display:none}div#p>svg>foreignObject>section .task-list-item-checkbox{margin:0 .2em .25em -1.4em;vertical-align:middle}div#p>svg>foreignObject>section .contains-task-list:dir(rtl) .task-list-item-checkbox{margin:0 -1.6em .25em .2em}div#p>svg>foreignObject>section .contains-task-list{position:relative}div#p>svg>foreignObject>section .contains-task-list:focus-within .task-list-item-convert-container,div#p>svg>foreignObject>section .contains-task-list:hover .task-list-item-convert-container{clip:auto;display:block;height:24px;overflow:visible;width:auto}div#p>svg>foreignObject>section ::-webkit-calendar-picker-indicator{filter:invert(50%)}div#p>svg>foreignObject>section :is(h1,marp-h1){color:var(--h1-color);font-size:1.6em}div#p>svg>foreignObject>section :is(h1,marp-h1),div#p>svg>foreignObject>section :is(h2,marp-h2){border-bottom:none}div#p>svg>foreignObject>section :is(h2,marp-h2){font-size:1.3em}div#p>svg>foreignObject>section :is(h3,marp-h3){font-size:1.1em}div#p>svg>foreignObject>section :is(h4,marp-h4){font-size:1.05em}div#p>svg>foreignObject>section :is(h5,marp-h5){font-size:1em}div#p>svg>foreignObject>section :is(h6,marp-h6){font-size:.9em}div#p>svg>foreignObject>section :is(h1,marp-h1) strong,div#p>svg>foreignObject>section :is(h2,marp-h2) strong,div#p>svg>foreignObject>section :is(h3,marp-h3) strong,div#p>svg>foreignObject>section :is(h4,marp-h4) strong,div#p>svg>foreignObject>section :is(h5,marp-h5) strong,div#p>svg>foreignObject>section :is(h6,marp-h6) strong{color:var(--heading-strong-color);font-weight:inherit}div#p>svg>foreignObject>section :is(h1,marp-h1)::part(auto-scaling),div#p>svg>foreignObject>section :is(h2,marp-h2)::part(auto-scaling),div#p>svg>foreignObject>section :is(h3,marp-h3)::part(auto-scaling),div#p>svg>foreignObject>section :is(h4,marp-h4)::part(auto-scaling),div#p>svg>foreignObject>section :is(h5,marp-h5)::part(auto-scaling),div#p>svg>foreignObject>section :is(h6,marp-h6)::part(auto-scaling){max-height:563px}div#p>svg>foreignObject>section hr{height:0;padding-top:.25em}div#p>svg>foreignObject>section :is(pre,marp-pre){border:1px solid var(--color-border-default);line-height:1.15;overflow:visible}div#p>svg>foreignObject>section :is(pre,marp-pre)::part(auto-scaling){max-height:529px}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs){color:var(--color-prettylights-syntax-storage-modifier-import)}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-doctag),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-keyword),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-meta .hljs-keyword),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-template-tag),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-template-variable),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-type),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-variable.language_){color:var(--color-prettylights-syntax-keyword)}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-title),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-title.class_),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-title.class_.inherited__),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-title.function_){color:var(--color-prettylights-syntax-entity)}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-attr),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-attribute),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-literal),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-meta),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-number),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-operator),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-selector-attr),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-selector-class),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-selector-id),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-variable){color:var(--color-prettylights-syntax-constant)}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-meta .hljs-string),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-regexp),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-string){color:var(--color-prettylights-syntax-string)}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-built_in),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-symbol){color:var(--color-prettylights-syntax-variable)}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-code),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-comment),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-formula){color:var(--color-prettylights-syntax-comment)}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-name),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-quote),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-selector-pseudo),div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-selector-tag){color:var(--color-prettylights-syntax-entity-tag)}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-subst){color:var(--color-prettylights-syntax-storage-modifier-import)}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-section){color:var(--color-prettylights-syntax-markup-heading);font-weight:700}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-bullet){color:var(--color-prettylights-syntax-markup-list)}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-emphasis){color:var(--color-prettylights-syntax-markup-italic);font-style:italic}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-strong){color:var(--color-prettylights-syntax-markup-bold);font-weight:700}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-addition){background-color:var(--color-prettylights-syntax-markup-inserted-bg);color:var(--color-prettylights-syntax-markup-inserted-text)}div#p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-deletion){background-color:var(--color-prettylights-syntax-markup-deleted-bg);color:var(--color-prettylights-syntax-markup-deleted-text)}div#p>svg>foreignObject>section footer,div#p>svg>foreignObject>section header{color:var(--header-footer-color);font-size:18px;left:30px;margin:0;position:absolute}div#p>svg>foreignObject>section header{top:21px}div#p>svg>foreignObject>section footer{bottom:21px}div#p>svg>foreignObject>section{--h1-color:#246;--header-footer-color:hsla(0,0%,40%,.75);--heading-strong-color:#48c;--paginate-color:#777;align-items:stretch;display:flex;flex-flow:column nowrap;font-size:29px;height:720px;justify-content:center;padding:78.5px;width:1280px}div#p>svg>foreignObject>section{--marpit-root-font-size:29px}div#p>svg>foreignObject>section:where(.invert){--h1-color:#cee7ff;--header-footer-color:hsla(0,0%,60%,.75);--heading-strong-color:#7bf;--paginate-color:#999}div#p>svg>foreignObject>section>:last-child,div#p>svg>foreignObject>section[data-footer]>:nth-last-child(2){margin-bottom:0}div#p>svg>foreignObject>section>:first-child,div#p>svg>foreignObject>section>header:first-child+*{margin-top:0}div#p>svg>foreignObject>section:after{bottom:21px;color:var(--paginate-color);font-size:24px;padding:0;position:absolute;right:30px}div#p>svg>foreignObject>section:after{--marpit-root-font-size:24px}div#p>svg>foreignObject>section[data-color] :is(h1,marp-h1),div#p>svg>foreignObject>section[data-color] :is(h2,marp-h2),div#p>svg>foreignObject>section[data-color] :is(h3,marp-h3),div#p>svg>foreignObject>section[data-color] :is(h4,marp-h4),div#p>svg>foreignObject>section[data-color] :is(h5,marp-h5),div#p>svg>foreignObject>section[data-color] :is(h6,marp-h6){color:currentcolor}div#p>svg>foreignObject>section img[data-marp-twemoji]{background:transparent;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em;width:1em} -/* @theme shin */div#p>svg>foreignObject>:where(section):not([root]){--color-font-main:#012F4B;--color-font-sub:#0f3b57;--color-font-accent:rgb(201,57,64);--color-background:#EBEEF9}div#p>svg>foreignObject>section{font-family:"Noto Sans","Noto Sans JP";justify-content:start;background-color:var(--color-background);color:var(--color-font-main);padding:30px 70px}div#p>svg>foreignObject>section ::selection{background-color:rgba(255,255,0,0.5)}div#p>svg>foreignObject>section.title{padding-top:400px}div#p>svg>foreignObject>section sub{bottom:0}div#p>svg>foreignObject>section :is(pre,marp-pre),div#p>svg>foreignObject>section blockquote,div#p>svg>foreignObject>section code{font-family:consolas,"Noto Sans JP";color:var(--color-font-sub);background-color:white;font-weight:500;padding:3px 6px;border:1px solid var(--color-font-main)}div#p>svg>foreignObject>section p:has(+marp-pre){margin-bottom:0;padding-bottom:5px}div#p>svg>foreignObject>section code{font-size:70%;vertical-align:middle}div#p>svg>foreignObject>section :is(pre,marp-pre){margin-left:30px}div#p>svg>foreignObject>section :is(h1,marp-h1){padding:0;font-size:200%;font-weight:900;color:var(--color-font-main)}div#p>svg>foreignObject>section :is(h2,marp-h2){margin:0;padding:10px 0 0 0;color:var(--color-font-main);font-weight:900;padding-bottom:5px}div#p>svg>foreignObject>section ul{list-style-type:"- ";margin-top:0;padding-top:0}div#p>svg>foreignObject>section ol{padding-inline-start:45px}div#p>svg>foreignObject>section u,div#p>svg>foreignObject>section u::selection{text-decoration:underline 8pt;text-decoration-color:#ffc3d6;text-underline-offset:-3px}div#p>svg>foreignObject>section li,div#p>svg>foreignObject>section p{color:var(--color-font-sub);margin-left:30px;font-weight:500;font-size:120%;line-height:1.2;margin-top:0}div#p>svg>foreignObject>section li+li{margin-top:0}div#p>svg>foreignObject>section brr{display:block;content:"";margin-top:.5lh}div#p>svg>foreignObject>section.outline .disabled{color:hsl(203,43%,56%,60%)}div#p>svg>foreignObject>section:after{color:#9badbe}div#p>svg>foreignObject>section blockquote{background-color:#dadfec;position:relative;border:none;padding-left:40px}div#p>svg>foreignObject>section blockquote:after{content:"“";font-family:Arial;font-size:500%;color:#8697a7;display:block;position:absolute;left:5px;top:-55px;bottom:0;margin:auto}div#p>svg>foreignObject>section div.corner-triangle{display:block;width:0px;height:0px;border-style:solid;border-width:0 150px 150px 0;border-color:transparent #608A32 transparent transparent;position:fixed;top:0;right:0;color:white}div#p>svg>foreignObject>section div.corner-triangle .corner-triangle-text{position:relative;top:40px;right:-60px;width:100px;font-family:consolas,"Noto Sans JP";font-weight:600;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}div#p>svg>foreignObject>section div.corner-triangle .corner-triangle-text :is(span,marp-span).corner-triangle-firstline{margin-left:29px}div#p>svg>foreignObject>section div.corner-triangle .corner-triangle-text a{color:white}div#p>svg>foreignObject>section .bespoke-marp-osc{display:hidden}div#p>svg>foreignObject>section.outline{background-color:var(--color-font-sub)}div#p>svg>foreignObject>section.outline>.corner-triangle{border-color:transparent var(--color-font-accent) transparent transparent}div#p>svg>foreignObject>section.outline p{margin-left:0}div#p>svg>foreignObject>section.outline :is(h1,marp-h1){font-size:160%}div#p>svg>foreignObject>section.outline :is(h1,marp-h1),div#p>svg>foreignObject>section.outline :is(h2,marp-h2),div#p>svg>foreignObject>section.outline :is(h3,marp-h3),div#p>svg>foreignObject>section.outline li,div#p>svg>foreignObject>section.outline p,div#p>svg>foreignObject>section.outline ul{color:#eff3f5}div#p>svg>foreignObject>section p:has(subb){font-size:70%;font-weight:400}div#p>svg>foreignObject>section .logo{position:absolute;font-family:consolas;font-size:120%;font-weight:bold;line-height:200px;left:630px;top:340px;width:200px;height:200px;border-radius:50%;color:var(--color-background);text-align:center;background:var(--color-font-main)}div#p>svg>foreignObject>section section.logo{--marpit-root-font-size:120%}div#p>svg>foreignObject>section{width:960px;height:720px}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]{columns:initial!important;display:block!important;padding:0!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#p>svg>foreignObject>section[data-marpit-advanced-background=content],div#p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}

+/* @theme shin */div#p>svg>foreignObject>:where(section):not([root]){--color-font-main:#012F4B;--color-font-sub:#0f3b57;--color-font-accent:rgb(201,57,64);--color-background:#EBEEF9}div#p>svg>foreignObject>section{font-family:"Noto Sans","Noto Sans JP";justify-content:start;background-color:var(--color-background);color:var(--color-font-main);padding:30px 70px}div#p>svg>foreignObject>section ::selection{background-color:rgba(255,255,0,0.5)}div#p>svg>foreignObject>section.title{padding-top:400px}div#p>svg>foreignObject>section sub{bottom:0}div#p>svg>foreignObject>section :is(pre,marp-pre),div#p>svg>foreignObject>section blockquote,div#p>svg>foreignObject>section code{font-family:consolas,"Noto Sans JP";color:var(--color-font-sub);background-color:white;font-weight:500;padding:3px 6px;border:1px solid var(--color-font-main)}div#p>svg>foreignObject>section p:has(+marp-pre){margin-bottom:0;padding-bottom:5px}div#p>svg>foreignObject>section code{font-size:70%;vertical-align:middle}div#p>svg>foreignObject>section :is(pre,marp-pre){margin-left:30px}div#p>svg>foreignObject>section :is(h1,marp-h1){padding:0;font-size:200%;font-weight:900;color:var(--color-font-main)}div#p>svg>foreignObject>section :is(h2,marp-h2){margin:0;padding:10px 0 0 0;color:var(--color-font-main);font-weight:900;padding-bottom:5px}div#p>svg>foreignObject>section ul{list-style-type:"- ";margin-top:0;padding-top:0}div#p>svg>foreignObject>section ol{padding-inline-start:45px}div#p>svg>foreignObject>section u,div#p>svg>foreignObject>section u::selection{text-decoration:underline 8pt;text-decoration-color:#ffc3d6;text-underline-offset:-3px}div#p>svg>foreignObject>section li,div#p>svg>foreignObject>section p{color:var(--color-font-sub);margin-left:30px;font-weight:500;font-size:120%;line-height:1.2;margin-top:0}div#p>svg>foreignObject>section li+li{margin-top:0}div#p>svg>foreignObject>section brr{display:block;content:"";margin-top:.5lh}div#p>svg>foreignObject>section.outline .disabled{color:hsl(203,43%,56%,60%)}div#p>svg>foreignObject>section:after{color:#9badbe}div#p>svg>foreignObject>section blockquote{background-color:#dadfec;position:relative;border:none;padding-left:40px}div#p>svg>foreignObject>section blockquote:after{content:"“";font-family:Arial;font-size:500%;color:#8697a7;display:block;position:absolute;left:5px;top:-55px;bottom:0;margin:auto}div#p>svg>foreignObject>section div.corner-triangle{display:block;width:0px;height:0px;border-style:solid;border-width:0 150px 150px 0;border-color:transparent #608A32 transparent transparent;position:fixed;top:0;right:0;color:white}div#p>svg>foreignObject>section div.corner-triangle .corner-triangle-text{position:relative;top:40px;right:-60px;width:100px;font-family:consolas,"Noto Sans JP";font-weight:600;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}div#p>svg>foreignObject>section div.corner-triangle .corner-triangle-text :is(span,marp-span).corner-triangle-firstline{margin-left:29px}div#p>svg>foreignObject>section div.corner-triangle .corner-triangle-text a{color:white}div#p>svg>foreignObject>section .bespoke-marp-osc{display:hidden}div#p>svg>foreignObject>section.enshu{background-color:hsl(27,54%,95%)}div#p>svg>foreignObject>section.enshu :is(h1,marp-h1),div#p>svg>foreignObject>section.enshu :is(h2,marp-h2),div#p>svg>foreignObject>section.enshu :is(h3,marp-h3),div#p>svg>foreignObject>section.enshu li,div#p>svg>foreignObject>section.enshu p,div#p>svg>foreignObject>section.enshu ul{color:hsl(23,97%,15%)}div#p>svg>foreignObject>section.outline{background-color:var(--color-font-sub)}div#p>svg>foreignObject>section.outline>.corner-triangle{border-color:transparent var(--color-font-accent) transparent transparent}div#p>svg>foreignObject>section.outline p{margin-left:0}div#p>svg>foreignObject>section.outline :is(h1,marp-h1){font-size:160%}div#p>svg>foreignObject>section.outline :is(h1,marp-h1),div#p>svg>foreignObject>section.outline :is(h2,marp-h2),div#p>svg>foreignObject>section.outline :is(h3,marp-h3),div#p>svg>foreignObject>section.outline li,div#p>svg>foreignObject>section.outline p,div#p>svg>foreignObject>section.outline ul{color:#eff3f5}div#p>svg>foreignObject>section p:has(subb){font-size:70%;font-weight:400}div#p>svg>foreignObject>section .logo{position:absolute;font-family:consolas;font-size:120%;font-weight:bold;line-height:200px;left:630px;top:340px;width:200px;height:200px;border-radius:50%;color:var(--color-background);text-align:center;background:var(--color-font-main)}div#p>svg>foreignObject>section section.logo{--marpit-root-font-size:120%}div#p>svg>foreignObject>section{width:960px;height:720px}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]{columns:initial!important;display:block!important;padding:0!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#p>svg>foreignObject>section[data-marpit-advanced-background=content],div#p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}

ソフトウェア設計論

まつ本

-
+

開発者が知っておくべきトピック集
-実装編-

前回

・SWEBOK
@@ -29,7 +29,7 @@

開発者が知っておくべきトピック集
-実装編-・分割統治
・DRY・KISS・YAGNI

-
+

SWEBOK 目次

全15章

1. SW要求
@@ -49,7 +49,7 @@ 

全15章

15. エンジニアリング基礎
-
+

テストは面白い

プログラミングと似た面白さ

パズル的な面白さ
@@ -63,20 +63,21 @@

理論と実践の境界

様々なセオリーが存在する
勉強するほどうまくなる

-
+

開発者が知っておくべきトピック集
-テスト編-

・SWテストの基本
・手動テストは危険

・リファクタリングのためのテスト
・バグ修正のためのテスト

-

・テストを先に書く開発スタイル
+

・良いテスト
+・テストを先に書く開発スタイル
"Clean code that works"

・テストは証明ではない
・テストはユーザ第1号である

・SWEBOK

-
+

SWテスト

対象SWが意図通り動くかを検証するプロセス
下流工程の一つ, 実装とほぼ1:1
@@ -96,7 +97,7 @@

SWテスト

} ...
-
+

様々なテスト

誰が叩くのか?

人が叩く:マニュアルテスト
@@ -107,8 +108,9 @@

どういう目線で叩くか?

SWの何をテストするか?

機能:単体テスト, 結合テスト, システムテスト
非機能:パフォーマンステスト, 負荷テスト, ..

+

今日は自動テストに着目

-
+

テスト作成の流れ

インタフェースを決める

List sort(List);
@@ -122,11 +124,12 @@ 

テスト作成の流れ

assert(sort([1,2,3])).is([1,2,3]); }
-

要求とIFが決まればテストは作成できる
- - 要求 + IF = 実装
- - 要求 + IF = テスト

+

仕様とIFが決まればテストは作成できる

+
仕様 + IF ⇒ 実装
+仕様 + IF ⇒ テスト
+
-
+

例:実験スクリプトの場合

インタフェースを決める

python analyze.py in-file out-file
@@ -142,7 +145,7 @@ 

例:実験スクリプトの場合

assert("tmp.txt").isSameAs("test-out.txt");
-
+

手動テストは危険

よくある良くない手動テスト

if __name__ == '__main__':
@@ -160,7 +163,7 @@ 

よくある良くない手動テスト

 - 変更時にまた手動でテストするのか?

自動化されていないこと自体が問題

-
+

無茶な自動テスト

if __name__ == '__main__':
   # print(sort([1,2,3]));
@@ -177,7 +180,7 @@ 

無茶な自動テスト

 - テストのメタデータ付与 (名前等)

バグを減らす一つの方法はコードを書かないこと

-
+

各種言語のテストFW

Java:JUnit, TestNG

@Test @DisplayName("ソート済みデータのソート")
@@ -198,7 +201,7 @@ 

Python:pytest, unittest

================= 3 passed in 0.02s ==================
-
+

手動テストにも価値がある

E2Eテスト (End to end)

システム全体のテスト
@@ -211,12 +214,12 @@

向き不向き

自動テスト:システムの細かな部品
手動テスト:システム全体の振る舞い

-
+

開発者が知っておくべきトピック集
-テスト編-

DUMMY

-
+

リファクタリング

プログラムの振る舞いを変えずに内部を改善

無駄処理の排除, 関数の切り出し, 変数名の修正, ...

@@ -225,13 +228,13 @@

プログラムの振る舞いを変えずに内部を改善


https://medium.com/@raychongtk/why-is-refactoring-important-2f1e4dec21ab

-
+

技術的負債

雑談

-
+

リファクタリングによる破壊

プログラムの「振る舞いを変えずに」を~

振る舞いを変えないのが難しい

@@ -244,7 +247,7 @@

Q. 振る舞いの維持をどう確認すれば良いか?

もし等価性を自動判定できたら?
 → リファクタリングを恐れなくて良くなる

-
+

リファクタリングのためのテスト

テストを等価性判定の目安に使う

    @@ -263,7 +266,7 @@

    リファクタリングでIFが変わる場合は?

    テストとソースを同時に直さない

-
+

バグ修正のためのテスト

予期せぬバグが起きた場合:

    @@ -286,16 +289,14 @@

    予期せぬバグが起きた場合:

テストとソースを同時に直さない

-
+

バグ報告もテストと同時に

バグ報告に書くべき項目

-
    -
  • バグの概要
  • -
  • 環境
  • -
  • バグの再現方法 ★
  • -
  • 期待する振る舞い ★
  • -
  • 実際の振る舞い ★
  • -
+

バグの概要
+環境
+バグの再現方法 ★
+期待する振る舞い ★
+実際の振る舞い ★

@Test public void testNegative() {
   List l = sort([3,1,2,-5]);
   assertThat(l).equalTo([-5,1,2,3]);
@@ -305,7 +306,7 @@ 

下手な文章よりも役立つ

機械解読可能 = 客観的
コード化 = 自動化・再現可能

-
+

何でもソースコードにしよう

雑談

インストール手順のコード化

@@ -320,12 +321,181 @@

仮想環境のコード化

インフラ環境のコード化 (IaC)

Chef, Puppet, Pulumi

-
+
+

開発者が知っておくべきトピック集
-テスト編-

+
+

DUMMY

+
+
+

良いテスト

+

良いテストとは?

+

バグの検出能力が高い (≒ 網羅率が高い)
+読みやすい・保守しやすい ★

+

単純であればあるほどよい

+

分岐if forを極力使わない
+テスト自体のバグを避けるため
+繰り返してもOK, DRYでなくても良い
+関数化も最低限に

+

1テストケース=1シナリオ

+

仕様や利用方法という側面もある
+たくさんのことをしない

+
+
+

良いプログラムとは?

+
再掲
+

信頼性・効率性 (実行的側面の良さ)

+

目的を満たすか?バグがないか?
+計算リソースの無駄がないか?

+

可読性・保守性

+

読みやすいか?意図を汲み取れるか?

+

拡張性

+

拡張時の作業は書き換えか?追加か?

+

テスタビリティ

+

main() vs main()+sub1()+sub2()+sub3()

+
+
+

Complex vs Complicated

+
再掲
+
+ +

+

https://www.gilkisongroup.com/investing-complicated-or-complex/

+
+
+

良いプログラムと良いテスト

+

テストが楽なプログラムを作ろう

+

うまく分割統治すればするほどテストが楽
+テストが楽なほど実装も楽

+

分割統治されていない何でもできるメソッド

+
HugeObject doALotOfThings(param1, param2, param3, ...) {
+
+

分割統治された単一のことしかできないメソッド

+
TinyObject doTinyThing(param1) {
+
+

良いプログラム ≒ テストしやすいプログラム

+

責務が明確である, 具体的で明確な名前を持つ
+副作用がない, 状態を持たない, 決定的である

+

関数型言語はテストしやすい

+
+
+

開発者が知っておくべきトピック集
-テスト編-

+
+

DUMMY

+
+
+

演習 (10m)

+

以下のプログラムのテストを作成せよ

+
bool isSemVer(s):
+  """文字列sがsemverの書式に従っているかを確認する
+  semver = majorVer.minorVer.patchVer
+  """
+
+

テストケース例

+
assert isSemVer('1.2.3')  == True
+assert isSemVer('1.2.99') == True
+
+assert isSemVer('1.2.')  == False
+assert isSemVer('1.2.a') == False
+
+

提出方法

+

テストのテキストをCLEに提出すること
+答えがある問題ではないので自由に考えること

+
+
+

そもそも正しいsemverとは?

+
# Backus–Naur Form Grammar for Valid SemVer Versions
+
+<valid semver> ::= <version core>
+                 | <version core> "-" <pre-release>
+                 | <version core> "+" <build>
+                 | <version core> "-" <pre-release> "+" <build>
+
+<version core> ::= <major> "." <minor> "." <patch>
+
+<major> ::= <numeric identifier>
+
+<minor> ::= <numeric identifier>
+
+<patch> ::= <numeric identifier>
+
+<numeric identifier> ::= "0"
+                       | <positive digit>
+                       | <positive digit> <digits>
+
+<positive digit> ::= "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
+
+<digit> ::= "0" | <positive digit>
+
+

https://semver.org/

+
+
+

テストケースの一例

+

valid

+
1.2.3
+1.2.99
+1.2.0
+0.0.0
+10.20.30
+99999999999999999.99999999999999999.99999999999999999
+
+

invalid

+
1
+1.2
+1.2.
+1.2.3.
+1..3
+aaa
+1.2.a
+1.01.1
+1. 2.3
+1.-2.3
+
+
+
+

もっと真面目なテストケース

+

valid

+
1.1.2-prerelease+meta
+1.1.2+meta
+1.1.2+meta-valid
+1.0.0-alpha
+1.0.0-beta
+1.0.0-alpha.beta
+1.0.0-alpha.beta.1
+1.0.0-alpha.1
+1.0.0-alpha0.valid
+1.0.0-alpha.0valid
+1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okay
+1.0.0-rc.1+build.1
+2.0.0-rc.1+build.123
+1.2.3-beta
+10.2.3-DEV-SNAPSHOT
+1.2.3-SNAPSHOT-123
+
+

https://github.com/semver/semver/issues/833

+
+
+

テスト ≒ 仕様

+

仕様が決まらないとテストは作れない

+
仕様 + IF ⇒ 実装
+仕様 + IF ⇒ テスト
+
+

IF = bool isSemVer(s) 仕様 = EBNF

+

テストは自動検証可能な仕様である

+

コード化された仕様

+

テストがあると実装が楽 (ゴールがある)

+
実装前の状態: -----------------------
+まず軽く実装: oooooooo------oo-------
+少し修正する: oooooooooooo--oo-----oo
+もう少し修正: oooooooooooooooooooo-oo
+完成!!!!: ooooooooooooooooooooooo
+
+
+

開発者が知っておくべきトピック集
-テスト編-

DUMMY

-
+

テストを先に書く開発スタイル

TDD - Test driven development, テスト駆動開発

    @@ -345,7 +515,7 @@

    ステップ1終了の時点

    return None
-
+

"Clean code that works"

TDDのキモ

動くコードと良いコードを分けて考える
@@ -355,20 +525,20 @@

TDDのキモ

                         |     ★
    Clean                 |    step2
                          |
-          -------------------
-                         |     ↑
-   Dirty         ☆   →  |     ★
+          ------------ ↑ ------
+                         |     
+   Dirty         ☆       →     ★
                step0     |    step1
 
            Doesn't work        Work
 
-
+

論文でも同じことが言える

雑談

-
+

Test Driven Class

雑談

テスト駆動の演習 (演習D)

@@ -383,12 +553,12 @@

Pros

 - リファクタリング支援

教員の手間が減る

-
+

開発者が知っておくべきトピック集
-テスト編-

DUMMY

-
+





Program testing can be used to show the presence of bugs, but never to show their absence

@@ -399,7 +569,7 @@

開発者が知っておくべきトピック集
-テスト編

E.W. Dijkstra

-
+

テストは証明ではない

全組み合わせのテストは不可能

sort(arr) のパラメタの組み合わせは無限
@@ -408,7 +578,10 @@

テストは無料ではない

大きなシステムの全テストは1日かかる

経済

-
+
+

テストの経済学と心理学

+
+

プログラムの正しさの証明?

形式手法

雑談
@@ -420,36 +593,14 @@

形式手法

航空システム・医療等

形式手法と比べるとテストは手軽で安価

-
+

サボるために頑張る

投資

-
-

テストの経済学と心理学

-
-
-

良いテスト

-

良いテストとは?

-

バグの検出能力が高い (≒ 網羅率が高い)
-読みやすい・保守しやすい

-

単純であればあるほどよい

-

分岐if forを極力使わない
-テスト自体のバグを避けるため
-繰り返してもOK, DRYでなくても良い

-

仕様や利用方法という側面もある

-

1テストケース=1シナリオ

-
-
-

関数化

-
-
-

良いプログラムと良いテスト

-

-
-
+

parametrized test

-
+

回帰バグ

昔のバグが再度現れる現象

「レグレッションがおきた」
@@ -460,9 +611,10 @@

テストは回帰バグの特効薬

バグ修正時に必ず対応するテストを作る
プログラム変更時に常にテストを回す

-
+

テストスメル

CI/CD

+

スタブ・モック